What is a good abstraction?
When writing a program, abstraction is a powerful tool. Every abstraction has a benefit and a cost. Hopefully, the value > cost. There are good abs… ...more
When writing a program, abstraction is a powerful tool. Every abstraction has a benefit and a cost. Hopefully, the value > cost. There are good abs… ...more
The term "platform" can mean a lot of things, but this is primarily what I'm talking about in the context of product development: Improve development … ...more
Recently, we discussed personal habits. Organizations have habits too -- we call them rituals and culture. How does the organization react when things… ...more
Scaling is the goal of many businesses -- grow revenue, serve more people, sell more devices, grow the product line, etc. There are two ways to scale:… ...more
Previously, we discussed habits. Habits are the way we get the small, but important, things done. Some people are naturally neat, organized, and focus… ...more
When engaging with a community around an open-source project, Github is likely the lowest friction option. It makes sense. But there are other scenari… ...more
The excellent Superstruct Manifesto addresses the tendency for developers to want to "rewrite" things, wholesale switch to new frameworks, jump on new… ...more
We defined your platform as the collection of technology, tools, and processes that enable you to differentiate and consistently deliver your products… ...more
Integrated circuits (IC) vary widely in complexity from the small devices that are easily documented and understood to complex beasts that would requi… ...more
When helping my children with math, one of the biggest struggles is to teach them to break math problems into small steps. They are smart and think th… ...more
Simplicity - you can make changes when needed, and understand the system enough to do so. Consistency - useful patterns are reused throughout the syst… ...more
Recently we purchased a few used kayaks that had been built 20 years ago from Pygmy Boats kits. (Unfortunately, Pygmy is not longer supplying kits, bu… ...more
To do more with less effort. To simplify our tasks. Sometimes this backfires and technology ends up giving us more to do and complicates our lives. It… ...more
... is simplicity. Not that we dumb things down and avoid new technology. That is false simplicity. As we discussed previously, the problem is most of… ...more
99% of the time, system bugs/problems come from the stuff you do. The code you wrote. The hardware you designed. The system you configured. The custom… ...more
In a recent discussion with Matthew Rassi about Lean, I asked Matthew if he has ever witnessed Lean being successful in organizations where there is n… ...more
Building your platform does not mean you need to invent a bunch of stuff from scratch, or purchase expensive tools. Rather, it is making better use of… ...more
Modern systems are too complex for any of us to know everything about them. Many of the problems we encounter we have never seen before. Communities b… ...more
How do you know if you have the ability to maintain your product? With complex systems, having all the design files and source code does not always me… ...more
It does not build on machine X ... It does not work in scenario Y ... It is hard to understand by developer Z ... As developers, we naturally avoid th… ...more
There are a lot of ways to organize product development information. You could do something like: productA firmware hardware yocto-build docs manufa… ...more
Yesterday we discussed how to partition functionality in hierarchical distributed systems. In the past, it was difficult to do much at the edge nodes … ...more
In modern networked systems, there is often the debate how to partition the system. Below is one example where you have three levels: cloud, gateway, … ...more
There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton Plenty of opinions abound on style, naming… ...more
What does not work very well is long standards and endless code reviews where we shame people into compliance. There are better ways. We now have tool… ...more
If you have a single developer on a single project, then perhaps consistency does not matter too much. However, if you want to scale, either products … ...more
This is a common objection I hear when building industrial systems: "We want to lock things down to a super stable/tested LTS (Long Term Support) rele… ...more
If you are building a one-off, non-connected device, you can get by without a platform. This is why so many design-shops don't get platforms -- they a… ...more
As developers, we are often lazy when it comes to updating dependencies. A short-term productivity hack is to not update them. Leave our Yocto build a… ...more
We all use other platforms -- operating systems, cloud services, middle-ware, hardware modules, etc. It is tempting when building a product to piggyba… ...more
My grandfather had this sign on his desk for years, and it embodied his philosophy for work. He did things right. He read manuals for his equipment c… ...more
What do we do? Do we focus on who/what to blame? Or do we figure out a path forward. How we are going to prevent this problem in the future? Not by sh… ...more
Saturday morning, I got a call from a customer -- something was not working due to a bug we had deployed Friday (no we don't have very good tests) 🤫. … ...more
Platforms are all about improvement -- at the personal, team, and company levels. One approach is to each day write down something you are going to im… ...more
Yesterday, we discussed the difficulty in predicting the future and the folly of "just-in-case" development. However, we should not discount the need … ...more
Yesterday, we discussed a fundamental characteristic of a platform: it will go places you never imagined. How do we prepare for this? There are two wa… ...more
How do you know if you own YOUR Platform? If a customer needs a new hardware interface or connector on a product, can you easily add that? If a securi… ...more
We hear much today about how AI is going to do our jobs better than us. AI is powerful and has access to a lot of information and does a lot of things… ...more
When building a new system, what is the first thing you implement? There are a lot of approaches -- one is to implement a minimal proof of concept. Ho… ...more
As humans, we can become attached to "golden" machines. A very expensive bicycle set up just right, a well-tuned tool, a nicely configured workstation… ...more
Did you ever have the experience going back into a project you have not touched for 6 months -- why did I make this change? Or did you ever struggle t… ...more
Patterns are important. Seeing patterns allows us to simplify things by using common data structures, re-using code/design, finding solutions to commo… ...more
Several days ago, I made a case for using Github to engage users around your OSS project. But is this the hammer you should use to drive every nail? F… ...more
As I was going through my morning routine with our 1.3 year old dog, Reese, who is very energetic, it occurred to me how well short training sessions … ...more
The following quotes from the book "The One-Straw Revolution" caught my eye: The more elaborate the countermeasures, the more complicated the problem… ...more
For the last two days, we have been discussing aspects of several high-quality Yocto BSPs. Another characteristic of these three BSPs is that they are… ...more
Yesterday, we discussed three Yocto BSP layers that are exceptional: meta-tegra (69 contributors) meta-freescale (174 contributors) meta-raspberrypi … ...more
As we evaluate technology to use in our platforms, Yocto Embedded Linux BSPs often come into the mix. Recently we talked with Matt Madison, who mainta… ...more
Planning has its place -- we need a vision for where we are going. But YOUR Platform is best focused on the present, not the future. Because the futur… ...more
The right people in your organization is absolutely essential -- no question about that. And dealing with "people issues" is a critical and essential … ...more
The simplest form of automation is a checklist or playbook. If there is something you need to do more than a couple times that involves multiple steps… ...more
How does your product increase in value after the sale? Software/Firmware/Cloud updates. Software is soft for a reason -- it is meant to be changed, i… ...more
Hack-it, ship-it, forget-it ... is a race to the bottom where cost is the only thing that matters. The initial delivery is what your customer gets -- … ...more
The purpose of YOUR Platform is to reduce friction in delivering value to your customers. We are in business to deliver value to our customers. If we … ...more
What type of culture do platforms thrive in? Where ideas are valued and evaluated on merit and truth. Where initiative is rewarded. Where mistakes res… ...more
We can look at platforms at three levels. Your personal platform is the know-how that you can personally reuse from task-to-task, project-to-project,… ...more
What are the first steps to building YOUR Platform? Ironically, the first step is not some grandiose new Platform vision, but rather to set your house… ...more
Had a nice visit with Rod and he asked me to describe what a Platform is in 20 words or less, so here we go: YOUR Platform is the collection of techno… ...more
In the last post, we discussed the fallacy of using complex technology when the scale does not justify it. But, what if we get a lot more customers, o… ...more
A blog article published 2017 titled You Are Not Google is a good read. This article makes the case that most companies are not operating at the size … ...more
Owning your platform sounds expensive. "We can't afford ops people to manage servers." "Security is scary." "We don't want to manage a database." Howe… ...more
A common objection to investing in a platform is that it is "too expensive." "We want to get it right, lock it down, and then crank out our product an… ...more
If you only build on other people's platforms, how are you different? And if you are not different, what value are you providing? We are not talking d… ...more
This may seem like a contadiction -- how can small companies afford to own and control their Platform? Should not this all be outsourced? "Platforms i… ...more
Control is a scary thing -- because then we are responsible. And if we are responsible, then we can't blame someone else. But if we are not responsibl… ...more
What is control in the context of Your Platform? Control is simply the ability to respond to opportunities and problems. In modern systems we are very… ...more
In today's connected systems, some level of control of your Platform is needed. Security problems needed fixed. Problems needed debugged. Problematic … ...more
Platforms are long games. If you are building a one-off consumer product that will not be maintained, improved, or ever change, then you probably don'… ...more
Platforms are about reuse. Not starting over on every new product. Leveraging what you have done before is one way to scale your efforts. Reuse takes … ...more
The word "simple" in the context of modern systems may seem like an oxymoron. We can't deny that modern systems are complex -- they need to be to do t… ...more
What is the role of simplicity in your platform? Simplicity makes it easier for people to use your platform. Simplicity helps ensure maintainability. … ...more
What is a Platform? There are many ways to look at this. Some might think of AWS, GCP, iOS, Android, etc. These are certainly platforms, but they are … ...more
Constraints are what guide us to good solutions. Software that is simple enough that average developers can actually understand it. A user interface t… ...more
We never have enough time, resources, funding, CPU, storage, etc. However, think what would happen if we had infinite resources. We would never get st… ...more
Product development is hard. Technical debt tends to accrue at a frightening pace. A "Platform" approach helps you reign in the chaos. And provides a … ...more