architecture
-
🎯 Getting good results from LLMs
Building with LLMs can take many different paths with widely varying results. At one extreme, AI slop; at the other, work better than anything we’ve done before. What is the difference? Many are obsessed with better models and tools, lookin…
-
🏗️ Good architecture
We may think of “good architecture” as getting it right up front. We certainly want to do as much of that as we can, but perhaps a more important part of “good architecture” is that it enables innovation loops. Good architecture makes loops…
-
🛤️ When building connected products, two things have to go right
The first is architecture, decided partly up front: network topology, the protocol between processors, how function is partitioned across boards, real-time constraints, the data model, how firmware gets updated in the field, and how operati…
-
⚖️ Exercise: Build vs Borrow
In the course of product development we build and we borrow components. Some examples of each: Build: Write code (create software) Design a PCB (printed circuit board) Design a custom mechanical component Create a custom test setup Borrow…
-
🧊 Web application architecture
The UI is the part you see. The boring parts underneath determine whether you end up with a sustainable product.
-
🔍 AI coding requires better inputs and robust verification
Some great feedback on the previous post (Impressive is not always effective): “I agree. It would be interesting, however, to compare the progression of AI code generation with that of compilers - were there star assembly-code engineers sa…
-
✨ Impressive is not always effective
When AI generates something, the result is often “impressive.” We might marvel at how quickly lots of code is generated that mostly works. Generated documentation is extremely detailed and well formatted. AI-created diagrams are colorful, u…
-
📖 The definition of the word 'Platform'
The definition of the word “platform” includes things like the following: Acts as foundational for other products or services, not the final end product itself. Provides a stable base. Typically supports multiple, distinct applications or …
-
🔄 Breaking the AI slop cycle
“AI Slop” is a common expression describing a familiar phenomenon. It refers to sloppy code (or other assets) generated by AI that mostly works, lacks proper review, and may be poorly architected or implemented. The primary characteristic o…
-
⏳ The "long-term" may be closer than you think...
A common objection to “Platform Thinking” (proactively build your platform from the start) is: there isn’t time right now; this can be done after the 1.0 release when there is ample time and resources. The “long-term” can be defined as when…
-
🎯 A single source of truth
An intense discussion about part/version numbers driving application logic surfaced an idea to create a simplified version of the product metadata that simplified the programming logic. However, this rarely works out long-term, because seve…
-
💻 Local First Dev
In the last couple decades, we’ve observed the success of SaaS web applications (Google Docs, Salesforce, Basecamp, Trello, etc.). These applications have unleashed collaboration using the web platform. Before this, users might have emailed…
-
💡 Reflections from AI-coding a 10,000 line app
Lessons from AI-coding a 10,000 line app BRun is getting usable. Claude Code wrote almost all of it using Doc-driven development (manually write/update the docs, and have Claude write the code). Some thoughts: Claude is fast – there is no …
-
🔗 Integration, not isolation (part 2)
We recently discussed integration, not isolation from a technical perspective. In an organizational context, we can have integrated cross-functional teams, or isolated silos. And the easiest way to avoid silos is transparency and common sys…
-
🔗 Integration, not isolation
In a recent discussion, the comment was made that containers are not always a good fit for edge/embedded devices, as they are designed for isolation (which is useful at times for cloud workloads), but with embedded, we want tight integratio…
-
🧩 Composing is hard, complexity is easy
We’ve recently explored the idea that composing simple things is the way to scale. But this is harder than just cranking something out. Some examples: It is much easier to create an Excel spreadsheet than write a Python script to process a…
-
🎼 Compose software like music
Music is an interesting thing – a beautiful arrangement is composed of very simple constructs – a handful of simple notes on a relatively simple scale. The brilliance is in how these simple constructs are arranged. Likewise, brilliant softw…
-
➡️ Frontload the boring stuff
Some examples: Think about and write tests before implementing a new software feature. Automate deployment of a new service before developing it. Create eCAD libraries before doing the schematic/layout work. Document the architecture befor…
-
Struggling to scale your IoT system? Simplify your data.
Have you struggled with adapting your IoT system to new applications and requirements? Is handling configuration updates at both the cloud and edge a challenge? Is synchronizing required data between cloud and edge instances a challenge? Th…
-
🧪 Abstractions and Platforms
I’ve come to appreciate the Go communities advice on abstractions. Avoid creating abstractions prematurely. Every abstraction has a cost, and often duplicated code is simpler and easier to maintain than a premature abstraction. Don’t take…
-
⚖️ Architecture vs. Optimization
In 1968, “The Art of Computer Programming” by Donald Knuth was published with the following quote: “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.” This was in the age…