Tags

tools

  • 2026-09-09

    🎯 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…

  • 2026-08-03

    🛰️ Simple IoT now processes GPS data

    Simple IoT can now read position data from a serial NMEA receiver, from gpsd, or from a simulator, and hand it to VictoriaMetrics and Grafana for storage and viewing.

  • 2026-07-24

    ✉️ Drafting emails in Markdown

    As developers, we use Markdown all the time: in documentation, GitHub issues, etc. Pretty much every tool supports it now, except email. With email, we are still stuck with a 2005 MS Word experience. Why Markdown? Once you know the simple s…

  • 2026-07-21

    🧩 From PCB change to mechanical model in one script

    KiCad and FreeCAD both expose command-line and Python interfaces, so a PCB change can flow into the mechanical assembly with a single script.

  • 2026-07-20

    📥 Email is not a workflow

    A recent meeting surfaced a problem: BOM changes in the engineering systems were not reliably reaching the production systems. “I told ’em” is how we had been doing things. We told manufacturing about the changes and handed over links to th…

  • 2026-07-15

    🔌 GitPLM: An easy way to manage your KiCad library using CSV files in Git

    GitPLM now supports the KiCad HTTP Library API for an easy connection between your part library and KiCad.

  • 2026-07-14

    🧊 Web application architecture

    The UI is the part you see. The boring parts underneath determine whether you end up with a sustainable product.

  • 2026-07-09

    🔩 Generating Mechanical Models with Claude Code

    We recently needed a mechanical model of a USB coupler. On a whim, I suggested that the designer try using Claude Code to create it in FreeCAD from a 2D drawing - it worked! No MCP or complex setup needed. (Although there is an MCP availabl…

  • 2026-04-16

    💻 Why the terminal still matters

    Starting in the 1970s, the terminal, popularized by Unix, has been a mainstay in computing. Many developers today, and increasingly non-developers, are using the terminal. In previous years the terminal was defined by a physical monitor and…

  • 2026-04-14

    📧 How to solve the email problem?

    How many hours go into just processing email? One reason it’s so consuming: when a message hits the inbox, it feels like it needs a response. It feels like real work. There are several ways to handle the “too much email” problem: Ignore it…

  • 2026-04-07

    🛠️ Tools or Processes?

    What matters more – having better tools or better processes? One tends to enable, the other to restrict. Companies often split into tool-builder cultures (optimized for enabling engineers and teams) and process cultures (optimized for contr…

  • 2026-03-30

    🔧 Why Go Works Well for Building CLIs

    The last post discussed the importance of command line interfaces (CLIs) in the AI agent stack. The next question is — what language works best for building CLIs? Consider the requirements: Often a CLI needs to interact with APIs. Easy to …

  • 2026-03-26

    🔌 API + CLI + Skills = the Future of AI Agents

    DHH’s recent post offers a glimpse into the future: “So while we keep cooking on actually-useful native AI features in Basecamp, we’re launching a fully agent-accessible version today. We’ve revamped our API, created a brand-new CLI, and w…

  • 2026-02-10

    🪞 The illusion of project meta-data

    Many tools exist for managing and tracking projects: Jira, Trello, GitHub projects/issues, Notion, Airtable, Asana, MS Project, etc. These all can be very useful. Why then does effective project tracking remain so elusive? As mentioned in t…

  • 2025-12-05

    🔀 The division between group and personal workflow

    When thinking about developer workflows, tools, and resources, dividing them into two categories proves useful: personal and group. A group resource is something that multiple people use (or should use): SDKs, libraries, linters, formatters…

  • 2025-11-26

    📝 Tips for working with Markdown

    Markdown is now a nearly universal format for documentation in many workflows. A few tips for being effective with Markdown: Use a standard editor most of the time (VS Code, Vim, Helix, etc.). This is faster than graphical “Markdown” editor…

  • 2025-11-04

    🔀 The Power of Git* workflows

    Git + Git hosting platforms enable both local and cloud-based workflows. Local: Lightning fast access to files - leverage the power of your local computer Use powerful native tools (editor, e-cad, m-cad, AI agents, command-line tools, scri…

  • 2025-10-30

    🤝 The benefits of sharing

    I wrote my first Claude plugin that packages up some commands that I use in about every project I work on. This plugin allows me to have these commands globally so I don’t have to keep copying them from project to project. Although the comm…

  • 2025-10-29

    🛠️ The new Artisan Age

    We live in a world of powerful tools. Milwaukee battery-powered hand tools, high-end PCB design suites, cloud platforms, open-source tools, etc. And while these tools get us a good way toward the goal, they do not do everything. Additionall…

  • 2025-10-27

    🏗️ The difference between Product and Platform

    Product is what you build. Platform is how you build. Most people build the first and outsource the second. After all, the product has the IP—the secret sauce—the valuable part. However, we observe in successful companies a focus on their i…

  • 2025-10-08

    💡 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 …

  • 2025-09-04

    📊 Simple data formats + powerful tools scale

    There is an ongoing shift in data analysis tools. Another example is datavzrd. datavzrd is a zero/low-code, interactive, visual, server-free, browser-based reporting tool for tabular datasets. The paper makes an interesting statement: Most…

  • 2025-09-02

    📚 Keep documentation close to the design/code

    I find it works best to keep documentation as close to the code or design files as possible. There are several benefits: You can update, commit, and review documentation as part of the standard working process (pull requests, CI, etc.) You…

  • 2025-08-19

    💰 What is the cheapest PDM tool out there?

    Product Data Management (PDM) is how you manage and publish your product data. The goal is to ensure all the stakeholders share a common understanding, confusion is minimized, and quality is maintained. The simplest PDM system is to put a b…

  • 2025-08-12

    🤖 AI is the new compiler

    There are two ways to use AI: Start with a vague prompt and keep prompting until we get the result we want. Point the AI at documentation, and keep updating the documentation until it is clear enough that AI can do the right thing. Even t…

  • 2025-08-11

    ✨ Anyone can write scripts now

    With Claude Code (and likely many other AI technologies), anyone can write scripts now. Instead of writing in a technical language like Python or Bash, you can now write a sequence of commands with some rules in plain English, and Claude tr…

  • 2025-08-08

    ✏️ Effective Communication (Sketching)

    Sketching is kind of like writing cursive—it engages a dynamic in our brains that inspires creativity. As we mostly use computers, it takes extra effort to pick up pen or pencil, but surprising things happen when we do. It engages broader a…

  • 2025-08-07

    🎨 Effective Communication (Drawing)

    We’ve already explored 4 modes of communication (audio, written, images, video). Drawings are another, and today it is even easier to do with tools like Excalidraw and Draw.io. It is easy to copy drawings from both into other applications. …

  • 2025-08-06

    📹 Effective Communication (Video)

    Video is now an important way to communicate. The most obvious type is Zoom calls. But there are other ways we can use video such as screencasting, recording demos, etc. Position a decent camera at a good angle. Shooting up your nose probab…

  • 2025-08-05

    📸 Effective Communication (Images)

    “A picture is worth a thousand words.” There are many times when a screenshot or a photograph can drastically improve the rate of communication. Therefore, figure out ways to do this efficiently. Make sure your computer system has an effic…

  • 2025-07-31

    🎧 Effective communication (Audio)

    Effective communication requires that those receiving information from us can easily process it. I’ve been on way too many calls where you can barely hear the speaker due to echo, background noise, or other audio problems. Some things I’ve …

  • 2025-07-10

    📈 Why GUI development tools don't scale

    This is an interesting read: GUIs are Antisocial This hits on an important point… GUI tools don’t scale, because they are not social. Two of the most complex efforts humans have accomplished are chip design and software development – both a…

  • 2025-04-10

    🛠️ The defining characteristic of a good workflow tool

    As mentioned in the previous post, modern workflow tools provide efficient access to information, collaboration, and automation. The real power is when these three things come together in one environment. The defining characteristic of a go…

  • 2025-04-09

    🛠️ The critical features of workflow tools

    Tools are what enable knowledge work in the information age. Several critical features: Efficient access to information Collaboration Automation We’ll discuss more in the future posts …

  • 2025-01-28

    🛠️ Selecting tools

    There are many considerations when selecting a tool: will it do the job? what does it cost? can I get support? is there a community around it? will it be available and maintained long-term? what does the future look like for new features? …

  • 2025-01-27

    🛠️ Two classes of tools

    There are two classes of tools: Personal tools and Common tools. A personal tool might be your editor – each developer has his own preferences and what editor one person uses does not affect another. However, it is important to have a commo…

  • 2024-12-06

    🎧 Use a headset optimized for calls

    One thing most of us do routinely is voice calls or video conferencing. For this to work, each party needs to have a microphone and a speaker. The simplest setup is to use the microphone and speaker built into your phone, laptop, or car. So…

  • 2024-09-05

    🚫 No Golden Machines

    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, a server that we have set up just right … We like buying expensive things or the iterati…

  • 2019-11-26

    Drone for Continuous Integration

    Recently, we have been evaluating Continuous Integration (CI) systems for a variety of projects (both OSS and customer). There are many OSS options to chose from. Because we already use Docker containers for Yocto/OE builds, Concourse and D…

  • 2019-11-12

    Reflections on KiCad and EDA Tools

    A recent interview with a KiCad developer prompted some reflection on KiCad and EDA (electronic design automation) tools in general. Below are samples of several PCB (printed circuit board) designs, created with KiCAD, and implemented as pa…

  • 2019-04-22

    Auto-formatting/linting Go code

    Some things in life you just have to experience to truly appreciate the value. One of these is auto-formatting/linting source code. When I started programming in Go in Vim, I naturally looked for editor support, and found the excellent vim-…

  • 2019-03-13

    SD Card Write Speed Tests

    During Embedded Linux development, we often need to write large operating system images to SD cards for testing. Recently, I purchased a USB 3.0 SD card reader from Plugable. Before that, I used a USB 2.0 SD card reader from IOGear. How mu…

  • 2016-08-18

    Why Git?

    Some time back, I gave a presentation that included an overview of the Git version control system.  I still occasionally get asked why Git should be used instead of Subversion, as it seems harder at first.  Most developers don’t really unde…

  • 2016-06-28

    Using Go in place of a Spreadsheet

    Recently I needed to calculate NAND partition tables for a project where we will be supporting a number of different flash parts from 500MB to 2GB.  I first tried this in a spreadsheet, but found it difficult to work easily with hex numbers…

  • 2014-08-25

    PCB Schematics Style Guide

    As I work at the intersection of hardware and software, I spend a fair amount of time reading schematics for printed circuit boards (PCBs).  I’m astounded at how sloppy most schematics are, and have come up with a few suggestions to conside…

  • 2013-01-22

    A quick way to share files from any directory

    Did you ever need a quick way to share files from a directory on your computer?  Or perhaps transfer a large file to another person?  With nodejs and express, you can easily set up a temporary web server that allows users to browse and acce…

  • 2012-12-19

    Perisistent device names for USB serial ports

    Currently, my workstation has two 8-port USB<->RS232 devices, one dual port USB<->RS422/RS485 adapter, and several single port adapters such as the very useful BUBII.  So with around 20 USB->serial devices, figuring out which…

  • 2012-01-31

    A Linux Kernel Tracing Tutorial

    The Linux kernel has a fairly extensive tracing infrastructure that is quite useful for debugging.  There are a number of things you can do with tracing, but the focus of this article will be the traditional printk type debugging we often e…

  • 2012-01-26

    The easy way to get serial terminal in Linux

    When doing embedded Linux development, most of us spend out time tethered to a target system with a serial cable, which is used for a serial console.  Minicom is the defacto serial terminal software for Linux.  However, Minicom is a little …

  • 2010-08-07

    Qt Creator for C/C++ development

    Recently, I’ve been evaluating Qt Creator for general C/C++ development.  I’m currently involved in the development of a rather large C++ application that is approaching 200,000 lines of code and 1000 source modules.  In the past, I’ve typi…

  • 2009-10-21

    A quick serial logging application

    Recently when debugging a device connected to a rs485 bus, I needed a simple application to dump the raw data coming over the rs485 bus.  Minicom does all kinds of weird terminal stuff, plus it will not display binary data, so that was out.…

  • 2009-10-16

    Apache and how to correctly use NameVirtualHost

    As I often get involved in server administration (SVN, git, redmine, etc setup), I deal with Apache on a regular basis.  For simple configurations, the default Ubuntu/debian config works well.  However, for a more complex setup with virtual…

  • 2009-09-09

    converting digital camera movies to ogg format

    Now that firefox (v3.5) has built in support for ogg videos, ogg is now the most convenient format for “easy to view” video files (assuming you don’t want to use a service like youtube).  Some digital cameras (like my Canon) records movies …

  • 2009-07-14

    How to capture source changes to an OpenEmbedded package

    One task that is a often confusing to new OpenEmbedded users is how to capture changes to the source code for a package/recipe.  First, lets review the progression in tools use to capture source code changes. Figure 1: Progression of tools …

  • 2009-01-15

    Installing Ubuntu on a Core i7 DX58SO motherboard

    UPDATE:  2009-03-17 – It appears that hard drive issues I encountered are likely due to the HW RAID formatting on the drive I tried.  I just tried a brand new hard drive, and Ubuntu 8.10 installed flawlessly, and everything works. I’m not s…

  • 2008-12-12

    How to disable SSH host key checking

    This article presents a very nice overview of options to disable ssh host key checking.  When working with embedded systems where you are constantly reloading the rootfs, it is really annoying to have to edit your ~/.ssh/known_hostsevery ti…

  • 2008-11-19

    Things that work!

    Running a small business has a special set of challenges, and if you are not careful, the overhead can quickly consume you.  This article is a list of things that I use in my business that work well for me, and help me to be efficient when …

  • 2007-07-10

    Open JTAG debugging tool for the PXA270

    Looking for a low cost, high functionality JTAG solution for the PXA270?  As of several weeks ago, the openocd project now works with the Intel/Marvell PXA270 processor.  There are a number of USB based JTAG debuggers available for under $1…

  • 2007-06-20

    How to control the cable nightmare

    Do you ever wonder if there is a better way to manage cables in your lab?  I typically have have 5-10 embedded systems on the bench powered up at any give time.  When you start thinking of all the cables required to connect these systems (e…

  • 2006-05-29

    TRAC and Distributed Development

    I have long been a big fan of source control tools and issue tracking systems.  The “concurrent” model made popular by CVS is a tremendous benefit any time there are multiple people working on the same project.  For most of the projects BEC…

  • 2006-05-02

    A Really Nice Hex Calculator

    When working with embedded software, I often have a need for a hex calculator.  Over the years I’ve used a number of different tools.  Through college and for several years after, I used my HP48 calculator.  It is a great tool.  Around 1998…

  • 2005-11-03

    Total Phase USB Protocol Analyzer review

    I recently purchased a USB protocol analyzer from Total Phase.  The device will analyze full speed USB traffic and works well with Linux.  On Linux, the software makes use of libusb, so there is very little setup required to get the device …