Archive
October 2026
Things I learned in autocross this year
Use more gas and more brakes. Actually, just tap the brakes. It’s not a track, the speeds aren’t that high, the braking zones aren’t big. Oregon Raceway Park is a fantastic track. …
I had been feeling a bit two-dimensional. Coding agents, too many attention-hungry algorithms making my feeds a bit predictable. Maybe (finally) fallout out from video games. Distractions (apps and social media) too close at hand. Indicators of doom in our daily news. I wanted to …
Social media is where you’ll find the most sublimely interesting and entertaining people in the world. Right next to them are people with so many bad takes and shallow enthusiasms. Of course, all the clankers, some masquerading as human and some transparent in their toaster-ness. …
September 2026
Some days, you write for yourself. Other days, you write for everyone. Most days, the world writes for you. 🤓
A weekend in Carmel, CA
My only goal was to spend the weekend by the pool. I did, and it was everything I’d dreamed it could be.
The big blur – Brian Bailey nailed it. Wish I’d thought of this framing. We’re living through the big blur. Product, design, engineering, mobile, web, QA. Roles are fluid. Previously clear lines now fade at the edges like lines in an Agnes Martin painting. I’ll yes-and this: not …
Once more, with feeling – another season, another newsletter. Trying to get a conceptual hold on how to feel human in this continually liminal time in software and technology. Current hypothesis: maybe thinking slowly and holistically, whilst acting quickly, is worth exploring. …
Within you are many wolves writing code
One wants to implement this feature to the best of your standards, regardless of the surrounding code. Another aims to fit in with the standards of the existing code, as it is. …
Notes from the agent coding (not quite) vanguard
Everything is weirder and more capable. Models are way better at many things, unattended coding in particular. But, to everyone’s dismay, that causes them to write in a tedious …
August 2026
Interestingly
Three modalities of creativity I am keen to explore: dirt, screenshots, monk-like. 1. Dirt, metaphorically Take something worthless (e.g., literal dirt, metaphorically non-working …
I’m on book six of Dune. But, I’m just now finding out the story runs eight books. (Have Frank/Brian Herbert not heard of trilogies?) Finding focus when working with coding agents, flying too close to the multitasking sun. But, it turns out concise output and taking intentional …
Patrick Dubroy, Fast is better than slow: Think about it — if you’re fast, you get data more quickly. That helps you make better decisions, sooner. It also means you learn faster, and over longer periods it means you learn more. Being fast also means you can try out multiple …
Frozen 2 should be rated R (Interconnected): Frozen 2 in which the entire city is almost destroyed by a tidal wave… It is SO LAZY. While we’re piling on lazy writing here: LOST, and most American television, is particularly lazy about generating consequence and tension with lines …
July 2026
If the clankers have you down, I recommend: read your favorites, write like that, discover new favorites, write and edit like that, rinse and repeat. It would seem, at this moment, only a human can produce liveliness by chaining words into language and narrative. Writing is how I …
Working with agents, summer of 2026: you have an always-on, amazingly deep collaborator. The coding ones can work themselves out of most problems, if you are willing to pay for the effort and thinking costs. But, wow, you are absolutely right! They are boring as nails and write …
The frontier labs regularly run promotions like “hey there’s a long weekend or holiday soon! Tokens or this new model is half-off until the next business day back.” I don’t like the nudge to “always be prompting”, working with the models at all time. To trade a long weekend for …
So what had happened was, my daily reading sort of tailed off. Distractions and all that. Then my writing dropped off. And then, the web hit me with three great ideas hit me right in a row. The web provides energy for reading, the reading transforms into energy for writing. …
June 2026
Silvermoon Brewing and McKay Cottage in Bend, Oregon
You ain’t got time for all this – the latest newsletter edition from yours truly. Some of my recent writing, remixed. Some all new links. If you’re seeing this on your computer screen, you might like it!
🎧 Human Touch is the Phil Collins-est of Bruce Springsteen albums. From one Oscar winner of the 1990s to another.
The local maxima we need to reach the next global maximum
Half-way through 2026, I’m finally getting around to posting some predictions for the year. Really, ideas about how software development can fix the house to deal with coding …
Exploring the Rich History of Funk and Soul Music: A Journey Through Rhythm and Emotion: Funk and soul music aren’t just sounds; they’re vibrant threads woven into the fabric of musical history. Emerging from the rich cultural tapestry of African American communities in the 20th …
🛬Back from Spain. Vermouth de grifo, Hieronymus Bosch and Matisse, old buildings, and public green spaces are pretty great. 📚Still at it with Power Broker and the first six Dune novels. Larry McMurtry essays are making me a little nostalgic for the idea of Texas (but not …
May 2026
Fits on a floppy, great idea: Software has lost its way. Apps that once shipped on a single floppy disk now demand gigabytes of your storage, minutes of your time, and far too much of your patience. We accepted this gradual bloat, but that’s not progress. Software should be as …
Soundgarden’s Badmotorfinger is underrated. Twenty five years later, still no skips.
Previously in tech, the joke was that Microsoft’s org chart was a bunch of divisions in a Mexican standoff. Fast-forward to now, instead of pointing guns at each other, every division at Microsoft is yoked to the other via KPIs and bonus allocations. None can maneuver freely …
Madrid–Barajas and Heathrow, day 10.
Madrid, day 9.
Toledo, day 8.
Toledo, day 7.
Madrid, day 5.
Madrid, day 4. Museo Prado not pictured at the request of the Museo Prado.
Madrid, day 2
April 2026
Examples of The Eponymous Trifecta: “Black Sabbath” by Black Sabbath from the album Black Sabbath “Motörhead” by Motörhead from the album Motörhead “Iron Maiden” by Iron Maiden from the album Iron Maiden Hopefully you’re starting to see the pattern. (There’s way more of these out …
git-spice – stacked diffs, but without another (SaaS) tool to provision and pay for. Excellent ergonomics, if you’re comfortable with the git CLI as-is. I’ve tried this for one project so far, things went as hoped. Moving between commit ‘stacks’ is easy, and rebasing changes from …
When you’re stuck or uninspired, reach for your spark file: This is why for the past eight years or so I’ve been maintaining a single document where I keep all my hunches: ideas for articles, speeches, software features, startups, ways of framing a chapter I know I’m going to …
If you were wondering, “could anyone make OAuth2 an even more involved, jargon-filled process?”, the answer is yes. AT Protocol and Bluesky sure did. 🙃
March 2026
RIP my vim muscle memory
I bet a lot of the grumbling about coding agents is really about losing out on the joy of moving quickly through code via a deeply learned text editor. I’m feeling it too, but I’m …
Yeah, I’ve locked in to a few writing and coding sessions with The Social Network soundtrack. But, have you ever tried locking in to something you can move your hips to? Related: currently compiling a list of Soundtracks That Didn’t Have To Go So Hard, and Prince’s Batman is way …
Wrapping up lil’ document editor “research”, starting to write more on it. In short: cross-platform in the Apple ecosystem is possible, but tricky once you get into third-party libraries. Agent coding makes a lot possible, but doesn’t make anything trivial. Prototypes without a …
Behind every guitar god there is, literally, a drummer making the odd 7/8 or 5/4 bar sound like 4/4. Paraphrasing Einstein, true guitar gods don’t play at dice or outside of a strict 4/4. (Inspired by: what the heck even is “Black Dog”?)
Squeeze out the trickiest part of the problem, another part of the problem becomes the trickiest. A tale as old as time. Today, it seems like the biggest opportunities will be in the third of my opening statements. Building systems remains hard. Can I assume you’re familiar with …
February 2026
Blogging (Classic)
Wherein you need feeds, notes, and documents.
I love when/what Matt Webb builds: It should be SO EASY to share + collaborate on Markdown text files. The AI world runs on .md files. Yet frictionless Google Docs-style collab is so hard… UNTIL NOW, and how about that for a tease. — mist: Share and edit Markdown together, …
Contra my optimism on software estimates, some realism: I gather as much political context as possible before I even look at the code. How much pressure is on this project? Is it a casual ask, or do we have to find a way to do this? What kind of estimate is my management chain …
Astronomy is perhaps the science whose discoveries owe least to change, in which human understanding appears in its whole magnitude, and through which man can best learn how small he is. – Georg Christoph Lichtenberg, The Waste Books You can’t argue with a star!
Dave Rupert, Write about the future you want: There’s a lot that’s not going well; politics, tech bubbles, the economy, and so on. I spend most of my day reading angry tweets and blog posts. There’s a lot to be upset about, so that’s understandable. But in the interest of …
This is not my beautiful agent-driven economy
Wherein someone’s gonna be wrong about AI
January 2026
I’ve been reading Power Broker on and off throughout the year (brag). I’m almost five hundred pages in (brag again) and it’s worth it. The writing is as good as the research is deep. Which is to say, it manages to maintain a great pace even though it’s a huge book (brag the …
Wherein we meet the boss of humans, same as the boss of agents (sorta)
Processes should serve outcomes, not the other way ‘round
In moments where process overwhelms a team’s ability to get stuff done, I’ve been fond of saying we’re not here to: Push Trello cards around. Guess if a coding task is more like a …
Wherein there are cars, light-sabers, and television in my life.
Bobcat, a document editor prototype
Wherein I’ve been making my own little text editors. Sometimes, even cozy ones.
It’s the end-game of typing code as we know it
Wherein it continues to be about the other things
Joining a new crew amidst a sea change
Wherein types, agents, and quality-of-life matter a lot for software development these days.
December 2025
The hand we dealt
Wherein generational life-scripts have downstream consequences.
Three great clarinet-adjacent sentences
I DID NOT KNOW what was going to come from Angela’s clarinet. No one could have imagined what was going to come from there. I expected something pathological, but I did not expect …
Coding for the sake of typing in code
Expert typist’s elegy
Owl visitor
Wherein a bird friend is spotted from our back yard
November 2025
The whole product team can use coding agents
I did a talk on coding agents, like Claude Code and Codex, advocating that everyone on product teams, not just coders, can use them to do more or better work.
“So then the changes in progress are just there, ready to go.” “How are they copied? A network sync, an on-disk copy? What about conflict resolution?” “The data is available on disk and yeah, there’s a sync. Conflicts happen less often than you might think.” “That’s not how …
Every so often I find myself a few screens deep in an application’s navigation hierarchy and forget I can just pop out instead of going back to the top. I was reading feeds, decided I should do something else, but felt compelled to go back from the item view to the item list to …
I’m on-board with exploring LLM and agent tooling to improve upon the whole endeavor of software development. But, I consistently find myself disabling Copilot/Claude/etc. completion and next edit prediction in Markdown files. This is the one way in which I’m “too cool” for the …
When sizing up a stranger, the advice I’ve heard in the past was to observe how they treat service staff: waitstaff, flight attendendants, concierge, etc. This one seems equally appropriate to the internet age: To rapidly reveal the true character of a person you just met observe …
October 2025
A little voice in the recesses of my brain, the one that remembers of compiling Linux kernels and collecting WinAmp themes on university Ethernet LANs in the 1990s, is very happy to report that “obscure bit of syntax dot TLD” is still a very valid and fashionable sort of domain …
Everyone is losing the thread. Maybe that’s what makes this moment in history so difficult to follow and frustrating to live in. Not just politics, and media, and our government(s). BMW lost the thread on their sports cars and classic design language. Apple lost the thread on …
Maybe we should build more personal software in the text: For navigation, the Cat featured leap keys: two rose-colored keys below the spacebar. You could press and hold one while typing a sequence of characters to “teleport” to the nearest instance of that pattern. The left leap …
The King Gizzard & the Lizard Wizard Rule: If you provide a text box for people to put things on the internet, you will eventually need some kind of moderation mechanism for people to opt out of the King Gizzard and The Lizard Wizard discourse without bothering the admins.
Taylor Troesh, Compressing Codebase Collocates: To decompress a codebase, inline its paths of execution. For example, rewrite each endpoint of a webserver with only standard library functions and simple database drivers. One can repeat the decompression process all the way to …
A blog post can just end. Informality is an advantage, most days. And, being an amateur. We’re all terrified of being revealed as amateurs, but in fact, today it is the amateur—the enthusiast who pursues her work in the spirit of love (in French, the word means “lover”), …
I am told that you can enter thousands of words in a note attached to a task in Things. This seems like an esoteric and unconventional bit of trivia, Things being a task management app, not one of the likely candidates for a “second brain.” My pal Brian Bailey knows the exact …
Think of how much context space you’re wasting from all the times a coding agent says, “of course you’re right…” Slaps CLAUDE.md yeah I can fit so many more tokens in this baby since I told the agent to 1) call me “Meatbag” and 2) say “gotcha” when I correct it and then get on …
September 2025
Modern applications can’t hope to escape towering chains of complexity. Careful consideration of trade-offs and a bit of gardening are the way through. If you don’t read, you won’t succeed. – Tom MacWright, How to keep package.json under control Possibly the best one-liner advice …
The CSS rediscovery continues! Then, a few years ago, I read a blog post by Josh W Comeau called My Custom CSS Reset. I realized that there’s no deep magic; everything a reset does is just normal CSS that you can read and understand. — Jake Lazaroff, My Modern CSS Reset I have …
It’s no “for sale, baby shoes…” (spoiler redacted), but I like the feel of this short fictional invention: From decades of reading The New Yorker, he had an extensive recall of the fabric that makes up the world. This recall, however, seemed exclusive to facts and anecdotes that …
Polyglot runtimes have arrived and fizzled throughout my stage whisper 25-year career. Supporting multiple programming languages without reducing them to an uninteresting lowest common denominator has proven wildly difficult. That is, most multi-language runtimes are one of: “you …
📚_The Long Way to a Small, Angry Planet_, Becky Chambers I’ve read three of Chambers’ books now and would characterize them as “comfy sci-fi”. In the best possible way! There’s a spaceship with many sapient species making up its crew. There are stakes and adventures, but they …
We live in a time when the math favors iteration
Granted, quality of idea matters. The worst idea executed swiftly and repeatedly is still probably the worst idea. But it’s hard to know, with ideas, when you’ve got a winner or …
Easier doesn’t mean less good
Explosion of mediocrity, video gaming edition: it’s become easier to build games, so there are more and more games every year; but the number of highly acclaimed games per year has …
CSS done grown up
Look at this bit of CSS. For greatest effect, imagine sending it yourself from ten or fifteen years ago, or the first time you hit upon a limitation in browser compatibility or …
Feel, fast, function, form
In that order, every time. I make a big deal about working downhill. Get stuff done, slice it smaller, get feedback, go again, remove friction, a little faster this time. But let …
Since I last wrote a /now post: Friends visited, a lovely time being a tourist in our hometown was had. We went to Disneyland for my birthday, stayed at our favorite hotel, ate our favorite things, it was good. Saw The Roots in a downtown town square, this was a great way to …
August 2025
No surprises
When leading projects, in any capacity, avoid startling your colleagues. Tech leads, engineering managers, product managers, etc. need to keep peers and stakeholders informed. When …
Dig out, not up
So you messed up. Now what? Late projects stay late. It’s terrifically rare to “catch up” on a late project. When projects run late, it’s because you’ve missed something in your …
Dilla Time: The drums weren’t the only instrument to play with rhythmic expectation, because in funk, every instrument was used as a drum, especially the bass guitar, which also began to take on the melodic work. Funk made the bass line prime. — Dan Charnas Rocco Prestia and Doc …
In-memory Filesystems in Rust. Spoiler alert, introducing indirection around filesystems isn’t a test performance win, for some combination of use cases and modern hardware: In the meantime, it seems like modern SSDs (and modern OS filesystem caches) are so fast that it doesn’t …
How will we know it works? My favorite set of magic words to push this process forward is to ask: How will we know it works? Don’t accept silly answers like, “The button will be red.” That’s not what the person who wrote that ticket is looking for. They have a reason for wanting …
🌶️ The collected works of Motown are at least as good as Mozart’s. Adjacent: Phil Collins’ and Michael McDonald’s albums of Motown covers are pretty dang good, if you want to explore beyond the originals.
When in doubt or staring down a blank canvas: Readme-Driven Development still exists. And, is possibly even more effective in a time when you can paste a design doc into a slot machine made of numbers and get (possibly working) code out the other end.
Finishing is a mindset
The last 10% of any creative act is the hard part. (Previously: Finishing is a skill.) You had an idea, thought it would take X days, only to find X-1 days of all these other …
July 2025
Good enough to get going
The winning scenario for agent-assisted code, design, science, etc. is humans having more time to do creative and impactful thinking because computers/LLMs do the tedious setup, …
This is a fancier way of saying that it’s unfortunate that naps don’t make one feel more energetic afterward: So, if you read through the Philokalia, it is very common to find the same author alternating between talking of thoughts (logismoi here referring to negative, vicious …
💤 Midday disappointments: A dip in energy is not fixable by napping, and napping does not restore one’s energy A superb nap is restorative, but difficult to predict or consistently generate A short nap might make you feel better, but rarely more energetic Coffee after a certain …
Multitasking with my eccentric pal
Over the course of two experiments within two half-day coding sessions, I better glimpsed what working with coding agents might look like over the next couple of years. 1. I teach …
📚Currently reading: Ursula LeGuin, The Language of the Night. A series of essays about writing, science fiction, and LeGuin’s own works. The only novel of hers read is The Dispossesed, but I’m enjoying the heck out of her non-fiction writing and thinking. It’s pretty timely, …
The problem with liking anything besides “ahead of their time” musical groups from the 90s like Radiohead or Wu-Tang Clan: Everyone who was a teenager in the 90s has one or two favorite bands or albums that they hold dearly and honestly. The problem is, basically every musical …
Yesterday I coded with only my wits for the first time in a while. It was pretty great. Not quick, but educational. Not efficient, but full of that great feeling when challenges are tackled with one’s own intelligence and experience. Do recommend.
Coding agents create an opportunity for shorter coding times, faster iteration, and shorter feedback loops. That opportunity is wasted if we don’t solve for all the reasons a software project can go sideways that aren’t “we couldn’t type fast enough”. “Lowering the cost of …
Computers are also free to be weird: I’m a programmer. You’re probably a programmer. We think in systems, deterministic workflows, and abstractions. What’s more natural for us than viewing LLMs as an extremely slow kind of unreliable computer that we program with natural …
I kept an 8-week streak of writing and publishing a newsletter essay going. I love the output, but not that it absorbs almost all of my writing energy. Back to re-thinking the format on that one. “It ships because it’s 11:30am” was useful in setting that streak. But “focus on the …
📺 Currently watching: MurderBot: I might have cast this differently, but I’m still enjoying it. Poker Face: still an absolute delight. The Bear: they push me away with all the yelling, they pull me back in with “people doing a creative thing together” montages.
Prototyping with LLMs
A few reflections on what I’ve been building (with) lately: llm is great for prototyping many kinds of workflows. If you’re thinking “I’d like to build an app with some …
June 2025
A thing about homeownership is that every room is a workshop until it becomes whatever room it’s going to be. This seems to hold for brand-new homes and old homes. Sometimes, for rooms you’ve been using one way for years, and now you want to use them for a different purpose. Or, …
It’s unfortunate, but true, we can’t sensibly integrate all the great productivity tools out there into our workflows. I wish I could find a way to put Bike, Antinote, and Agenda into my (daily) workflows. 🤷♂️
Systems expansive enough to warrant a course, discussion forum, or orthodoxy may not solve your problem. I was thinking of knowledge management systems when I wrote this down. But it’s probably more broadly true than just organizing your tasks and notes. 🤔 Related: I Deleted My …
I’ve been writing about estimating and planning a lot lately, so this is worth sharing: Numbers are not the goal. Successful outcomes are. Those footing the bill would rather have a successful outcome than an excuse to blame the estimator. In exploring better estimation, I’m not …
We tested for tedium
Folks are ruffled that LLMs, even without tool use, are pretty good at coding interview challenges. How will we even know who is good at coding anymore? (Current hypothesis: by …
Communicating early and often is a great hack, and easy to do: In the end, write the docs you want to write. If no one reads them, or if readers find they are out of date, then consider not writing them next time. But don’t let anyone shame you into wasting time. The question is …
Backyard Coffee And Jazz In Kyoto, Japan: One of the things I read about while getting ready for our vacation in Japan were these famous tiny businesses: bars or izakayas with four seats, narrow little bookstores or record shops in people’s houses or the bottom floors of small …
Exit Codes Are Having a Moment
LLMs (and agent coding tools in particular) love a fitness function. Give them a tool that indicates success or failure and they’ll go to town. Compiler errors, linter …
Differential Coverage for Debugging. Take a failing test. You have no idea where the underlying issue might be. The system you’re working with is possibly deep, wide, and eldritch. Your move: run the tests and capture code coverage without the failing test run the tests and …
So your estimates were wrong
AKA “Help! I estimated a project and hit every branch falling down the surprises tree.” A shocking turn of events that definitely has never happened to any of us. Don’t worry too …
Take an album track, in this case Daft Punk, deconstruct it, and then reconstruct from scratch in Ableton? That’s a cool hack. I must admit something: while I consider Daft Punk’s first two albums absolute masterpieces, I’ve never been a huge fan of their guitar tones—especially …
I was talking to a pal about how some software developers are able to operate in a sort of timeless way. If contemporary tech, the stuff that made “tech people” the antagonist, is on one end of the spectrum, these developers are all the way over on the other end. Picture a sleepy …
May 2025
Another month, another Cars and Coffee event. Honestly, 75% of it was Porsche 911s of all vintages. But, I tried to work cars with other …
Anyone miss running Linux in the 1990s/2000s and leaving a visualizer, xscreensaver, or some kind of demo running while working on other things? Nostalgia is a heck of a thing. 😆 Improbably, Apple Music still has something close to Winamp/XMMS visualizations.
Maintain fewer and smaller backlogs
Easy advice to give, tricky to implement. Sometimes it’s effective, sometimes it’s a wash. Like rearranging for the sake of rearranging. But when it is effective, it creates mental …
On one hand, there’s the classical music catalog mode of blogging. This is a bookmark, that’s a note, a photo here, a link there, an essay when I’m feeling ambitious. Étude, sonata, variations on a theme. Framing the writing by its scale and shape. A taxonomist’s delight. Then …
I miss writing “DO NOT ERASE” on whiteboards when a collaborator and I finally succeed at capturing the mental or visual model of a problem or its solution. It’s like writing “a good thing happened here today” on the whiteboard. Close second place: the act of crossing an item off …
What’s a high-level language? Is it Java, Go, and C#? Or is it Ruby, JavaScript, or Python? Where does Swift go? It’s all a matter of perspective. To a kernel developer who thinks about bytes on a wire or spinning a disk to read a file, git is incredibly high-level. 🙃 To a …
📺Currently watching: The second (and final) season of Andor was spectacular. The best Star War of the past ten years, IMO. S3 and S4 of Slow Horses continue to delight. Capable but slovenly Gary Oldman is a great character. I’m surprised how much I look forward to The Studio …
The web (and blogs) are free to be weird! Experiment on structure. Don’t feel constrained or normalized by the forces of engagement, algorithms, or profitability. Do your own thing. A personal website brings flexibility for presentation. Today, you may create a chronological …
1990s “alt” culture was wild. You could throw an obscure t-shirt on, watch a lesser-known or (future) cult-classic movie, and that was a whole starter personality. “Oh yeah, I’ve met that guy Adam with the Citizen Dick shirt who really likes My Blue Heaven and Army of Darkness.” …
Whilst editing yet another newsletter on building with AI and Claude gave me this feedback: Consider replacing “slopping out code” with a more specific term like “generating excessive code” Apparently, Monsieur Model does not like how I refer to its art! That’s a little sensitive …
Of all the hype I’ve read about AI, none of it has suggested that they will make estimating software projects a thing of the past. If they aren’t going to eat software estimates, I guess we’re going to have to strap in. The good news is: Delivering software reduces the demand for …
April 2025
I’ve noticed an uptick in writing about human thought processes using the language of machine learning and neural networks. Jargon-y phrases like “improve your mental search space” or “if at first you don’t succeed, improve your gradient descent”. (I only made up one of these …
Thorsten Ball’s tutorial on building agents only takes an hour or two to work through. It’s an excellent read for audiences of all technical acumen. It’s not that hard to build a fully functioning, code-editing agent. It seems like it would be. When you look at an agent editing …
If a team identifies a process, feature, or subsystem as “slow”, it risks resisting change by mythology alone. Slowness seems to make a special contribution to this picture in our heads. Time is especially valuable. So as we learn that a task is slow, an especial cost accrues to …
For circa 2015 Adam, two of the most stressful words in software development were deadlines and estimates. To my surprise, deadlines were easier to write about. Deadlines prevent work from snowballing. They guide us to favor the clarity of the present over the speculative …
I should worry less about missing One Amazing Thing, the feed FOMO. I can’t read the whole internet. Not even the small part I’ve carefully selected and loaded into my feed reader. Newsblur has an option to expire feed items after some number of days. I’d previously disabled …
Portland Cars and Coffee. Even on Mustang day, the European and Japanese cars were good. Not pictured: the most tastefully modified Toyota …
📺 Currently watching: Paradise (S1): James Marsden and Sterling K. Brown make an excellent cast. The show itself is an okay puzzle box/mystery story. Interestingly, not the deepest or best at building a mysterious world, so they may be able to land the second season without …
As goes writing, so goes software development teams: “Having a method, a process, makes my writing more consistently good. This might sound like a win, but it is a problem. The usefulness and beauty of essays follow a power law, where the outliers create almost all the value—so …
JEG2 reminds me that Elixir is about as lovely as programming languages get
Observations on excellent teams, from my newsletter: Teams at the top of their game have a few things going for them. They operate with pace and confidence, reducing the need for time-consuming and detailed planning. They work together with coherence and trust, anticipating each …
Our calendars are often painful because they display order (meetings) too well, but don’t display disorder (surprises and interruptions) at all. Into every developer’s day (and managers in particular) arrives surprises, interruptions, questions, and side-quests. A bit of chaotic …
March 2025
Sync Engines are the Future: So, what’s the significance of sync engines? I have a theory that every major technology shift happened when one part of the stack collapsed with another. For example: Web apps collapsed cross-platform development. Instead of developing two or three …
Now Tina Turner might force me to re-consider my laws of songs performed slowly. This is a high-quality problem!
Programming: it’s all about mental focus and stack management, dummy
We weren’t meant to compound the edifice of human society by typing in unadorned text area elements.
Every career step is searching for the next set of collaborators. And, even in a buyer’s market like we face today, it’s a bidirectional affair. The employer and the employee have to choose each other. Granted, I’ve been at this particular job search longer than I’d hoped!
Vibe coding is generating code with an LLM (Claude, ChatGPT, Copilot, etc.) and just going for it. No review, no tests, just prompt/reload/repeat. Hopefully, you’re only doing this for prototypes! I’m sure some folks are not. Surely, they don’t read this website. When working …
A return to hand-written notes by learning to read & write – Google research on training models to recognize not just text in handwriting, but the actual strokes. So you could color or even edit-in-place the handwritten strokes later on. I hope someone is working on productizing …
February 2025
Harper Reed, My LLM codegen workflow atm: If you have a small or large project that you are procrastinating on, I would recommend giving it a shot. You will be surprised how far you can get in a short amount of time. My hack to-do list is empty because I built everything. I keep …
Team morale is what happens when everything is clicking. You can’t optimize for it, but you can pay closer attention to the fundamentals that yield good morale.
Mikkel Malmberg makes macOS apps “for the connoisseurs,” creates lots of little web things, and has a pretty delightful YouTube channel where he shares his creation process. While you’re there, scroll to the very bottom of his webpage for a surprise.
Zed now predicts your next edit with Zeta, our new open model. I wouldn’t guess that new features in a programmer’s editor require such attention to detail in user experience and development of a specialized language model for code edits. Watching the video on how they built it …
A parable of adventures
Consider two adventurers, one setting off alone and another setting off with fellow explorers. Both in search of greater glory through software development. 🙃 One adventurer closes …
Previously, an iron rule of Aretha Franklin: she could sing anything slower and better than anyone else. Update, a contender has entered the ring: Carole King performs “You Make Me Feel Like A Natural Woman” pretty dang slowly. Which she wrote! So I have to relax the iron rule …
A field guide to exploring rabbit holes
You’re deep in eldritch code, a product problem, or a cross-functional issue that is affecting your team. Hours have passed, and you feel like you’re only starting to get your …
You never stop growing as a project leader. Hurry up and flub your first fifty projects; the sooner you learn from stumbling, the better. Get a taste for all the technical and interpersonal ways a thing can go sideways. Grow past trying to use process to block all the ways …
Perfection often manifests as procrastination. But, we imagine our work with more perfection and grandeur than we could hope to achieve in reality. By definition! Something—our limited talents, our limited time, our limited control over events, and over the actions of other …
🔊Recently listening, mostly jazz
“Puzzling Evidence”, The Talking Heads. Somehow I’ve just noticed this song. It sounds like if the E-Street Band helped write a Talking Heads song. Which is not a thing I would …
A few weeks ago at work we had a talk where senior developers (including me) were invited to spend around five minutes each talking about our personal software development philosophies. The idea was for us to share our years of experience with our more junior developers. – qntm, …
Make great stuff. Tell people about it.
Don’t sweat the network or medium. It’s all tinkering at the margins! Serving at the pleasure of the algorithm! The core concern, the thing that really matters, is doing …
January 2025
Path dependence is one heck of a thing. It’s hard for teams and organizations to do something different if nothing seems imminently broken. Don’t let “we’ve always done it this way” serve as the entirety of the answer to “why are we doing it this way?”. Even if a wholesale change …
The categorical flaw behind “ghost engineers” is seeing a house only for its superficial wood, glass, and brick. Anyone who has owned or rented a house for more than a few months knows that specialists who can work on the infrastructure within those walls, especially the timely …
🧠Do the Impactful Things. Avoid the temptation that leads to attempting to do All the Things. (And, the guilt of coming up short.) Once you stop believing that it might somehow be possible to avoid hard choices about time, it gets easier to make better ones. You begin to grasp …
Tinkering is the productivity (output) killer. 2024 was the year I stopped thinking like a super-customizer. I’m not (and maybe wasn’t ever) one who writes scripts and plugins for my own idiomatic note-taking, coding, and website publishing needs. 2025 is the year I accept the …
How weird is it that Ol’ Dirty Bastard was featured on a song that samples “Islands in the Sun”? (This is why hip-hop and sampling are great.) Probably wrong answers only: It was the 90s, sampling litigation was a thing, maybe that sample was the best/cheapest option. Perhaps the …
Short of disconnecting, I’m finding that my ideas in A vacation is a tool for disconnecting are plausible for application in my everyday routines. Avoiding algorithmic feeds and limiting social networks with journaling and just existing in the moment doesn’t require travel or …
Six easy pieces on Shape Up
In short: like any method of working that is copied from one organization and pasted into another, very different organization, there are chutes and ladders. Habits and practices …
📺 Recently on television
What We Do in the Shadows, final season + finale: they did a fantastic job on the finale. The last season had a few stand-out episodes; it doesn’t feel like the show went one …
Workplace Groundhog Day loops
There are many ways to feel like you’re living out the same workday over and over. Weekly, if you’re unlucky. Let’s talk about two in particular: failure to write it down, and …
December 2024
Reading well in late 2024
It was a good year of reading, for me. I read some big books. I got more insight out of the books I read. Furthermore, I read things I don’t normally read, like philosophy and …
Reading with a computer assistant (an LLM) to answer questions, summarize dense paragraphs, and expand on ideas has been one of the ways I leveled up at reading over the back half of the year. You don’t have to upload any book into the system. The Great Cosmic Mind is smarter …
The collected wisdoms of Calvin Fischoder (voiced by Kevin Kline) from Bob’s Burgers: A bet is a bet, Bob. I once lost thirty thousand dollars on a horse. She just ran off with it. – “The Kids Run the Restaurant” I lost the year 1996 to schnapps. I still don’t know what the …
A low-road LLM prototype, with FastHTML
I wanted to tinker with llm and “AI engineer” up a humble tool for working with my notes, writings, highlights, etc. Emphasis on humble: if I could tinker with any one of those …
Currently reading 🐙 Van Pelt, Remarkably Bright Creatures: on an octopus and a widow. A recommendation from my sister. I could go with more octopus narration. 🕰️ Burkeman, Four Thousand Weeks: the thesis is that no amount of time management gives you infinite time, so you might …
The Trouble with Tools. Daniel Miller on notes, tasks, projects, and the overlapping tension of using software to manage them. It remains very true that all software expands to the point that it can host checklists. I try not to worry too much when a task list emerges from a …
November 2024
Bruce Springsteen’s “No Nukes” concert is one of the better early period surveys of his work. But what I’m really after, lately, is a middle-period summary of his discography. A live album highlighting the material from Born in the USA through The Rising. Two very different peaks …
Backlogs
Can’t live with ‘em, can’t live without ‘em🤷♂️ A product team (at least the ones that have been working for more than three weeks) has a backlog of work they’d love to tackle, but …
I’m reading Four Thousand Weeks. Thus, my mind is often on finitude, “the state of having limits or bounds”. Bear with me as I consider tactics for time scarcity that aren’t “try harder and use this method to organize tasks in this way that worked for one person a while back” 🙃
Managers and coding: “it depends”, but go for it anyway
🌶️ Hot-take: if you’re a manager and find you1 miss building…then build2! On your time: mornings, weekends, national holidays. Whatever you want: tools for yourself, something …
We cannot truly know whether we are not at this moment sitting in a madhouse. (Georg Christoph Lichtenberg, The Waste Books) An astounding percentage of Lichtenberg’s quotables are just as relevant today as they were in 1789 when they were written. What’s more 2024 than this …
Granted, House Atreides did miss some milestones
A couple of lessons on leadership in Herbert’s Dune: “Give as few orders as possible,” his father had told him…once…long ago. “Once you’ve given orders on a subject, you must …
Lists for the past, lists for the future
Reader, I want to (once again) talk to you about the life-changing power of making a list and putting it in order. Ambiguity of like, “what are we gonna build?” or “how are we …
Team sizes & breakpoints
“Dunbar’s number is a suggested cognitive limit to the number of people with whom one can maintain stable social relationships—relationships in which an individual knows who each …
Kinda comedy
Permit me to throw shade at the Emmy Awards for a moment. Reservation Dogs is a better kinda-comedy than The Bear. Dogs is consistently funny and finds ways to explore the lives, …
The emotion key
The function key, on iOS and possibly Mac keyboards, is bound1 to show the emoji picker. Apple has chosen to bind a whole key, no modifiers or anything, to “convey an emotion”. A …
Warm up your network before things get spooky
As I write this, it’s late-2024 and the job market is tough for jobseekers. If one finds a job within three months, they’re considered lucky. Some folks go 2–3 times longer …
Bias towards hitting publish
Jeff Triplett, Please publish and share more: You don’t have to change the world with every post. You might publish a quick thought or two that helps encourage someone else to try …
Iteration (take 7)
Kent beck, Coupling and Cohesion: The only way to be able to describe something well is to describe it badly 100 times. I’m forever feeling this one. Many times, I’ve felt the idea …
October 2024
Scaling down native dev
In short: I want to build low-road applications for myself. They will have a very narrow function. I may use them for as little as a week or so, finish the task at hand, and move …
A bag of vignettes
From that point on, well, there’s only one, maybe two great nail salons in Amsterdam. I was rewatching Ocean’s Twelve, because empty calories and fantastic faces. Having watched it …
Throw more books
Simon Sarris, Reading Well: You should start many books and complete few. You should never feel beholden to completing them, there are simply too many worthwhile works to read. I’m …
Hot-takes on web browsers
Safari is (on macOS) the only good application and web browser. Chrome is a remarkable feat of engineering but a mediocre application. Arc is extremely promising. Reimagining the …
Six one-liners on meetings
Make a better meeting when you can, and the best of a meeting when you can’t. The choice to avoid holding a meeting may snowball into problems that require even more meetings. …
Pen, paper, and a problem
Ben Brooks, Thinking Analog: The way this works is simple: use a notebook and a pen when you need to work through a problem of any kind. Not a tablet with a stylus. Not a …
September 2024
Every day counts (even edits)
George Saunders, A Swim in a Pond in the Rain: “What does an artist do, mostly? She tweaks that which she’s already done. There are those moments when we sit before a blank page, …
Jam session
At its best, social media is like jazz — there’s an improvisational, multi-player quality to it. Following threads, riffing, and quipping creates a collaborative rhythm all its …
All roads lead me to maximalism
Within me are two musical opinions, constantly at tension. 😇 “You can make pretty dang good music with only a few, excellent musicians. Sometimes, even pretty dang good and loud …
Lukewarm water on a hot day
Henrik Karlsson, Swimming in July: There is something so frivolous about water. It makes you float like you are in outer space! And no matter what you do—whatever shape you make of …
Mind the attention traps
Alan Jacobs, The Homebound Symphony: Station Eleven had the Traveling Symphony: I’m trying to be the Homebound Symphony. Just one person sitting in my study with a computer on my …
Jazz as cinematic universe
I love when jazz album covers list all the players. Herbie Hancock! Your favorite drummer. A couple of sax players you think are pretty good. A bassist you’ve never heard of! It’s …
Wherein this old dog learns new tricks
I’m dabbling in building, again. I felt the energy of XOXO for nostalgia of a web of the past, making one’s own thing, and indulging in (socially good) weird whilst doing it. It’s …
On Founder Mode
Founder Mode. The discourse (algorithm) demands we discuss it. My hot-take: the original article is, honestly, not PG’s best work and is best viewed as a jargon land-grab. That …
How I write on the web, in 2024
My approach to writing on the web in 2024: Write (to think, riff, share, or publish) every day. Post anything over about one hundred words to my blog. Don’t worry about scheduling, …
Less waste, equal haste
If you waste less time, you’ll make more stuff without increasing time outlays. Find more leverage, you’ll make more stuff in the same amount of time Get better & faster at a task, …
Letterbird, lovely
Recently, I found myself in need of a contact form for my website. Luckily, I didn’t let myself fall to the temptation of rolling my own! 🙃 My good enough pals at Good Enough have …
August 2024
Decision and context flows
Commonly shared/held wisdom: leadership is flowing decisions down and information up. What if this is (slightly) untrue? Or at least, in need of contextualizing. Strategy, …
Associated objects are promising
Garrett Dimon, Organizing Rails Code with ActiveRecord Associated Objects: At the simplest level, associated objects come in handy mostly by helping organize and compartmentalize …
Write a lot
Nat Bennett, How to write: Write a lot Just Write Read a lot Write every day Walk Have a time and a place for writing Take it less seriously Have an audience At least as good as …
This is not my beautiful role
Ben Kuhn, Categories of leadership on technical teams: More importantly, though, we often want to somehow split these responsibilities between people. Team leadership covers a huge …
Methods of production
Herein, a napkin sketch on producing creative work, ideas on finding the spark(s) that consistently lead us to assemble new things, and the hand-wavy stuff in-between. Production …
Top of Mind No. 7
It’s been so long since we spoke, /now-page aficionados. I’ve been moving to Portland, buying a house therein, and selling a house in a bizarre hyperlocal real estate situation. …
July 2024
Hurry up and whiff it
There are things you can only learn by negative experience. In these cases, you just gotta go out there and suffer: Lose your first 50 games as soon as possible (Go proverb) …
The (Leadership) Discipline
Robert Fripp via Austin Kleon, The Meaning of Discipline: The musician has three instruments: the hands, the head, and the heart, and each has its own discipline. So, the musician …
diff, a top-5 software tool
Mike Hoye, Fifty Years of Diff: My friend Greg Wilson has argued, and I absolutely believe, that you can divide the entire computational universe into who has diff and patch, and …
Journal, highlight, revisit, blog
Writing from notes is a bootstrapping problem. Anything you can do to get started, overcome static friction, and “defeat” the first blank canvas is the best thing you can do. I …
Slash pages & micro-features
Slash pages: …are common pages you can add to your website, usually with a standard, root-level slug like /now, /about, or /uses. They tend to describe the individual behind the …
Constraints generate style
Steph Ango, Style is consistent constraint: “Collect constraints you enjoy. Unusual constraints make things more fun. You can always change them later. This is your style, after …
I switched notes apps (and back) (again) (and here’s what I learned)
Yet again, the grass was not greener. I did learn a little more of simplicity-by-reduction. I asked myself, what Obsidian plugins or idioms am I using because someone else seemed …
Corporate stories
Should internal narratives, and the philosophies they generate, be among the guarded proprietary info within a company1? The stories the company tells the outside world are more …
June 2024
Be findable
Thorsten Ball with a great reference to Comedians in Cars Getting Coffee. Be findable: You’re in your apartment watching TV, and they knock on the door, like “Jerry, I’m Dave …
Seek the good (enough) things
100 Tips for a Better Life: Some types of sophistication won’t make you enjoy the object more, they’ll make you enjoy it less. For example, wine snobs don’t enjoy wine twice as …
Finishing is the skill
Previously: The only way to finish writing, planning, coding, designing, etc. is to do the thing. Rarely will new tools, larger scope, a different approach, another section, more …
Frequency instead of quantity
Austin Kleon, A few notes on daily blogging: With blogging, I’m not so sure it’s about quantity as much as it’s about frequency: for me, there’s something kind of magical about …
May 2024
Everyone wins: document whatever resists simplification
The traditional prescription for keeping software easy to work with and amenable to change is “refactoring”. As we’re fixing bugs, adding features, and making new possibilities, we …
Pastoral and modern approaches to attention
Alan Jacobs, the attention cottage (Via Austin Kleon). I was not expecting to quote an attention metaphor involving the cardiovascular system and cottages, and yet: To care only …
Delegate, don’t dictate
It’s the only way to survive as an engineering leader. Hand off tasks/work to the team Give guidelines, execution tactics, or constraints to keep things on track Set an expectation …
Beginners helping experts
“In the beginner’s mind, there are many possibilities. In the expert’s mind, there are few.” — Shunryo Suzuki The trick being, how can an expert help a beginner, given they know …
Humble writing
I’m trying to change up my blogging style: write without telling people what to do. Show, don’t tell. It’s a stronger writing position to take. It’s the difference between writing …
Try smarter, not harder
“Try harder” is the worst kind of plan. It’s basically not a plan, a small resistance to planning. An anti-plan that signals virtue but instead reflects shallow thinking. Don’t say …
April 2024
The leisure/disconnection/creation circuit
Two prolific, internet-known travelers: Craig Mod: writer, walker, photographer, software-adjacent Brock Keen: photographer, car camper, road-tripper, Porsche-enthusiast These …
Show up every-dang day
Anne-Laure Le Cunff, 4 science-backed ways to build your own mental gym: Building mental strength is not too different from building physical strength. It’s all about consistency. …
Personal websites are corner stores and neighborhood garages
Is a personal blog or general-purpose more like a small shop or your local garage? They’re a bit of a calm business. A corner store with a friendly owner/operator. Never grows …
A big bucket of text
Matt Stein, How I Use Obsidian: It’s also just a heap of Markdown I’ve carried around and put Obsidian in charge of sometime late in 2021. Those plain text files are mine and they …
Recently in pair programming with AI
My recent experience with GitHub Copilot Chat (non-autocomplete assistance) and Raycast’s ChatGPT-3.5 integrations lead me to think that prompting will be a crucial skill for most …
Juniors/seniors and incremental/vision development
The ability to focus on one concern at a time is the mark of a senior developer. It takes experience to ignore other factors as noise. It takes time to learn how to avoid tripping …
Trim the attention sails
In America, the 2024 election cycle is unlikely to amuse anyone. Maybe this is a rallying point for “unifying” the country: a near-universal loathing of our politicians, how they …
March 2024
Blogs were/are a fun moment
Manuel Moreale, Why I write: But the reason why I started is long gone at this point. I started the blog as some sort of public accountability tool and it’s now everything but …
Avoid the ternary operator, I’m begging you
Allow me a bit of a soapbox-rant. A spicy take, as we might say these days. You’re using the ternary operator wrong in Ruby, JavaScript, and almost everything else. It’s for …
Psuedoprose
Taylor Troesh’s pseudoprose is a notation for writing/note-taking/thinking: How to Write in English, Spanish, whatever. Grammar is optional. Markdown is encouraged. Embed in any …
Rails generators are underrated
Every experienced Rails developer should pick up Garrett Dimon’s Frictionless Generators. Generators are an often overlooked piece of the Rails puzzle. The book shines a light on …
Collective flow
Dave Rupert, Play at work: I’ve talked about this before in the context of prototyping and play and how we worked at Paravel. It’s a lot like playing baseball; each member of the …
February 2024
“Yes, and” despite pessimistic engineering intuitions
As engineers, we often face the consequences of shallow ideas embraced exuberantly. Despite those experiences, we should try to solve future problems instead of re-litigating …
You learn faster by falling down
Julia Galef, The Scout Mindset: The “self-belief” model of motivation assumes that if you acknowledge the possibility of failure, then you’ll be too demoralized or afraid to take …
Building software is great
…even if some days working in corporations or under unwanted pressure makes it considerably less fun. I also just don’t especially want to stop thinking about code. I don’t want to …
Use fewer algorithmic feeds, mostly search-based
Rob Walker via Austin Kleon, More search, less feed: I’ve been thinking a lot about the search box versus the feed,” he said. “Let’s take Twitter. When I open it, everybody wants …
Shell history is more valuable than shell customization
Thorsten Ball, Which command did you run 1731 days ago?: Recipe for living a good life in the shell: Make sure it’s fast. Make sure its history can grow nearly infinitely and you …
Masters of the space between notes
Virtuosity and speed are nice, in music and life. But you leave some space between the notes or slow things way down? Make some space in between the music for the music to happen? …
Careers are non-linear
David Hoang, Should managers be technical?: Career development looks more like unlocking attributes for a different subclass in a role-playing game, than picking a distinct class …
A tinker for your tinkers
David Crawshaw, jsonfile: a quick hack for tinkering. 114 lines, including comments. Nothing revolutionary here. Just a nicely written and well-thought-out “classic hack” for …
I love a good shower-thought
Regarding Leó Szilárd, a theoretical physicist who first conceived of the possibilities of nuclear chain reactions, nuclear power, and nuclear weapons: The bath was down the hall. …
January 2024
Sneaker-net’ing URLs to personal devices in the year 2024
Suppose you’re on a computer provisioned by a corporate IT department. They’ve restricted the software you can install. On principle, you’ve decided that even signing in to …
Squeezing ideas
Turning a big idea into a more manageable one has second-order consequences: Remember, the more complex the issue, the more prone communication is to being lost. – Andrew S. Grove, …
Rails generators reminders
First: use them! Most frameworks have a project boilerplate and that’s it. Rails’ ability to quickly lay down a conventional resource, model, or anything else is a productivity …
Notes on focus and attention
Focus and attention are inputs to producing excellent things. All the talent in the world won't get me far if I’m not focused or attention isn't working in my favor. Beyond my …
The funk is in the notes you don’t play
Funk is unique amongst musical genres, in my perspective, due to the importance of the notes you don’t play. The space between notes, and not “shredding” every possible moment, is …
The LFG called life
LFG: looking for game. An ad-hoc scheme, often forum-esque, where strangers looking to play an online game that lacks matchmaking find each other and coordinate starting a game. No …
You have more writing material than you think
Jim Nielsen, Blogging and Composting: But as a byproduct of whatever you’re building you undoubtedly learned, observed, or cursed at something along the way. And if you blog, you …
Weekend in Portland
Day two: breakfast, books, public transit! Tina Fey and Amy Poehler (surprise guest: Maya Rudolph!) put on an excellent show. (Not pictured: very, very cold.) Grits ’n Gravy. …
Work in progress
I’ve had this sitting prominently in my Muse workspace for a while. Seems like a good time to deploy it now. What if it’s all work in progress? Just sharing/publishing the process …
Weekend in Portland
Day one, travel day. Air travel is fine. Green carpets are green. It’s cold and dreary, as expected. There may be snow. We persevere.
Obsidian + LLMs
My experiments (with obsidian-copilot) have yet to yield a satisfying intersection between LLMs and Obsidian. I generally find OpenAI’s models write too much like breathless …
Journal for work/life/everything
Ray Grasso, Long Live the Work Journal: Keep a journal for work, champions. It’s pretty easy to get started—just create a text file. Throw in a new heading each day and write down …
The status quo
Most fascinating game there is, keeping things from staying the way they are. – Kurt Vonnegut, Player Piano The status quo is a hell of a thing. Path dependence makes this a …
Low-key CSS libraries
I like the idea and execution of Tailwind. That said, there’s something nice about dropping a CSS library reference into a new HTML file and getting styled content without adding …
Software makes you more productive, otherwise it’s (weird) art
Rands in Repose, Seven Steps to Fixing Stalled To-Do Tasks: The never-ending question you must ask regarding whatever productivity system you’ve built is, “Does this system make …
2023 by the bullets
Places visited Marfa, Texas Las Cruces, New Mexico Tucson, Arizona Disney World (Orlando, Florida) Disneyland (Anaheim, California) Prunedale, California Salinas, California …
December 2023
Low-key tools-for-thought
I have an elaborate, perhaps baroque, setup of journals, notes, tasks, highlights, read-it-laters, feeds, and canvases-for-thinking. I consider it a crucial, and very …
iA Writer and AI
Writing with AI: Writing is not about getting letters on a page. It’s not about getting done with text. It’s finding a clear and simple expression for what we feel, mean, and want …
Celebrate the van Beethoven guy
It’s Ludwig van Beethoven’s birthday. Here are a few ways to celebrate the old piano-biter: small: try his other famous piano sonata, No. 8 “Pathetique” medium: try the third …
ui.land
ui.land is an interview site at the crossroads of design and engineering. Rauno Freiberg: Trying to create software with tiny details that feel exciting to build, experience, and …
Notes on strategy and execution
Will Larson, How to Size and Assess Teams From an Eng Lead at Stripe, Uber and Digg. This pull-quote lead me through some juicy lines of thinking: Inflection points are just …
Organize for Discovery
S-tier programming skill: organize code and behavior such that others can discover and understand it out later without your presence/consultation. S-tier writing skill: organize a …
Sidestep process by sharing tangible progress
Nat Bennett: Cannot overstate the value of regularly delivering working software. My single most effective software dev habit is to start with a walking skeleton – a “real” if very …
Notes on focus
I’ve tried a bunch of things, over the years, to find time and discipline to focus on working the tasks and projects that are meaningful to me. Mostly it boils down to actually …
November 2023
Everything’s a draft
Publish pretty much everything you write because you can’t predict what is going to be popular. There is a lower bar for quality, but barring dishonesty and literally unreadable …
Zawinski's law, updated
Every program attempts to expand until it can read email (the original) invite a friend check off tasks in a list record consent to receiving cookies or storing data in the United …
Listening, November 2023
Andre 3000, New Blue Sun – come for the over-the-top song titles, stay for what sounds to me like an ambient and (astral?) jazz album. Earth, Wind, and Fire, “Serpentine Fire” – …
You can’t read the whole internet, so put your energy into something that matters to you
Oliver Burkeman, Treat your to-read pile like a river: To return to information overload: this means treating your “to read” pile like a river (a stream that flows past you, and …
Smaller barriers to entry, bigger possibilities
James Somer, A Coder Considers the Waning Days of the Craft | The New Yorker: In chess, which for decades now has been dominated by A.I., a player’s only hope is pairing up with a …
My summer at 100 hertz
Is there a lost art to writing code without a text editor, or even a (passable) computer? It sounds romantic, I’ve done it before, I tried it again, and…it was not that great. …
Tooling has improved for ambitious software developers
Tools for working on software in the large1 have improved a lot over since I last considered them ten years ago.
Saying No is the first step
Ryan Holiday, 35 and 34, 36 Lessons on the Way to 36 Years Old: As part of that, I made the difficult decision to call my publisher to push my next book a year or so. This was a …
October 2023
Have principles, will travel
Pirijan, Kinopio’s Design Principles: The more unique and definitive your values are, the more useful they’ll be as a decision making tool later on. These are some of the …
Top of Mind No. 6
I’ve been thinking a lot about setting expectations and goals. I have an idea about setting expectations on how we practice software development in teams and four pillars thereof. …
The point of a commonplace notebook is not to generate immediate enlightenment. Writing a quote or idea now is the tip of the iceberg. The real insight comes when reviewing commonplace notes later and the dots start to connect themselves. That’s when the galaxy brain kicks in and …
My promise to you, and the world: I will never call anything a “rig”. No matter how much people want to read about it, or how many hours I invest in it. Even if it is a car or musical equipment or an RV or something that is literally “a rig”. No matter how rigged up it is, I will …
Build for the excitement of building
Nice Tietz-Sokolskaya, Write more “useless” software: When you spend all day working on useful things, doing the work, it’s easy for that spark of joy to go out. … Everything you …
The pace you’re reading is the right pace for you to read
Ted Gioia, My Lifetime Reading Plan: IT’S OKAY TO READ SLOWLY I tell myself that, because I am not a fast reader. By his accounts, Gioia is a prolific and thorough reader. And yet, …
Inside you, there are two or more brains
David Hoang, Galaxy Brain, Gravity Brain, and Ecosystem Brain: The Galaxy Brain thinkers are in 3023 while we're in 2023. They relentlessly pursue the questions, “What if?” …
Aristotle’s ethical means of virtue and vice but for creative work: Winning is the mean between moving the goal-lines to finish and not finishing due to non-constructive goal-lines Quality is the mean between piles of incomplete junk and one or two overwrought ideas Taste is the …
September 2023
I’m not your cool uncle
I find that playing the “I’m the leader, this is the decision, go forth and do it” card is not fun and almost always wrought with unintended consequences. A notable exception is …
The Textual framework
Textual is a Rapid Application Development framework for Python, built by Textualize.io. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal …
Stop writing
George Saunders on getting past self-critical/low-energy writing spirals (aka one of the many forms of writer’s block): Another thing I sometimes suggest is this: stop writing. …
Build with language models via llm
llm (previously) is a tool Simon Willison is working on for interacting with large language models, running via API or locally. I set out to use llm as the glue for prototyping …
Read papers, work tutorials, the learning will happen
(Previously: Building a language model from scratch, from a tutorial) I started to get a little impatient in transcribing linear algebra code from the tutorial into my version. In …
Building a language model from scratch, from a tutorial
I’m working from Brian Kitano’s Llama from scratch (or how to implement a paper without crying). It’s very deep, so I probably won’t make it all the way through the long-weekend …
August 2023
I wonder how Vonnegut might have coped with the acceleration of change we cope with in our modern dilemma. It’s just a hell of a time to be alive, is all—just this goddamn messy business of people having to get used to new ideas. And people just don’t, that’s all. I wish this …
Link directly to stations in Apple Music
Generate Apple Music URLs via Apple Music Marketing Tools. Query by song, album, basically anything you can search in the Music.app sidebar. e.g. WEFUNK radio, long URL: …
llm is a wrapper for interacting with locally run (or remote, via API) generative AIs from Simon Willison. Tastes great with gpt4all, which assists in downloading and running models locally.
I got better at estimating projects with intentional practice
I like the idea of practicing1, in the musical or athletic sense, at professional skills to rapidly improve my performance and reduce my error rate. When I was a music major2, I …
I dropped in on historic races (the newest cars were 30 years old) at Laguna Seca. It’s great to see the track at scale, not as video-game …
This is where we live, for a few days. I’m hoping “little adventures” like this are a nice compliment to vacations. Perhaps the former …
“Now a truth,” said the judge. “The main business of humanity is to do a good job of being human beings,” said Paul, “not to serve as appendages to machines, institutions, and systems.” – Kurt Vonnegut, Player Piano We’re here to do human things: create for each other, love our …
A vacation is a tool for disconnecting
I’m reflecting1 on travelogue’ing my recent trip to Disneyland. In particular, that it was effective at taking my mind off work while maintaining creative writing and publishing …
A pretty ideal travel day: start at the pool, wait in the breeze and shade, depart from the open tarmacs of tiny Long Beach Airport. Not …
Many parts of Disneyland are ridiculously easy to photograph. Particularly at dusk and night, and for folks (like me) with very rudimentary …
Wherein favorite franchises are done
July 2023
Rule #1 is you a) get up early, b) ride stuff early and c) take a break in the middle of the day while (many) folks are at the parks. Roz is …
1. Rule #2 is you gotta take a picture of this signage, every time. 2. Matterhorn looks better from almost every angle than it feels to ride …
Rauno Freiburg is building attention to design details
Sitting down and just thinking hard does not magically produce valuable discoveries either. The essence of the word “interaction” implies a relationship between a human and an …
Work side-by-side; the more you can see, the more you can think
Wisen Tanasa, Stop flipping around, put them side-by-side: This constant flipping is a self-inflicted cognitive load that reduces our productivity. Pay attention to what’s …
Magic (AI) is what we don’t (yet) understand
It reflects a sound understanding of the nature of AI — as an uncredited and formless modifier of other technologies. One whose presence is marked by familiar behaviors having …
Evenings at the Village Gate: John Coltrane (with Eric Dolphy). Five tracks, all excellent. Great bass playing by Reggie Workman and Art Davis. Favorite tracks: “Greensleeves”, “Africa”.
Less but better
The Designer’s Designer’s Watch – A Look Back At Braun And The Rebirth Of A Few Classics The Braun watches AW 10 and AW 50 embody simplicity. Just as do the clocks and electrical …
When finished isn’t done
The work is done, the post is published, the code has shipped, the boxes are all checked. And yet, it remains in my head. The bit of code I’d like to revisit, an edge I couldn’t …
Charles Chamberlain
An “independent researcher & developer focused on making new interfaces to create with”. He’s developing some neat low road (in the How Buildings Learn sense) ideas at the …
Think through making. – Matt Webb (by way of Matt Ward) Protocol Fiction, Desire, and Belief Ideas in your head are shallow next to ideas worked out with craft, material, and context.
The Bear
I watched seasons 1 and 2 over the course of a few weeks. Fantastic show, no notes. I can’t start to describe it. It’s not crime-y, not a comedy. It’s not exactly feel good, but it …
Shortcuts for scripting API integration
If you want to do straight-forward API scripting, Shortcuts + Actions might do the trick. Patterns in play: Fetch URL (Shortcuts built-in) Parse document as feed/JSON/XML (not sure …
Use Swift Playgrounds to sketch ideas
Before spinning up a whole Swift project, use Swift Playgrounds to sketch out ideas. In Xcode (macOS): File -> New -> Playground Choose “Single View” (I’m not sure what impact …
In the meantime, if you’re not into the world you live in, you can build your own world around you. (Now would be a good time to put on your headphones and cue up the Beach Boys song “In My Room.”) Surround yourself with books and objects that you love. Tape things up on the …
June 2023
In the moment
Is pessimism about the past, present, or future? If it says, “we can’t get there from here, based on where we’ve been”, it neglects the present and maybe the future. Does optimism …
Fruitless activities and hobbies are important!
Anything you do that doesn’t make you money or help others better be something for your own damned amusement. – Austin Kleon
"If this isn’t nice, I don’t know what is"
Kurt Vonnegut: And I urge you to please notice when you are happy, and exclaim or murmur or think at some point, ‘If this isn’t nice, I don’t know what is.’ It’s a kind of way to …
Monk and Robot: very enjoyable chill-future vibes
Monk and Robot, A Psalm for the Wild-Built, Becky Chambers. An optimistic, non-space/techno sci-fi short novel. For me, it’s a welcome departure from the Very Serious Ideas of …
Notes on narrative for engineering leaders
Alex Reeve, 22 Principles for Great Product Managers: You have to own the narrative. When there’s a narrative vacuum, people will “creatively” fill in the blanks themselves—and you …
"It sounded like the kick drum was played by a drunk 3-year old, and I was like ‘Are you allowed to do that?’”
WONKY – pudding.cool analyzes what makes J Dilla special. Particularly good if Dilla Time (previously) is still in your to-read list.
May 2023
Albums is a great app and The Best App for Albums is a great review of what makes it good for music enthusiasts and/or organizational hobbyists. I don’t want to jinx it, but Albums checks a lot of boxes for me that Rdio did, back in the day.
TIL Jenny Lewis covered the Traveling Wilburys’ “Handle With Care”. 👍🏻
Don’t zero out the margins
Efficiency is the enemy, Farnam Street: It’s possible to make an organization more efficient without making it better. That’s what happens when you drive out slack. It’s also …
Three meditations on wins
Leaders (and managers) are successful to the extent that their teams and peers notch wins. Former Intel CEO Andy Grove calls this the “output” of a manager, and wrote the book on …
Improving when you can’t rinse and repeat
You can’t practice at some things. Putting the cat back in the bag or the toothpaste back in the tube. The undoable, the things that you can’t unsay. The measure twice cut once …
April 2023
Top of Mind No. 5
Like everyone (it seems), I’m exploring how large language model copilots/assistants might change how I work. A few of the things that have stuck with me: Use LLMs to reduce the …
Err the Blog, revisited
Before there was GitHub, there was Err the Blog. Chris Wanstrath and PJ Hyett wrote one of the essential Rails blogs of early Rails era. Therein, many of the idioms and ideas we …
Writing is a "do it, somehow, every day" game
Whenever I find myself wishing I was posting more toots/articles/etc., I remind myself that the first step is to get words out of my head and onto the page. The hack is that “the …
March 2023
Focus in a time of distraction
That is, some notes on helping junior developers focus on execution when they are surrounded by the twin distractions of novelty and outright broken things. With apologies to Love …
February 2023
Reading, February 2023
I’m still reading about the Manhattan Project. The going is slow. Big books, big timelines. At least, for the speed at which I read. Rhodes, Making of the Atomic Bomb – I’m 500+ …
Write linked notes so you don’t have to remember
Writing linked notes helps engineering makers and managers alike develop the super-powers of augmented memory and the appearance of effective multitasking. I’m revisiting Simon …
Top of Mind No. 4
The practice of building software/technology is going through a phase shift. We’ve worked from abundance the past few years. Now we have to figure out which developments are worth …
Natasha Lyonne is my generation’s Joe Pesci
Poker Face is a gem. Do yourself a favor and start watching it[1]. I didn’t realize I needed a weekly murder mystery kind of show. But I did, in this specific form. Poster image of …
January 2023
Make code better by writing about it
Writing improves thoughts and ideas. Doubly so for thoughts and ideas about code. Writing, about software or otherwise, is a process wherein: thoughts and ideas are clarified ideas …
Corporate personhood and ants
Filtered for ants and laws, Matt Webb: Let’s say we could chat with ants. Could we trade with them? What would we want from them? … In short: people treat almost everything as …
Turn the pages. Read the code. Hear the words.
“Turn every page. Never assume anything. Turn every goddamned page.” — Robert Caro, Working So goes the wisdom super-biographer Robert Caro received from a mentor when he was an …
Remote work skills today look like being online in my youth
Checking my emails frequently. Responding to a few group/direct-message chats at a time. Managing to write code, do math, or put together a slideshow/essay at the same time. Always …
Songs You Must Listen To At Maximum Safest Volume
“Uptight”, Steve Wonder “Summertime Blues”, The Who “Wouldn’t It Be Nice”, The Beach Boys “Good Vibrations”, The Beach Boys “Jungleland”, Bruce Springsteen “Once In a Lifetime”, …
Top of Mind No. 3
Working in small increments towards medium-to-large projects or outcomes is tricky. I too frequently find myself down a much deeper rabbit hole than I’d intended. And I’ve spent a …
Albums You Should Listen To From Start To Finish
Born to Run, Bruce Springsteen Blood Sugar Sex Magik, Red Hot Chili Peppers Pet Sounds, The Beach Boys The Blueprint, Jay-Z Songs in the Key of Life, Stevie Wonder Sign ‘O The …
The nap hierarchy
Doing a short snooze in the middle of the day? I highly recommend it if you have the means. Ideally, one of these places (in order by quality of rest): Couch nap Chair nap …
Bruce Springsteen Epochs
Motown Bohemian, curly hair, The Wild, The Innocent, and the E-Street Shuffle Denim, muscles, Born in the USA The introspective wanderer, bolo tie, Human Touch Revival, the …
What A Guitar Is Supposed To Sound Like
“Summertime Blues”, The Who, Pete Townsend “Estranged”, Guns ’n Roses, Slash “Glory Days”, Bruce Springsteen and the E-Street Band “Highway to Hell”, AC/DC, Angus Young
Music I Wish I Had Written
The Rite of Spring, Igor Stravinsky The Planets, Gustav Holst “Good Vibrations”, Brian Wilson “Losing My Edge”, James Murphy “I Feel the Earth Move”, Carole King
December 2022
Best David Lee Roth Mid-Song Banter
“Unchained” “Everybody Wants Some” “Hot for Teacher”
Best of 2022
Television: Severance (Apple TV), Andor (Disney+) Movie: Everything Everywhere All At Once Music: deep dives into Carly Simon, Nina Simone, J Dilla Book: Player Piano by Kurt …
Classical music that is terribly edited in commercials
“Also Sprach Zarathustra”, Richard Strauss, the opening “Symphony No. 6”, Beethoven the rest of the Western classical music canon
Think your thoughts
We live in the most amazing time for ideas. They’re all over the place. It’s never been easier to share them, and indeed they are shared at a phenomenal pace1. It’s so easy to find …
Driverless Crocodile, Nostalgia Revisited: Nostalgia: a kind of homesickness for the past. Another way of putting it: the longing you will have in future for the places and people around you now. Time’s arrow is a hell of a thing.
Top of Mind No. 2
How I work: what might “pairing” with a language model-based assistant (e.g. GPT-3) look like? How I build: the tension between the web platform being more capable than ever versus …
An ideal weekend
Nothing, nothing, nothing makеs me happy Nothing brings me nothing but joy So if you haven’t tried nada I really think you oughta — C. Fischoeder, Bob’s Burgers On minor funks, …
November 2022
One thing at a time, incrementally
Only Solve One New Problem At A Time, Ben Nadel: The example he gives in the episode is "learning Golang". Understanding how to use Golang was a new problem for the company. As …
How I would explain music to an alien
Were I faced with an intelligence not of this earth, but one that shares our understanding of what music is/for, these are the exemplars I would hold up for them to understand our …
Dilla Time
Dilla Time is a great book for music history enthusiasts. If you’re at all interested in hip-hop, music production, or sample culture, it’s a must-read. The references to …
Get professional value out of the next Twitter-like thing
The Bird hit another inflection point on Friday. Now, many people, myself included, are looking at alternatives or actively decamping1. It was quite a thing to experience. Several …
Currently digging
Listening: Afrobeat, e.g. Fela Kuti Best musical discovery this week: an excellent Apple Music playlist Shapeshifting, catalogs jazz fusion with indie, hip-hop, electronic; all the …
Updating Eisenhower on planning
Previously: a long time ago, Dwight Eisenhower probably said something to the effect of: “Plans are useless, but planning is essential”. Today, software development (and knowledge …
Mastodon & Me, 2nd Edition
A few years ago, I set up a Mastodon account on a now-defunct instance. It didn’t scare me away, is kinda neat in some ways, the Bird has gone chaotic, and so I’m at it again. Like …
Sketching yields quantity yields quality
The Art of Sketching: Strategies for Getting Started: Edouard Manet, the French modernist painter, once gave a still-life painting lesson to another French impressionist, Eva …
October 2022
Certified Jams
“Rhythm Nation”, Janet Jackson “Holding Out For a Hero”, Bonnie Tyler “Footloose”, Kenny Loggins “Partyman”, Prince
Top of Mind No. 1
Delegating: supporting teammates, delivering the right context, setting good outcomes/goals. Not delegating: managing/mitigating risk, resolving unknowns. “Delegate downhill work, …
Programming excellence: a small matter of practice
The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your …
Currently digging
Obsession: Ferraris - they’re at a whole other level. Listening: Ramsey Lewis, “Japanese ambient” Watching: Andor, She-Hulk Reading: Welcome to the Monkey House - Vonnegut short …
Write more, coder inspiration, queryable coding environments
Simon Willison on writing about one's work: A tip for writing more: expand your definition of completing a project (any project, no matter how small) to include writing a blog post …
Peak Aerosmith
Permanent Vacation, Pump, Get a Grip, Nine Lives. That’s an excellent run of albums. It was considered a renaissance at the time. IMO, it’s their best stuff1. Moreover, the peak of …
September 2022
The Flipping Table(s)
This is a story about a tiny toy table. Well, a couple of them. Courtney and I play pub quiz, a lot. We play with a regular group of people at a couple of venues across town. We …
Onboarding when you don't have access to the team
Mitchell Hashimoto, Contributing to Complex Projects: The first step to understanding the internals of any project is to become a user of the project. You do not have to become an …
Great Albums: Little Rock
Or: Texas, the Good Parts. (Despite the title!) Or: it sounds like Texas, to me. (Again, despite the title.) Hayes Carll is my favorite under-the-radar, “this is what country music …
August 2022
An un-conference appears
I jumped into a short un-conference organized/hosted by Andy Matuschak last weekend. Within this humble Gather, I came across lots of intriguing people and energizing ideas. Some …
Very handsome task tracking, offline and online
About a year ago, I added a curiously pretentious object to my repertoire of productivity hacks. Analog is a) a paper productivity notation not unlike Bullet Journaling b) printed …
July 2022
Dad rock is a beautiful tapestry
Spooky dad rock - Trent Reznor Sad dad rock - the National, LCD Soundsystem Quirky dad rock - Cake Over-enthusiastic dad rock - Foo Fighters
Perspective, you want it
Perspective is the lens we view our world, work, relationships, etc. All the luck, resources, or knowledge in the world are wasted without good perspective. If we’re talking about …
Notes from the Miles-verse Part 3 and final thoughts
This ended up covering late Davis stuff. He’s basically inventing a new genre of jazz every album or two now. On the Corner: Davis invents funk/soul jazz. A Tribute to Jack …
Leadership keywords
My current theory of leading software teams and projects has four keywords: Trust: I assume everyone is working to get the job done. They assume I will help them get the job done. …
May 2022
Managers can code on whatever keeps them off the critical path
Should engineering managers write code?: Spending time in meetings and working through complex team relationship issues leaves you feeling more drained than energized most days. …
The paradox of producing process
The agency to create the system or process you want to work in (axiomatically?) implies you’ll rarely get to work in the system because you’re spending a lot of time working on the …
Notes from the Miles-verse Parts 1 and 2
Wherein I’m listening to Miles Davis’ studio albums in chronological order. Priors: I have listened to Kind of Blue and Bitches Brew a lot. I’m mostly familiar with “earl years” …
April 2022
Get lost in an idea
Rabbit-hole-athon - it doesn’t look like an event is scheduled, but I dig the idea: Tl;dr, we are organizing a weekend long IRL rabbit-hole-athon for technologists: an intimate …
Two snappy covers
I saw this local band Adam’s Farm (no relation, promise) a few times when I was 15 or so. In the era of mixing bass guitar out of rock music (no thanks, Metallica), these fellows …
March 2022
Like caveats? Try writing about leading teams!
It's tricky to write about leading software teams. Herein, reflections, not complaints, on pursuing higher software leadership truths. Many of which are riffs on 4 Reasons Writing …
February 2022
Benchmarking Rails apps in 5 bullets
When in doubt, measure. Twice! For ad-hoc/napkin estimates, I use Benchmark.ms { …the code… } to size up the performance of Ruby code. When I want to do The Science to compare …
January 2022
Logistics is endless intrigue
The modern marvel that moves commodities, sub-assemblies, finished product, and people across the planet is largely invisible. Except when I’m bumped from an overbooked flight. Or …
Beethoven’s symphonies, visualized and interpreted
This is extremely my jam. Beethoven Symphonies Abstracted: To accompany the National Symphony Orchestra’s Beethoven & American Masters concert series, author and illustrator Mo …
Cool things to do with your spaceship besides launching billionaires
Fancy some near-term imagination on the opportunities the re-commercialization of space presents us? Yes, have some! Science upside for Starship: It is, however, a fun exercise to …
Great albums: Blood Sugar Sex Magick
Favorite tracks: “Suck My Kiss”, “Sir Psychosexy”, “Power of Equality”, “The Righteous & the Wicked”. The essential (in my opinion) Red Hot Chili Peppers album is, for me, a few …
December 2021
My favorites of 2021
Gotta sneak this one in under the wire, otherwise it’s just a sparkling list of things. Movies Summer of Soul - Nina Simone, Stevie Wonder, Sly and the Family Stone. Heck yes. Dune …
The Beatles 🤝 Timeless leadership lessons
The Economist, The Beatles and the art of teamwork: Take the role of Ringo, for example. When he is not actually playing, the band’s drummer spends most of his time either asleep …
A more evocative word for mega-corps
Kevin Kelly, The Third Way: Huge monopolistic companies running platforms like Facebook and Amazon are not mere corporations, nor are they governments, even though they have many …
November 2021
Great albums: Endtroducing
Endtroducing is my canonical example of a revealing album. I heard “Building Steam With a Grain of Sand” completely accidentally in a college business writing class, of all places. …
Great albums: Beethoven Symphonies No. 7 & 8
These are my favorite of Beethoven’s “more approachable” symphonies. Symphony No. 9 is my favorite, but it requires a bit more context to take in. Further, it’s a solid seventy …
What makes a great album
There are four-ish kinds of great albums, in my mind: Pivotal albums: the artist or genre was distinctly different before and after the album came out. e.g., classical music was …
The finest transit system you’ll ever find in a swamp
Imagine all the busses, boats, monorails, trains, and gondolas in Disney World as (quasi-public) transit system. Then make a transit-style map of said system. It’s fun, but a …
Better know a standard library
Read your current/new language’s standard library. Highly recommended for developers of all experience levels. You’ll pick up the idioms, you’ll discover something useful. You’ll …
Very famous white guys from history who were not famous for, but known to bite pianos: Thomas Edison and Ludwig van Beethoven.
Offloading fast operations in Ruby by data structure
Noteflakes: A Compositional Approach to Optimizing the Performance of Ruby Apps — the idea is to offload “inner-loop”-type operations from Ruby to C-extensions. The clever twist is …
Don’t be spooky
It’s possibly the best advice for managers I've given so far. When you’re communicating with your team, lead with context and reassurance. Never message someone on your team, …
September 2021
Would you pay more for a noisy computer?
Computers should expose their internal workings as a 6th sense, Matt Webb: I kinda miss the days when I could hear the hard drive of my computer. If it was taking a while to …
Into the Miles-verse
I’m kicking off a new “listening project” - Miles Davis. Inspired by A Beginner’s Guide to Miles Davis, I’m going to grind my way through the Miles-verse in chronological order. …
August 2021
An exercise in CPU design, in the small
One Page CPU Project: Welcome to the OPC series of CPUs, where everything fits on one page - one page each for specification, emulation, HDL. For details see the OPC Project web …
Math-y and/or word-y
I'm a developer who (formerly) recoiled at math, especially calculus and matrices. Instead, I thought, I loved the language-y parts of software development. Programming languages, …
July 2021
Following up on recommendations, for the forgetful
It’s hard to land music, books, etc. recommendations from friends because timing is everything. The best case is a recommendation for a thing I didn’t know of and it’s precisely …
Craig Mod’s simple search
Craig Mod, Fast, instant client side search for Hugo static site generator: I believe Fast Software is the Best Software and wanted keyboard-based, super fast search for my …
June 2021
What makes an excellent design doc
Replicache Detailed Design(https://doc.replicache.dev/design): Replicache runs alongside your existing application infrastructure. You keep your existing server-side stack and …
“Rationalize and solve” doesn’t help someone who is venting
If you’re doing the whole servant leadership thing, you’re gonna hear some people venting frustrations. Yihwan Kim, When a 1:1 turns into a vent session: As an engineering manager, …
4 perspectives on writing
Spoiler alert: it’s all about organizing what they wrote in the past, finding it later, and remixing it into something they need in the moment. 🧠 Austin Kleon, Indexing, filing …
One priority is like wind in the sails
It’s true that I can scale myself, teams, and organizations to walk and chew gum at the same time, but it is surprisingly effective to focus on one thing at a time. This is the …
May 2021
Desktop vibes
I’ve got three “virtual” desktops going on my Mac right now. The idea each is its own functional workspace. I don’t have three separate physical workspaces to do my …
Planning focuses our ideas
Planning is essential. But, not too much. Mostly in the next 90-day window (with apologies to Michael Pollan). Humans are, with few exceptions, awful at planning. It’s impossible …
Tumblelogs, a thousand weird flowers
I miss tumblelogs. Especially projectionist. Twitter and Tumblr fit the mold, functionally. But the vibe is not the same. That time right before centralized social media achieved …
Shawn Wang’s 35 Principles for 35 Years are a good read. A few of my favorites: Seek First To Understand, Then To Be Understood. Don’t get defensive about your point of view or perception of reality - understand theirs first. Either you will learn something new or you’ll …
April 2021
Working, directly & small
Omar Rizwan recollects that one of the original selling points of React was that you could consolidate all the HTML, CSS, and JS for a single component in one file. No navigating …
March 2021
The long game of notes
You can do a lot of fancy stuff with your notes these days. Backlinks, graphs, embedding, “transclusion”, knowledge databases, and digital gardens are all tempting sirens. But …
I never thought I'd think this much about wallpaper
Daveed Diggs mentioned this awesome wallpaper, Bay Area Toile, in a tour of his house. Amongst the Bay Area celebrities whose likenesses it features is Humpty Hump aka Shock G of …
Nina Simone, "Mississippi Goddam" 🤘
“This is a showtime, but the show hasn’t been written for it”
Let them go their own way
A mistake many newly minted (and some experienced) engineering managers (EMs) make is listening to their team (good!), discussing potential solutions and tradeoffs (good!), and …
A ripping yarn of hunting bugs in Destiny 2
The Case of the Missing Rewards - Luckily, in my many hours playing Destiny 2 I haven’t been bitten by this bug. Seeing behind the curtains of something I interact with so often is …
A good newsletter is an interesting conversation, not a monologue
A good email newsletter is like the conversation you may have had over coffee with an interesting pal. A surprising topic, a novel theory, perhaps an amusing tangent or two. I’m …
February 2021
Walking through the current customer acquisition hypothesis
Paul Ford, The Secret, Essential Geography of the Office: Offices have their own mental maps. “Oh,” they say, “she’s moving to the 17th floor.” And everyone says: the 17th floor! …
CHONKR
I saw this BMW at Radwood in Austin last year. In hindsight, I would kinda like to know the whole story behind this car and the custom plate.
Notes on the invention of networked video gaming
QuakeWorld by John Carmack - the .plan notes (basically a Unix-local blog) written during the development of internet networking (not just LAN-local) for Quake. It’s amazing to …
January 2021
Darlene Love re: Phil Spector 🔥
The Voices Of Black Women Were Essential To Phil Spector’s Wall Of Sound Darlene Love began her partnership with Spector in 1962, when she came to the attention of Lester Sill, …
Hire based on outcomes instead of role descriptions
The first time I hired someone, I wish I’d known it’s much better to think about the outcomes you’re hiring for. With that in mind, work backwards to the experience and skills …
When I first walked past the TV and saw Biden behind the big-fancy desk in the Oval Office, it sunk in for me: competence is back. Bluster and bullying, for the moment, are on the decline. President Biden begins signing a tall stack of executive orders during his first Oval …
On repeat (which I rarely do, lately): Empyrean Isles by Herbie Hancock. Ron Carter, Freddie Hubbard, heck yeah.
The unreasonable effectiveness of checklists
Checklists are a fantastic tool for thinking. This despite the existence of GTD, Kanban, PARA, and any number of ways to organize projects and figure out how to finish them. When …
Perspectives on creativity for 2021
Austin Kleon - A working from home manual in disguise: Make lists. You can be woke without waking to the news. Airplane mode can be a way of life. Naps are a secret weapon. David …
December 2020
Sunset or Perlin noise?
Mike Perham: Redis is a Swiss-army knife
Mike Perham: Grouping Events for Later Processing: But we see enough traffic that we don’t want to turn every single click into a background job. We want to aggregate the clicks …
November 2020
Better meetings (but also fewer, mostly)
Christof Damian, My thoughts on meetings: I used to really hate meetings. As a developer they seem to just get into the way of doing real work…But at some point you specialise, …
October 2020
Annabel Scheme, the New Golden Gate, and the misplaced metropolitan nostalgia
Annabel Scheme and the Adventure of the New Golden Gate - a short story by Robin Sloan. Fantastic world building for a short story. Highly recommended. Nostalgia and the “this city …
Product Hunt’s async work: everyone in their own swimlane
How Product Hunt does asynchronous work: everyone in their own swimlane, unblocked. I really dig how they haven’t siloed work between front-end/back-end developers. Collaborative …
Onboard new teammates with a 90-day plan
My new boss had written up a 90-day plan for me the week before I started. This was perfect timing. I was already starting to put a bow on my current work and my focus was …
Use a tag line that means something
I like that Ember's tagline is about ambition.
A slice of the old way
September 2020
Use factories to create jumbo object graphs
The entire time I’ve been using FactoryBot, several years at this point, I’ve used it one factory at a time: company = create(:company, name: "Acme, Inc.") alice = create(:user, …
How to succeed at blogging by not even trying too hard
“Perfect is the enemy of shipped” - Simon Willison 15 rules for blogging - Matt Webb Lists, emoji, and consistency are totally working for Duncan Davidson
Austin Kleon’s list of perfect albums: #perfect31. Non-compilation albums, no songs worth skipping. Discovering these albums is one of my favorite things about listening to music. Blood Sugar Sex Magik was the first one I found myself, when I was sixteen. Blew my mind.
August 2020
Matt Webb on Asimov’s Foundation, and what’s unique about science fiction: Like any scientific endeavour it starts as a phenomenological exercise: what’s happening? How does this thing behave in various circumstances? Then beginning to probe: what are its limits? How do we break …
Let me tell you about my theories on art and fishing. This Ernest Hemingway story is definitely about fishing. On the other hand, I have a theory that most Billy Joel songs are either a) definitely about a fisherman or b) could exist in one world where the protagonist is a …
Failure = entropy due to adding humans
Here’s a real dinger of a sentence from Michael Lopp’s latest, The Art of Leadership: Small Things, Done Well: Failure is created by the increasing entropy of a growing number of …
iOS feature request: write-only interfaces & "smoke-break"
Two iOS wishlist items: Any app that can send & receive messages (emails, direct messages, photos, chats, tweets, etc.) should require a narrow, write-only affordance for sending a …
Determined Disney fan recreates the original Disneyland version of the Alice In Wonderland ride-through in 3D. Same, but for Mr. Toad, one of my top 3 Disneyland favorites.
Writing is thinking, so write about code
Writing clarifies thinking. Therefore, writing design docs clarifies one’s thinking about code. Design Docs at Google and an example/meta design doc from the same author are great …
Bradford Fults on feedback and human bias
A Better Approach to 360° Feedback: Bradford Fults shares ways to route around fallible human memory and gather useful information when it comes to review season. Humans also have …
In my too-frequent skimming of German sports cars for sale near me, I came across a BMW 135i with a black exterior and interior. It’s a tempting car, but I’m afraid it says “I listen to two kinds of music: Kraftwerk on cassette and Kraftwerk on vinyl”.👴
Do Texans Dream of Summer Days?
1992 Lancia Delta Integrale Martini 5 Evoluzione, Bring a Trailer fodder for the day. I can’t resist Martini Stripes. Or bright yellow, …
Watched Jim Gaffigan’s The Pale Tourist. I’m surprised one can dedicate an hour-long set to Canada alone, but he makes it work. Gaffigan’s not the edgiest comedian or most insightful orator, but he is delightful. And delightful is mostly what I want out of entertainment right …
July 2020
Unlocking value with durable teams, Anna Shipman: If you build teams around projects, this means that there is a ramp-up period while the team go through the early stages, and if the team is not together for long enough, it’s possible they won’t spend very long (if any time at …
I’d never seriously listened to Mazzy Star before today. Had really only heard “Fade Into You”. Now I’ve listened to all four albums and they’re a) pretty good! and b) kinda ahead of their time? I’m a little surprised that something so straight-forward and sounding very much of …
Marketing folks should dispense with “this is familiar-thing two point oh”. It’s always “Underpants 2.0” or “Butter Knife 3.0” and never “Non-stick pan 2.3”. Just call it like a straight-up Hollywood sequel. “Chair 4: The Sittening” or “Ball-point Pen 7 Part 1: The Penultimate”. …
Bunkerpunk, short sci-fi from sudowriters, “a speculative fiction writing group”. My first foray into collected short science fiction. Recommended for modern, addled attention spans, those who are intentionally avoiding mega-tomes/epic fiction worlds, and/or the biographies of …
I would never have guessed that “video memos” would become a thing in remote working. Rather than sending a wall of text (which people are unlikely to read or even expand in Slack), record a short (~5 minute) video summarizing the ideas in context with metrics, screenshots, etc. …
Awesome Cold Showers - “ It’s great when people get excited about things, but sometimes they get a little too excited.” A collection of papers for when you don’t believe the hype and need to help others think that way too.
By some kind of coincidence I’ve read The Difference Engine by Gibson & Sterling followed by Quicksilver by Stephenson (re-read) and both are set partially in a London where covering once’s face for safety is prevalent. History repeats itself, historic/science fiction doubly so.
Alex Danco: The Freud Moment - You could draw a line from all of America’s divisiveness and much of the culture wars down to ego vs. superego. America’s egotistical bent doesn’t mean we lack a conscience: we carry around a ton of guilt, as part of the cost of letting egos run …
The Garden Of Forking Memes: How Digital Media Distorts Our Sense Of Time - grab a beverage, this one made me think of time in a whole other way and reframed our narrative-heavy, fact-light information situation: The de-centralization of timekeeping brought about by digital media …
Tom Armitage » Props and Prototypes - props for movies are like prototypes for building technology. A hero’s lightsaber exists as different props for stunts, close-up shots, costuming, plus a digital version for CG shots. Clickable mockups, short video demos, and working code all …
I finished the last season of The Clone Wars over the weekend. Recommended for all Star Wars fans. Hot take: the last four episode arc is a better Star War than Rise of Skywalker.
Oddisee’s new EP Odd Cure has skits, but they’re recorded phone calls keeping up with his family and friends. Kind of a perfect version of the interstitial skit for this moment in history.
Conceptual tools for thinking
Untools is a collection of mental models for thinking about problems, projects, and ideas. For example, the latest tool, the Cynefin framework is useful for assessing the kind of …
Albums with acceptable skits between tracks: Three Feet High and Rising by De La Soul The Listening by Little Brother (TIL!) That’s it, as far as I know. It’s exceedingly difficult to pull off skit tracks. p.s. there may be an Outkast or Goodie Mob album with nearly acceptable …
How I Got My Attention Back - doing a residency and totally disconnecting is implausible for most people. But the idea is great and Craig Mod spins a great story every time I read him.
Writing Better, Type-safe Code with Sorbet. Hot take: gradual typing of large Rails codebases is going to make developers more productive than microservices, radical decoupling, and splitting out SPAs has. Combined.
How “Starship Troopers” Aligns with Our Moment of American Defeat For most of “Starship Troopers,” humanity, in every possible facet, gets its ass kicked. A culture that reveres and communicates exclusively through violence—a culture very much like one that responds to peaceful …
Terrace Martin in heavy rotation this week: 808s and Sax Breaks and Dinner Party 👍👍 Robert Glasper, 9th Wonder, and Kamasi Washington mean you can’t lose!
Tips from HBO’s Watchmen on building an inclusive workplace: The most valuable thing a showrunner—or any manager—can do to create an inclusive workplace is to listen carefully and respectfully to what their employees have to say, while checking their own defensiveness. The …
Periodic reminder that we are worse off for letting folks run Kathy Sierra off the social parts of the internet.
Peak Texas weather. The moment I step outside, I’m thoroughly warmed by the sun. A pleasant glow. For 5 seconds. Then it’s time to plan how I’m getting back to climate control. Rinse and repeat until mid-September. I probably write this every summer because every summer I love …
June 2020
The Cool Zone: The pandemic that has dominated the past three months strikes a useful contrast with what’s happening now. Unlike coronavirus, racism and police violence are problems caused by humans. There’s a saying, “You aren’t stuck in traffic, you are traffic.” Similarly, the …
The project management corollary to Hofstadter's Law
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law. Corollary: It always takes more repetitions to tell people what you're …
May 2020
Never give up on reading the whole internet
Towards smaller JavaScript
The JavaScript ecosystem’s gone to a strange place where dense frameworks and complex tooling are the status quo. But, there are data-points suggesting the pendulum could swing …
A tale of Ghosts’n Goblins’n Crocodiles There is something noble about developing on a dead platform – it is so completely for the joy of the development, without any commercial motivation. John Carmack When does a platform truly “dies”? A “dead language” is defined as “a …
The possibility of software through the ages
The gestalt of what's new in software and how it's changing our world has evolved over the decades. In the ‘90s, it was “don’t make me think!”. User interfaces went from text-based …
Yin and Yang: Lessons of Creativity — David Perell Flow states are the holy grail of productivity. To achieve flow, we need a proper skill-challenge ratio. Skill: Yin (Order) Challenge: Yang (Chaos) We do best when we’re pursuing goals that are a little bit tougher than what we …
H.264 is Magic. There’s so much amazing stuff you can do with math in the pursuit of distinctly non-math-y endeavors. I’ve always thought compilers, and their cousins the query optimizer, are magic. Computer graphics too. Turns out video compression is also uniquely amazing.
Bonus quote from Revenge of the Intuitive: Years ago I realized that the recording studio was becoming a musical instrument. I even lectured about it, proclaiming that “by turning sound into malleable material, studios invite you to construct new worlds of sounds as painters …
The Revenge of the Intuitive and developer tools in 2020
The Revenge of the Intuitive - Brian Eno lamented the downsides of a modern, computer-based recording console. Twenty years ago! The trade-offs for “freedom” at the expense of …
The Revenge of the Intuitive and developer tools in 2020
They say never let a good crisis go to waste
We should use the pandemic to reevaluate how we value service, child care, and education labor. It’s apparent we undervalued them. Their value is now explicit for those clamoring …
“Building quality things of substance takes time.” - Rands in Repose, One Thing
Why NetNewsWire Is Fast - I love it when Brent Simmons writes about system design and principles.
One strong center and two senses stimulated
I rented a 12-year old Porsche Boxster via Turo this weekend. Good app, great car. I’m shopping older German convertibles for my next car. Paying a little to rent a prospective car …
Tools for plain-text thinking
Margin is a plain text notation for thinking in lists, notes, and structured data. I have a soft spot for notations for thinking like, e.g. Markdown, TaskPaper, even bullet …
April 2020
No way through but together
The Bremont Argonaut - there’s a lot of “ink” on this watch face, but it doesn’t seem busy. Even more, the marks on the crowns are the real winners. …
Manage for time and mental burden
Features in software are answers to questions. How can customers send what they're looking at to someone else? That's share via email. How can customers distill all the data about …
AirPods as a Platform: You could also think about the Apple Watch as the main input device. In contrast to the AirPods, Apple opened the Watch for developers from the start, but it hasn’t really seen much success as a platform. Perhaps a combination of Watch and AirPods has a …
Graphs are the new hierarchies
In the sense that trees of people (managers and reports, ala Taylorism) are the old guard. Data (folders and files) are old sauce and nodes + edges are new sauce. In the sense that …
Machine Supply: Knowing what books someone loves is to know their perspective and their journey, to have something special in common, to share a language.
My law of music: there is no song that Aretha Franklin could not perform slower and therefore better than everyone else. Newly discovered corollary: except possibly Pierre Boulez and Beethoven’s 5th. So slow, nearly belabored. Love it!
Drew Austin on high/low-brow music, how it fits into album reviews and club culture, and how all that has shifted in our current state of distance. Energy Flash: “For Reynolds, “at home and at album length” refers to a process of decontextualization, the musical equivalent of the …
A new cannonball run record set - a surprise and unintentended consequence of pandemic and shutting down the economy. It’s now much easier to drive a car really fast from New York to Los Angeles. The new record is just a few hours over a day.
Top of Mind No. 0
Managing a backend engineering team at Pingboard. Managers can, and should, do deep work. What forms does that take? You can build anything from trust; how do you turn …
The Majestic Monolith can become The Citadel - when a function of the monolith becomes unwieldy, split off an Outpost to service that need specifically. I like to call them sidecars, because that seems more fun!
Introducing Watchsmith - I love the idea of using customizable, bespoke complications to get a foot in the door of customizable Apple Watch faces. I’m trying it right now, so far so good!
Ever forward, eventually, to the new way
I’ve been tinkering this weekend and MVP.css may be one of my new favorite tools. Drop in some CSS and then just use HTML elements as their name would suggest. No layout, no grids, no typographical system. No classes to memorize. Build now, worry about all the other stuff later.
March 2020
This weekend, I’m revisiting some of David Perell’s writing on writing, thinking, and aiming high. My favorites: Why You Should Write, Learn Like an Athlete, Networked Writing.
Whiteboard, even if you're a distributed team
A lot of us are out here, amongst all the strangeness of the world, trying to figure out how to help our teams adjust to collaborating remotely. It’s long been my observation that …
Wherein the “good old days” are revisited
Remember secretaries and drinking at work? And land-line telephones? And smoking inside? Blech! And an even more unequal society with even more thumbs on the scales? My wife and I, …
That is a beautiful machine. I must have a soft spot for extensive air-cooling schemes. If Windows/PCs were a thing I could get with, I would get with this hardware.
Use as few rules as possible, mostly guidelines
Rules won’t solve your problems, but thinking about them might. To paraphrase a couple well-known quotes: “Rules are useless, but thinking about rules is indispensable” Dwight …
We took all the dogs on a walk today. Even the sixteen year old one who walks janky. I have never seen so many people out walking in our neighborhood. So that’s nice! Add that to the list of things we should considering preserving once we reach the new normal.
Stop the Coronavirus Corporate Coup. I’ve got a bad feeling about this. The aerospace giant of course wants a $60 billion bailout. Financial problems for this corporation predated the crisis, with the mismanagement that led to the 737 Max as well as defense and space products …
The jazz icon Sonny Rollins knows life is a solo trip. Seems like a surprisingly wise, grounded performer.
February 2020
Keep in touch with friends, the littlest CRM that could
This year, I’m trying to better keep in touch with friends, family, and former co-workers. It came to my attention that this is, in many ways, a thing for which you would use a …
Enforce system consistency at the boundaries & meditations on run-time type systems
(…continuing a Twitter thread) io-ts caught my attention a while back and I finally had the chance to read through it. I’m glad folks are experimenting in this area, particularly …
The Beautiful Ones
Prince’s unfinished memoir, The Beautiful Ones is a quick, but awkward, read. The preface is the most coherent, the story of how the editor, Dan Piepenbring, ended up being chosen …
I watched the various Watchmen
I just finished reading the Watchmen graphic novel and it is amazing. I was drawn in by the HBO series last year, which amplified my enjoyment of the original story. It might end …
Get a cute credit card and overtip
Highly recommend: get a BB-8 or similarly lovely icon from your favorite mythology on the credit/debit card you most frequently use. I have a couple lovely bonus conversations with …
Keep waterfall out of your agile
An insightful thing my pal Brandon Hays observed is that teams introduce little bits of waterfall into their agile processes when they get burned by scope expansion, bugs, …
January 2020
Unblocking oneself
Succeeding and thriving at remote work is largely about getting very good at asynchronous (Slack, discussion threads, email, etc.) and nearly-asynchronous (phone calls, video …
Sharing context in code review
A nice guide on code reviews (unfortunately no author is attributed on the Notion doc) is making the rounds. If you do code reviews, you should read it. If you don’t, you should …
Reading massive tomes: less slog, more joy
I’m drawn to expansive views on a subject. Sprawling narratives are irresistible. Giant books are my weakness. It’s rewarding to finish a chunky, 500-page book but getting there is …
Little victories amongst the bigger vision
A couple of my favorite Ruby friends mentioned that they’re trying to keep their side projects small. Despite that very practical aspiration, the siren call of larger projects …
When management clicks
As a manager, I hear about things that are interesting and things that probably need changing. “We want to do three projects but only have two teams.” “The next production release …
Three (increasingly wild) bits about Prince
As unreleased material trickles out of the Prince estate, some fantastic stories have emerged. I haven’t yet read The Beautiful Ones, but even the stories that aren’t part of his …
Contracts made older objects better
Developers love contracts, i.e. types and type systems. Except, and especially, when they don’t. Contracts tell us, this module has a few functions and they definitely take these …
Training & Learning
A thing I’ve learned from weightlifting (also from Destiny, but that’s a whole other thing), is the value of showing up several times a week and putting in the right kind of work. …
William Gibson in the New Yorker
How William Gibson Keeps His Science Fiction Real - I gotta read more Gibson; just as soon as I finish all the Stephenson. 🤦♂️ One of them showed him an episode of “Cops,” the …
Options everywhere
Setting roadmaps and key results feel like truthful, strategic work. But the flip side is, if you approach them at face value or don’t focus on the outcome, they reduce the ability …
December 2019
Taking notes on paper vs. glass in 2019
Software (currently, GoodNotes) and hardware (iPad Pro + Apple Pencil) are finally to a point where glass is competitive with paper (currently, Studio Neat Panobook, previously …
How regressions happen
Working with software is frustrating, and working on software doubly so, because things up and break. Seemingly without warning or cause. One day the software is fine, the next day …
My 2019 routine, your mileage may vary
I'm having a moment where I feel like I've got a winning wakeup/morning formula 🎊. Wake up early, around 6:30am. Feed the cats so they don't barf in protest later. Skim the tweets …
Sometimes you have to compile a list of known issues and ship
“’tis better to have known a software bug than to have never had a software at all” Lord Alfred Tennyson, except not Software that never ships never has issues. Draw the line, get …
Supporting remote work when you're co-located
Dave Rupert, Everything I Know About Remote Work. Me, everything I know about working with remote workers when you're co-located: Every single meeting has a video link.If one …
Writing to a past version of myself
Left to my own devices, I write in the second person. With apologies to my high school English teachers, I have a justification for this: I’m writing to myself from one, five, ten, …
Your father's janky graphs these are not
You can Graphviz on the web now. Roughly-drawn sketch style, slightly Swiss modernism, or even in the design tool Figma. Mostly enabled by a port of Graphviz to Web Assembly via …
November 2019
Locality, module systems, coherence
Michael Feathers on locality in software design: You have locality when you don’t have to look beyond your gaze to understand how you are affected or how you affect. I find …
The Longines Heritage Military 1938
The deep-black, serene face on this watch is a real winner. The numbering and proportions are also ace.
I guess Brian Wilson didn't recede into his pocket dimension after all
Who sang lead the most on each Beach Boys album? - Brian Wilson is way more active after Pet Sounds than I would have imagined.
Team organization matters
On team composition and the distribution of higher/lower experience team members: Even though pretty much any team can deliver results, suboptimal team composition is still a …
Dave Quah made a pretty dang good HTML & CSS version of the Destiny loading animation. I see a lot of this thing and that’s pretty a pretty dang awesome achievement.
Things makes a nice landing pad
One of the better productivity ideas I’ve seen over the years is using some app as a landing pad for all the random ideas, recommendations, and notes I come across in the moment. …
I don’t often have the need for a tiny spreadsheet on my phone, but I love everything about Tinysheet by Postlight.
How DJ Premier Changed Hip-Hop - I did not realize he’s the producer on so many tracks. Particularly, Nas (“New York State of Mind”, even), D’Angelo, and (checks notes) Christina Aguilera.
The desirable qualities of good tests
I often say that learning test-driven development is comparable to learning a whole other programming language. The practice of TDD is a mirror world of depth and trade-offs. Kent …
I just wrote ‘Automotive form, Eddie Murphy, DC, the Goodfellas/My Blue Heaven connection’. buttondown.email/therealad…
The full-text search future we were promised
I’ve been reorganizing some notes and considering moving specific topics/tags out of Bear. Turns out I can search across Bear, OmniOutliner, Ulysses, and random text files on my …
A great Twitter thread on the importance of training managers. It boggles my mind we just throw so many people in the leadership pool and hope for the best. Every manager had a manager at some point! Why did we only start writing it down in the past few years? 🤷♂️🤦♂️
Automotive function determines form
I generally think function should have a strong influence on form, if not determine the form outright. I like to use cars an example of this, but I’m having trouble reconciling the …
Social media in the morning? Whichever.
Austin Kleon recommends skipping the news/social media/blinky lights in the morning. I’ve found this works great for me, and sometimes not! I’m a morning person, so I’ve got that …
Blogging, like writing, is challenging
The thing which makes blogging difficult is not engagement, analytics, finding just the right theme, curating to a newsletter, managing comments, finding reach after the demise of …
August 2019
Currently intriguing: Toby Shorin
I'm currently intrigued by, and not entirely sure what to do with, the ideas of Toby Shorin. Particularly, Jobs To Be Done and The Desire for Full Automation. The thread of design …
The paradox of event sourcing
The hardest part for me is knowing when to use this. It creates a lot of friction for a small application, but all applications start small. Moving to an event-sourced architecture …
Self-directed rabbit holes (rather than reading All The Topics)
Tyler Cowen: go down self-directed rabbit holes rather than reading the “definitive tomes” on broad-ish topics you’re curious about: Let’s say you want to read some books on …
Reclaim the hacker mindset
There was a time when the hacker mindset was about something nice. They’ve adopted a hacking mindset. They translate this clever, ethical, enjoyable, excellence-seeking behaviour …
Current obsession: the Porsche 962 racecar. A spacecar GT/LeMans design. Bubble-esque cockpit, ground-effect body. It won some races. A great shape with the body panels on or off.
July 2019
Personal choices outperform technology choices
This dinger at the end of Mattt’s WWDC wrap-up is everything: Taking care of yourself — sleeping enough, eating right, exercising regularly — will do more to improve your …
No topic is off-limits
My favorite thing about software development is the breadth and depth of the profession. On the one hand, there’s a ton to learn about computer science, programming languages, …
Problem solvers
We could be problem-solving technologists. We could avoid getting wrapped up in programmer elitism and tribal competition. We might solve more problems that way! We can still find …
Postmodernism rules everything around me
Greater Los Angeles - Geoff Manaugh. Remember when an iPhone had trouble with cellular reception if you put your fingers in the wrong place and a response that was overblown and …
June 2019
Data, it turns out, is far more valuable than code. Google and Facebook are unprecedented in economic history because of the data they’ve amassed; their applications, languages, and vast infrastructure merely enable the data. When the db is the interface – Jessitron: “There are …
Do Something Syndrome: When Movement Trumps Results: I was to learn later in life that we tend to meet any new situation by reorganizing, and what a wonderful method it can be for creating the illusion of progress while producing confusion, inefficiency, and demoralization.
TIL that codemod is a (Python, target language agnostic) thing for doing large-scale find/replace refactorings in code bases, react-codemod is a tool for doing the same specifically for React APIs and idioms, based on jscodeshift for doing large-scale refactorings specifically on …
DeRay McKesson from January 1, 2018: "I’ve found that the people who “play all sides” eventually get played in the end. The world does not need you to pretend to be a neutral party on everything. Stand for the things & people you believe in." Wise words that are going to apply …
Jessica Kerr - the future of software: complexity: “Complexity: Fight it, or fight through it, or embrace it? Yes.” On leverage, the intellectually rewarding kind of software complexity, and tackling accidental software complexity.
Craig Mod, on returning to the internet after forty days without: Strong net connection burbling up above, smartphone in hand, put the right apps on the thing and we are all Odysseuses. Except we didn’t strap ourselves to the mast of our ship, we walked straight up to those …
Thea Flowers - From API keys to tamper-proof encryption
I didn’t expect Thea Flowers’ Building a stateless API proxy to end up explaining public-key cryptography and motivating JSON Web Tokens (JWT) from first principles. But it did! …
I'm the bug
Write about how computer programs are fun to solve and everyone can solve programming problems Run into a computer program that involves multiple black boxes in multiple computer …
zDog is 3-D rendering and animation with ~2k lines of JavaScript and only rectangles/spheres. I’m extremely impressed. This is the kind of playful but compelling technology I wish was more prevalent in the world.
May 2019
If time is money, investing time in your tests can save money
Sam Saffron - Tests that sometimes fail. Fantastic advice on maintaining a test suite over time. A test suite is either an albatross or an asset, depending on the quality of effort …
These are computers, I know this
An encouraging thing happened to me last year. I was faced with a mystery involving how a bit of application code was interacting with ActiveRecord. It seemed like we were calling …
“I don’t know everything, but I can learn anything.”
Rachel McQuater, On Becoming a Wizard: Strategies for Keeping Up as a New Developer: The difference was that wizard developers perceived problems as artifacts of error by rational …
The damn dumbest smart kid I know
Partial explanation for smart folks, like Paul Graham or Mark Zuckerberg, making consistently bad predictions - The Peculiar Blindness of Experts: In Tetlock’s 20-year study, both …
Chernobyl on HBO
We’re three episodes into the Chernobyl miniseries. Great acting, sets, and costumes. I had no idea how much worse the historical situation could have gone. Recommend.
Brent Simmons on Playdate - “the thing that seems very difficult, maybe even impossible, that may fail, but is the best expression of our talent and love”
Web assembly + browser editor + CDN edge = wow
I’m still impressed that the web platform has progressed to the point we can build web apps entirely in the browser with Glitch, Code Sandbox, and friends. That we are now starting …
Music ranked: the string section
Best albums, singles of the years. Who is better, the Beatles or the Rolling Stones. Top 100 smooth jazz to fall asleep to. We love to put music into boxes and then rank the items …
A foray into building interface
I spent some time this weekend attempting to make front-end code with Tailwind CSS. Tailwind is a utility-first approach to CSS wherein styles are organized into classes by how …
Refreshing my Rails: OmniAuth
I’m refreshing my understanding of mainstay Rails libraries lately1. This week, it’s OmniAuth. When you sign-in (authenticate) to website A (say dev.to) via website B (say GitHub), …
Gorillaz & Moby & Van Vaudeville & Soulection
Gorillaz, Demon Days - this one holds up, still a solid album. News to me, Moby has been making extended ambient tracks in some manner of partnership with the Calm app. They make …
Robocalls. What a concept!
They’re on our phones, in our voicemails. Computers or sometimes even humans calling in massive volumes, funneling people into bad purchases. Questionable insurance at best, …
How we get back to space
Space isn’t a dead-end, it’s just taking us longer to figure out than our earliest trajectory. The New Yorker has a great look at The Race to Develop the Moon for industrial …
The notes - May 6, 2018
Unclogging the blog pipes here… Think better I feel seen - Satisfaction and progress in open-ended work: For more open-ended problems, much of the challenge lies in figuring out …
April 2019
Possibly the biggest upsight I’ve had on software estimation in a while - the blowup factor: erikbern.com/2019/04/1…
What makes Into the Wide Open such a great album?
Into the Great Wide Open strikes me as a singular album. Perhaps it’s not even the best Tom Petty album, but it stands out from the rest in some kind of way. Maybe it’s nostalgia? …
Typo’d GraphQL as “GraphSQL” and was like “that’s a little on the nose there, fingers”
A nice reminder that our work is often more about storytelling than we think - Name It, and They Will Come — Overreacted
TIL, Vim hybrid absolute + relative line numbering: jeffkreeftmeijer.com/vim-numbe…
Does Clojure style still rely on writing a lot of chains of higher-order functions (with -> IIRC) or have they moved on to something else?
Sometimes software rewrites don’t fail - if you focus on escaping a local maximum for the product and customers.
March 2019
Leaning into the impostor syndrome here, I did a little bit of GraphQL hacking to see how the ecosystem is coming along. Not too badly! github.com/therealad… Also, semi-literate programming 🤓🤠💪!
Stephen Anderson on The Future of Design: Computation & Complexity. Like everything else, its going to get more weird. But, the large-scale outcome remains the same - design is deciding which elements are essential and which elements to remove: The real world isn’t so simple, and …
Since I can never remember their individual names, it’d help me a lot if all pugs were named “Puggers” from here on out. “Mugsy” would also be acceptable, but I might get them confused for bulldogs idk.
At least once a week, I wish I could go show fourteen-year-old Adam Diamonds and Pearls and Enter the Wu-Tang so that I’d have much better musical taste much earlier.
Coding without a computer, designing without a design
A thing I want to try is coding offline, per se. Without a functional computer (like a tablet). Think first. Outline and sketch a solution. Maybe pseudocode it up. Then fill it in …
Vacation reads
It used to be that all the programmers were ladies. Arguably, they were higher skilled programmers since they didn’t have little luxuries like text editors, REPLs, and online …
I think with my mouth. Often that means I start talking with some idea, realize that the idea isn’t as hefty as I originally thought, and end up talking until I reach a moment of mild truth. Which often ends up being a platitude. Shutting up: it’s a thing I’m working on.
In the world where data-privacy and GDPR compliance matter, owned/onsite analytics stacks like this seem promising bostata.com/post/clie…
Technologies which I am 🤔 about adding to a product but 🤷♂️ if someone has already gone through the process of setting them up and getting the developer experience right: React, Docker, ELK, (probably others)
A thing people don’t like is hearing that a foundational component of their project is mathematically impossible. Corollary: never tell people about the halting problem.
Programming languages > frameworks > libraries > domain languages > domain modeling (Things on the left are higher leverage than things on the right. Things on the right are easier to build than things on the left.) In the brief moment when I start a new application, I work from …
Markets Are Eating The World. A non-obnoxious meditation on how blockchains could reduce coordination costs and makes large, corporate-like entities less necessary in the same way division of labor and technology have in the past.
February 2019
Why are you building this?
At some point in what feels like the very distant past, I bought The Shape of Design by Frank Chimero. For six years, apparently, I’ve flipped past it on the way to reading other …
Little (Rust) learning victories
I’m attempting to learn Rust. And really make it stick this time around. A lot of the “making it stick” part is making lists and having the discipline to stick with crossing items …
January 2019
Pardon the dust, learning in progress
I’m trying a few things while I learn how ray-tracers work: learning Rust and graphics programming collecting my thoughts and discoveries in the repo, aka blogging doing it all in …
It’s true that Twitter took some air out of blogging. I suspect it’s also true that they formed a positive feedback loop when they overlapped. Longer-form writing informed tweets, tweets responded to or inspired longer-form writing. We can have our tweets and eat blogs too!
Listening to a DJ live set and it opens with the whitest, most English version of a 90’s hip-hop sketch I’ve ever heard. This person learned the exactly wrong lesson of possibly every album after 3 Feet High and Rising.
Gil! Scott! Heron! man crush on LCD Soundsystem intensifies itunes.apple.com/us/album/…
Why blogs are still lovely, part fourteen: shawnblanc.net/2019/01/s…
Corollaries to “new languages won’t achieve career-sustaining critical mass": 1) frameworks become the important point of leverage 2) framework/language harmony or outright integration ala Elm or Erlang become even more important.
Long bet: Java, PHP, JavaScript, Python, Ruby, and C# will be the last languages that achieve a critical mass such that they can sustain developers through their whole career. From here on out, it’s a melting pot of framework and technology choices.
Increasingly convinced houses only exist in two states: brand new and invisibly needing repair, lived in and visibly needing multiple repairs. This adage may apply to societies too.
We don't have to agree about code style
Will we ever come to agree on writing code? Ruby folks like short methods. One-liners even; maybe for their concision, maybe to show off their language and code golfing skill. …
It's 2019 and I'm signing my jokes like its 2019
A stranger walks into an elevator. I say “how about this weather?!” They smirk, or let out a small laugh. It’s easy to think, “I am funny guy!” But: that’s not a joke, it’s not …
December 2018
Who has two thumbs and is pretty excited for Enumerable#to_h and the proc composition/chaining stuff in Ruby 2.6! 👍👍 anamaria.martinezgomez.name/2018/12/2…
Which came first: the theory of productivity or the Singularly Great Work? Point: GTD and XP are both based on what worked Really Well for One Singularly Productrive person. Counterpoint: we all need our own theory of what might work for us personally before we get started.
In honor of Ms. Jackson’s imminent induction into the Rock Hall of Fame: is Rhythm Nation 1814 a concept album? 🤔 ✋🖐️✋
Fortnite Creative looks like a combination of private servers and exposing most of the map building tools through a clever game item. Seeing as how nothing in Fortnite should work, on paper, I’m excited to see what folks do with it!
In lieu of coffee, I took a five minute walk yesterday when I hit the mid-afternoon groginess. This was at least as effective, if not more than a coffee. 100% success rate, would recommend! 😉
I like how the module systems in ES6 and Clojure solve the “where the heck did this function come from?" problem. I’m optimistic that adding some kind of module system to Ruby can make working with Rails and large apps even more pleasant! github.com/ciconia/m…
November 2018
The New Yorker’s “Touchstones” essays on classic albums are quite good. The inline samples of Missy Elliott’s musical references and supercuts of other artists borrowing Janet Jackson’s chair dance are a great evolution of online music writing. (There’s also one on Nirvana 🤷♂️)
Wherein a mind is kept clear(er)
A couple things making me feel more productive lately: Jot down a theme for the day: at the beginning or end of the day, I make up some kind of near-platitude to help me focus and …
Bobs: What would you say it is you do around here? Me: I curate and repost cute animal memes from various Slacks into our company Slack’s pets channel. Bobs: This guy’s a straight shooter with upper management written all over him.
Currently enjoying: What Now from Sylvan Esso. Love the edge on the lyrics and the shape of the synth sounds. itunes.apple.com/us/album/…
Ruby library designs based on plugins and/or extensive module composition make me worried I’m going to spend a lot of time understanding the flow of control between modules (e.g. CarrierWave, AuthLogic). I’d rather something that’s already integrated with “common” problems of …
Its never a bad time to educate the kids about their rock and roll heritage
Speaking of rowdy Springsteen: found this anachronistic and slightly surprising performance of “Ramrod" from the 2002 MTV Video Music Awards. www.youtube.com/watch Presumably he …
"Maximum theoretical sincerity"
Pitchfork: Talking Head: Remain in Light By 1980, the conflict in music between what was thought and what was felt was in full cry. As disco continued to monopolize music you could …
Elvis Costello is a jewel unstuck in time, simultaneously timeless and of his time. His most recent album, no exception. pitchfork.com/reviews/a…
Wherein writing the dang memo is the easy part
Seth Godin, Get your memo read: The unanticipated but important memo has a difficult road. It will likely be ignored. I find this is one of the unexpected challenges of taking on …
Now I am the one who microblogs.
August 2018
Context buckets
Sometimes I ask myself: why did past Adam think this text/link/picture/etc. was important. Increasingly the answer is: put it in a bucket that makes the answer self-explanatory. …
Pick prolific: quantity, quality, and Chidi's Dilemma
Prolific is better than perfect, Jared Dees: “Perfect” is a mirage that no one knows how to reach. I’m fond of restating this in terms of the quantity/quality trade-off. It’s easy …
July 2018
We are now a two robot vacuum family! One for the cats upstairs, one for the dogs downstairs. Courtney loves them both. The cats and dogs are way smarter than the robots, which just bump around like embodiments of the old Windows logo screensaver. Our floors have never been …
How I focus more and worry less about the internet
As a long time Rands fan, I highly recommend you partake of the Rands Information Practices and Rands Slack Protocol. Allow me to add some of my favorite tactics. Get your browser …
On decision tables and conditionals
Over the years, I’ve heard a few times about something like Decision Tables (Hillel Wayne): A decision table is a means of concisely representing branching and conditional …
My favorite question is “why?”
At some point in elementary or junior high school, we were taught all our essays should answer one of five questions: who, what, where, why, or how. These were, at the time, “the …
The systemic sublime makes our world more legible
My new favorite category on Kottke.org is the systemic sublime, wherein our networked, often inscrutable world is made more legible. The connections between ideas and and their …
April 2018
Advocacy = empathy + speaking to someone else’s conceptual framework. When I’m trying to convey an idea from my head to someone else’s head, the biggest challenge is converting from my conceptual framework and values to theirs. Hence, The words that work: For example, one partner …
It's dangerous to go alone, take dotfiles
Yesterday I was handed a fresh, nifty new laptop. This is, for me, mildly terrifying. Last time I did a clean operating system install was seven years ago. I’ve carried an …
I’m starting a new job tomorrow. I decided to take a week off in-between jobs, mostly to make a quick trip to Disney Land. I hid most social media apps away, stopped paying attention to news, and caught up on reading. I gave myself a 3-day weekend before our trip to decompress, …
Scribbling through TensorFlow.js
I’ve been trying to wrap my head around machine learning lately. Today I worked through the TensorFlow.js tutorial on recognizing handwritten numbers with a neural network. Herein, …
October 2017
Code minutiae, October 23, 2017
For some reason, identifier schemes that are global unique, coordination-free, somewhat humanely-representable, and efficiently indexed by databases are a thing I really like. …
You must be this tall to ride the services
If I were trying to convince myself to extract a (micro)service, today, I’d do it like this. First I’d have a conversation with myself: you are making tactical changes slightly …
How methodical and quality might keep up with fast and loose
I’ve previously thought that a developer moving fast and coding loose will always outpace a developer moving methodically and intentionally. Cynically stated, someone making a mess …
A strange world of mathematical and computational complexity
Over the past few weekends, I’ve been reading on two topics which are way out of my technical confidence. I’ve spent the majority of my software development career building web …
Just keep writing, October 16, 2017
I watched pal Drew Yeaton work in Ableton briefly and it was pretty incredible. He laid down a keyboard and drums beat, fixed up all the off-beat stuff, and proceeded to tinker …
One step closer to a good pipeline operator for Ruby
I’ve previously yearned for something like Elm and Elixir’s |> operator in Ruby. Turns out, this clever bit of concision is in Ruby 2.5: object.yield_self {|x| block } → an_object …
Heck yeah, October 09, 2017
Simon Willison returns to blogging, in peak form nonetheless. Heck yeah! Janet Jackson, “Rhythm Nation”, posted by Billy Eichner. Heck yeah! A rocket engine made of nuclear …
Strange Loop 2017
I was lucky enough to attend Strange Loop this year. I described the conference to friends as a gathering of minds interested in programming esoterica. The talks I attended were …
Here’s a thing, October 05, 2017
As I endeavor to re-establish writing here as a regular and consistent project, I’m reminding myself of two things that helped me in the past. First and foremost, it’s about the …
exa in 30 seconds
What is it? exa is ls reimagined for modern times, in Rust. And more colorfully. It is nifty, but not life-changing. I mostly still use ls, because muscle memory is strong and its …
Generalization and specialization: more of column A, a little less of column B
Now, I attempt to write in the style of a tweetstorm. But about code. For my website. Not for tweets. For a long time, we have been embracing specialization. It's taken for granted …
The notes, October 04, 2017
I’m intrigued by folks having luck building virtualized development environments for localhost setups. It sounds like fun to work in this kind of workflow. I never want to do the …
Not-a-Science Science
Any field with the word "science" in its name is guaranteed not to be a science. – Gerald Weinberg, An Introduction to General Systems Thinking
Afternoon notes, October 03, 2017
Someone will always have a slicker Git workflow than you. For example,Auto-squashing Git Commits for clever rebasing. The passage of time is weird, lately. Nonetheless, it’s …
Morning notes, October 03, 2017
I like Bluebottle’s coffee subscription service a lot. The web app is well done and having coffee magically appear in my mailbox means I have far fewer “awww heck we’re out of …
The loungification of luxury cars
High-end luxury cars are starting to resemble first-class airport lounges and it’s bothering me. The Porsche Panamera has a dang tray table. Just about every German luxury car has …
Categorizing and understanding magical code
Sometimes, programmers like to disparage “magical code”. They say magical code is causing their bugs, magical code is offensive to use, magical code is harder to understand, we …
September 2017
On Code Review: Bias to small, digestible review requests. When possible, try to break down your large refactor into smaller, easier to reason about changes, which can be reviewed in sequence (or better still, orthogonally). When your review request gets bigger than about 400 …
July 2017
Fewer changes are faster to deploy than fewer changes
Itamar Turner-Trauring, Incremental results: how to succeed at large software projects: Faster feedback... Less unnecessary features... Less cancellation risk... Less deployment …
TIL: divide by 10 with this one weird number
Running an application across two physical databases is not a straightforward thing. One of the relatively easier ways to do it involves assigning each database instance a shard …
If I could imagineer Tomorrowland for a moment
A little bit of fan reflection on Transportation in Tomorrowland and how to revitalize it: When you visit Disneyland in California, how do you feel when you walk down Main Street, …
JavaScript's amazing reach
There’s plenty of room to criticize JavaScript as a technology, language, and community(s). But, when I’m optimistic, I think the big things JavaScript as a phenomenon brings to …
👍 Master of None Season 2
Just finished watching Master of None, season 2. What a great show. It’s hilarious without being campy, poignant without being a downer. Aziz Ansari is very good at this. Also, now …
June 2017
If I were a producer: DJ Khaled
Actually, I probably wouldn’t change much. But I have questions about this marketing photo: [caption id=“attachment_4434” align=“aligncenter” width=“487”] People, do not pose with …
If I were a producer: Muse
I have feelings about Muse, but let’s talk about this particular song I’m listening to right now: “Big Freeze” off The 2nd Law. In general, I would overgeneralize Muse’s music as …
I welcome our future computer assistants...
…but they’re going to have to deal with the fact that my wife and I commonly have exchanges like this: Me: can you hand me the thingy from the thing? Courtney: this one? Me: which …
Computers are coming for more jobs than we think
A great video explainer on how computers and creative destruction are different this time. Why Automation is Different this Time. Hint: we need better ideas than individualism, …
OAuth2 🔥-takes
Is it too late to do hottakes for something that’s been around for nearly a decade? OAuth2 pros: I can allow other sites to use my data with some confidence that, at least, my …
The emotional rollercoaster of extracting code
There’s a moment of despair when extracting functionality from a larger library, framework, or program. The idea grows, a seed at first and then a full-blown tree, that the …
What I talk about when I talk about cars
Human design: what went into deciding how a human-facing thing is made? How did they decide to put the infotainment screen there? Why are BMW dashboard lights orange-ish? Who …
May 2017
More ideas for framework people
A few months ago I wrote about Framework and Library people. I had great follow-up conversations with Ben Hamill, Brad Fults, and Nathan Ladd about it. Some ideas from those …
Did you try editing the right file?
The first few years of my career, I edited the wrong file all the time. I could spend hours making changes, wondering why nothing was happening, until I realized I’d been tinkering …
April 2017
Chaining Ruby enumerators
I want to connect two Ruby enumerators. Give me all the values from the first, then the second, and so on. Ideally, without forcing any lazy evaluations and flat so I don’t have to …
When my brain storms
I do my best thinking: In the shower. I love to take long showers, and I love my tankless water heater. While talking. Something about my brain is wired directly to my mouth. When …
Stored Procedure Modern
The idea behind Facebook’s Relay is to write declarative queries, put them next to the user interaction code that uses them, and compose those queries. It’s a solid idea. But this …
We should get back to inventing jetpacks
I don’t like using services like Uber, Twitch, or Favor. I want to like them, because the underlying ideas are pretty futuristic. But the reality of these services is that the new …
Jeremy Johnson, It’s time to get a real watch, and an Apple Watch doesn’t count: ...watches are one of the key pieces of jewelry I can sport, and while many have no clue what’s on my wrist, those that do… well do. And they are investments. Usually good purchases will not only …
Feedback: timing is everything
With feedback, like jokes, timing is everything. Good feedback at a bad time won’t do the trick. I’ve mostly experienced programming feedback through pull requests. This is way …
Practically applying Clojure
Fourteen Months with Clojure. Dan McKinley on using Clojure to build AWS automation platform Skyliner: The tricky part isn’t the language so much as it is the slang. Also, the best …
March 2017
Lessons on software complexity from MS Office
I learned a lot of things from Complexity and Strategy by Terry Crowley: In Fred Brooks’ terms, this was essential complexity, not accidental complexity. Features interact — …
Healthcare is a multiplier, not a consumer good
Adam Davidson tells a personal story about a relative who, with health care, could’ve continued his career. Without that healthcare, he ended up addicted and in jail. What the GOP …
Type tinkering
I’m playing with typeful language stuff. Having only done a pinch of Haskell, Scala, and Go tinkering amidst Ruby work over the past ten years, it’s jarring. But, things are much …
Let’s price externalities, America
Hello, America. We have to talk. You are built on top of a mountain of federal (a trillion or so dollars) debt. That debt covers some things we need (roads, health care, social …
Personal city guides
I’ve seen lots of sites about how to use software. The Setup and The Sweet Setup are my favorites. You can find lots of sites about how to use ideas like Inbox Zero or Crossfit. …
Universes from which to source test names
A silly bit of friction in writing good tests is coming up with consistent, distinctive names for the models or object you may create. Libraries that generate fake names, like …
You should practice preparatory refactoring
When your project reaches midlife and tasks start taking noticeably longer, that’s the time to refactor. Not to radically decouple your software or erect onerous boundaries. …
Sometimes it's okay to interrupt a programmer
I try really hard to avoid interrupting people. Golden rule: if I don’t want interruptions I shouldn’t impose them on other, right? Not entirely so. Having teammates around, and …
Let's not refer to Ruby classes by string
I am basically OK with the tradeoffs involved in using autoloading in Rails. I do, however, rankle a little bit at this bit of advice in the Rails guide to developing engines. …
They're okay political opinions
The downside to the Republicans proposing a healthcare bill is that it’s a major legislative disappointment, given they’ve spent seven years symbolically opposing healthcare. The …
A little PeopleMover 💌
I love the Tomorrowland Transit Authority PeopleMover. It’s what a transportation system should be. [caption id=“attachment_4190” align=“alignnone” width=“500”] People Mover …
Your product manager could save your day
I thought the feature I’m working on was sunk. An API we integrate with is, let us say kindly, Very Much Not Great. Other vendors provide an API where we can request All The Things …
Three Nice Qualities
One of my friends has been working on a sort of community software for several years now. Uniquely, this software, Uncommon, is designed to avoid invading and obstructing your …
I have become an accomplished typist
Over the years, many hours in front of a computer have afforded me the gift of keyboarding skills. I’ve put in the Gladwellian ten thousand hours of work and it’s really paid off. …
The occurrence and challenge of ActiveRecord lookup tables
I’ve noticed lots of Rails apps end up with database-backed lookup tables. Particularly in systems with some kind of customer or subscription management, it’s almost guaranteed …
February 2017
The annoying browser boundaries
Since I started writing web applications in around 1999, there’s been an ever-present boundary around what you can do in a browser. As browsers have improved, we have a new line in …
Just tackle the problem
There’s a moment when a programming problem engulfs me. Perhaps it’s exciting and intriguing, maybe it’s weird and infuriating, maybe it’s close to a deadline and stressing me out. …
What is the future of loving cars?
To me, a great car is equal part shape, technology, sound, and history. It seems like the future of cars is all technology at the expertise of all other factors. What will it mean …
Levels of musical genius
I often think about what kind of unique musical talent some performer I enjoy possesses. A few examples: J-Dilla was at the center of many groups doing amazing things creating an …
Four parks, one day
In January, Courtney and I went to Disney World for her birthday. We bought an annual pass last year, so we’ve literally been a few times over the past year. This time ‘round, …
Protect the beginner's mind
Someone joins your team. They have a beginner’s mind about your project and culture. Take a person with beginner’s mind, tell them about how things have always been, how they got …
The right way and the practical way
Brent Simmons, Reason Number 33,483 to Hate Programming: Or I could have the superclass expose the appIsTerminating property in its header file, so that the subclass could see it. …
Contrast NYC and SF
Dallas and Austin are the cities I’ve spent my life in. I’ve spent maybe three weeks of my life, total, in San Francisco and New York City. They’re similar in that SF and NYC are …
Framework and Library people
By unscientific survey, I think many developers would prefer to work in a “framework world” where many decisions of principle and organization are passed down by a vendor or …
Execution and idea in Frontierland
It’s commonly held, and pretty much true, that ideas are shallow and execution is depth. That is, the former is nothing without lots and lots of the latter. Let’s set aside how …
Empathy Required
Nearly fourteen years ago, I graduated college and found my first full-time, non-apprentice-y job writing code. When I wrote code, these were the sorts of things I worried about: …
Copypasta, you're the worst pasta
Copypasta. It’s the worst. “I need something like this code here, I’ll just drop it over there where I need it. Maybe change a few things.” Only you can prevent headdesks! It’s not …
Through mocks and back
A problem with double/stub/mock libraries is that they don’t often fail in a total manner. They don’t snap like a pencil when they’re used improperly. Instead, when you use them …
Stevie Wonder, for our times of need
Tim Carmody writing for Kottke.org, Stevie Wonder and the radical politics of love: Songs in the Key of Life tries to reconcile the reality of the post-Nixon era — the pain that …
How Disney pulls me in
Dave Rupert, Disneyland and the Character Machine: In October my family took a trip to Disneyland. I couldn’t help but be infected by the magic of Disneyland that allows you to …
Does an unadvertised extension point even exist?
There was an extension point, but I missed it. I was adding functionality to a class. I needed to add something that seemed a little different, but not too far afield, from what …
January 2017
Perhaps there’s a benign explanation for Paul Ryan appearing to have cut off his phones. Anecdotally, it does not seem GOP Congresscritters are putting much effort into their voicemails or phone lines. I called my representative, Lamar Smith, yesterday afternoon, incensed that he …
The TTY demystified. Learn you an arcane computing history, terminals, shells, UNIX, and even more arcanery! Terminal emulators are about the most reliable, versatile tools in my not-so-modern computing toolkit. It’s nice to know a little more about how they work, besides “lots …
Clinton Dreisbach: A favorite development tool: direnv. I’ve previously used direnv to manage per-project environment variables. It’s easy to set up and use for this. I highly recommend it! But, I’d never thought of using it to define per-project shell aliases as Clinton does. …
Our laws are here, they just aren't equally practiced yet
That thing where institutions like the FBI are prohibited by law from meddling with presidential elections, and then the FBI meddled multiple times. We’re just going to let that …
Journalism for people, not power
Journalism is trying very hard to do better, but still failing America. Media is covering politics and not “We, the people”. Take the coverage of the Republican attempt to neuter …
I love overproduced music
It seems like some folks don’t like music with a lot of studio work. Overproduced, they call it. Maybe this is a relic of the days when producers weren’t a creative force on par …
Turns out Ruby is great for scripting!
Earlier last year, I gave myself two challenges: write automation scripts in Ruby (instead of giving up on writing them in shell) use system debugging tools (strace, lsof, gdb, …
Tinkers are a quantity game, not a quality game
I spend too much time fretting about what to build my side projects and tinkers with. On the one hand, that’s because side projects and tinkers are precisely for playing with …
December 2016
Jobs, not adventures
Earlier this year, after working at LivingSocial for four years, I switched things up and started at ShippingEasy. I didn’t make much of it at the time. I feel like too much is …
Fascinating mechanical stories
I already wrote about cars as appliances or objects, but I found this earlier germ of the idea in my drafts: There’s an in-betweenish bracket where prestige, social signaling, or …
November 2016
The lesser known vapors and waves
There’s a thing going on in music with all the vapors and chills and waves. I’m not entirely sure what it is, yet. Even after reading this excellent survey of the various vaporwave …
Connective blogging tissue, then and now
I miss the blogging scene circa 2001-2006. This was an era of near-peak enthusiasm for me. One of those moments where a random rock was turned over and what lay underneath was …
On recent Mercedes-Benz dashboard designs
Mercedes (is it ok if I call you MB?), I think we need to talk. You’re doing great in Formula 1, congratulations on that! That said, you’ve gone in a weird direction with your …
Mutual Benefit
Leaders of business and thought have been putting out statements showing unity or acceptance of Donald Trump’s election. I feel this is normalizing what has just happened to this …
October 2016
The least bad solution
Sometimes I look over the options and constraints to choose something suboptimal. I have to pick the least-bad solution. I recently chose a least-bad way to write a test. In a …
Wanted: state machines in the language
Our programming languages are often structured around the problem domain of compilers and the archaic (for most of us) task of converting things people understand to a thing the …
Van Halen ranked, atypically
Best songs that David Lee Roth talks over: "Hot for Teacher" "Panama" "Everybody Wants Some" Coincidentally, best use of Van Halen songs in film: "Hot for Teacher" in the strip …
Bon Iver discovers the Option key on his Mac
[caption id=“attachment_3815” align=“alignnone” width=“213”] Someone just discovered all the weird glyphs you can make if you hold the option key and type random stuff![/caption] …
September 2016
On the albums of The Clash
Passing thoughts on the discography of The Clash that is not London Calling: Brian and I had a conversation that randomly veered onto the Clash which prompted to me to listen to …
We’re all adults here, but we’re not all mind readers
My favorite advice on the topic of method visibility (i.e. public vs. private) comes from Python creator Guido van Rossum. It goes something like “we’re all adults here” and says …
Automotive enthusiasm and pragmatism
A few years ago, I was re-infected with enthusiasm for cars. I came upon One Car to Do It All and found a new reason to obsess over cars. I read Car and Driver and Road and Track …
Here comes GraphQL
GraphQL is gaining purchase outside of the JavaScript communities and this seems like a pretty good thing. Shopify and GitHub have jumped on board. Absinthe (Elixir) and …
August 2016
Weaponized jerks
For a long time, the Central Intelligence Agency has had a guide to wrecking an organization by doing a few weird tricks at meetings. It recently came to light, and took hold as a …
Refactor the cow paths
Ron Jeffries, Refactoring – Not on the backlog! Simples! We take the next feature that we are asked to build, and instead of detouring around all the weeds and bushes, we take the …
Losing the scent, acquiring the taste
When I didn’t drink coffee, the thing I enjoyed about coffee was the smell. It has a really great aroma. Unlike popcorn! Now that I do drink coffee, I don’t notice the smell as …
Getting around, together
Riding the Rails: Celebrating Trains and Subway Commuter Life: Train time is essential time, and rail travel isn’t strictly pragmatic. For many, the commute is their only time to …
July 2016
A bold, future-retro Audi dash
I’m officially intrigued by the Audi TT and R8 going with no center display. The look is retro and functional. Will it annoy passengers, or do passengers who want to change the …
June 2016
Our current political Trolley Problem
As self-driving cars inch closer to a daily reality, the Trolley Problem seems to have entered our lexicon. In short, should a self-driving computer choose to avoid hitting a bunch …
A few qualities of mature developers
What is technical leadership? Per Mature Developers, it's a lot of things. My favorites: So one of the first and most important qualities of mature developers is they’re more often …
I love when snares don't keep time
In the majority of music you’ll hear after 1960, the drummer does most of the time keeping with their snare. On 100% of Bruce Springsteen songs, time is kept entirely with the …
May 2016
We should make jokes about tech millionaires
I try not to respond to the bullshit in this world with “this person is awful and they should feel awful”. Except for politicians. I try not to participate in witch hunts. I cope …
April 2016
Why I blog in bursts
I write here in bursts. It confounds me as to what marks the beginning and end of those spikes. I have a few hunches: ambitions grow larger than my free time: it’s easier to hit …
March 2016
Extra Ruby chaining, not that costly
A few folks suggested I try lazy enumerables to make my extremely chained style practical. I was curious about the actual costs of my style, so it’s time for lies and …
One idea per line
Lately, I’m doing a weird thing when writing Ruby code. I’m trying to only put one idea or action per line. I’m not sure about it yet. Here’s what a method to fetch item-y things …
Less fancy
Programming is easier when you know how to stop solving 100 problems with 1 fancy thing and solve 100 problems with 20 plain things.
February 2016
How does a bomber outlast a JS library?
Ember is probably leading the JavaScript framework pack by supporting releases with security patches for slight more than a year. By comparison, there’s a cottage industry of …
Code that resists
Kellan Elliott-McCrea, on the way towards an understanding of technical debt, catalogs the ways we end up with code that resists our efforts to change it: Therefore the second …
Tinkering with Kinto
Here’s a thing I want to experiment with. Short videos talking about what I’m currently tinkering with. Here’s one! [wpvideo lj3gGXFS] More notes in the repo, if you want to play …
Three part method
I find methods/functions decomposed into three parts really satisfying. Consider a typical xUnit test: def test_grants_new_role # setup user = make_user new_role = make_new_role # …
January 2016
My favorite beef is O'Reilly vs. Graham
Of all the pop culture beefs going on at the time of this writing (Meek vs. Drake, BoB vs. Neil deGrasse Tyson, Trump vs. Everyone), my favorite is now Tim O’Reilly vs. Paul Graham …
Things I’ve noticed San Franciscans deeply despise: housing prices nearby events that aren't actually held in San Francisco (e.g. the Super Bowl)
Threaded discussions: nope nope nope
Pet peeve #73: threaded discussions. You may have seen it in a Usenet reader or perhaps even your email. It may seem like a great way to manage a long conversation with multiple …
The future of programming is design, teaching, and empathy
The Future Programming Manifesto starts with this header: Inessential complexity is the root of all evil OK, I’m on board! We should measure complexity as the cumulative cognitive …
BDFLs aren't community builders
What if large open source projects appointed a community manager to handle things like codes of conduct and social spaces? Anecdotally, those who make large projects are often the …
One model doesn't fit all
There are two kinds of developers in the world: those who realize data models aren’t monolithic and use business boundaries to their advantage those struggling with monolithic data …
Versioning an API is a river delta of pain
Slight rant: versioning a (REST) API inflicts upon you a confluence of factors that will lead to pain no matter what you do. You’re going to need to version things, which opens you …
I am a unique snowflake
Every software person is as special and unique as they think they are. But things go weird, in my experience, when I try to express my snowflakeness in production code. If I want …
Rails doctrine and Kremlinology
Long story short, Rails now has a nicely written Doctrine that delineates the principles that motivate tradeoffs the framework makes. Any Rails developer can benefit from …
November 2015
Software design, always on the wrong foot
Software design has probably been broken from the start. The earliest business software, machine language encoded to punch cards, was more about fiddling registers and managing …
Specific, purposeful emails are great
When I’m emailing with teammates, I try to do them a few favors. I make my purpose clear, specific, and up front. I often write the whole email, figure out the real purpose, and …
August 2015
Easy steps to programming language commitment
Feel pressured by other developers telling you that your programming language of choice is old, bad, or that you should feel bad? Apply this heuristic: Try different programming …
Code needs boundaries, but not too many
Let’s talk about boundaries in programs. I need them, otherwise programs grow increasingly inscrutable and impossible to change. A lack of boundaries is nearly as bad as spaghetti …
That's a question
In a technical conversation, I love to hear this: “that’s a good question!” Now we are going to talk about something we might have otherwise missed. Later we will look back at a …
July 2015
Life's Easy Mode
This morning I walked a half mile, not too far, to a neighborhood coffee shop. I had two breakfast tacos and a sweet-flavored latte. I can choose to walk, and take a Sunday morning …
Doubt mongering
Doubt mongering. It’s a thing that happens because egos are fragile. Some doubts I’ve heard or uttered myself in the past month: That sounds like building a dependency manager, and …
NASA: robots everywhere! Military: nuke the moon!
NASA (2014 funding: $17 billion) has sent man to the moon and robots all over the solar system. The military (2015 funding: unfathomable) wanted to nuke the moon. Maybe we could …
What about event sourcing?
I was chatting about Event Sourced data models with a pal last week. He is really taken by the idea and excited that perhaps its a “next big thing” in data modeling. Regretfully, I …
Encapsulation is a tradeoff too
Better understand Encapsulation. I can’t 😍 this article enough: An individual programmer has fixed limits on how quickly they can build up instructions and later on how quickly …
Bridging design and development with data
Programming and designing with Pure UI: The process involved, among other things, creating a new UI, ditching the dependency on Flash in favor of HTML5 and introducing new …
Microservices in context
An interview with John Allspaw, on Etsy infrastructure and operations: For example, a good friend of mine runs and has run an electronic trading exchange. You could imagine his …
June 2015
When we model
I’ve observed a few levels of modeling (i.e. thinking about a problem and describing it in concepts plus data structures) that software developers do in the wild: structural …
May 2015
Word processors, still imitating typewriters
Right after we finish ridding the world of “floppy-disk-to-save” icons, I propose we remove this bit of obtuse skeumorphism from the default view in word processors like Google …
Ideas for Twittering better
When it comes to Twitter, things can get out of hand fast. Setting aside the hostile environment some people face when they participate in Twitter (which is setting aside a …
"Everybody Wants to Rule the World", too much of its time
I really dislike “Everybody Wants to Rule the World” by Tears for Fears because it’s a perfectly written song that sounds exactly like the year it was recorded, 1985. Five years …
Hype curve superpositions
It seems, these days, that technologies can exist in multiple phases of the hype curve, simultaneously. Two data points I read this weekend: Node, which I personally place …
Raising all boats
It’s easy to complain about PHP. For instance, why didn’t they choose ☃ as their namespace resolution operator?! As a developer with lofty opinions, I’m not a big fan of PHP. To …
April 2015
Functions about nothing
The tricky thing about decomposing code into abstractions is you end up with “functions about nothing”. You’ve probably seen on of these: a method or function with really vague …
Missing the big picture for the iterations
I. Driving in Italy is totally unlike driving in America. For one thing, there are very often no lane markers. Occasionally a 1.5 lane road is shared by two cars moving in opposite …
March 2015
Aliens through the eyes of boys
On screening Aliens for a slumber party of 11 year old boys: "I like the way this looks," one said. "It's futuristic but it's old school. It's almost steampunk." "This is like Team …
It's not your fault if your tools confuse you
I. Pet Peeve #43: Complaining About Frameworks The whole point of a framework is that you trade one or more axes of freedom in how you structure your program so that you can move …
February 2015
Organize your Gemfile by function and coupling
Most Gemfiles I see are either unordered (just throw new gems in, wherever!) or alphabetically ordered. A while back, I reordered the Sifter Gemfile, ordering by difficulty of …
Programming advice for a younger me
How to get better at programming without even programming: Accept, in your heart and mind, that the languages, libraries, and tools that you use to write programs may not be good …
Leadership, pick a size
Like fast food or coffee at Starbucks, maybe team leadership comes in three sizes. Extra large leadership. “This is what you’re doing. Make it happen, let me know when it’s done.” …
January 2015
Pick one novelty per project
My pal Brandon Hays and I are fond of noting that projects have a very limited tolerance for the risk of picking a novel technology or approach. Thus, they should intentionally …
Teach people to magnify their mind, not write code
Coding is not the new literacy: When we say that coding is the new literacy, we're arguing that wielding a pencil and paper is the old one. Coding, like writing, is a mechanical …
When software loses its hair
Software’s Receding Hairline: This is interesting, because the mechanism of growing a comb-over applies to software development. A comb-over is the accumulation of years of …
New Pro Bowl selection explainer
Pro Bowl rosters selected by Michael Irvin and Cris Carter: Last year, the NFL did away with the AFC vs. NFC format and began using "captains" to oversee a fantasy draft to fill …
December 2014
Sometimes
Sometimes you go on a writing slump. Usually, just throwing something at the wall is how you undo that. Sometimes you notice that a lot of your writing can end up in platitudes and …
November 2014
18 months is a smelly interval
18 months is a dangerous window, when it comes to building a product. It’s far enough in the future that it seems like you could deliver an ambitious idea within a year and a half. …
Dining at the source code buffet
Let me start with a quote from wonderful person James Edward Gray II: One of my favorite techniques for really learning a new language is to read the core API like a good novel. …
October 2014
Megaprojects: megacool
Megaproject. It’s a cool word. It’s an even cooler list-of-pages on Wikipedia. I’ve only worked on projects limited to tens or dozens of people. The human and geographical scale of …
Is SNL trending up?
Has SNL been getting worse? Viewer ratings say, nope. If anything, it’s becoming more consistent and slightly better. Previously: how to understand SNL. Always: nostalgia bias. …
Sam Stephenson, understated and excellent
I’ve enjoyed Sam Stephenson’s work for a long time. Even before “sheesh”, the most polite dismantling of an over-privileged open source user, Sam’s work has been top notch. …
Vacation, disposable, and calm computing
1 Let me talk about vacation computing. The prime directive of vacation computing is that you should compute on vacation as little as possible. Neglect your email, abandon your …
Apple, Disney, and obsession
People in technology disproportionately like to comment on Apple’s products and business. Outside of technology, there are just as many folks who love to obsess over Disney’s theme …
Multiplication over management
When a developer becomes a manager, It’s not a promotion, it’s a career change: If you want to do your leadership job effectively, you will be exercising a vastly different set of …
September 2014
How to succeed at Rails by trying
I think most teams, probably 90% of them, should start and stick with Rails conventions. Intelligently apply design principles, watch out for coupling that’s not worthwhile, …
The wolf moves fast...
The Wolf: The Wolf moves fast because he or she is able to avoid the encumbering necessities of a group of people building at scale. This avoidance of most things process related …
How waterparks became a thing
The Men Who Built the Great American Waterpark, a roaring tale about the fellows who created the notion of a park for water attractions, from Wet and Wild to my personal favorite …
Well-tuned judgement
Lessons From A Lifetime Of Being A Programmer: Never stop learning, the technology steamroller is right behind you waiting for you to stop. I’ve taken this one seriously in the …
Commercialeering
Things you might hear in commercials/promotions for software and beer: “The first 96-calorie Pilsner” “Invented the smooth-pour top” “Next-generation build system” “The database …
Sportsball Deciphered (II)
It’s Thursday. Sadly enough, this year, that means there’s football on. We’re far from peak football, but it’s getting closer. Prepare yourself, and tell your kids of the days when …
Vegas, America/Starbuck's playground
I’m going to Vegas this weekend with my wife on a real vacation where we’re going to do as little as possible. Not run around Disney World all day, not drive up and down the …
Put. The phone. Down.
Nick Quaranto has Too many streams: There’s just too many things to pay attention to. I get questioned pretty frequently about this: how do you pay attention to nearly 1,500 people …
Conservation of complexity
You can’t fight the Law of conservation of complexity: The law of conservation of complexity in human–computer interaction states that every application has an inherent amount of …
Executables deciphered
What's inside a compiled Hello, World program? Julia Evans is on that. How to read an executable: Executable file formats are regular file formats that you can understand. I’ll …
Sportsball deciphered
It’s September and football season is upon us. Thus, I will soon annoy the snot out of people who say “sportsball” and generally ignore sports. Some will be able to mute me on …
Make systems from goals
Use systems to get where you’re going, not goals: My problem with goals is that they are limiting. Granted, if you focus on one particular goal, your odds of achieving it are …
Microservices for grumpy old men and women
Microservices? I’m not entirely sure what they are. The term seems to exist on all parts of the hype cycle simultaneously. It’s on the ascent of excitement, the descent of …
Jerry Jones: slightly human, mostly Faustian
The best thing you will read about Jerry Jones this year. Slightly humanizing, even. What Jerry Jones wants, he cannot have: I’ve never wanted anything as much as I want to win the …
August 2014
Thought + Quality
Oliver Reichenstein, Putting Thought Into Things: Quality — as in “fitness for purpose” — lives in the structure of a product. A lack of quality is a lack of structure, and a lack …
When Developers Design
I see lots of “should designers code?” articles and introductions to coding for designers. I see far less interest in the converse. So what’s a designer think? Cap Watkins, a …
How Rails fits into the front-end
Is Rails well positioned for where the web (on all devices) is going? Pal Dave Copeland asked that on Twitter. Turns out I had plenty of opinions! I buy into the notion that the …
A Ruby hash, Luxury Touring Edition
map.rb, quality software by Ara T. Howard: the awesome ruby container you've always wanted: a string/symbol indifferent ordered hash that works in all rubies m = Map.new m[:a] = 0 …
It's Always Been This Way...Huh?
I’ve been programming, as a full-time job, for more than ten years. I started doing Ruby, and Rails, nearly ten years ago. I’ve been at LivingSocial for a two and a half years now. …
May 2014
Microsoft's Orleans, a good ideas
I came up in the days when Microsoft and Linux were mortal enemies. Back when “Borg Bill Gates” was the icon for stories about MS on Slashdot. Back when Slashdot was the cutting …
Unpacking RailsConf 2014
RailsConf 2014 having wrapped up a few weeks ago, now seems like a good time to try and unpack what I saw, heard, and talked to others about. Bear in mind I skipped RailsConf 2013 …
March 2014
A chunk of paper
So I’m in rehearsals for a comedic musical. I love comedy. I’m very “meh” about musicals; I don’t know much about them. I like combining familiar and strange things, so it’s great …
Businesses can empathy too
Building an Ethical Business: Empathy is sometimes described as a personal trait, but it’s a skill, a skill that can be learned, that can be honed, and that can be instilled as a …
About version numbers
Conjecture: thinking about releasing software versions to users/partners/the public in dotted version numbers, e.g. “1.0, 2.1, 5.3” is a symptom of misshaped thinking. This line of …
English-like programming languages, like, yuck
Glenn Vanderburg on teaching developer how to use Ruby testing APIs: For example: I hate it when APIs (or languages, or whatever) are presented as "it's just English!" That doesn't …
Pancake publishing
I’m currently jazzed by the idea of full stack writing: Hi is what we call a “full stack” writing and publishing platform. Just what is a writing stack? Capture. Write. Publish. is …
February 2014
Find your principles for editing programs
Some folks from GitHub sprung the Atom text editor on the internet yesterday. Releasing a product into a market defined by saturation, settling for brokenness, and zero-cost …
Counterpoint: Rails and instance variables
A great thing about writing is that it focuses and sharpens one’s thoughts. The great thing about writing in public is that your thoughts, when passed through the brains of others, …
A tale of two Rails views
Why do I prefer to avoid referencing instance variables in view? I needed to clarify this personal principle to a teammate recently. It was one of those things I’ve internalized so …
January 2014
Rockets and startups
A venture-funded startup is sort of like a space program. Space programs don’t build airplanes that fly in flat, predictable, safe trajectories. They shouldn’t be concerned with …
Grow and cultivate
Adding new functionality to software is really exciting. I love poking around the edges of a system, figuring out what’s going on, and looking for that “obvious” place where the …
Currently provoking my thought
The worst NFL announcers, by the numbers (via Kottke). Obviously, this is my jam. To my surprise, Phil Simms didn’t come in last. Simms is a real conundrum; I think he’s great on …
Stop me if you've heard this one
Lately, I find myself stopping to make sure I haven’t previously written the thing I’m currently writing. For starters, I have a horrible method for moving things out of my “I …
December 2013
The joy of finishing
Then, the finish. Stain. Wipe. Wait. Stain. Wipe. Wait. Sand. Wipe. Stain. Wipe. Wait. Check. Seal. Wait. Sand. Wipe. Seal. Wait. Sand. Seal. Wait. And that's if everything goes …
Let the right something in
There will always be more somethings we want to do than we have time to do. Right? Maybe. A lot of the right somethings can add up to a great thing, even if the somethings aren't …
Not that kind of log
First, read all of this excellent distillation of distributed systems by Jay Kreps, The Log: What every software engineer should know about real-time data’s unifying abstraction. …
Dear Sync Diary
Brent Simmons is keeping a diary as he works through implementing sync for Vesper, an iOS note-taking app. Building this sort of thing isn’t easy; cf. it took Cultured Code …
Tony Romo media circuses over the years
2011: should not have thrown that pass 2012: should not have allowed that pass to be tipped and intercepted 2013: should not have allowed his back to become herniated 2014: should …
This is how you chalkboard
vimeo.com/82253916 By pal Brandon Keepers, who I had no idea had that kind of talent. Well done!
Toot a horn while you test
Someone make me a thing that plays horn samples as my test suite runs. Every time a test or assertion finishes, toot the horn sample. A fast suite would sound like Phil Spector’s …
Give me all your Blackbird stories
The Blackbird had outrun nearly 4,000 missiles, not once taking a scratch from enemy fire. Apparently its sister plane, the A-12, was not so lucky. I will always be a sucker for …
Team superpowers: invest early, reap often
Startup Engineering Team Super Powers. You want all of these. Well-considered investments in tooling and conventions can pay out handsomely, and daily, if you put it in place …
Aliens ate my program's state
So, Adam from a few years ago, you think you can build a distributed system? Designing a concurrent system, one that runs across multiple processors using shared memory threads, is …
NSHipster rainbow bar
My favorite design touch in the Gowalla apps was the rainbow bar. Small wonder that fellow Gowalla alumni Mattt Thompson included one on the landing page for his collection of …
Database rivalry in the Valley
A couple years ago, Google released an embeddedable key-value database called LevelDB. There was much rejoicing. Recently, Facebook released their fork of LevelDB, RocksDB. There’s …
The false bad guy
A pet peeve, in writing and thinking: introducing a false antagonist to create tension in a story. This is rampant in tech writing. Apple vs. Google, Ive vs. Forestall, Rails vs. …
November 2013
Object-oriented relativism
When a Method Can Do Nothing, Michael Feathers: If polymorphism means anything at all, it means that the object is in charge. We send it a message and it is up to it to decide what …
Designing technological empowerment
Applied Discovery: What future are we building, given that we play a role in such an important process? On the role designers play, what they do as careers progress, and how design …
Friday at a Mexican restaurant
Could be any Mexican restaurant. Could be any Friday. This one seemed special to me.
Currently intriguing me
A channel, a sewer, Alabama, and a sunset walk into a bar: A Lua implementation of Go-style coroutines and channels, inspired by a channel implementation by Russ Cox, who is a …
Breakfast cannot wait, Prince
rd.io/x/QFWiK0E… Look, Prince, I’m not sure if I can agree with you regarding “Breakfast Can Wait”. Cereal? Toast? English Muffins? Sure, those things can wait. Migas? Pancakes? …
October 2013
A path through Enumerable
In Cocoa, you can poke inside object graphs (and more!) using dotted strings: NSDictionary *bestOfBeatles = @{@"paul": @{@"beatles": @"Hey Jude", @"solo": @"Jet"}}; NSString *solo …
Football rules: not hard, even for the defense
The NFL is going through an awkward transition from laissez-faire bloodsport to something…less bloodsport-y. Players-turned analysts often rush to the side of the “victimized” …
Let me help you, computer DJ
I look forward to the day when machine learning can differentiate between “don’t play this song because it is awful” from “ don’t play this song because I’ve heard this it a …
Quit your desk
Things I’ve quit doing at my desk: Many writers maintain a private writing hut. The hut has one purpose: it’s the place they go to write. They don’t do anything else there. Once …
It's all made of maths
Math: humans mostly have a love/hate relationship with it. And yet, even if you’re challenged by the continuous maths like myself, it’s hard to argue that there isn’t something …
Coffee and other warmups
Making a cup of coffee sometimes helps me prepare for the process of solving puzzles with computers. Something about choosing AeroPress, French press, Chemex, or Clever; heating …
Off my grid
Courtney regularly drives an hour southwest of Austin, past Dripping Springs, to practice dog agility at a barn her friend rents. It's amazingly quiet once you get past the city, …
Reads for your weekends
That what I’ve read today and greatly enjoyed: 1491, on rethinking what America looked like before Europeans arrived. Has a delightful sci-fi twist: large parts of the Amazon …
Ignorance: pros and cons
We can often, but not always, choose to ignore those on the internet, on TV, and in our lives with different ideas, philosophies, or opinions about the world. Whether intentional …
Peyton Manning, boringly awesome or awesomely boring?
The best thing you’ll read about football today. Peyton Manning is what happens when a guy with the attention to detail of an accountant is also proficient at throwing a football …
September 2013
Draw your software
Better Code Design through Pictures: Looking at a picture like this reveals so much that is missing when only looking at Emacs or Vim. Classes that violate the Single …
Happy Birthday, Mr. The Boss!
How to celebrate the 64th birthday of Bruce Springsteen, “The Boss”, if you’re new to this curious American phenomenon: If you’re totally new to his music, start with Born to Run; …
Find the classes lurking in your ActiveRecord models
This advice is going on a year old, but it’s still some of the best around. If you’ve got ungainly ActiveRecord objects that are doing way more than abstracting your data model, …
Developers are weird with words
Naming things is hard. Witness things that developers have named and then struggle to explain because words and people are weird: TDD sounds like it's about testing, but it's …
Twice the podcast listening
I like to listen to podcasts and screencasts at two or three times the recorded speed. The application I use (Instacast) does this with pitch correction, a feature that’s probably …
August 2013
On music, mostly
You know how sometimes, everything is clicking and you've just got it? Some people call it flow. On Thursday, I was in a quiping flow. You may have witnessed it on Twitter. I …
20% of programming is duh
Sometimes I think 20% of programming is staring at a problem for thirty minutes and thinking there must be a really simple solution right in front of me and then, eureka and then, …
Oh, the complexities you'll know
Carried complexity is the bane of your application. When you add something to software, you incur the cost of doing the work plus the risk that the change will break something in …
Confidence despite evolving systems
Facing risk by instrumenting the hell out of it: Software development is a complex system existing as it does at the intersection of people, systems, good intentions, confused and …
Problems as ever-changing mazes
Problems, puzzles, startups as dynamic mazes: just running to the entrance of (say) the “movies/music/filesharing/P2P” maze or the “photosharing” maze without any sense for the …
Refactor for value over cleanliness
Practice Responsible Refactoring: When cleaning up the code enables you to work faster for a task you aren’t dreaming up but actually have at hand, refactoring is the way to go. …
Finishing software ain't easy
When I start work on a project, whether for personal or professional purposes, I have a sense that I need to devote myself to it. That I should figure out how to make it the best …
Improv perspectives on changing code
In the last improv class I took, we spent a lot of time focusing on four kinds of scenes that appear in improv with astonishing frequency: Straight/absurd: A character has a …
The simple problem inside the complex one
A sophisticated solution to a complex problem is fun to find. Its even fun when someone else finds the solution and thoroughly writes it down. Despite the thrill of recognition for …
Technology that's not a startup
Here’s a nice story on technology that isn’t startups: Unhappy truckers and other algorithmic problems. Logistic networks are a technology, just like smartphones. They make our …
July 2013
I don't have time to not teach
It wasn’t long ago that other developers not knowing the things I know was really frustrating. “How could they not know this?!” I thought that I didn’t have time nor should I be …
Overtime means your business is hurting
Overtime is Morphine, Ernie Miller: A developer who is truly concerned about the health of his or her company also must be careful to ensure the "patient" isn't developing an …
June 2013
Scala and Clojure in terms of city building
The Scala folks are building newer, better cities on top of older cities, which is how things really work (e.g. Paris, Rome, Boston, etc.). The Clojure folks are building Dyson …
Tools for software in the large
When software becomes successful, software often becomes large. More features, more support systems, more infrastructure, more people, etc. Therefore, software “in the large” seems …
Less beautiful code, more code that works in production
Developers should care and feed for their systems, especially when they’re in production. Alerting, logging, and metrics are the tools you need. Further, you need to use actual …
Uncertainty, feedback, confidence, a happy ending
Yesterday, I wanted to setup a quick feedback loop for writing some production code. But, I wasn’t entirely sure what that code should look like. Further, I hadn’t worked in the …
Use what you got
How Shopify scales Rails was one of my favorite talks at Big Ruby. Therein, John Duff talks through what Shopify’s Rails stack looks like and why it works for them. What impressed …
When I complain instead of solve
Pet peeve 74: whenever I slip and focus on complaining about who and what instead of thinking about how and why to solve the problem. This is doubly frustrating because I enjoy …
May 2013
My Rite of Spring overfloweth
Today’s the hundredth anniversary of premier of hometown favorite Igor Stravinsky’s Rite of Spring. The National Public Radios are all over this. NPR Music and WQXR are collecting …
Entropy and anti-entropy on your codebase
Entropy and Evolution of a Codebase goes well with Your Application is on Fire: If you imagine the modules in a codebase like cells in a Game of Life automaton, you could see cells …
Sandi's Rules
One day, Sandi Metz was pressed by a team she was working with to produce a simple set of rules that would lead to better code quality. After consideration, she came up with the …
Your application is on fire
Six easy pieces on thinking about sustainable code Your application is on fire. Something is consuming it, a process converting fresh and shiny code into rigid, opaque legacy code. …
What makes longevity?
A joke for a late-night variety show monologue may only be funny for one day (e.g. a joke about a celebrity). A newspaper article may lose relevance in days or weeks. A TV show …
The downsides of live music
I am a giant music nerd. I listen to a ton of music, I think about music a lot, and I often seek out new music via Twitter and Rdio (🪦RIP). Besides a dislike for showtunes and …
Learning from a dropped refactoring
You don’t have to deploy every bit of code you write. In fact, it’s pretty healthy if you throw away some of the code you write before you even think about committing it. Case in …
April 2013
What I wish I'd known about rewrites
I can’t say enough good things about How to Survive a Ground-Up Rewrite Without Losing Your Sanity. Having been party to a few projects like this, a lot of this advice rings true …
Look up every once in a while!
Sometimes, I feel conditioned never to look beyond the first ten feet of the earth. Watch where you're going, don't run into things, avoid being eaten by bears. Modern life! I see …
Exemplary documentation: size and purpose
There’s a lot to say about programmer-focused software documentation. It’s more crucial than many developers think, so it is often neglected. Even when its not neglected, it’s …
The Third Shift
In the days of industrial labor, many factories ran three shifts per day. Three eight-hour shifts per day keeps a factory fully utilized and some business major’s spreadsheets …
A newsletter
So I did this thing where I wrote a newsletter. I’m going to do it again. The first iteration of this publication was a bit like a written late-night variety show. I wrote about …
Web design for busy coders
Here it is: I'm somewhere between horribly afraid and way-too-smart to seriously attempt front-end web work. Browsers are not the software whose bugs I am interested in knowing …
The gift and the curse of green-field projects
The "green field" in software is a gift and a curse. On the bright side, you have an opportunity to use the new-shiny. Past wrongs can be righted. You can move quickly, without …
Hypermedia chicken, web browser egg
A lot of the hypermedia philosophy is centered around the idea that API clients should work a lot like web browsers and plain-old Hypertext Markup Language. They should follow …
How to understand Saturday Night Live
Saturday Night Live is a changing thing. It’s not new like it was in the seventies, it’s not a powerhouse like it was in the nineties, it may not be the training camp for NBC …
March 2013
Context is data to burst your bubbles
Designing with context: Context is a slippery topic that evades attempts to define it too tightly. Some definitions cover just the immediate surroundings of an interaction. But in …
Hyperthreading illustrated
I'm fond of saying hyperthreading is a lie. It's true though; a dual hyperthreaded core is nowhere near as awesome as a four real cores. That's more provocative than useful, so let …
TextMate's beautiful and flawed extension mechanism
This is about how TextMate’s bundle mechanism was brilliant, but subtly flawed. However, to make that point, I need to drag you through a dichotomy of developer tools. Composition …
Austin's startup vibe
It's different from other towns. What's the Difference between Austin and San Francisco?: Austin offers you more options, but greater variety means that, on the whole, Austinite’s …
Senior VP Jean-Luc Picard, of the USS Enterprise (Alpha Quadrant division)
If you’re working from the Jean-Luc Picard book of management, a nice little Twitter account of Picard-esque tips on business and life, we can be friends. Consider: Picard …
SoundCloud, micro-services, and software largeness
From a monolithic Ruby on Rails app to the JVM, how Soundcloud has transitioned to a hybrid approach with Ruby apps intermingling with Scala and Clojure apps. I think some of their …
Those Who Make, by hand
Those Who Make is a series about people who craft. Physical things, by hand, that don’t come out the same every time. I love watching people make things, and I doubly love hearing …
Thoughts on "Being a Senior Engineer"
On Being a Senior Engineer made the rounds late last year. Before I finished reading it, I felt it was pointing me down a path I hadn't realized was there but needed to go down. …
Feynman's mess of jiggling things
Richard Feynman, in the process of explaining rubber bands: [youtube www.youtube.com/watch The world is a dynamic mess of jiggling things, if you look at it right! This …
The Rite of March
INT. OFFICE: A team of enthusiastic young folk rush to get their “game changing” app ready for SXSW. A cacophony of phone calls, typing, and organizing swag. EXT. PATIO: A team of …
The double-tap
I use Alfred because I believe that my computer should be practically unusable to other people who try to use it. My goal is to put the things I use frequently close at hand. …
February 2013
Computers do what we tell them to, except when we give up
We tell ourselves, “a computer only does what we tell it to.” But, when it comes down to it, if we aren’t getting the result we want out of the computer, we often give in and do …
Twitter's optimizations
Data point: a few of the infrastructure pieces out of Twitter have been implemented in low-level, heavy metal C and they’re optimizing on individual machines instead of …
Stella by Starlight
My latest weekend project, called "Stella by Starlight" after a Charles Mingus recording, was to build an analytics-style dashboard for looking at random metrics and events …
Don't isolate yourself
As a remote developer, it's tempting to create an environment where all you do is focus on churning out the code you're paid to write. Minimal email distractions, no noise, …
Adam’s Law of Redis
No matter how many times you tell everyone to not use KEYS, there remains a non-empty set of people who think they can use KEYS. You can’t use KEYS because it has to look at every …
January 2013
Thoughts on (Programming) Scala
On a whim, I flew through Programming Scala this weekend. I’ve had the book for a while, and actively tried to read it before. But this time, it stuck. All the ideas in Scala are …
Lessons from premature design
Lessons from Premature Abstractions Illustrated. I’ve run afoul of all three of these: Make sure you have someone on the team or externally available that will keep the critical, …
Semantics/Empathy
People argue about words all the time. In the past two weeks, I've participated and watched as nerds unproductively tried to convince each other that they are incorrectly using the …
Reflecting on Ruby releases
Ruby 1.8 brought us a couple changes that made many kinds of metaprogramming easier, plus a whole bunch of library additions that made Ruby feel more "grown up". Without seeking …
Design for test vs. design for API
How many design considerations are there in an almost trivial method? Let's look at two of them. Consider this code: def publish! self.update_attributes(created_at: Time.now) end …
Declaring coupling
A lot of discussions on software design end up focusing on dependencies and coupling. In short, hell is dependencies and the couplings it produces. It's a tricky problem because …
December 2012
Intermediate variables, organizing OO, meeting Grinders half way
I work with Dave Copeland at LivingSocial, but not on the same team. Maybe someday I’ll fix that, but for now I learn a lot from his writings. Herein, a few things worth checking …
Smiling rappers
The rap game doesn't have to be all posturing and diss tracks. We need more smiling rappers.
Why I'm down on hypermedia containers
In response to my hypermedia opinions, Mike Kelly said: These two seem to conflict: “In my opinion, abstract container formats aren’t useful.” and “Just use JSON”. People normally …
Hypermedia opinions
Through the Gowalla API, and now the Sifter API, I’ve worked with a couple systems one could reasonably call a hypermedia API. Since smart people are talking about them today, I …
How to Jerry Seinfeld
How Jerry Seinfeld writes a joke: [youtube www.youtube.com/watch Very different from how I approach it. But, I love knowing how much goes into his craft and the degree to which he …
Typing code examples, it's like biking
If you want to learn from a piece of code, you should type it out, instead of just reading it. The value of typing code: Typing code may be like riding a bicycle. I’m surprised how …
A decentralized web is hard
The Web We Lost, on the web of ad-hoc, bottom-up social networks before the pendulum swung fully towards centralized networks like MySpace, then Friendster, and now Facebook, …
Wherein I heart Code Climate
We’ve had Sifter’s repo hooked up to Code Climate for a couple months now and I’m really loving it. Garrett and I have both found it fun to kill duplication or refactor away …
Focus-mode considered harmful
I have, at times, been a practitioner of turning off notifications, superfluous applications, and other distracting computer softwares so I could "get things done". Sometimes it …
Ideas for living and creating differently
Try thinking about living and creating a little differently today. Advice for beginners: push through the shortcomings of your early work until your ability catches up with your …
Hit it, don't quit
How to be good at anything. In short: do it, get feedback, study how to improve, repeat. Something I’ve found, through crossfit, is that if I have any strong suit it’s not …
You can't solve technical debt, you can only hope to contain it
Staring Down Technical Debt: Technical Debt is an interesting phrase. We all have a sense of what it is instinctively, but we rarely want to think about it. If we think about it …
November 2012
Needs better words
How much easier would Haskell be if its vocabulary wasn’t so deeply rooted in abstract mathematics? How many more people would immediately understand Cassandra if it just adopted …
The qualities of better code
What is 'better' code? Dave Copeland on the qualities readable, changeable code exhibits. Of the attributes he identifies, I think number of paths (ABC complexity) is the most …
Gimme clarity
Wise pal Brain Bailey, along the way to writing about Woody Allen, perfectly articulates my challenge in thinking about how a team should work: The combination of clarity and …
The feel of a commented program
Opening a nicely documented source file is like opening a well-designed, nicely printed book. The main text is obvious, but the side-notes are there to help you when you aren’t …
Some productivity winners
Three things that are making me more productive lately: Pick a thing and do it. Whatever you want to accomplish today, do it immediately after you wake up. No social media, no …
Sit on the fence between abstraction and practice
Theory and Practice is about a fence. It’s tempting to steer all the way towards the abstract, academic side, or all the way towards cutthroat practical side. Some of the most …
Get in my ears, you dissonant chord
Petrushka chord. Two major chords played a half-tone apart. So, it sounds good, except it sounds grating. It's a motif throughout Stravinsky's ballet Petrouchka. Ergo, like …
Dustin Curtis' recipe for doing
Do. Your short, sharp inspirational mantras for the week.
RubyConf 2012 notes
My notes, in a somewhat sketch-esque fashion, from RubyConf 2012. I hope they’re useful and/or amusing to you! [gallery link=“file”]
Pop discovery/rediscovery
Programming is like pop culture in the sense that Blondie gets reinvented every decade and every decade client-server computing is rediscovered. But it’s also like pop culture in …
October 2012
Marginal pennies and dollars
The give a penny, take a penny jar is a logical conundrum. It is not, on its surface, a rational thing. I have no data, but I suspect very few people who put money into them are …
Ruthlessness and fighting for it
You Are Not Ruthless Enough: Being ruthless to yourself means every time you say “oh, I’ll just open up this internal bit over here…” use that moment to give yourself whatever …
Working with Ruby's GVL
Visualising the Ruby Global VM Lock. A nice commit-by-commit look at how extensions for Ruby 1.9 work with the GVL, what that looks like as tests run, and how to release the GVL to …
A pithy take on development vs. operations
The essential, face-palming difference between too many development teams and too many operations teams is thus: Development: “I know how it works, but I don’t know how to make it …
How Ruby IO is formed
Ruby's IO Buffering And You! Jesse Storimer screencasts his way through what happens when you read and write to files and sockets in Ruby, explaining the behavior and spelunking …
Follow the smells
It’s handy to know a lot about programming langauges, patterns, “best” practices, and anecdotal experience in applying those ideas. But premature application of ideas can lead to …
A handful of useful project mantras
You could do a lot worse than following the heuristics set out by this Software Architecture cheat sheet. The tip I need to follow more often is "Is There Another Way"; I …
Know a little hardware
Consider: Google's intricate and massive data center operations, wherein Google is not only leading the pack in building distributed computing and database infrastructure, but …
A kingdom of concerns
When doing object-oriented programming and following SOLID principles, there is sometimes a concern that classes will proliferate and you end up with a Kingdom of Nouns. I find it …
bitly's nsq has some good ideas
bitly/nsq: NSQ is a realtime message processing system designed to operate at bitly's scale, handling billions of messages per day. It promotes distributed and decentralized …
Invent the right thing
You have to invent the right thing. Some things you might invent: A solution to a problem. Nothing novel, just an answer for a question. Eg. any Rails/Django/etc. application. An …
A better shared space
Remote teams are hard. Not impossible hard, but running uphill hard. It’s hard because people are used to interacting face-to-face. Given the opportunity, they’ll interact with …
I got Clojure stacks
Here’s a Sunday afternoon hack. It’s a “stack” machine implemented in Clojure. I intended for it to be a stack machine, no airquotes, but I got it working and realized what I’d …
September 2012
Faster, computer program, kill kill!
Making code faster requires insight into the particulars of how computers work. Processor instructions, hardware behavior, data structures, concurrency; it’s a lot of black art. …
When to Sinatra, when to Rails
On Rails, Sinatra, and picking the right tool for the job. Pedro Belo, of Heroku fame, finds Rails is way better for pure-web apps and Sinatra is way better for pure-API apps. Most …
Common sense code checks
Etsy’s Static Analysis for PHP. This isn’t as complicated as you might think. While Facebook’s HipHop is used, and is quite sophisticated, a lot of this is just common sense. …
Designing for Concurrency
A lot is made about how difficult it is to write multi-threaded programs. No doubt, it is harder than writing a CRUD application or your own testing library. On the other hand, …
Cardinal sins
It is conceivable that a really good machine can learn our hash algorithm really well, but in the case of string hashing we still have to walk some memory to give us reasonable …
Three application growth stories
First you grow your application, then you grow your organization, and then you get down to the metal and eek out all the performance you can. Evolution of SoundCloud’s …
My inner dialog while coding
I’m a bit of a sailor when I’m wrangling my own creations.
August 2012
Hello, you beautiful fixed-width font
Pitch. Not quite a programmer’s font, but holy cow is it gorgeous. I love the thought put into this type; the creator actually tried to recreate the artifacts of type created by …
One part mechanics, one part science
One black-and-white perspective on building software is that part of it is about mechanics and part of it is about science. The mechanics part is about wiring things up, composing …
Know a feedback loop
TDD is one way to create a feedback loop for building your application. Spiking code out and then stabilizing it is another: For most people, TDD is a mechanism for discovery and …
Constructive teamwork is made of empathy
We nerds are trained from an early age to argue on the internet, hone our logical skills, and engage with people based on data instead of empathy. twitter.com/gotascii/… It’s so …
Futures, Features, and the Enterprise-D
A future is a financial instrument (a thing you invest in) where you commit to paying a price today to receive something tomorrow. The price could go up or down tomorrow, but …
The test-driven astronaut
Don't Make Your Code "More Testable", make the design of your program better. Snappy test suites are all the vogue, but that misses the point of even writing tests: create a …
Simplicators for sanity
For those rainy days when integrating with a not-entirely sane system is getting you down: A Simplicator introduces a new seam into the system that did not exist when the service's …
Smelly obsessions
Get Rid of That Code Smell - Primitive Obsession: Think about it this way: would you use a string to represent a date? You could, right? Just create a string, let’s say …
July 2012
How to think about organizing folders: don't.
Mountain Lion’s New File System: Folders tend to grow deeper and deeper. As soon as we have more than a handful of notions, or (beware!) more than one hierarchical level of …
A romantic comedy: OO and FP
My magic ball predicts that OO and FP are going to take something of a “romantic comedy” path of evolution. Act I. OO and FP are introduced at dinner parties and they could not …
Rediscovery: OO and FP
I’ve noticed some of the sharpest developers I know are doing one or both of these things: Rediscovering object oriented design. Practicing evolving a design, often driven by the …
Three kinds of distributed systems
Little-d distributed systems: the accidental sort. You built a program, it ran on one server. Then you added a database, some caches, perhaps a job worker somewhere. Whoops, you …
Protect that state: locks, monitors, and atomics
You need to protect a piece of data, like a counter or an output stream, from getting garbled by multiple threads. Three choices, hot shot: Explicit locks (aka mutexes): acquire a …
Future lies
It’s easy to delude yourself when writing software. Do these tests really describe what the application does? Does the documentation really describe how the system works now? Is …
June 2012
Too eager to add code
I’m a little too eager to add code. If there’s a mess that needs refurbishing, rather than refactoring, I’m too quick to create a parallel world that is nice and tidy like I’d like …
Gaining traction for businesses new and old
People want to see action and progress, no matter how small. They want to hear about milestones and rave reviews. Even if you’re not adding new users and customers rapidly, you can …
"Surround yourself with beautiful software"
Building an army of robots, Kyle Kneath on GitHub's internal tools. The closing line of this deck is "Surround yourself with beautiful software". One of the most compelling things …
Etsy's rules of distributed systems
Architecting for change. Complex systems and change: Distributed systems are inherently complex. The outcome of change in complex systems is hard to predict. The outcome of small, …
Thread safety in Rails, explained!
Read up on Thread and Queue and ready for more multi-threaded Ruby reading? Aaron Patterson has written up how the thread safe option works in Rails and some tradeoffs involved in …
Getting started with Ruby Concurrency using two simple classes
Building a concurrent system isn’t as hard as they say it is. What it boils down to is, you can’t program by coincidence. Here’s a list of qualities in a strong developer: Comfort …
Chronologic, a piece of software history
It’s long past time to call Chronologic a project at it’s end-of-life. About a year ago, it went into serious use as the storage system for social timelines in Gowalla. About six …
The Grinder
As teams grow and specialize, I’ve noticed people tend to take on characters that I see over and over. Archetypes that seem to go beyond one project and apply to each team I work …
AC/DC writes robust songs
AC/DC writes songs that are fundamentally very strong. They aren’t the most touching, artistically composed songs. But they’re very solid songs. They hold together well, you can …
They can't all be winners
My Tuesdays typically look like this: write/hack for my weblog, work, lunch, work, short run, and then hack with other Austin nerds at Houndstooth Coffee. As it happens, I did OK …
The forces of change on the US legislature
As of 2012, the major forces operating on the legislation of the US government are, unscientifically speaking: 60% path dependence 20% regulatory capture 10% marginal progress 9% …
Keep your application state out of your queue
I’m going to pick on Resque here, since it’s nominally great and widely used. You’re probably using it in your application right now. Unfortunately, I need to tell you something …
Convincing yourself you’re not done
Writer’s block gets all the attention. It robs the inspired and stunts the progress of those with a deadline to beat. It’s a starting problem. At some point, I learned all the …
May 2012
Tables and lambdas, a cure for smelly cases
Lots of folks consider case expressions in Ruby a code smell. I’m not ready to write them off just yet, but I know a good replacement for some uses of case when I see it. Rad …
Turns out I was wrong about RSpec subjects
I was afraid that David Chelimsky was going to take away my toys! Consider, explicit use of subject in RSpec considered a smell: The problem with this example is that the word …
April 2012
Three Easy Essays on Distributed Systems
Ryan Smith is pretty good at thinking about distributed systems. Distributed systems, the systems we (sometimes unwittingly) create on a regular basis these days, are a …
Ruby anthropology with Hopper
Zach Holman is doing some interesting code anthropology on the Ruby community. Consider Aggressively Probing Ruby Projects: Hopper is a Sinatra app designed to pull down tens of …
A real coding workspace
Do you miss the ability to take a bunch of paper, books, and writing utensils and spread them out over a huge desk or table? Me too! Light Table is based on a very simple idea: we …
UserVoice's extremely detailed project workflow
Some nice people at UserVoice took the time to jot down how they manage their product. Amongst the lessons learned: Have a set amount of time per week that will be spent on bugs We …
Cowboy dependencies
So you’ve written a cool open source library. It’s at the point where it’s useful. You’re pretty excited. Even better, it seems like something that might be useful at your day job. …
March 2012
A Presenter is a signal
When someone says “your view or API layer needs presenters”, it’s easy to get confused. Presenter has become wildcard jargon for a lot of different sorts of things: coordinators, …
Learn Unix the Jesse Storimer way
11 Resources for Learning Unix Programming: I tend to steer clear of the thick reference books and go instead for books that give me a look into how smart people think about …
How to approach a database-shaped problem
When it comes to caching and primary storage of an application’s data, developers are faced with a plethora of shiny tools. It’s easy to get caught up in how novel these tools are …
How I use vim splits
[vimeo www.vimeo.com/38571167 w=500&h=394] A five-minute exploration of how I use splits in vim to navigate between production or test code and how I move up and down through …
Tool agnosticism is good for you
When it comes to programming editors, frameworks, and languages, you’re likely to take one of three stances: marry, boff, or kill. There are tools that you want to use for the rest …
Rails 4, all about scaling down?
To some, Rails is getting big. It brings a lot of functionality to the table. This makes apps easier to get off the ground, especially if you aren’t an expert. But, as apps grow, …
This silver bullet has happened before and it will happen again
Today it's Node. Before it was Rails. Before it was PHP. Before it was Java. Cogs Bad: There’s a whole mindset - a modern movement - that solves things in terms of working out how …
Bootstrap, subproject, and document your way to a bigger team
Zach Holman's slides on patterns GitHub uses to scale their team Ruby Patterns from GitHub's Codebase: Your company is going to have tons of success, which means you'll have to …
February 2012
Write more manpages
Every program, library, framework, and application needs documentation of some sort; this much is uncontroversial. How much documentation, what kinds of documentation, and where to …
How to make a CIA spy, and other anecdotes
And the hilariously incompetent, such as the OSS operative whose cover was so far blown that when he dropped into his favorite restaurant, the band played “Boo! Boo! I’m a Spy.” …
Own your development tools, and other cooking metaphors
Noel Rappin encourages all of us to use our development tools efficiently. If your editor or workflow aren’t working for you, get a new tool and learn to use it. I’ve been working …
Automated code goodness checking with cane
A few nights ago, I added Xavier Shay’s cane to Sifter. It was super simple, and cane runs surprisingly fast. Cane is designed to run as part of CI, but Sifter doesn’t really an …
What kind of HTTP API is that?
An API Ontology: if you were curious about what the difference between an RPC, SOAP, REST, and Hypermedia API are, but were afraid to ask. In my opinion, this is not prescription; …
On rolling one's own metrics kit
On instrumenting Rails, custom aggregators, bespoke dashboards, and reinventing the wheel; 37signals documents their own metrics infrastructure. They’re doing some cool things …
Whither code review and pairing
Jesse Storimer has great thoughts on code review and pairing. You Should be Doing Formal Code Review: Let’s face it, developers are often overly confident in their work, and …
January 2012
The cost of jerks in social apps
Trolls, spammers, and people gaming social software are a giant pain in the ass. At best, they are an everyday reminder that people are sometimes jerks. At worst, they can warp the …
Hip-hop for nerds: "Otis"
(Ed. Herein, I attempt to break down a current favorite of mine, “Otis” by Jay-Z and Kanye West, in terms familiar and interesting to nerds, specifically of the nerd and/or comedy …
Make time for your projects
Stick it to the man. Wake up early and do your best work, for yourself. Waking Up at 5am to Code: At 5am I jump out of bed and code for two hours, then get ready for work. I do …
Stand on the shoulders of others' REST mistakes
Like all API design, putting a REST API on your app is tricky business that most people learn through lots of mistakes. So stand on the shoulders of other peoples mistakes! Thus, …
Represent dat API
Rails is missing an abstraction when it comes to building REST APIs, in my opinion. Requests route through controllers, controllers call models or services to obtain the right …
December 2011
When to Class.new
In response to Why metaprogram when you can program?, an astute reader asked for an example of when you would want to use Class.new in Ruby. It’s a rarely needed method, but really …
The year of change that was 2011
The year is winding down, and its time to reflect on the 2011 that was. The year took me into the dark abyss of the American housing market and back out the other end. Somehow I …
Four essential topics of 2011, in charts
The Year In 4 Charts: Planet Money does an excellent job collecting four economic charts (themselves chosen from three collections of best-of charts). I’m a dilettante as far as …
Making a little musical thing
After software development, music is probably the thing I know the most about. My brain is full of history, trivia, and a modest bit of practical knowledge on how to read notation …
Crafting lightsabers, uptime the systems, a little Clojure
Herein, some great technical writings from the past week or two. Crafting your editor lightsaber Vim: revisited, on how to approach Vim and build your very own config from first …
A short routine for making awesome things
I’ve said all this stuff before, but I came across some nice writing that highlights people doing it. I’m repeating it because it’s important stuff. Step one, get on that grind. …
Quality in the inner loop
Quality in Craftsmanship: In software, this means that every piece of code and UI matters on its own, as it’s being crafted. Quality takes on more of a verb-like nature under this …
Why metaprogram when you can program?
When I sought to learn Ruby, it was for three reasons. I’d heard of this cool thing called blocks, and that they had a lot of great use cases. I read there was this thing called …
Modern Von Neumann machines, how do they work?
Modern Microprocessors - A 90 Minute Guide!. If you didn't find a peculiar joy in computer architecture classes or the canonical tomes on the topic by Patterson and Hennessey, this …
Changing legacy code, made less painful
Rescuing Legacy Code by Extracting Pure Functions. Come across strange, pre-existing code. Decide you need to change it. Follow the pattern described herein. Apply TDD afterwards. …
Cassandra at Gowalla
Over the past year, I’ve done a lot of work making Cassandra part of Gowalla’s multi-prong database strategy. I recently spoke at Austin on Rails on this topic, doing a sort of …
November 2011
Sleep is the best
Sleep deprivation is not a badge of honor: This is why I’ve always tried to get about 8 1/2 hours of sleep. That seems to be the best way for me to get access to peak mental …
Pass interference: can't live with it, can't live without it.
Bill Barnwell on revamping defensive penalties. Pass interference is tough business in the NFL. It's one of the easiest calls to get wrong on the field (besides the myriad of …
Growing a culture
I previously noted that adding people to a team is tricky, doing so quickly doubly so. A nice discussion popped up around how to do so effectively. So, to cover the other side of …
The pitfalls of growing a team
Premature Ramp-up, Martin Fowler on the perils of building up a development team too quickly: loss of code cohesion, breakdown of communication, plus the business costs of …
A food/software change metaphor
Are You Changing the Menu or the Food? Incremental change, the food metaphor edition. It's about software and startups. But food too. Think "software" when he says "food". Just …
How do you devop?
I’m a sucker for good portmanteau. “Devops” is a precise, but not particularly rewarding concatenation of “development” and “operations”. What it lacks in sonic fun, it makes up in …
The Current and Future Ruby Platform
Here we are, in the waning months of 2011. Ruby and its ecosystem are a bit of an incumbent these days. It’s a really great language for a few domains. It’s got the legs to become …
October 2011
Your frienemy, the ORM
When modeling how our domain objects map to what is stored in a database, an object-relational mapper often comes into the picture. And then, the angst begins. Bad queries are …
August 2011
Relentless Shipping
Relentless Quality is a great piece. We should all strive to make really fantastic stuff. But I think there’s a nuance worth observing here: Sharpen the edges, polish the surface …
July 2011
The guy doing the typing makes the call
Everyone brings unique perspective to a team. Each person has learned from successes and failures. There is a spectrum of things that are highly valued and that are strongly …
How to listen to Stravinsky's Rite of Spring
Igor Stravinsky’s The Rite of Spring is an amazing piece of classical music. It’s one of the rare pieces that was really revolutionary in its time. But in our time, almost one …
Skip the hyperbole
Hyperbole is a tricky thing. In a joke, it works great. Its the foundation of a tall tale (TO BRASKY!). But in a conversation of ideas, it can backfire. The trick about humans is …
June 2011
Practical words on mocking
Practical Mock Advice is practical: Coordinator objects like controllers are driven into existence because you need to hook two areas of your application together. In Rails …
Locking and how did I get here?
I've got a bunch of browsers tabs open. This is unusual; I try to have zero open. Except right now. I'm digging into something. I'm spreading ephemeral papers around on my epemeral …
May 2011
Refactor to modules, for great good
Got a class or model that’s getting a little too fat? Refactor to Modules. I’ve done this a few times lately, and I’ve always liked the results. Easier to test, easier to …
ZeroMQ inproc implies one context
I’ve been tinkering with ZeroMQ a bit lately. Abstracting sockets like this is a great idea. However, the Ruby library, like sockets in general, is a bit light on guidance and the …
Booting your project, no longer a giant pain
So your app has a few dependencies. A database here, a queue there, maybe a cache. Running all that stuff before you start coding is a pain. Shutting it all down can prove even …
Ruby's roots in AWK
AWK-ward Ruby. One man Unix wrecking squad Ryan Tomayko reflects on aspects of Ruby that arguably grew from AWK more than Perl. Great archaeology, but also a good gateway drug to …
Humankind's genius turned upon itself
When We Tested Nuclear Bombs. An absolutely fantastic collection of photos from the nuclear test program. Beautiful to look at, terrifying to contemplate the ramifications in …
Burpess and other intense workouts
What’s the Best Exercise? But when pressed, he suggested one of the foundations of old-fashioned calisthenics: the burpee, in which you drop to the ground, kick your feet out …
Post-hoc career advice for twenty-something Adam
No program was ever made better by one developer scoffing at another. Computer science does not move forward with condescending attitudes. Success in software isn’t the result of …
April 2011
Don't complain, make things better
notes on “an empathetic plan”: Worse is when the the people doing the complaining also make software or web sites or iPhone applications themselves. As visible leaders of the web, …
Perfection isn't sustainable
Perfect vs. interesting: When an interesting person is momentarily not-interesting, I wait patiently. When a perfect organization, the boring one that's constantly using its …
Using Conway's Law for the power of good
Michael Feathers isn’t so quick to place negative connotations on Conway’s Law. Perhaps it’s not so much that organizations don’t communicate well, the traditional reading of …
Hell is other people's concurrency
The first rule of evented programming is, don’t block the event loop! Mathias Meyer’s great intro to Ruby’s EventMachine library. Non-blocking IO is so hot right now. But remember, …
Bloom, a language with time travel
Bloom, a language for disordered (whut!) distributed programming with powerful consistency analysis and concise, familiar syntax (the prototype is built on Ruby): Traditional …
The rules of the yak shave
Yak shaves. They’re great fun. Like most things, yak shaving is more fun when you have some rules to guide you away from the un-fun parts: always have a goal, know when you’re done …
Linux screenshot nostalgia
Anyone else remember uploading screenshots of their super awesome, tweaked out Linux hacker desktops? Sorry, I'm not running WindowMaker, Enlightenment, or Sawmill anymore. Besides …
The next step and the cleared canvas
Knowing the next step is a pretty good feeling. The uncertainty of where you should next place your foot is somewhere between unnerving and terrifying. But if you’ve got an idea of …
The joy of logs
Logs Are Streams, Not Files: But a better conceptual model is to treat logs as time-ordered streams: there is no beginning or end, but rather an ongoing, collated collection of …
I'm Corgi-internet famous
OCD: Obsessive Corgi Disorder, Kitty putting the moves on my man. Also on Men and their dogs. I’m corgi-internet famous! Photo by Courtney.
March 2011
Noel Rappin's Advice on TDD
Testing Advice in Eleven Steps. My favorite: At any given moment, the next test has some chance of costing you time in the short term. The problem is it’s nearly impossible to tell …
Organizing and decoding problems
My favorite sort of problem involves the interactions between individuals, groups of people, and mechanical rules generated by individuals and groups. Speculating on how the rules …
Workouts make focus and discipline
It is probably obvious I have something of a crush on working out. I am proud I have reached a point where being fit is part of my lifestyle and that I see more and more results. …
Driven to drawing monsters
From my notebook: I don't recall what I was working on the time, but it seems that the interaction between many Gowalla models loading from cache via a get class method and …
Clips from unfinished pieces
On the crux of America's challenges: Part of the American experiment is answering the question, "how can we best take advantage of abundance?" Beginning with manifest destiny and …
February 2011
Focus, momentum, and accomplishment
Lately, I’m a little fascinated by the interplay between focus, momentum, and accomplishment. Focus is the feeling of flow, the world around you fading away. Momentum is the …
A conversation between fictional engineers in a fictional world
A hypothetical conversation that may have occurred between two non-existent engineers working on the second Death Star in the completely fictional Star Wars universe. Engineer #1: …
Simple Ruby pleasures
I think I first discovered the joy of take and drop in my journeys through Haskell. But it appears that, since 2008 at least, we have had the pleasure of using them in Ruby too. …
January 2011
The political empathy gap
The structural problems in American political discourse are legion. Polarized interests, corporate and special interests, the news/hype cycle, and pundits who serve no real …
Now witness the power of this fully functional domicile!
About a year ago, our garage door was not feeling well. It wouldn’t go down on it’s own. To close it required my loving embrace. Specifically, I had to lean against it as the door …
The ear is connected to the brain
Some measure their work in tomatoes. I measure mine in albums and songs. When it comes time to get stuff done, I match my ambitions to my energy level. Big, uncertain things when …
December 2010
Four odes to Amazon Prime
twitter.com/therealad… I have a somewhat irrational “thing” for Amazon Prime. So much so that I’m a little surprised that I have such an affinity for what is in some ways simply …
Groove failure and reacquisition
Into every creator’s life, a few non-creative events must fall. Sometimes its meetings, maybe it’s a bunch of business-related emails, or a bunch of support tasks have piled up and …
A language experiment writ large
For the past year, the Java ecosystem has seen interesting evolution. Java the language continues take its place as the new safety scissors of programming, but the pieces around it …
October 2010
Bundler, not as bad as they say
Of all the new moving parts in Rails 3, the one I see the most grousing over is Bundler. This is not surprising, as its a big part of how your application works and it's right up …
Language and brains, an update
Does Your Language Shape How You Think? An update on the current thinking around the Sapir-Whorf hypothesis, the one about language and the words therein shaping the thoughts you …
Using Rails 3.0's notification system
How to use Rails 3.0's new notification system to inject custom log events. Ever wondered what the notification/subscription stuff in Rails 3 is? Wonder no more! I just used this …
September 2010
Computers should do the boring bits
Future-proofing, Uniform Access, and Masquerades: Boring work should be a cardinal sin in programming: it indicates something that the computer should be doing but isn’t.
An ode to Hashie
I was building an API wrapper this weekend. As is common when writing these sorts of things, I found myself needing something that takes semi-structured data (hashes parsed from …
Examining software principles
There are too many good things to say about the Design Principles Behind Smalltalk. A few of my favorites: Scope: The design of a language for using computers must deal with …
July 2010
Making the complicated seem simple
Don Norman, Simplicity Is Not the Answer: We want devices that do a lot, but that do not confuse, do not lead to frustration. Ahah! This is not about simplicity: it is about …
Form: follow your influences
Now that I've sort of ranted about tinkering with software and how it is less important than writing, let's talk about form. I've found new energy in writing here of late. Part of …
Adam's guide to switching weblogs
Over the past few years of writing on this weblog, I can't tell you how many times I've convinced myself that now is the time to move my stuff to new software. Oh, the shiny and …
Michael Feathers on how code grows
Festering Code Bases and Budding Code Bases: Some teams produce what I call a festering code base. In a festering code base, the team changes the code primarily by adding code to …
Incremental deployment at GitHub
Over the past year, I've read a lot about how teams are deploying their software. I've known for a while that Google has the ability to roll out new code to a small percentage of …
June 2010
The Cadence and Flow of Editing Programs
I figured out why my trists with other editors often end up back at TextMate. It sounds a bit like this: Tap-tap-tap-tap-tap-tap; TAP; …
Breaking My Habits For Editing Programs
I’m a Unix guy, by upbringing. My first formative experiences in software development were on an early, Linux 1.x version of Debian. I’d used Windows, but always came back to …
A rambling, regurgitated thought on process
Elevator pitch: I’ve found that if you want to divert a productive team into an hour or two of semi-fruitless banter, ask how the team should use Git, Pivotal Tracker, and …
Rails' Next Top Model
Of all the new and reimagined code in Rails 3, ActiveModel and ActiveRelation rank amongst what I find the most interesting. I’m excited that they potentially lower the bar to …
Make More Awesome
Over the past year, I’ve been trying to create more stuff, some of which I’d hope to turn out awesome. Largely this is an ongoing sort of thing. I try things, I learn a little, I …
May 2010
The art of making a useful todo list
I have a tenuous relationship with todo lists. Rather than helping me focus on getting stuff done, they usually only give me something to tinker with and feel better about having …
A Personal Journey in Editing Programs
Over the past year or so, I’ve spent a bit of time tinkering with text editors. It feels like I woke up one morning and was simply dissatisfied with what I was currently using. It …
A Brief Survey of the History of Editing Programs
Software developers spend a lot of time working with code. Over the past half-century of doing so, we’ve invented a lot of mechanisms that make that task easier and reduce the …
April 2010
Who are we that make software?
We who spend all of our time in front of a computer involved in the production of software are often quick to pigeon-hole ourselves. You probably self-classify as a developer or …
Those who think with their fingers
In the past couple of years, I’ve discovered an interesting way to think about programming problems. I try to solve them while I’m away from the computer. Talking through a …
March 2010
Kindly cogs in unpleasant machines
Some of the most villified companies are poorly regarded because of the way they treat their own customers. Think about people complaining about AT&T’s service in New York City or …
A quick RVM rundown
(It so happens I’m presenting this at Dallas.rb tonight. Hopefully it can also be useful to those out in internetland too.) RVM gives you three things: an easy way to use multiple …
February 2010
The imperfection of our tools
I enjoy a well-crafted application. I place a high value on attention to detail, have opinions on what design elements make an application work, and try to empathize with the users …
Warning: politics
Embedded within the migraine that is American politics are some very interesting ideas. Economics, markets, ethics, freedom, equality, education, transportation, and security are …
January 2010
Goodbye, gutbombs
Last March my wife and I joined a gym, started working out with a trainer, started trying to eat better, and set out to improve our health. Amazingly, we’ve stuck with it (after …
December 2009
Give attribute_mapper a try
(For the impatient: skip directly to the `attribute_mapper` gem.) In the past couple months, I’ve worked on two different projects that needed something like an enumeration, but in …
Just For Fun
This year was my fourth RubyConf. I’ve always come away from RubyConf energized and inspired. But, I’ve yet to follow through on that in a way I found satisfying. I have a feeling …
November 2009
Curated Awesome, the 2nd
The awesome Samson and Delilah, “Emilioooooo!”, Belushi and a skinny tie, contemplating the important stuff, The Rule of Least Power, step into the cypher, and Molly.
October 2009
The Kindle's sweet spot
Given all the hubbub about Kindles, Nooks and their utility, I thought this bears repeating to a wider audience: The Kindle is great for books that are just a bag of words, but …
Testing declarative code
I’m a little conflicted about how and if one should write test code for declarative code. Let’s say I’m writing a MongoMapper document class. It might look something like this: …
Texas is its own dumb thing
Southern American English OK, here’s the deal. Wikipedia has it all wrong. Texas is not part of the South. Texas is its own unique thing. Sure we have dumbasses, but they are our …
Curated awesome, the 1st
A bumpy subway wall, loving things for their Unix-y qualities, Kurt Vonnegut looking dapper, the final movement of Dvorak’s Ninth Symphony (originally his fifth), and a music video …
Chance Encounter
Another meme-ish “film” by yours truly. This time, the idea is you do something in five seconds, plus a two second intro and a one second outro. Here’s what I came up with: This is …
September 2009
Dallas could get a pedestrian bridge
Trinity gift is $10 million for pedestrian bridge. Catering to pedestrians, in Dallas? Surely you jest! I’ll just sit here and quietly hope that the plans for an urban park around …
Ghostbusters then and now
What happens when you take scenes from Ghostbusters and see how New York used to look and how it looks today? Pretty awesome, actually. In two parts.
Birthing Born to Run
The birth of Born To Run. On the creation and evolution of the song and album. Great read for Bruce-o-philes.
Representing time in our programs
Time is the New Memory: The time problem is not easy to see in today's mainstream languages because there are no constructs that make time explicit. It is implicit in the system. …
Ain't talkin' 'bout the man
Here’s a fun game. “The Government”: Try something. Every time somebody complains about the evils or failings of “the government,” strike out “the government” and see what results. …
Polyglottin' your data
Polyglot persistence: I think that many of the NoSQL crowd either fail to either recognize, or to properly describe that their preferred databases don’t replace applications like …
Tons of FP fun
A programming language zoo, a week of FP heaven, rewriting PHP with Haskell and a game for kids of any age to learn the untyped lambda calculus. Did I ever mention it’s a good time …
iPod Spaceman
(With due apologies to the creators of New Math, the writers of 30 Rock and the lovely iPod people.)
Tracking your own context switches
Why I do Time Tracking At one point, I tracked every context switch during my work day. I kept a legal pad next to my mouse and I would write down the time whenever I switched …
Fred, in a nutshell
Fred in depth.
On American political insanity
Still crazy after all these years: Politicians should tone down the rhetoric. Protesters should read some history before making Hitler comparisons. Talk-show hosts should stop …
August 2009
It's not NoSQL, it's post-relational
Almost five years ago, we were witness to the reinvention of web frameworks. A couple upstarts named Django and Rails appeared at almost the same time, espousing many of the same …
Blame the compiler
Remember when you first started programming? Those early days when you'd take some code out of a book or article, type it out, and then try to make it print silly things or draw …
Two cellphones
People with two cellphones worry me. (More six word stories. Also, an article as such in Wired.)
The Technology Behind Tag Better
I promised you the details on how we built Tag Better, so here we go. This is what I used to build the back-end bits. You’ll have to pester Chris or Alex to get the front-end …
Tag Better
Yesterday and today, I worked with Alex Bischoff and Chris Griego on a Rails Rumble project. In less than forty-eight hours, we set out to build a web application, using Ruby, from …
My Why Story
Chris Wanstrath: Now we can all stop obsessing about who we think he was and instead focus on who he actually was – a prolific and inspiring hacker. I met Why The Lucky Stiff for …
Fun
Cannonball Adderley: It's called "Fun". F-U-N, fun. That's something you can do, when everything is mellow. Here’s to mellow times. Seemed appropriate for a Friday.
The mystery of good art
The trick about good art is that it has some mystery, an unknown. The problem is that if you get too close to the art, you risk unraveling the mystery. If you deconstruct it, …
Testify
Two unrelated and great songs, one title. “Testify” by Parliament [youtube=[www.youtube.com/watch](http://www.youtube.com/watch?v=v-OZ-M2y0Ao&hl=en&fs=1&rel=0&hd=1]) “Testify” by …
Working from home, better
Tips for working alone: The other thing I’m doing is bringing back my practice of writing “daily pages”… ~750 words a day to myself, that sort of help me get everything out in the …
Gird your greyscales
Logan Hicks has some really great subterranean photography going on. (Via Infrastructurist) And if you like that, you’d probably also like some Russian submarines, their interiors, …
Getting to know your bookshelf
The Book Stalker - Rands figures you out by your bookshelf: Where’s your bookshelf? It’s this awkward moment whenever I first walk into your home. Where is it? Everyone has one. It …
Free Parking Is Not Free
Free Parking Isn’t Free. Turns out those parking lots, while sometimes handy, are actually pretty gnarly, if your goal is to build a nice place to live: Throughout the 1940s and …
Kill your menubar darlings
The Menubar Challenge - everybody, clear out your menubars! It’s one of my secret productivity weapons, I highly recommend it. Also, read everything on Minimal Mac; it’s the best. …
My setup
Shawn Blanc has been cataloging sweet Mac setups. Last week, he published a description of my own creative den. If you find this sort of thing as intriguing as I do, also check out …
Balmer =~ Tarkin
Steve Ballmer: Evacuate? In our moment of triumph? I think you overestimate their chances. OK, maybe that’s Grand Moff Tarkin. Either way, I’m considering this my birthday present …
Code re-use as technical debt
I have extremely mixed feelings about code re-use. I think it’s largely a red herring, never working out as well as developers would hope. After all, developers are like golfers; …
July 2009
rufus-tokyo goes 1.0.0
rufus-tokyo 1.0.0 - I’ve been tinkering with Tokyo Cabinet and Tyrant lately. It’s great stuff. Grab this gem and start tinkering!
Disastersploitation
DISASTER! Crank that funk.
Differently hackish keyword arguments for Ruby
maca’s arguments - keyword arguments support for Ruby, now. Wickedly clever hack that does reflection on Ruby 1.9 and uses ParseTree for Ruby 1.8. Simpler than I thought it’d be, I …
Interviewing to seek values
Adam Wiggins, per usual, is on to something. Values: Sharing values is the most important part of effective collaboration. If you don’t have significant overlap on values between …
Infinite Jest and fanatics
Infinite Jest on patriotism, fanatics, love, attachments, and temples: ‘Your U.S.A. word for fanatic, “fanatic,” do they teach you it comes from the Latin for “temple”? It is …
Software development requires empathy
If You Want to Write Useful Software, You Have to Do Tech Support: It seems so obvious: if you want to develop software that’s useful to people, you’ve got to talk with them. But …
Instapaper is wonderful
I have loved Instapaper ever since I became aware of it. It fits perfectly into my workflow. There’s tons of stuff I want to read, but not just yet. Instapaper gives you a little …
Haskell modulo excess theory
My journey through Haskell is on something of a lull, but John Wiegley’s got you covered. He’s documented his own journey learning Haskell, and it’s very accessible. John starts …
June 2009
When to do test-driven development
I believe that writing code using testing[1] as a design activity yields long-term benefits that make my life easier. Though I’m a strong believer, I’ve struggled with TDD in the …
A slide in the workplace
The Red Bull headquarters in London has a slide going between floors. I want to go to there. Photo credit: Alexander K.
Super Mario motors
Too cool - Super Mario stepper motor music: …
Meaningful work
Going to meaningful work: Just like being awake is more than just having your eyes open, going to work should be more than just being at a workplace trading time for money. It …
Breaking with tradition
For the like-minded aficionados of the non-traditional: A Redis implementation of Twitter, designed for learning about non-relational datastores and Clojure’s creator Rich Hickey …
The joy of enigmas
...thinking about an enigma. There it is before you—smiling, frowning, inviting, grand, mean, insipid, or savage, and always mute with an air of whispering, ‘Come and find out.’ — …
Poisonous people and genius programmers
Brian Fitzpatrick and Ben Collins-Sussman have done a couple great talks on probing the important social aspects of software development, especially in the open source arena. Open …
Meditations on golf
We’re just wrapping up that nice time of the year in Texas. Technically, we get two nice parts of the year: the one after "winter" and the one after SUMMER. It’s nice in that you …
Visualizing language trade-offs
Guillaume Marceau has done some excellent work crafting the data from the venerable Computer Language Benchmark Game into visualizations that quickly show the trade-offs of using …
That's the second biggest monkey head I've ever seen
A thousand times yes! The Secret of Monkey Island, revisited. My eleven-year old self is jumping with glee. Awkwardly. See also, ScummC and The Secret of Monkey Island, The Play.
How did SQL get so popular?
Many developers, especially of the younger generation, dislike relational databases and their business-partner, SQL. It is regarded by some as the new assembly language. With all …
May 2009
Shippin' ain't easy
Shippin’ web apps ain’t easy. The Contrast guys lay it out. Garrett Dimon shows what goes into an iteration on Sifter. My experience with Dash matches what these folks are saying: …
April 2009
The Roots on tour
24 Hours With The Roots - The Roots are totally my new bicycle lately.
Design: it's important
Via Konigi, David Malouf: Great design in the end will give us something to relate to, to feel connected with, and to reinforce our humanity. Tapping that right balance between …
Enjoy some Wu
Ooh, baby, I like it raww… - Some Wu-Tang Clan for you. I’ve been finding Yes Yes Y’all [sic] an excellent source of music that I otherwise wouldn’t come across.
Put your objects in space
Space-based Architecture - on building and scaling your system with a tuple space, the kissing cousin of the messaging queue. I didn’t know that tuple spaces are used much in …
The non-existent tension between FP and OOP
Is the Supremacy of Object-Oriented Programming Over?: The fact is, for a lot of these applications, it’s just data. The ceremony of object wrappers doesn’t carry its weight. Just …
Personal website patterns
I was thinking about the sorts of personal sites I’ve enjoyed on the web. They roughly fall into two sorts, roughly dividing “website”-ish websites from “weblog”-ish websites. h2. …
The State on DVD, finally
It would appear that, after long last, The State DVD is forthcoming. I cannot wait. The State and Daria were probably the two best works of original programming ever on MTV. (Via …
Three sides of language geekery
Ted Leung’s notes on the JVM Language Summit, Dynamic Language Summit and Lang.NET. Great reading for those interested in what makes programming languages tick.
LOST in-joke
DUDE. Other phrases of common occurrence in LOST. (Via Heilemann.)
Your Friday Jam
Here is your Friday Jam: The De La Soul Dugout. Quite good. See also: WEFUNK radio.
A console for any Ruby project
I’ve been finding this little snippet extremely useful lately: $ irb -Ilib -rmy_library If your Ruby app or library follows the idiom of requiring all the files for your app in a …
John Mayer, closet software developer
“The idea is to run as many concurrent streams of production as we can." - Is John Mayer recording an album or bootstrapping an indie app?
More harmful than harmful
We are lucky to live in a time when 99.9% of programmers will never have a legitimate argument for using GOTO (hi kernel programmers!). But in case you’re feeling nostalgic and/or …
Elevating the art of language implementation
Suppose we can take the following statement as true: Whether you use it or not, the state of the programming craft has been elevated by many of the ideas bundled in Ruby on Rails. …
Postmodern comedy gold
The Nietzsche Family Circus - random Nietzsche quote + vintage comics = comedy gold.
When technical discussions get intense
Pro-tip: trying to unwind contentious technical discussions is a losing game. There are really multiple things going on: people discussing trade-offs in absolutes, personal …
March 2009
Think
The scene in The Blues Brothers where they are recruiting Matt “Guitar” Murphy is quite possibly my favorite of the movie. From the start of “Think” to the first “Freedom!” chorus, …
The economic dashboard
What’s the state of the economy? - a stunningly brilliant visualization of where the economy has been (lagging indicators) and where it’s going (leading indicators). The …
Even the Dharma Initiative has to advertise
Vintage Dharma Initiative Ads. Very excellent.
Decoupling newspapers
My wife works for the local newspaper (thankfully, in their less layoff-prone online division). So I’ve been wondering about this whole newspaper business collapse would work out. …
Underwater volcano go boom
I think one of the first things I decided I wanted to “be” when I was a wee lad was a volcanologist. I’d still love to go to an actual volcano, preferably active. Thusly, the …
Pattern matching in Ruby with Case
Pattern matching, ala Erlang or Haskell, is a language feature near and dear to my heart. Dean Wampler has a great explanation of how to use the Omnibus Concurrency Library to play …
The power of not knowing
Christian Neukirchen: It's a programmer's biggest strength when he knows what he doesn't need to know. And gaining (experience) in not knowing isn't as easy as it sounds.
Get excited and make things
Yes.
Using Haskell for awesome
I’ve joked that Haskell is all about reading other people’s theses, but you can do practical things with it too. His quick explanation of monads is pretty good too.
Rubinius threads, for mere mortals
A no non-sense, non-academic introduction to how Rubinius’ threading is structured. Having read a few papers on VM implementation lately, this is refreshingly direct and …
This is no former-Parrot
Hey look! Parrot went 1.0. Parrot is an open source virtual machine aimed at making it easy for dynamic languages like Perl, Python, PHP and Ruby to target the same VM. I’m glad to …
On feeds: application posture
EventBox. It’s a great idea - roll all the social/distracting applications in your life into one app so you can close it when it comes time to focus. Yesterday, I decided to give …
Making the pretty docs
When you really need to generate nice technical documentation, you would be wise to walk in Assaf Arkin’s footsteps.
A few promising Ruby libraries
From the hall of promising Ruby libraries: an FFI binding to Lua, Ruby to Lua, a neat framework for building Twitter bots, TwiBot and some sugar over the Cascading library (which …
Congruous capitalism
Here’s some idealism for you: I would like to think that the future of human endeavors is congruity. There is a lot of emotional writing about rational topics. That emotion often …
February 2009
Awesome yak shaves
I was sharing some nefarious plans with Dave Thomas yesterday at the DFW PragProg lunch. He later tipped me off to “tinyrb”:code.macournoyer.com/tinyrb/, which is awesome. It’s a …
On news: The Economist
At the height of the DeLay/Rove movement, I became very disenchanted with news and politics. The propaganda, the lack of reason and the generally grim outlook were causing me too …
What I'm Thinking
Last night at Cohabitat, we did some lightning talks. The prompt was “What I’m Thinking”. I decided to take a cross-section of topics I’ve been immersing myself in lately. And of …
Recreating that famous opening scene
I would do the same thing. Brought to you by Alan Francis.
Eye candy for everyone
Scaling and scale models. So much great imagery here, you’re just going to have to click the link and check it out. Sculpture not your thing? Try Round trip with Endeavor, the …
January 2009
Developing fluidly
Here’s a raw idea I’m playing with in my head: Agile development is great. But, if your team doesn’t map well to it, steal ideas from agile relentlessly. You want a fluid …
Classy Web Development with Sinatra
An admission: I didn’t really do as many awesome things during the Bush administration that I would have liked to. So, now that we have a new president, I’m going to start off …
Great Nike ad
Beethoven’s Ninth and skippy video? You’ve got my attention. Nike - The Five from 13thWitness™ on Vimeo.
How you do what you does
Alex Payne has an idiomatic and wonderful way of sharing the interesting parts of his workflow through writing. Bet you can’t read just one. By far, I’ve found al3x’s Rules for …
Coolest building in downtown Dallas
Check out the rest of The Urban Fabric’s stuff, he’s done many great pictures of downtown Dallas.
Neko Case hearts dogs
Post Neko Case’s new single Neko Case donates $5 to dog rescue Done.
On news: beginnings
I first started trying to figure out the world, and especially politics, after September 11th. Before that, it was a topic of tangential concern. Afterwards, of course, it seemed …
Thor doing his thing
My wife doing the canine agility: [youtube=[www.youtube.com/watch](http://www.youtube.com/watch?v=shv6LtVNpKo&hl=en&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999]) Go Thor!
More monads
“While we’re talking about monads”:therealadam.com/archive/2… you should read into the compelling argument that jQuery is, in fact, a DOM monad. It’ll set your mind straight. Also, …
DataMapper + Factory Girl
I’ve been toying with “Factory Girl”:www.thoughtbot.com/projects/… lately. The code I’m currently working on needs to generate lots of data before tests run and Factory Girl is …
Compare and contrast
Compare. “Suburbs built on top of military/industrial complexes”:infranetlab.org/blog/2009… - intriguing yet awful. Quirky and cute - “people re-enacting Far Side …
On Feeds: Tactics
Ask enough people what feeds they read and you will quickly hear “too many” and “I suffer from information overload.” I’ve been there too; at one time I subscribed to more than …
Monads + Ruby = crazy
Guaranteed to boil your brain: do notation in Ruby. You got your monads in my Ruby! He uses ParseTree and Ruby2Ruby to rewrite your code. In other words: heavy. I’d love to point …
Awesome people, hacker spaces, double basses, dictionary
Brian Oberkirch is a big fan of people who are doing awesome stuff on the web. Me too! I’d add to his list: Ryan Tomayko, Greg Borenstein, Garrett Dimon, _why the lucky stiff, …
Agile on a column
Justin Ouellette: When these have all been taken down it's ready to go.
On Feeds: My History
Ted Leung recently noted his “blog-aversary”:www.sauria.com/blog/2009… This reminded me that I’ve been reading feeds for 6-7 years. Shifting from reading centralized media like …
The Next Generation meets Reading Rainbow
Star Trek: The Next Generation was, for all intents and purposes, my jam. I was just the right age to enjoy it when it was on the air. Concurrently, I was the right age to watch …
Comicus
“Matt McCray’s”:www.mattmccray.com Comicus is a CMS for “web”:www.zoodotcom.com “comics”:www.lilmonstas.com/. You may know Matt better for his excellent “CMS-in-a-Rails-plugin …
Generative Van Halen
I saw this last week (really!), but it appears the “blogger embargo” was broken on Sunday, so here goes. “Microsoft Research released an app”:research.microsoft.com/en-us/um/… that …
Vast social abstractions
We are surrounded by huge institutions we can never penetrate: the City, the banking system, political and advertising conglomerates, vast entertainment empires. They've made …
Regarding the 2009 NFL playoffs
The announcers of the Pittsburgh/San Diego game went on and on about what good condition the field was in. I watched the game largely because there was snow on the ground. I wanted …
Bill Burcham does stuff
Where Bill Burcham does what he does.
I found more awesome on the web
Via Tinker It Now!, I ended up at Live Control of Open Source Animation in Animata. Therein, real-time 2.5D animation is controlled via a likeness of Mickey Mouse laden with …
Guidelines for a life well-lived
Allow me to emphasize that 1001 rules for my unborn son is the best weblog I’ve seen in a long time. I read the entirety of the archives last night and this afternoon. Though I’ve …
Close tabs and remove icons relentlessly
Matt Lyon asks, “What’s the cure for tab-itis”? I’ll share the answer with everyone. Long term, develop a severe aversion to too many tabs. Short term, burn it to the ground. If …
Heat dissipation tower
Via ffffound.
Birdland, Forgetting, Libertarianism, Hoboken
Hello, 2009! Let’s try a slightly different format. Starting it out with ““Birdland” by Weather Report”:www.youtube.com/watch can’t hurt. Shawn Blanc says “the best todo software …
December 2008
Ogres and APIs
Bringing Merb’s provides/display into Rails 3: The symmetry relates to another point in API design that I've been interested in lately: progressive expansion. There should be a …
True Hip-Hop Stories
True Hip-Hop Stories: Lords of The Underground from D-Nice on Vimeo.
Whither desktop or web
Lately, I’m finding myself replacing free web-apps with desktop software or commercial web-apps. Some notes on that evolving philosophy herein… Web applications make the most sense …
Change it up
Do something new every three years: I was thinking about the three-year rule while reading about Malcolm Gladwell's observation that it takes 10,000 hours to become truly expert at …
The absurdity of X, Y, R, G and B
The Frustrating Magical Aspect - why the lucky stiff’s great take on the absurdity of the tools we use to put interesting shapes and colors on our screens. Here’s to hoping for …
The Creative Big Bang
That John Gruber, he's good with the words. From Bang: Consider the Big Bang. One moment there was nothing, except for everything condensed into a single infinitely dense point. …
People are making cool stuff
This morning I followed a link that _why shared with us, a lo-fi guitar pedal built around an Arduiono. Kyle McDonald made said pedal; he also made I Eat Beats, a drum machine …
I am going to call Ghostbusters
At the risk of rambling too much about games: DO WANT. [youtube=[www.youtube.com/watch](http://www.youtube.com/watch?v=dD7nw_L4W5M&hl=en&fs=1]) The Ghostbusters video game for the …
Beautifully static
Game trailers are frequently a montage of confusing montage. This trailer stands in stark contrast to the standard: …
November 2008
Gentlemen's Agreements
BMW and Mercedes produce cars in direct competition. Further, everyone else in the auto industry likes to use them as benchmarks. Read a car magazine and count the superlatives …
My notes from RubyConf 2008
This year at RubyConf, I decided to go analog and take hand-written notes. (Someone did this for another conference but I can’t find the link.) I hope you find them amusing and/or …
Dallas' multitudes
The Dallas Myth, Again quotes Molly Ivins: There is a black Dallas, there is a Chicano Dallas, there is a Vietnamese Dallas, there is a gay Dallas, there is even a funky-Bohemian …
Gaming and design
Khoi Vinh’s thoughts on games and their relation to what I aspire to do on the web: ...I’m savvy enough at least to recognize that very interesting things are happening in that …
Modernism in sheds
Prefab Sheds - Modernism in Miniature. Cool looking stuff, and its promising that people are considering better use of their existing space instead of just seeking more space. Now, …
Bruce Springsteen in a nutshell
“Light Of Day”: Things can't get any worse, they gotta get better It’s the deep sadness of his songs, surrounded by undying optimism, that keeps me coming back every time.
One Velociraptor Per Child
The One Velociraptor Per Child project: The project's origins go back more than four decades to the early days of paleontology, when most dinosaurs were still the size of …
My Day, Yesterday
Made for Garrett Murray’s excellent My Day, Yesterday group.
Applying CSS
Why Programmers Suck at CSS - a great primer on how to get from mechanical knowledge of how CSS works to actually using it to make nice things.
Getting Around
In the same ilk as Garret Murray’s My Day, Yesterday pool, I propose you make a video of the essential transportation experience in your town. 90 seconds on getting from one place …
October 2008
Stupid Struct Tricks
All About Struct - there’s always more to learn about @Struct@, unless you’re James Edward Gray. Useful and illuminating for all shades of Ruby developers.
Stream of curiosity
Questions going through my head right now: Why is “The Men All Pause” seven minutes long? What was the point of that “heavy breathing” break? Was it really necessary to have six …
Learn You a Haskell
Learn You a Haskell for Great Good! - if you learned Ruby via The Poignant Guide, you’ll like this. Plus, Haskell does cool stuff to your brain.
Star Wars A-Z
Star Wars ABC: Neat!
Uptown Dallas
Great photo by the urban fabric:
Garrett's life, yesterday
My Day, Yesterday - a glimpse into the world of Garrett Murray. Best ninety seconds of video I’ve seen all week. If you like it and/or my style of humor, you’ll like his Qwick …
Bell curves
Rands In Repose: Horrible: You are a bell curve.
Launch the missiles!
The A-Z of Programming Languages: Haskell - a great interview with the awesome Simon Peyton-Jones on Haskell. I love his use of the “launch the missiles!” metaphor for thinking …
JBox2D equals fun
JBox2D is a port of a C++ physics engine to Java. Being Java means you can use it in Processing. Being Processing means you can use it for fun. And the demos, behold, they are fun!
Awesome desk
OneLessDesk™ by Heckler Design - want.
Mining my Git repositories
Since I started using Git, I’ve been finding myself creating tons of repositories. Anything I think might someday prove interesting or that I work on for more than a few minutes, I …
September 2008
Rich Kilmer speaketh
Ruby’s Best Feature? Rich Kilmer is one of those uncanny developers who can crank out orders of magnitude more good code than your average developer. When he speaks, I always …
Awesome writing
[youtube=[www.youtube.com/watch](http://www.youtube.com/watch?v=Ky5p-L_m6BQ&hl=en&fs=1]) I want to take that video behind the middle school and get it pregnant.
You need more Lyle Lovett
Lyle Lovett is quite possibly one of Texas’ finest exports. If you’re not hip then you’re missing out. Heck, I was missing out; consider a couple of his appearances on the Johnny …
Read slightly less, practice slightly more
Chris Wanswrath, a smart and distinguished fellow, advises us to burn our news readers and just “hear it through the grapevine.” But how far can one go with that? For myself, …
Our trip to Germany in pictures
Here are four of my favorite pictures from our trip to Germany: From top to bottom we’ve got the cool elevator at BMW Welt with glass doors, an old building in Munich with rather …
Vector Prime
Vector Prime. Yeah, I’m that big of a Star Wars nerds, I read these little novels when I need a break from heavier stuff. This one isn’t as good as any in the Thrawn trilogy, but …
I Heart Complexity
Like I said, I think the market for simple applications is probably saturated and now is the time for Ruby and Rails to go up-market and tackle bigger problems. We’re well equipped …
Pretty Parallax
jParallax - a JavaScript gizmo for composing images using a parallax effect. In other words, insanely cool.
Freakonomics
Freakonomics. Its not about economics in the dry, dismal sense that I remember from college. This is more about counterintuitive turns of logic, data showing causations that no one …
August 2008
RailsConf Europe, here I come
RailsConf Europe is next week. I’m so there! I’m giving a talk on complexity and how I heart it. Ruby, and Rails in particular, started out with a very strong statement against …
Guns, Germs and Steel
Guns, Germs and Steel is one of those essential books that makes more sense of the world. Specifically, it address in rational terms, how it came to be that the modern world is …
"with" for Ruby
Use with caution: That said, @with@ is discouraged in JavaScript. If you can, its better to have methods return @self@ so you can chain like so: …
Those were the droids
(via)
Last.fm's shame aggregator
Most Unwanted Scrobbles - Last.fm aggregates the tracks and artists that people don’t want the internet-at-large to know they listen to. Britney Spears appears twice in the top …
Domain Driven Design
Designing software is a tricky thing. It’s tempting to front-load it on a project. That won’t work because the start of a project is when you know the least about it. So some folks …
Interview with David Flanagan, part 2
The second part of my interview with David Flanagan is online. This time around we talk about the craft of programming in general. Its good stuff.
Io's intriguing design
I didn’t manage to touch on this in What Has Ruby Done For You Lately, but Io is a really impressive language. Mostly in the minimal number of concepts one needs to grasp in order …
Catch up with 30 Rock
OK, here’s the deal. If you’re not watching 30 Rock, you’re not watching the best show on TV. There I said it. Fortunately, you’ve got time to catch up; the show doesn’t come back …
Google Calendar + iCal + CalDAV = happy
Google Calendar CalDAV support - instructions for setting up Google Calendar accounts with iCal. Makes Google Calendar a lot more useful to me. Conversely, CalDAV accounts don’t …
Sync your TaskPapers
I’m a fan of TaskPaper, the todo-list app that makes sense and doesn’t throw huge amounts of UI at me. Ergo, I’m pleased to see a Ruby library for syncing your TaskPaper documents …
Interview with David Flanagan
Last week I interviewed the author of The Ruby Programming Langauge, David Flanagan. We posted the first part of it today - Five Questions with David Flanagan, Part 1. The second …
Refactoring to more code
Refactor my code is a neat site where you can post your code and watch others refactor it. I saw an interesting bit of code whiz past and thought I’d take a crack at it. Removing …
Program is information.
Its retro, its cool. It’ll come in handy when I need slides on the sameness of code and data in good programming languages. Via Square America.
Good Erlang reading
Socklabs - lots of interesting Erlang bits here. Not academic at all. :)
Realtime challenges
beyond rest - if publishing data in realtime, XMPP, Comet and scaling HTTP services pique your interest, this thread is an excellent read. Lots of smart people disagreeing here.
Women working on a plane
1940s and 50s industry is neat, OK? Via ffffound!
Some Grieg
Please to enjoy, Grieg’s Piano Concerto in A minor. Brought to you by Artur Rubinstein and the London Symphony. …
Thor and agility
Watching Thor at his agility classes is really interesting. It’s fun to see the dogs constantly looking up to their person to see what jump or obstacle to go to next. Of course, …
July 2008
House on water
I wouldn’t mind living on the water like this. Via ffffound!
HTTP wrappers with ease
httparty looks really cool. It’s a little library for making writing tiny REST clients easier. From the examples (edited for length): class Twitter include HTTParty base_uri …
Agility course made of people
Wow. [youtube=[www.youtube.com/watch](http://www.youtube.com/watch?v=bxLX63qqNyg&hl=en&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999])
Community anti-patterns
You’ll have to pardon me for linking to Ted Leung twice in short order, but the man is good peoples. This time I’d like to draw your attention to his presentation from OSCON on …
Its a Data. Base.
Say it with me. Data. Base. I knew you could! Via Square America.
Not your father's IDE
IDE’s and Dynamic Languages. Ted Leung’s got some useful and insightful things to say about dynamic languages, history, IDEs and the people who use them. While I still think many …
Golf fail
My golf game is hurting these days. Since I’ve become so familiar with my shots drifting off to the right, I figured I’d finally figure out the correct term for these sorts of …
Failings of the expert's mind
Why Analytical Applications Fail. Ostensibly, this article is about analytics applications that expect users to know exactly what they want before they start. But to me, the …
Practical language kleptomania
Introducing Functor - another library for implementing multiple dispatch/pattern matching in Ruby. This is a great example of what I talked about at OSCON: stealing ideas and …
git.repo.revs.each(...)
Git Iterator - a neat little gizmo for running code against every revision in your Git repository. Yielded this chart showing the growth of the Rails code.
What Has Ruby Done For You Lately?
When I go to speak about Ruby at non-Ruby groups, my go-to schtick is only mildly subversive. Sure, I tell them that Ruby is a fantastic language that will make them a better …
Manipulating windows from afar
h2. Adam’s 9th Law Of Presenting When you connect the projector to your laptop, the menubar and windows you want to manipulate will always appear on the giant screen behind you, …
More modules, please
Jay Fields’ Thoughts: Ruby: Underuse of Modules. Modules are your best friend, ya’ll. Use ’em.
June 2008
Congestion and decongestion
Two really awesome maps: National Traffic Scorecard and undersea internet cables (via Coudal).
You say simple, I say simple
The Simplest Thing That Could Possibly Work: At first the developer said "this is where we're going to disagree on the simplest thing that could possibly work." He argued that we …
Three new rules on golf
Yesterday I decided to go off and play a little golf. Somehow, I had the most awesomest round of golf in my life. Luckily, Courtney came along and was there to document part of …
Why is oil so damn expensive?
Great article in The Economist on oil prices and what’s causing their painful rise. Double, double, oil and trouble | Economist.com: In the short run, neither demand for nor supply …
The Joy of Science
Put a Little Science in Your Life: Science is a way of life. Science is a perspective. Science is the process that takes us from confusion to understanding in a manner that’s …
Yurii Rashkovskii's Blog: Top 10 Reasons to Avoid Document Databases FUD
Yurii Rashkovskii’s Blog: Top 10 Reasons to Avoid Document Databases FUD: And… you said “relational”? Facebook and others do a lot of denormalization, they don’t ever use JOIN, …
Microsoft's spin on memcached
Microsoft cargo cults memcached! , via Simon Willison. Back when I worked in a semi-.NET shop, we needed to cache some pretty expensive operations somewhere. In memory would have …
Fake Rails environment
For testing some bits inside of ActiveRecord proper. module Rails def self.env o = Class.new do def production? true end end o.new end end Evil and fun. Uses Class.new, my favorite …
Oh, The Fail I've Known
Please to enjoy my presentation for RailsConf 2008: Oh, The Fail I’ve Known (PDF). | View | Upload your own Its on the things that aren’t normally covered in books and websites …
May 2008
See me at RailsConf '08
As hordes of Ruby and Rails folks begin the annual migration to Portland for RailsConf, I thought I’d let you know how to find me there this year: I’ll join my FiveRuns compatriots …
Pinky and the LOLdog
I made you a muxtape
I hope you enjoy listening to it as much as I enjoyed compiling it.
Destructuring assignment in block parameters
…which is just a fancy way to say that this works like I think it should: >> [['foo', 1], ['bar', 2], ['honk', 1000]].partition { |str, val| val > 999 } => [[["honk", 1000]], …
Frogged
My current foster-hussy-girlfriend. She’s kind of a spaz, but oh-so adorable. Doubly so when she’s “frogged out” as above.
More fu in your versions
Lazily Announcing version_fu - an update of Rick Olson’s acts_as_versioned that works with dirty attributes. Jordan McKible’s plugin is nascent, but since I have a soft spot in my …
Info viz with JavaScript
Massive kudos to John Resig for his JavaScript Processing port. Take this plus the new-to-me JavaScript Information Visualization Toolkit, and it seems likely that data on the web …
Changing git submodule URLs
Pro-tip: if you’re using submodules with Git to manage dependencies (say Rails plugins), you can get yourself into trouble. Like half-a-day of wasted trouble. The rub comes when …
Ruby for non-Rubyists
Yesterday I spoke to a pleasant mix of Java, .NET, Ruby, Python and PHP developers at Dallas TechFest. My goal when speaking to enthusiast crowds of this sort is to show the light …
Beautiful multi-line blocks in Ruby
“I need a new drug”:http://youtube.com/watch?v=MMSFX1Vb3xQ. One that won’t quit. One that will let me sensibly structure the use of blocks in Ruby such that they can run across …
April 2008
Halo Photography
Joshuadamon’s Halotography is utterly amazing: I’m really impressed with what he’s done with some clever camera manipulation and probably some Photoshop loving. All Halo fans …
Can I send you a message?
@Object#send@ - the joy of Rubyists and the scourge of those who would write refactoring tools. Let’s talk about it. I recently ended up writing some code that would have proven …
Some language twins teach each other
SNL Transcripts: Luke Perry: 02/06/93: Weekend Update with Kevin Nealon: That wasn't English, Keith! I mean, you're talking in Esperanto, or some language twins teach each other! I …
Exploratory hacking in TextMate
My first foray into screencasting: Textmate and xmp from Adam Keys on Vimeo. ‘Tis a little tutorial on a little bit of joy I use regularly. In TextMate, you can add xmp markers …
Reverse shoulder surfing
Rands In Repose: Saving Seconds: This is the presentation I want to see at the next conference: in a room full of people, anyone is welcome to walk up to the mic and plug their …
Awesome Star Wars posters
Founds this in Michael Heilemann’s Flickr stream: He’s got more where that came from.
Aye, ye are a scum!
ScummC: A Scumm Compiler - write your own SCUMM games! Man this takes me back to the first two Monkey Island games. I still think the best examples of the point and click adventure …
Designing with type
Techniques for designing with type characters ~ Authentic Boredom: Typography and typefaces, without a doubt, are two of the most fascinating aspects of visual design. Great …
"Science Machine" from birth to completion
How Chad Pugh’s brilliant “Science Machine” came to life: Science Machine from Chad Pugh on Vimeo. This illustration is the inspiration behind the Vimeo login page, which is itself …
Interviewed by RubyLearning
Ruby Interview: Adam Keys of FiveRuns - Satish’s ability to find an absurd picture of me from five years ago is impressive. The interview focuses on ideas for buddying Rubyists. So …
The Greatness of Gossip Girl
So true!
Ecto-1 Replica
Ecto-1 from Ghostbusters - too flippin cool. (Via Coudal).
I'll see you at Dallas TechFest
For the past couple of months I’ve been -procrastinating- helping to organize the Ruby track for the Dallas TechFest Dallas TechFest. Its is a language and technology agnostic …
Dean Allen on LOST
Dean Allen on LOST: It’s crap. Utter, arbitrary crap. They make it up as they go along. I’m not judging, but he could prove correct. Oddly enough I found this on his colophon page. …
Save it for your iVillage blog
I started playing Halo 3 again this week. I am quite rusty at it now - I think I regressed while others greatly advanced. But, that’s a digression. So I dropped into matchmaking on …
Rails Scenarios
Rails Scenarios - a sane way to specify really complex fixtures in Rails. Lets you write classes to specify data and helpers to operate on that data. There’s a sane way to compose …
Ballmen for Half Life 2
Ballmen Mod - a Half Life 2 mod where you can walk on walls and do all sorts of insane jumping due to weird gravity. Please tell me someone is making a Möbius strip map for this …
Corrupted by cosmic rays
ACID Databases: Fact and Fiction "A final note: There are other things that can go wrong, such as the disk not writing the data properly, a bit in memory being flipped by a cosmic …
LOL License
Boy, do I have a treat for you! And by “treat”, I mean embarrassing for me, hilarious for you. I found the license I got on my eighteenth birthday. Back in the day when I had long …
Its a musical rollercoaster
If jazz is more your thing, then you should watch this animation based on “Giant Steps”.
Say it quickly
Like everyone on the internet, I’m trying this whole Flickr video thing: 90 seconds is tough, but I love the idea. Chris Griego also had a great idea about the coolness of what’s …
Ryan Norbauer's got the right idea
Amy Hoy interviews Ryan Norbauer. This got my attention: "Simplification, unification, and reduction: these are the values of a great craftsperson, whether she's a tradesperson in …
IIS 7, IE 8, Iron Ruby MEGA-MIX
Not only do you get a Mega-MIX, I’ll try it in haiku form. Because, I’m feeling sassy. h2. On IIS Metabase to angle brackets; FastCGI now, Mongrel later on Decoded: they dropped …
Anders Hejlsberg is your new bicycle
Ding Ding Ding! We have a winner. Anders Hejlsberg is quite possibly the most clued-in designer of a mainstream programming language. The work that Anders Hejlsberg is doing with …
March 2008
Two Microsofts
Adactio: Journal—Viva I get the impression that there are really two Microsofts. There’s Ray Ozzie’s Microsoft. He’s a geek. He gets developers. He understands technology and …
Important ideas in ASP.NET MVC
In a former life, I worked in a Microsoft shop. So I’m not completely foreign to the Microsoft development tool landscape. At the time, C# and .NET were just slightly better than …
Open Source and Research at Microsoft
So, as I’ve alluded, I’m at Microsoft Intergalactic Headquarters this week for the Microsoft Technology Summit. The crux of the biscuit here is to invite people from communities …
Warm water makes the world go 'round
I’ve been doing “very detailed” research on the correlation between the time it takes to get hot water in public bathroom sinks and affluence. Signs point to a strong correlation …
My dog misses me
I’m at the Microsoft Technology Summit this week. Of course, Fred misses me (and I miss him!), so he’s sleeping on my pillow to keep it warm.
Tough CS illustrated
Greg, who I don’t think has formal CS training, has been making some great illustrations of some of the harder ideas in operating systems and concurrency. You can find more …
Fix Subversion conflicts
Got a case where you did a svn up and now you have a bunch of conflicts where you just want to overwrite your changes? I’ve got a little bit of Ruby cleverness for you: `svn …
Non-chalantly rocking
Rands helps you with your presentations
Out Loud. Conference season looms, folks. Rands is here to help.
February 2008
Cosmic Class.new
Reading the sources of test/spec inspired me to write a whole post about Class.new on the FiveRuns weblog. Unintentionally, I ended up channelling the style of Err The Blog in …
Teamwork anti-pattern: the edge case
Edge Cases are the Root of all Evil: "I've learned over the years that Edge Cases are not meant to be normal rationale or a casual reminder of some odd circumstance that you've …
I Like Rails 2
Tonight I gave a presentation on Rails 2 at Dallas.rb. Within, I note some of my favorite new things in Rails 2. Some things small, some things large. If you weren’t there, I …
Getting ahead on Git
Git. Soon, you’ll be using it, too. The definition of “soon” probably varies widely depending on what kind of person you are. But, no better time than now to start getting …
The Mint logo, geometric beauty
Geometry of the Mint logo: Frickin’ genius. Ed. revised Feb 15, 2025. No notes.
What good could come from MicroYahoo?
Microsoft Proposes Acquisition of Yahoo! for $31 per Share: REDMOND, Wash., Feb. 1 -- Microsoft Corp. today announced that it has made a proposal to the Yahoo! Inc. Board of …
January 2008
Whither Prototype or jQuery
The fact and fiction of why I choose Prototype over jQuery FACT: I like Prototype better. It fits the way I program perfectly. I like prototypes, I like programming in a somewhat …
Magnetic Ink
Processing might force one to use for loops, but this bit of generative art is beautiful. The music ain’t too shabby either.
The good news about a long writers strike
Apparently, some think that the WGA strike could continue well into 2009, affecting movies as well as TV. No Writers, No Movies? Strike May Hit '09 Films: Also moved to the back …
Overcoming "browser tab seventy-three"
So now that NetNewsWire (NNW) is free, everyone should go download it and enjoy the love. It was the first app I ever bought for Mac, and it would seem I will only have to pay for …
Wheaties for programmers
Reflections of an Interface Designer: If you want remarkable results, feed a good programmer a diet of good design. Kevin’s right on here. I’ve been eating up design lately. But …
Something lovely from David Lanham
I love this coat-of-arms-esque ditty by David Lanham: Found it by the good word of Bill Burcham.
The barbarism of the for loop
I’ve been reading Programming Erlang and also casually looking into Haskell. So yesterday when I tinkered with Processing just a little bit, code like this just looks barbaric: …
December 2007
Bookstacks, photography and Star Wars
My bookshelf used to make me sad. So I finally dumped everything out and put things back in sane order. Of course, the magic of a cleanly organized bookshelf is all on Flickr. If …
Making sense of the world
I’ve noticed that when I’m walking about, sort of thinking idly, I find myself asking “How?” How was that building constructed? Why is that sewer there, and not somewhere else? OK, …
I want to look at your workspace
Briefly: I enjoy looking at the workspaces of others. One of the uniquely great things about going to conferences is shoulder-surfing other people to see how they work. So when I …
November 2007
Like the sky or the horizon?
Is your knowledge as a programmer tall like they sky or broad like the horizon? Greg Knauss says the programmer is like the sky, the manager is like the horizon. From Wide vs. …
Epic songs, pick a favorite
Prepare to be polled. For the purposes of this survey, we’ll take an “epic song” as one with musically distinct beginnings and ends. Said song shall not be a grouping of songs, …
The rise of the micro-app
A few weeks ago, Dan Cederholm, of Simple Bits fame, launched Foamee. Foamee lets you track to whom you owe beers. The twist? You manage your beer debt via Twitter. Its a small …
Anthropomorphized Gems
I couldn’t make it to RubyConf this year. Big frownie face. But, I’m not letting that stop me from imposing my sense of humor on the world. I present to you this year’s helping of …
October 2007
Rejiggering meets build versus buy
You’re here! That means I’ve managed to convert my site (back) over to WordPress. In the interest of making progress, I had to cut some corners. Currently, that manifests itself as …
Application Design with Garrett Dimon
Did you see Garrett Dimon’s slides from WebJam Session ‘07? You should! What impresses me is what Garrett’s accomplished in designing his issue tracker without much use of intense …
This memory isn't going to manage itself
On a whim, I took a shallow dive into the world of C this weekend. Its been a long time since I delved into C. I ended up spending nearly as much time tweaking a build script with …
Alex the cognitive parrot
Best obituary ever: A shame, then, that he is now, in the words of Monty Python, an ex-parrot. Alex The Parrot was adopted by a scientist who wasn’t, at the time, involved in …
Making the simple complex
Newton’s Third Law of Physics: All forces occur in pairs, and these two forces are equal in magnitude and opposite in direction. Newton’s Third Law, applied to software: To make …
Making sense of Fitts' Law
Particle Tree has an excellent article on Fitts’ Law. That’s the one tells designers to put the Dock and Start Menu on the edges of the screen. You definitely want to check it out, …
August 2007
Check your head
Paul Graham’s latest essay returns to ideas for which I first noticed him. Holding a Program in One’s Head asks what kind of intellectual exercise software development is (spoiler: …















































































































































































