41554 blogs · [ { "id": "01a08773-01be-73fc-856d-037073576559", "title": "Will Embedded Software Remain an Afterthought?", "url": "https://embeddedartistry.com/blog/2026/08/20/will-embedded-software-remain-an-afterthought/", "published_at": "2026-08-20T21:26:43+00:00" }, { "id": "01a08773-01be-73fc-856d-037073caf2b8", "title": "Adding a Makefile help Target", "url": "https://embeddedartistry.com/blog/2026/07/24/adding-a-makefile-help-target/", "published_at": "2026-07-24T20:04:15+00:00" }, { "id": "01a08773-01be-73fc-856d-03707479d9c6", "title": "On AI Writing", "url": "https://embeddedartistry.com/blog/2026/07/21/on-ai-writing/", "published_at": "2026-07-21T19:15:38+00:00" }, { "id": "01a08773-01be-73fc-856d-037075285e3e", "title": "Jevons Paradox Shouldn’t Comfort You", "url": "https://embeddedartistry.com/blog/2026/07/14/jevons-paradox-shouldnt-comfort-you/", "published_at": "2026-07-14T15:27:51+00:00" }, { "id": "01a08773-01be-73fc-856d-037076041e91", "title": "Practicalities of Co-locating Tests with Source Code", "url": "https://embeddedartistry.com/blog/2026/04/15/practicalities-of-co-locating-tests-with-source-code/", "published_at": "2026-04-15T19:14:34+00:00" }, { "id": "01a08773-01be-73fc-856d-03707618c86c", "title": "A Practice: Satisfied on Purpose", "url": "https://embeddedartistry.com/blog/2026/03/31/a-practice-satisfied-on-purpose/", "published_at": "2026-03-31T18:37:00+00:00" }, { "id": "01a08773-01be-73fc-856d-0370767b9493", "title": "Embedded Artistry’s Essential Engineering Library", "url": "https://embeddedartistry.com/blog/2026/03/20/embedded-artistrys-essential-engineering-library/", "published_at": "2026-03-20T16:55:14+00:00" }, { "id": "01a08773-01be-73fc-856d-037076a1cd10", "title": "Flashing Yocto Images from MacOS", "url": "https://embeddedartistry.com/blog/2026/03/09/flashing-yocto-images-from-macos/", "published_at": "2026-03-09T19:23:00+00:00" }, { "id": "01a08773-01be-73fc-856d-03707723028e", "title": "Convenience Gone Wrong: A C++ auto Story", "url": "https://embeddedartistry.com/blog/2026/02/20/convenience-gone-wrong-a-c-auto-story/", "published_at": "2026-02-20T17:59:04+00:00" }, { "id": "01a08773-01be-73fc-856d-037078178d21", "title": "Battling Perfectionism in Creation", "url": "https://embeddedartistry.com/blog/2026/02/10/battling-perfectionism-in-creation/", "published_at": "2026-02-10T18:57:15+00:00" }, { "id": "01a08773-01be-73fc-856d-0370786e0baf", "title": "Pushing Git Submodule Commits Automatically", "url": "https://embeddedartistry.com/blog/2026/02/05/pushing-git-submodule-commits-automatically/", "published_at": "2026-02-05T17:20:31+00:00" }, { "id": "01a08773-01be-73fc-856d-03707899456f", "title": "Monorepo Tooling Update: Signed Commit Support in Git 2.52", "url": "https://embeddedartistry.com/blog/2026/01/29/monorepo-tooling-update-signed-commit-support-in-git-2-52/", "published_at": "2026-01-29T17:00:00+00:00" }, { "id": "01a08773-01be-73fc-856d-0370792b9942", "title": "The After-Hours Consulting Trap", "url": "https://embeddedartistry.com/blog/2026/01/28/the-after-hours-consulting-trap/", "published_at": "2026-01-28T18:34:40+00:00" }, { "id": "01a08773-01be-73fc-856d-03707932c929", "title": "Configuring Git Remotes: Fetch Only One Branch and No Tags", "url": "https://embeddedartistry.com/blog/2026/01/26/configuring-git-remotes-fetch-only-one-branch-and-no-tags/", "published_at": "2026-01-26T15:28:12+00:00" }, { "id": "01a08773-01be-73fc-856d-037079e74201", "title": "What I’ve Been Up To (20251205)", "url": "https://embeddedartistry.com/blog/2025/12/05/what-ive-been-up-to-20251205/", "published_at": "2025-12-05T17:35:56+00:00" }, { "id": "01a08773-01be-73fc-856d-037079fb5239", "title": "Life After Burnout", "url": "https://embeddedartistry.com/blog/2025/11/03/life-after-burnout/", "published_at": "2025-11-03T17:48:47+00:00" }, { "id": "01a08773-01be-73fc-856d-03707a7bd456", "title": "Automating Away the Fun Parts", "url": "https://embeddedartistry.com/blog/2025/10/13/automating-away-the-fun-parts/", "published_at": "2025-10-13T17:57:46+00:00" }, { "id": "01a08773-01be-73fc-856d-03707b57a246", "title": "Creating Deterministic Zip Files with Git Commit Timestamps", "url": "https://embeddedartistry.com/blog/2025/02/20/creating-deterministic-zip-files-with-git-commit-timestamps/", "published_at": "2025-02-20T17:11:08+00:00" }, { "id": "01a08773-01be-73fc-856d-03707bd5a2e9", "title": "Papers in Systems: Schön on Dynamic Conservatism", "url": "https://embeddedartistry.com/blog/2024/11/25/papers-in-systems-schon-on-dynamic-conservatism/", "published_at": "2024-11-25T17:00:00+00:00" }, { "id": "01a08773-01be-73fc-856d-03707bdd3d20", "title": "Reclaim Your Data: Freeing a Wi-Fi Sensor from the Cloud", "url": "https://embeddedartistry.com/blog/2024/11/04/reclaim-your-data-freeing-a-wi-fi-sensor-from-the-cloud/", "published_at": "2024-11-04T17:00:00+00:00" }, { "id": "01a08773-01be-73fc-856d-03707bf99bc8", "title": "2022-2023 Quarterly Discussion Panel Archives", "url": "https://embeddedartistry.com/blog/2024/07/31/2022-2023-quarterly-discussion-panel-archives/", "published_at": "2024-07-31T19:07:47+00:00" }, { "id": "01a08773-01be-73fc-856d-03707c44b3ec", "title": "Exploring Serverless CI/CD for Embedded Devices", "url": "https://embeddedartistry.com/blog/2024/01/15/exploring-serverless-ci-cd-for-embedded-devices/", "published_at": "2024-01-15T16:00:00+00:00" }, { "id": "01a08773-01be-73fc-856d-03707ca145ed", "title": "How to cherry-pick Specific Files from a Commit", "url": "https://embeddedartistry.com/blog/2024/01/05/how-to-cherry-pick-specific-files-from-a-commit/", "published_at": "2024-01-05T21:23:52+00:00" }, { "id": "01a08773-01be-73fc-856d-03707d222d30", "title": "2023 in Review", "url": "https://embeddedartistry.com/blog/2024/01/01/2023-in-review/", "published_at": "2024-01-01T17:00:00+00:00" }, { "id": "01a08773-01be-73fc-856d-03707d43d88e", "title": "Managing Issues and Improving Products After Launch", "url": "https://embeddedartistry.com/blog/2023/11/30/managing-issues-and-improving-products-after-launch/", "published_at": "2023-11-30T17:47:46+00:00" }, { "id": "01a08773-01be-73fc-856d-03707dec0378", "title": "Resolving Git Commit History Divergence Due to Case-Sensitive Rename Operations", "url": "https://embeddedartistry.com/blog/2023/11/08/resolving-git-commit-history-divergence-due-to-case-sensitive-rename-operations/", "published_at": "2023-11-08T18:05:14+00:00" }, { "id": "01a08773-01be-73fc-856d-03707e6ee889", "title": "Responses to the Commentariat on the -Werror Article", "url": "https://embeddedartistry.com/blog/2023/10/27/responses-to-the-commentariat-on-the-werror-article/", "published_at": "2023-10-27T19:29:03+00:00" }, { "id": "01a08773-01be-73fc-856d-03707e85a07c", "title": "Leveraging Your Toolchain to Improve Security", "url": "https://embeddedartistry.com/blog/2023/09/20/leveraging-your-toolchain-to-improve-security/", "published_at": "2023-09-20T18:01:12+00:00" }, { "id": "01a08773-01be-73fc-856d-03707eaa7b6d", "title": "Best Practices for Safeguarding Your Connected Devices", "url": "https://embeddedartistry.com/blog/2023/08/28/best-practices-for-safeguarding-your-connected-devices/", "published_at": "2023-08-28T17:42:32+00:00" }, { "id": "01a08773-01be-73fc-856d-03707ed8b94c", "title": "Q&A: How Do You Stay on the Path and Make it to “Done”?", "url": "https://embeddedartistry.com/blog/2023/06/12/qa-how-do-you-stay-on-the-path-and-make-it-to-done/", "published_at": "2023-06-12T17:39:44+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c4f7b696d", "title": "Q&A: How Many Iterations Do You Recommend for Scaling From a Prototype to Mass Production?", "url": "https://embeddedartistry.com/blog/2023/06/08/qa-how-many-iterations-do-you-recommend-for-scaling-from-a-prototype-to-mass-production/", "published_at": "2023-06-08T22:42:17+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5048c969", "title": "Q&A: To What Degree Should We Understand Other Disciplines?", "url": "https://embeddedartistry.com/blog/2023/06/07/qa-to-what-degree-should-we-understand-other-disciplines/", "published_at": "2023-06-07T23:08:52+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c508998a8", "title": "Meson Pattern: Monorepo that Supports Individual Subproject Builds", "url": "https://embeddedartistry.com/blog/2023/06/05/meson-pattern-monorepo-that-supports-individual-subproject-builds/", "published_at": "2023-06-05T17:47:37+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c50de22b8", "title": "From Concept to Launch: What It Takes to Build and Ship a New Device", "url": "https://embeddedartistry.com/blog/2023/05/18/from-concept-to-launch-what-it-takes-to-build-and-ship-a-new-device/", "published_at": "2023-05-18T17:40:47+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c51c6fac0", "title": "The Simple Fixes on the Quest for Improved Performance", "url": "https://embeddedartistry.com/blog/2023/04/24/the-simple-fixes-on-the-quest-for-improved-performance/", "published_at": "2023-04-24T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c522d8eb7", "title": "Schrödinger’s Meeting", "url": "https://embeddedartistry.com/blog/2023/04/19/shrodingers-meeting/", "published_at": "2023-04-19T19:09:34+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c530dd52a", "title": "Building a Simplified CLI Using Invoke (for Monorepo Management)", "url": "https://embeddedartistry.com/blog/2023/04/18/building-a-simplified-cli-using-invoke-for-monorepo-management/", "published_at": "2023-04-18T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c536d4e82", "title": "Replacing find Shell Commands with Python", "url": "https://embeddedartistry.com/blog/2023/04/17/replacing-find-shell-commands-with-python/", "published_at": "2023-04-17T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c53ef7f75", "title": "Q&A: What Pieces of the OTA Update Pipeline Should You Front Load?", "url": "https://embeddedartistry.com/blog/2023/04/13/qa-what-pieces-of-the-ota-update-pipeline-should-you-front-load/", "published_at": "2023-04-13T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5408ce55", "title": "Q&A: How Do You Manage Updates that Introduce Incompatible Changes?", "url": "https://embeddedartistry.com/blog/2023/04/12/qa-how-do-you-manage-updates-that-introduce-incompatible-changes/", "published_at": "2023-04-12T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c54a6f6d5", "title": "Q&A: Where Should Firmware Update Capabilities Live?", "url": "https://embeddedartistry.com/blog/2023/04/11/qa-where-should-firmware-update-capabilities-live/", "published_at": "2023-04-11T17:01:25+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c551ecfde", "title": "Dealing With Duplicated Files in a Monorepo", "url": "https://embeddedartistry.com/blog/2023/04/07/dealing-with-duplicated-files-in-a-monorepo/", "published_at": "2023-04-07T17:16:16+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c55cdc6d2", "title": "Over-the-Air Updates and Fleet Management at Scale", "url": "https://embeddedartistry.com/blog/2023/03/02/over-the-air-updates-and-fleet-management-at-scale/", "published_at": "2023-03-02T17:42:16+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c560332aa", "title": "Configuring a Linker Script for Accurate Linker Memory Usage Reporting", "url": "https://embeddedartistry.com/blog/2023/03/01/configuring-a-linker-script-for-accurate-linker-memory-usage-reporting/", "published_at": "2023-03-01T19:17:47+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c567bcd5e", "title": "Saving 10 Minutes on Documentation Wasted Hours of My Client’s Time", "url": "https://embeddedartistry.com/blog/2023/02/14/saving-10-minutes-on-documentation-wasted-hours-of-my-clients-time/", "published_at": "2023-02-14T20:22:59+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5724308e", "title": "Does Everything Belong in a Monorepo?", "url": "https://embeddedartistry.com/blog/2023/01/30/does-everything-belong-in-a-monorepo/", "published_at": "2023-01-30T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c57652f47", "title": "Getting Rid of Old Code", "url": "https://embeddedartistry.com/blog/2023/01/27/getting-rid-of-old-code/", "published_at": "2023-01-27T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c581632a5", "title": "Dealing with Signed Commits When Creating and Splitting a Monorepo", "url": "https://embeddedartistry.com/blog/2023/01/26/dealing-with-signed-commits-when-creating-and-splitting-a-monorepo/", "published_at": "2023-01-26T17:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c590c3654", "title": "An Experiment: Develop in a Monorepo and Distribute to Standalone Repositories", "url": "https://embeddedartistry.com/blog/2023/01/25/an-experiment-develop-in-a-monorepo-and-distribute-to-standalone-repositories-2/", "published_at": "2023-01-25T18:58:25+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c59d7ccfe", "title": "Adding Delimiters Between String Elements in C++", "url": "https://embeddedartistry.com/blog/2023/01/19/adding-delimiters-between-string-elements-in-c/", "published_at": "2023-01-19T19:18:13+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5aa405af", "title": "Looking Ahead to 2023", "url": "https://embeddedartistry.com/blog/2022/12/05/looking-ahead-to-2023/", "published_at": "2022-12-05T16:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5ad61e39", "title": "Building Embedded Teams in the Modern Era", "url": "https://embeddedartistry.com/blog/2022/11/18/building-embedded-teams-in-the-modern-era/", "published_at": "2022-11-18T15:00:27+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5b9a31ca", "title": "Beyond Software: Applying Design for Change Principles to the Course Itself", "url": "https://embeddedartistry.com/blog/2022/10/10/beyond-software-applying-design-for-change-principles-to-the-course-itself/", "published_at": "2022-10-10T15:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5b9e8d48", "title": "Left on the Cutting Room Floor", "url": "https://embeddedartistry.com/blog/2022/10/04/left-on-the-cutting-room-floor/", "published_at": "2022-10-04T14:50:38+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5c21eaae", "title": "Debugging Embedded Devices in Production", "url": "https://embeddedartistry.com/blog/2022/08/08/debugging-embedded-devices-in-production/", "published_at": "2022-08-08T16:03:51+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5cd6d184", "title": "How Our Approach to Abstract Interfaces Has Changed Over the Years", "url": "https://embeddedartistry.com/blog/2022/07/11/how-our-approach-to-abstract-interfaces-has-changed-over-the-years/", "published_at": "2022-07-11T15:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5dcb018d", "title": "Publicly Available Field Atlas and Glossary Entries", "url": "https://embeddedartistry.com/blog/2022/07/05/publicly-available-field-atlas-and-glossary-entries/", "published_at": "2022-07-05T18:55:14+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5ea94326", "title": "Suggestions for Working with Co-ops and Interns", "url": "https://embeddedartistry.com/blog/2022/05/09/suggestions-for-working-with-co-ops-and-interns/", "published_at": "2022-05-09T16:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5eddccc8", "title": "Q&A: What Happened to the Embedded Artistry blog?", "url": "https://embeddedartistry.com/blog/2022/05/02/qa-what-happened-to-the-embedded-artistry-blog/", "published_at": "2022-05-02T16:00:00+00:00" }, { "id": "01a0c50a-c59f-73ee-aca5-9e6c5f13adf7", "title": "Building Embedded Systems at Scale with Device Metrics", "url": "https://embeddedartistry.com/blog/2022/04/14/building-embedded-systems-at-scale-with-device-metrics/", "published_at": "2022-04-14T18:48:36+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf39d9f6e", "title": "A Strategy for Reporting Version Information from Bootloaders", "url": "https://embeddedartistry.com/blog/2022/01/20/a-strategy-for-reporting-version-information-from-bootloaders/", "published_at": "2022-01-20T20:36:12+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf496bf82", "title": "Remember to lock around all std::condition_variable “variables”", "url": "https://embeddedartistry.com/blog/2022/01/10/remember-to-lock-around-all-stdcondition_variable-variables/", "published_at": "2022-01-10T17:19:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf4f12661", "title": "Learning Computer Architecture Through a Game", "url": "https://embeddedartistry.com/blog/2021/11/29/learning-computer-architecture-through-a-game/", "published_at": "2021-11-29T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf5be56ae", "title": "When Updating an Untested Module, Take the Opportunity to Add Tests", "url": "https://embeddedartistry.com/blog/2021/10/25/when-updating-an-untested-module-take-the-opportunity-to-add-tests/", "published_at": "2021-10-25T16:30:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf69f988a", "title": "Bricked for Want of Support", "url": "https://embeddedartistry.com/blog/2021/10/18/bricked-for-want-of-support/", "published_at": "2021-10-18T16:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf7410e08", "title": "How to Get an IoT Project Quickly Off the Ground", "url": "https://embeddedartistry.com/blog/2021/10/11/how-to-get-an-iot-project-quickly-off-the-ground/", "published_at": "2021-10-11T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf799f233", "title": "Resolving I2C Address Conflicts", "url": "https://embeddedartistry.com/blog/2021/08/02/resolving-i2c-address-conflicts/", "published_at": "2021-08-02T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf7eb0f77", "title": "Discard an Axiom", "url": "https://embeddedartistry.com/blog/2021/06/28/discard-an-axiom/", "published_at": "2021-06-28T14:38:31+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf8395fd1", "title": "Q&A: How do you Select Thread Priorities to Improve Performance?", "url": "https://embeddedartistry.com/blog/2021/06/07/qa-how-do-you-select-thread-priorities-to-improve-performance/", "published_at": "2021-06-07T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf8d2b374", "title": "Improve Your Project Management Skills by Applying a Land Navigation Lesson", "url": "https://embeddedartistry.com/blog/2021/05/31/improve-your-project-management-skills-by-applying-a-land-navigation-lesson/", "published_at": "2021-05-31T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bf9456272", "title": "Another Valuable Practice from the Kitchen: Clean as You Go", "url": "https://embeddedartistry.com/blog/2021/05/24/another-valuable-practice-from-the-kitchen-clean-as-you-go/", "published_at": "2021-05-24T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfa02e8f6", "title": "Fighting Feelings of Overwhelm with an Attitude Shift", "url": "https://embeddedartistry.com/blog/2021/05/17/fighting-feelings-of-overwhelm-with-an-attitude-shift/", "published_at": "2021-05-17T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfaa75078", "title": "Multiplying my Effectiveness with Mise En Place", "url": "https://embeddedartistry.com/blog/2021/05/10/multiplying-my-effectiveness-with-mise-en-place/", "published_at": "2021-05-10T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfb19cf43", "title": "A Software Development Idea Inspired by Mushroom Cultivation", "url": "https://embeddedartistry.com/blog/2021/05/03/a-software-development-idea-inspired-by-mushroom-cultivation/", "published_at": "2021-05-03T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfc15b893", "title": "Why Professional Programmers Shouldn’t Have Programming Side Projects", "url": "https://embeddedartistry.com/blog/2021/04/26/why-professional-programmers-shouldnt-have-programming-side-projects/", "published_at": "2021-04-26T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfc19305c", "title": "Are You Using This Strategy to Build an Outstanding Team?", "url": "https://embeddedartistry.com/blog/2021/04/19/are-you-using-this-strategy-to-build-an-outstanding-team/", "published_at": "2021-04-19T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfc47f240", "title": "Aaron’s Advice to Up-and-Coming Embedded Developers", "url": "https://embeddedartistry.com/blog/2021/04/12/aarons-advice-to-up-and-coming-embedded-developers/", "published_at": "2021-04-12T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfcec788c", "title": "We’re Back in Action – And Here’s Our Plan for 2021", "url": "https://embeddedartistry.com/blog/2021/04/07/were-back-in-action-and-heres-our-plan-for-2021/", "published_at": "2021-04-07T17:57:34+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfde117cc", "title": "Here’s what a 1963 Leadership Masterpiece Has to Say About Managing Projects", "url": "https://embeddedartistry.com/blog/2021/02/15/heres-what-a-1963-leadership-masterpiece-has-to-say-about-managing-projects/", "published_at": "2021-02-15T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfe09f032", "title": "Is Memfault the Future of Fault Debugging? We think so!", "url": "https://embeddedartistry.com/blog/2021/01/18/is-memfault-the-future-of-fault-debugging-we-think-so/", "published_at": "2021-01-18T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bfe81e597", "title": "Ending the Embedded Software Dark Ages: Let’s Start With Processor Fault Debugging!", "url": "https://embeddedartistry.com/blog/2021/01/11/hard-fault-debugging/", "published_at": "2021-01-11T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bff7607d7", "title": "Are you a Consultant or Contractor? Score Yourself Against these “Patterns of Successful Contractors” from a 1963 Leadership Masterpiece", "url": "https://embeddedartistry.com/blog/2020/12/28/are-you-a-consultant-or-contractor-score-yourself-against-these-patterns-of-successful-contractors-from-a-1963-leadership-masterpiece/", "published_at": "2020-12-28T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bffb5a4af", "title": "Real-World Portable Driver Examples", "url": "https://embeddedartistry.com/blog/2020/11/23/real-world-portable-driver-examples/", "published_at": "2020-11-23T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970bffc4db7d", "title": "What is the Proper Balance Between Working and Learning?", "url": "https://embeddedartistry.com/blog/2020/11/16/what-is-the-proper-balance-between-working-and-learning/", "published_at": "2020-11-16T18:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c0068a8f9", "title": "Metal.GDB: Controlling GDB through Python Scripts with the GDB Python API", "url": "https://embeddedartistry.com/blog/2020/11/09/metal-gdb-controlling-gdb-through-python-scripts-with-the-gdb-python-api/", "published_at": "2020-11-09T18:09:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c008b08f6", "title": "Optimizing Power Consumption in Battery-Powered Devices", "url": "https://embeddedartistry.com/blog/2020/10/26/optimizing-power-consumption-in-battery-powered-devices/", "published_at": "2020-10-26T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c015a52a0", "title": "Workaround for “Cannot find an ST-LINK” when Using STLinkReflash for J-Link OB Conversion", "url": "https://embeddedartistry.com/blog/2020/10/12/solution-for-cannot-find-an-st-link-when-using-stlinkreflash-for-j-link-ob-conversion/", "published_at": "2020-10-12T16:55:35+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c022e5c30", "title": "Embedded Artistry’s Hacktoberfest Bounties", "url": "https://embeddedartistry.com/blog/2020/10/05/embedded-artistrys-hacktoberfest-bounties/", "published_at": "2020-10-05T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c02d2dfd0", "title": "Strongly Typed Integers and Registers in C++", "url": "https://embeddedartistry.com/blog/2020/09/28/strongly-typed-integers-and-registers-in-c/", "published_at": "2020-09-28T17:00:00+00:00" }, { "id": "01a0c51a-dc21-73df-97ef-970c02d9c2ed", "title": "Insights from Writing an Embedded IoT App (Almost) Entirely in Rust", "url": "https://embeddedartistry.com/blog/2020/09/21/insights-from-writing-an-embedded-iot-app-almost-entirely-in-rust/", "published_at": "2020-09-21T17:00:00+00:00" } ] posts Claim your blog
Back to Embedded Artistry
Blog · corpus.blog/blogs/embeddedartistry.com/posts

Embedded Artistry

embeddedartistry.com

2026

2025

2024

2023

2022

2021

2020