State machines are the answer for those seeking determinism in the era of AI agents. The release of Gary Bernhardt’s screencast Functional Core, Imperative Shell mentioned at the end of his talk Boundaries was a transformational moment for me. Up until that point in my career, I hadn’t really thought too much about “architecture” as it relates to software, well at least not in the way I had heard…
LLMs make great "digital archivists," resurrecting old sites and finding lost assets via the Wayback Machine. I’ve been down a nostalgia rabbit hole lately, trying to track down a lot of my early internet artifacts—including my first website. I had been hunting in the various internet archives for DM Designs™ , the first website I published in 1998, but for the life of me I couldn’t remember the…
Sora is a surprisingly capable idea generator for gamedev pre-production. I spent a few hours yesterday experimenting with Sora 2, trying to figure out if it could help with asset pre-production for a game idea I’ve been noodling on for about a year. Turns out, it’s a pretty capable partner—with caveats. You can get solid consistency in format (camera angles, poses, framing) by being specific in…
Post-generation checks in Sora 2 flagged my remix after an unexpected voice segment appeared. I’ve been having an absolute blast with the recently released Sora 2 , pushing its limits, testing edge cases, and generally seeing what kind of creative chaos I can conjure. Yesterday, I had a fun idea to create a spoof video of @searls and myself presenting at a fictitious conference. You know, the kind…
Smarts™ aren't your career bottleneck; staying engaged in hard conversations is, especially when the plan isn't yours. I recently finished reading The Courage to Be Disliked and thought it would be a good time to reflect on one of the more painful episodes in my career through the lens of resilience, trust , and the idea of separation of tasks that the book discusses so effectively. The Website…
As an employee, you have a management cost that you can reduce by making frequent deposits in your trust bank. I’ve been reading The Hard Thing About Hard Things by Ben Horowitz ; it’s excellent and you should totally add it to your reading list if you haven’t already. Somewhere about the halfway point, there’s a chapter on the topic of “Management Debt” with some ideas I hadn’t considered before:…
If you're experienced and prefer code to prose, you can explore the code on github or npx degit davemo/nodejs-tool-dev-template . There’s been a lot of focus on the topic of DX or developer experience recently, which is great because it’s something that I’m passionate about improving on the teams I work with. So passionate, in fact, that I recently transitioned out of a customer-focused…
Keys to evaluating software performance: investigate, profile, and identify the missing fundamental. Music composition and production is a large part of my life outside of software development, so much so that I often find myself thinking of ways to draw parallels between the two. One such parallel that has stuck with me over the past 6 months or so is the concept of the missing fundamental . A…
Using Svelte, we can reimagine the presentation layer of a web application as a state machine. Thinking of web applications in terms of state machines is not a new idea ; in fact, it has become so popular in the past few years that teams are spending increasingly more time breaking down their application into states managed by front-end frameworks. Whether you use Redux , MobX , or even perhaps…
Dependable is a dependency injection framework for Node.js Recently, Michael Schoonmaker , Joshua Starkey , and myself got together to brainstorm some improvements we wanted to make to an open source library called Dependable that we had used on a client project. Dependable is billed as “A minimalist dependency injection framework for node.js”, but I feel like it only took on the “minimalist”…
As software-consultants, building trust should be our number one goal, but we have to remember that building trust takes time. I wish we could have built it right the first time but we were learning along the way. Ugh, we got handed this mess and now we have to figure out what to do with it. What do you think we should do? Sound familiar? If any of these statements resonates with you then you’ve…
A screencast that covers a number of techniques on evaluating the performance of React applications. React is frequently touted as being performant due to the optimizations of its Virtual DOM technique, yet all to often this is used by developers as a crutch to avoid thinking about the performance of their code at all . This generally leads to performance problems in React apps of any significant…
You can improve the DX of Makefiles using some simple target annotations and some parsing with grep and awk . It has been but a few short years since web developers chose a side and took up arms in the holy war of build automation tools ; this is only one of many wars that have been fought countless times since the dawn of computing. In the grim darkness of the far future, there is only war. Meh.…
A continuation of my exploration of AngularJS and advanced directives through a screencast. Two years in the making; just released and fresh off the presses it’s yet another screencast covering everybodys favorite enterprise JS framework: Angular JS! In all seriousness, I had a hard time considering whether or not to publish this screencast because I found myself questioning whether the content…
Think hard before you quit your job. Consider whether you might be quitting to chase technology, scale, or to run from adversity. 2016 was a year of ups and (if you agree with many of the social media channels in the last month) a significantly larger number of downs. I’m not sure exactly what it is about this time of year that causes us to reflect so much more than the rest of the year; I suspect…
A basic introduction to getting started with React Native. This screencast shows how to get setup, development workflow, and building the first cut at a ListView to show some images and meta data for Hearthstone cards in the React Native application workflow. Resources https://facebook.github.io/react-native/
Creating DSLs (domain-specific languages) can be a path to useful abstraction, but it can also lead to complexity. Web developers are integration specialists—tying plugins, scripts and frameworks together into a web application that works. Thinking in terms of abstractions—by condensing many low-level ideas into fewer high-level ideas—allows us to simplify our code and reason about it with less…
AngularJS treats HTML as a DSL, allowing us to create abstractions using markup through its concept of directives. This screencast examines some of the more advanced features in Angular, specifically Directives. We’ll see how we can leverage the power of custom elements and attributes to map Domain Specific concepts through HTML and translate those into Value Objects in our Domain, resulting in…
When we prioritize technical depth over empathy, we run the risk of over-indexing on coding skills when valuing software developers. Do software companies succeed because of the technology they use or is it due to the discipline and talent of their engineering and design teams? Is it the right combination of vision and direction from leadership that leads to success or just simply being in the…
Choosing a testing strategy has more to do with selecting the right level of fidelity than selecting the right testing framework. This screencast examines low and high fidelity testing strategies for Angular JS, and demonstrates examples of how to write tests with these strategies using Protractor, Testem, and Jasmine. Code https://github.com/davemo/lineman-angular-template Resources This is part…