20 September 2023 by Phillip Johnston • Last updated 28 September 2023Your toolchain is a useful place to start when incorporating security into your development process. There are several warnings and program augmentations that help harden your application. This article focuses on GCC and Clang, as that’s what I primarily use. I’m happy to take … Continue reading "Leveraging Your Toolchain to Improve Security" The post Leveraging Your Toolchain to Improve Security appeared first on E...| Embedded Artistry
17 April 2023 by Phillip JohnstonI am slowly working on migrating many of my bash scripts to Python. A common operation I perform is find. Since I need to replace a lot of these, I want to document replacement patterns. Here is an example of a find command that we’ll use as a reference: # … Continue reading "Replacing find Shell Commands with Python" The post Replacing find Shell Commands with Python appeared first on Embedded Artistry.| Embedded Artistry
30 January 2023 by Phillip JohnstonThe implication to the name monorepo is that there exists just one – everything is contained within it. But in Getting Rid of Old Code, I mentioned that 45 repositories would make it into the monorepo. This means 15 repositories did not make the cut. If we’re aiming for a … Continue reading "Does Everything Belong in a Monorepo?"| Embedded Artistry
Posted on 20 February 202520 February 2025| Embedded Artistry
25 January 2023 by Phillip Johnston • Last updated 27 January 2023I am ideologically aligned with distributing code in repositories that serve a single purpose. As a software consumer, I think that smaller, single purpose repositories and components are more approachable and easier to use. Of course, every decision comes with its tradeoffs, and this … Continue reading "An Experiment: Develop in a Monorepo and Distribute to Standalone Repositories"| Embedded Artistry
Zip files are easy for users, but present some challenges when trying to package and upload zips consistently as part of a CI/CD pipeline.| Embedded Artistry
25 November 2024 by Phillip JohnstonI’m part of a “Papers in Systems” reading club, which meets monthly to discuss a chosen paper. This month we read the lecture transcript from Donald Schön’s 1970 REITH lecture series, session 2: Dynamic Conservatism (pdf). I found this to be a very enjoyable and insightful read, especially as someone who … Continue reading "Papers in Systems: Schön on Dynamic Conservatism" The post Papers in Systems: Schön on Dynamic Conservatism appeared firs...| Embedded Artistry
4 November 2024 by Phillip JohnstonToday we have a guest post from Dave Goldberg. Dave is an embedded software engineer based in Boston, MA. He enjoys problem solving, mentoring junior engineers, and preaching the importance of quality and security. You can find Dave on LinkedIn. In this article we’ll investigate how a particular Wi-Fi connected … Continue reading "Reclaim Your Data: Freeing a Wi-Fi Sensor from the Cloud" The post Reclaim Your Data: Freeing a Wi-Fi Sensor from the Cloud a...| Embedded Artistry
31 July 2024 by Phillip JohnstonDuring 2022-2023, Embedded Artistry and Memfault teamed up to run a series of embedded-focused discussion panels. These discussion panels were rich with insight and advice for embedded teams. Even if you missed the live broadcasts, we hope you will take time to watch the recordings. Building Embedded Systems at Scale … Continue reading "2022-2023 Quarterly Discussion Panel Archives" The post 2022-2023 Quarterly Discussion Panel Archives appeared first on Embe...| Embedded Artistry
5 January 2024 by Phillip Johnston • Last updated 1 February 2024I ran into a situation recently where I wanted to perform a git cherry-pick operation, but I only wanted to pull specific files from the commit. The reasons for this itself aren’t so important – I just wanted to make a note for myself … Continue reading "How to cherry-pick Specific Files from a Commit" The post How to cherry-pick Specific Files from a Commit appeared first on Embedded Artistry.| Embedded Artistry
30 November 2023 by Phillip Johnston • Last updated 16 February 2024Embedded Artistry and Memfault are joining forces to host a quarterly embedded discussion panel that is focused on the technical aspects of building embedded systems at scale. We will be featuring guest panel members who are at the cutting edge of embedded development. Our … Continue reading "Managing Issues and Improving Products After Launch" The post Managing Issues and Improving Products After Launch appeared first on...| Embedded Artistry
8 November 2023 by Phillip JohnstonThis post is mostly a note-to-self, because I’ve solved this before but have no notes on it. I also hope that publishing it on my website might save someone a few minutes or hours in the future. Short Summary If your commit history has case-sensitive rename operations and you’re mucking … Continue reading "Resolving Git Commit History Divergence Due to Case-Sensitive Rename Operations" The post Resolving Git Commit History Divergence Due to Case-Sensit...| Embedded Artistry
27 October 2023 by Phillip JohnstonThe article that has generated the most angry and aggressive comments over the years, usually via email but also occasionally as comments on places like Hacker News, is -Werror is Not Your Friend. I’ve updated that article several times over the past 6 years to address some of the common … Continue reading "Responses to the Commentariat on the -Werror Article" The post Responses to the Commentariat on the -Werror Article appeared first on Embedded Artistry.| Embedded Artistry
28 August 2023 by Phillip Johnston • Last updated 21 December 2023Embedded Artistry and Memfault are joining forces to host a quarterly embedded discussion panel that is focused on the technical aspects of building embedded systems at scale. We will be featuring guest panel members who are at the cutting edge of embedded development. Our … Continue reading "Best Practices for Safeguarding Your Connected Devices" The post Best Practices for Safeguarding Your Connected Devices appeared firs...| Embedded Artistry
12 June 2023 by Phillip JohnstonHere’s a question I answered via email from the From Concept to Launch: What It Takes to Build and Ship a New Device panel discussion. We’re sharing the answer on our blog to make it available to a wider audience. For context, during the discussion, I pointed out that a … Continue reading "Q&A: How Do You Stay on the Path and Make it to “Done”?" The post Q&A: How Do You Stay on the Path and Make it to “Done”? appeared first on Embedded Artistry.| Embedded Artistry
8 June 2023 by Phillip JohnstonHere’s a question we answered in the Interrupt Slack channel after the From Concept to Launch: What It Takes to Build and Ship a New Device panel discussion. We’re sharing the answer on our blog to make it available to a wider audience. ““ Quote Starting from “I have a … Continue reading "Q&A: How Many Iterations Do You Recommend for Scaling From a Prototype to Mass Production?" The post Q&A: How Many Iterations Do You Recommend for Scaling From a ...| Embedded Artistry
7 June 2023 by Phillip Johnston • Last updated 12 June 2023Here’s a question we answered in the Interrupt Slack channel after the From Concept to Launch: What It Takes to Build and Ship a New Device panel discussion. We’re sharing the answer on our blog to make it available to a wider audience. First, … Continue reading "Q&A: To What Degree Should We Understand Other Disciplines?" The post Q&A: To What Degree Should We Understand Other Disciplines? appeared first on Embedded Artistry.| Embedded Artistry
5 June 2023 by Phillip JohnstonAs mentioned in the article, Develop in a Monorepo and Distribute to Standalone Repositories Develop in a Monorepo and Distribute to Standalone Repositories, we’ve merged many of our repos into a monorepo setup, but we’re going to continue to distribute changes to the existing standalone repositories. To support this model, … Continue reading "Meson Pattern: Monorepo that Supports Individual Subproject Builds" The post Meson Pattern: Monorepo that Supports...| Embedded Artistry
18 May 2023 by Phillip Johnston • Last updated 12 June 2023Embedded Artistry and Memfault are joining forces to host a quarterly embedded discussion panel that is focused on the technical aspects of building embedded systems at scale. We will be featuring guest panel members who are at the cutting edge of embedded development. Our … Continue reading "From Concept to Launch: What It Takes to Build and Ship a New Device" The post From Concept to Launch: What It Takes to Build and Ship a New...| Embedded Artistry
24 April 2023 by Phillip Johnston • Last updated 17 July 2023Many people are interested in becoming more effective, improving their quality of life, having a better recall of what they learn, performing at a higher level, producing fewer errors, etc. You can find countless podcasts, books, articles, and tweets on the topic. People want … Continue reading "The Simple Fixes on the Quest for Improved Performance" The post The Simple Fixes on the Quest for Improved Performance appeared first ...| Embedded Artistry
19 April 2023 by Phillip Johnston • Last updated 20 April 2023I’ve coined a phrase for a situation that I’m sure we’re all familiar with. Shrödinger’s Meeting When a person requests a meeting, but they don’t accept the invite or respond to the confirmation email. You’re both having and not having the meeting until you show up and collapse … Continue reading "Schrödinger’s Meeting" The post Schrödinger’s Meeting appeared first on Embedded Artistry.| Embedded Artistry
18 April 2023 by Phillip JohnstonOur monorepo work has involved creating several helper scripts to handle repeated complex operations. This is essential, but let me tell you, it’s annoying to always be in the monorepo root and to invoke these scripts by the full path. I’m a huge fan of creating simplified CLI interfaces to … Continue reading "Building a Simplified CLI Using Invoke (for Monorepo Management)" The post Building a Simplified CLI Using Invoke (for Monorepo Management) appear...| Embedded Artistry
13 April 2023 by Phillip JohnstonHere’s a question we answered in the Interrupt Slack channel after the OTA updates panel. We’re sharing the answer on our blog to make it available to a wider audience. ““ Quote As you mentioned, you think OTA updating is to be developed early in the development stage. Also, it … Continue reading "Q&A: What Pieces of the OTA Update Pipeline Should You Front Load?" The post Q&A: What Pieces of the OTA Update Pipeline Should You Front Load? appeared fi...| Embedded Artistry
12 April 2023 by Phillip JohnstonHere’s a question we answered in the Interrupt Slack channel after the OTA updates panel. We’re sharing the answer on our blog to make it available to a wider audience. ““ Quote What’s the best strategy to introduce incompatible changes regarding update-functionality, transport protokol, etc.? For starters, you need to … Continue reading "Q&A: How Do You Manage Updates that Introduce Incompatible Changes?" The post Q&A: How Do You Manage Updates th...| Embedded Artistry
11 April 2023 by Phillip Johnston • Last updated 15 June 2023Here’s a question we answered in the Interrupt Slack channel after the OTA updates panel. We’re sharing the answer on our blog to make it available to a wider audience. ““ Quote Thoughts on implementing the update application outside of the bootloader, such as … Continue reading "Q&A: Where Should Firmware Update Capabilities Live?" The post Q&A: Where Should Firmware Update Capabilities Live? appeared first on Embedded ...| Embedded Artistry
7 April 2023 by Phillip Johnston • Last updated 13 March 2024I interrupted my monorepo migration effort to wrap up a client project. Now I’m back in action. At this point, I have all the projects merged (with signed commits preserved). The next stage of work involves adjusting the build setup to support: A top-level … Continue reading "Dealing With Duplicated Files in a Monorepo" The post Dealing With Duplicated Files in a Monorepo appeared first on Embedded Artistry.| Embedded Artistry
2 March 2023 by Phillip Johnston • Last updated 7 June 2023Embedded Artistry and Memfault are joining forces to host a quarterly embedded discussion panel that is focused on the technical aspects of building embedded systems at scale. We will be featuring guest panel members who are at the cutting edge of embedded development. Our … Continue reading "Over-the-Air Updates and Fleet Management at Scale" The post Over-the-Air Updates and Fleet Management at Scale appeared first on Embedded A...| Embedded Artistry
1 March 2023 by Phillip Johnston ““ Note TLDR: if you want the output of -Wl,--print-memory-usage to account for the contents of .data (or any other block) in multiple sections, such as FLASH and RAM, you need to use the pattern .data : { ... } > RAM AT > FLASH for accurate reporting. The … Continue reading "Configuring a Linker Script for Accurate Linker Memory Usage Reporting" The post Configuring a Linker Script for Accurate Linker Memory Usage Reporting appeared first on Embedded Ar...| Embedded Artistry
14 February 2023 by Phillip JohnstonA recent experience drove this point home for me: insufficient documentation wastes everyone’s time. In Adding Delimiters Between String Elements in C++, I described the creation of a “convenience function” that would simplify the use of a logger in a client project. When I made that change in the client’s … Continue reading "Saving 10 Minutes on Documentation Wasted Hours of My Client’s Time" The post Saving 10 Minutes on Documentation Wasted H...| Embedded Artistry
15 January 2024 by Kayode AladeToday we have a guest post from Kayode Alade. Kayode is an IoT Solutions Architect with a knack for making things work. He considers himself a perpetual learner, always enthusiastic about acquiring new knowledge, whether from an engineering perspective or a business standpoint. You can find Kayode on GitHub and … Continue reading "Exploring Serverless CI/CD for Embedded Devices"| Embedded Artistry
1 January 2024 by Phillip JohnstonThe end of one year (or the beginning of the next) is always a great time to check in. In review, 2023 was quite a productive one: Published a total of 123 new items on the website: 26 blog posts, 23 Glossary entries, 42 Field Atlas entries, and 32 lessons … Continue reading "2023 in Review"| Embedded Artistry
27 January 2023 by Phillip JohnstonIn my post on developing in a monorepo and splitting it up again for distribution, I referenced the Field Atlas entry “Software is a cost, not an asset“. Dr. Samek made a comment on that entry, which I will repeat here: I’m so glad to see this point of view. … Continue reading "Getting Rid of Old Code"| Embedded Artistry