• Building Isolated Phoenix Workspaces for AI Agents with Conductor

    I’ve been experimenting with agentic coding — letting AI agents handle multiple tasks in parallel across my codebase. The promise is compelling: one agent refactors authentication, another builds a new dashboard feature, a third...

  • Debugging with erl_crash.dump: A Practical Example from the Field

    When working with Elixir releases in Docker, even small misconfigurations can cause crashes. Recently, I encountered an issue that perfectly illustrates how the erl_crash.dump can help pinpoint the problem. Here’s what happened:

  • How CivilCode promotes civilized custom software development

    The origins of the disciplined methodology used by CivilCode can be traced to the early careers of the company’s two co-founders: Nicholas Henry and Hugo Frappier. Both were independent contractors whose paths crossed on...

  • Why software development isn’t a linear process

    Embarking on a custom software development project is essentially crossing into uncharted territory. Although we most likely won’t face dragons, there are risks. But, it’s by taking risks that you reap rewards. The creation...

  • Minimizing the cost of context switching

    Context switching is a computing term that describes how an operating system stores the state of One process (A) before starting another process (B). Before resuming process A, the state of process B must...

  • How we use pair programming to develop high quality software

    Most people picture software developers hunched over a keyboard, clicking away in silence, alone. A problem with that scenario is that one person is intimately familiar with the code and no one else knows...

  • 5 ways to be a powerhouse product owner

    In the software development world, a product owner is someone who takes responsibility for the success of a project from the customer’s viewpoint. An effective product owner will be able to execute the following...

  • Scale your business with custom software

    When demand increases and is about to cross a significant threshold, it’s an opportunity to show what a company is made of and how solid its foundation is. Will existing internal processes be able...

  • Why software development starts with sticky notes

    When starting a software development project, there’s usually a story about how the existing solution grew into its current form. While that story can be informative, it’s important to clear the slate and design...

  • Fast software development avoids this roadblock

    Software isn’t concrete. However, the “waterfall” model of creating detailed plans, getting approval on those plans, and then sticking to those plans originated in the construction industry, and is still sometimes used in software...

  • Custom software rustproofing — building products that last

    Software subscriptions and software as a service (SaaS) are becoming much more accepted and useful ways to keep software up to date and performing wellerl_crash_banner. This approach isn’t limited to off-the-shelf software. The same...

  • How Elixir is Transforming My Mind

    Last month I presented a talk to Montreal.rb on Elixir - a language I have been exploring on and off over the last year. Like any good talk from a newbie, it contains bloopers,...

  • Learning OO Design through Design Patterns

    Last week at Montreal.rb there was an open discussion on RailsConf held in Atlanta which I had attended this year. We discussed favorite talks, themes and general experiences. I prepared a few notes prompting...

  • Rebecca Wirfs-Brock on Object Design

    Building an object-oriented application means inventing appropriate machinery. We represent real-world information, processes, interactions, relationships, even errors, by inventing objects that don’t exist in the real world. We give life and intelligence to inanimate...

  • Modeling on the Right Side of the Brain

    Update: A transcript exists on Confreak’s GitHub translations repository. Update: The presentation is now online. Unfortunately the color has been washed out when the slides were filmed, so I highly recommend you follow along...

  • Ron Jeffries on Requirements

    This is one of my favourite quotes on requirements: Most of us were taught to write down all our requirements at the very beginning of the project. There are only three things wrong with...

  • Task Lists in Our Pull Requests

    Note: This was originally posted to the Dynamo Blog. Since we have been using Pull Requests to drive development over a month or so now, GitHub Task Lists have been an important component. Personally,...

  • Creating Dedicated, Focused Time

    Working on multiple projects in a single day has a mental cost and less efficient than dedicating time to a single project. Segmenting the week to work on a specific project and allocating time...

  • Taming the pile of unread books

    Recently I posted to Facebook: You know you have a book buying problem when… you discover that you have two copies of the same book on your bookshelf. Unread. Yes, I have a book...

  • Have you tried ctags with Vim?

    After reading Mislav Marohnić’s excellent post on Vim, I decided to add ctags to my development environment. What does it buy you? It allows you to jump to method or class definitions with these...

  • Domain Patterns are Alexandrian Patterns

    It’s been a while since I have posted on this blog. So just to let you know that I’m still alive, this is what has been keeping me occupied. It’s best summed up by...

  • Your Rails Application is Missing a Domain Controller

    The mantra of Skinny Controller, Fat Model reminds us to keep our business logic in our models, not in Rails Action Controllers. We know Action Controllers, sub-classes of ActionController::Base, are only responsible for delegating...

  • Software Craftsmanship Goes Beyond Code

    Often the discussion of Software Craftsmanship is focused on code and tests. But don’t forget about the other components that support your project: Make sure your source control repository is organized. Don’t leave dead...

  • Rails is Not Your Application

  • Compare Git Branches, Compare Two Files in Different Branches

    Git offers a couple of great commands for comparing branches. To get a comparison of branches in a “status” type format: git diff --name-status branch1..branch2 Will give you output something like: M config/boot.rb M...

  • Good quote on the misunderstandings of software development

    Much of present-day software acquisition procedure rests upon the assumption that one can specify a satisfactory system in advance, get bids for its construction, have it built, and install it. I think this assumption...

  • Specifying Behaviour vs Specifying Implementation

    At the JRubyConf in Columbus, Ohio last October, Jim Weirich presented “Testing – Why Don’t We Do It Like This?”. At the end of the presentation he suggested asking two questions to ensure our...

  • Leave a project how you would like to find it

    I started a new CMS project yesterday with Radiant. One aspect I am really focusing on is to ensure that all the “other” details are taking care of during the development, so when another...

  • Email to a Friend: Where to start with Agile Development

    Recently a friend emailed me asking how to get started with an agile development methodology. This was my reply (after a little editing to make it more “blog friendly”):

  • Focus Website Content on your Customers' Knowledge Gap

    The biggest hurdle when developing a website is producing the content. All of us who have experienced the process of launching a website will probably agree that it was the content development stage that...

  • Create a Sketch of your Customers’ Needs

    Last week I wrote about Asking 20 Questions to Build Customer Empathy, a quick start guide to Customer-Centered Web Design. This week, I want to expand on that, and help you create a sketch...

  • Ask 20 Questions to Build Customer Empathy

    This morning I wanted to write a post providing a quick start guide for Customer-Centered Web Design. The main principle of this technique is to build empathy for your customer before designing your website....

  • Want a simple way to get more out of your time? Try the Pomodoro Technique

    About one month ago I started using the Pomodoro Technique, a simple time management tool. The process is simple: pick a task to focus on, set your timer for 25 minutes, and go. The...

  • Personas: rich insight developed through research and making it an actionable design and decision-making tool

    A great quote I discovered regarding the purpose of personas in the comments on a post titled Putting personas under the microscope in The Cooper Journal: It’s important to remember that personas aren’t an...

  • Adaptive Path: Making Strategy Tangible

    Reading Adaptive Path’s article on Marking Strategy Tanglible, I came across a brilliant definition of strategy. While the dictionary defines strategy as: a plan of action or policy designed to achieve a major or...

Subscribe via RSS