Weblog

Notes on software engineering, leadership, and building things.

  1. AI companies to watch.

    I'm paying attention to AI. So when I run into an interesting one, I've been taking notes.

  2. Why People Hate Jira

    Because Jira and its ilk are effectively state machines - they often optimize the wrong thing at the wrong moment. When the pressure is high, we want to think together.

  3. Mission Briefing: An LLM-Operated Application Platform

    Design a platform where a user can reshape a live application to match their mental model — in plain English — and the system can safely execute, deploy, and verify those changes without tutorials, manual setup, or infrastructure wrangling.

  4. What is an event?

    Not the kind with finger food and name tags. I mean the kind that runs your business - quietly, relentlessly, behind every invoice, every click and every "oops".

  5. Best Practices for Working with a Software Development Team

    If you've ever worked with a software development team that went radio silent halfway through your project, you know the frustration. You send messages. You get vague replies like "We're almost done." Weeks pass, and somehow nothing moves.

  6. Why Your Last Software Project Failed (and How to Avoid It Next Time)

    If you're running a mid-sized business, chances are you've had at least one bad experience with a software project. Maybe you hired an offshore team that promised the world and delivered… crickets. Maybe you had developers who just ghosted you when things got hard (you started critiquing the work). Or maybe you went live with something that looked good on the surface but crumbled the first time your team tried to actually use it.

  7. The Hidden Cost of Interfaces in Your System

    Most operational pain in software systems isn’t caused by algorithms or frameworks. It’s caused by the shape of the interfaces between components: what they expose, what they hide, and what they promise. Bad interfaces create coordination complexity, propagate ambiguous failure modes, and make every change risky.

  8. I Don't Want to Build Another Jira

    I don't want to build a Jira clone. Jira excels at being Jira. Trying to compete with that directly would be missing the point. Instead, I see an opportunity to address an essential gap in how teams use tools like Jira and how they collaborate to build meaningful products.

  9. index97 Project Kickoff

    Why I am building index97, a Bun-native web framework - and how the journey really started back in 2009.

  10. Flow vs Batch Based Work in Software Development

    In the world of software development, the traditional approach often involves large batches of work, where teams are booked up for months and new features or changes have to wait in line. This approach can lead to long lead times, significant delays, and a constant need for re-prioritization, often involving lengthy discussions with stakeholders.

  11. Strategic Planning - A Lesson from Kent Beck

    Kent Beck invented Test-Driven Development (TDD), inspired from one of his dad's programming books. One of them said, here's how to write a program. You take the input tape and you manually type in the output tape that you expect; and then, program until that's the output tape that you get from that input tape.

  12. Everybody wants a flexible system

    A system that is easy to change over time. Maximize ROI. Be responsive. Competitive. Adapt to a changing environment.

  13. Does Agile Software Development Scale?

    Of course it does. But that's the wrong question. Because Agile Software Development is directly related to computing power and so it has similar scaling qualities.

  14. Resuscitating Hubot

    According to GitHub stats, Hubot development stalled after 2015. There was a little bit of activity in 2017 and 2019, but not enough to consider the codebase under active development. I'm resuscitating Hubot.

  15. Software is like a garden

    Software is like a garden when you invest. You till the ground, plant the seeds and maintain it daily by pulling weeds, watering, checking for good and bad insects.

  16. Tactical suggestions for developing non-coding skills

    As software engineers, we focus our time and attention on learning how to write flexible software; one aspect to building great systems. We often neglect non-coding, communication aspects of building great systems.

  17. The Difference Between SOLID and Design Patterns

    So with the talk of learning a design pattern and not trying to shoehorn it into everything, is SOLID one of those things where its use case is specific to a task or is it generally just something to follow?

  18. Process

    I never considered myself a process oriented person

  19. To Make Money is Not a Useful Objective Statment

    About 10 years ago I was part of a meeting where the CEO of the company was trying to convey his vision of the company and it's core service to customers. I asked the room what the objective was and someone jokingly answered, "to make money" and the meeting continued ... and finished.

  20. Don't Follow Spotify's Agile Model

    It's easy to fall into the trap of thinking that you could copy the Spotify model presented in Henrik's Spotify Engineering Culture Videos as a way to Scale Agile. Well of course it's easy. They're organization continued to be agile as they grew. Henrik really makes it look easy and amazing! It's really very aspiring, so it totally makes sense.

  21. I have 2 Mac Minis

    And I want to create a cluster so that I can deploy some apps to them.

  22. Agile

    agile adj. - Characterized by quickness, lightness, and ease of movement; nimble.

  23. Team Process Framework, How We Work

    Routine enables us to move fast in a sustainable velocity. So we have 6 meetings during our iterations. It's simple, focuses on solving the misalignment problem, and periodical (repeats every iteration).

  24. Story Points, So Many Questions

    Tony likes to push my buttons sometimes. He knows what my opinion is about how and why teams should estimate stories. So I get a text from him today, asking me what I think about Do Story Points Relate to Complexity or Time?. I'm compelled to bite. I can help it, but meh, it's easy to post things to the internets.

  25. Why people say Test Driven Design (TDD) is hard

    I've been working with my team to practice Test Driven Design (TDD) for about 2 years. They just started REALLY doing it about 4 weeks ago after I finally gave them the permission they needed to do it. And even now, they don't feel comfortable because it takes them longer to finish development. Below is my story of how I kick started the team practicing TDD and my observations of what I think are keeping the majority of Software Engineers from following the practice.

  26. Delusional Conflict

    Or rather, you think there's going to be a conflict about a particular subject and so you don't even broach it. You don't even know if all the subsequent decisions and problems could've been avoided had you just asked.

  27. Steps to Creating a DevOps Culture in an Organization

    I started out writing a verbose post about how to create a DevOps culture in an enterprise. After sleeping on it, I realized that people really need tactical suggestions on how to create a DevOps culture, not just a description. So here's a DevOps Culture todo list.

  28. Dream Team

    I want to work on a team who's culture has these characteristics.

  29. I'm a programmer, I'm coding my own blog engine

    This has been a long time coming. I've preached about blogging for years and yet, have never done it myself. Well, I have but back in 1997 and I didn't keep it up and I don't have proof. And I'm a big believer programmers should write code and if you're a programmer AND gonna write a blog, you should write the blog engine yourself. It shows off your talents, or lack there of, and you'll learn something along the way.