Programming

About

The Trail

Sunday, September 1st, 2024

Factoring the constraint into its own method allows us to give it an intention-revealing name that makes the constraint explicit in our design. It is now a named thing we can discuss.

Eric Evans, Domain-Driven Design

Thursday, August 29th, 2024

Versatility, simplicity, and explanatory power come from a model that is truly in tune with the domain.

Eric Evans, Domain-Driven Design

Friday, July 26th, 2024

It is important to constrain relationships as much as possible.

Eric Evans, Domain-Driven Design

Monday, February 12th, 2024

For the past few months I’ve retreated from working on a software product to, well, for a month after October 7th I didn’t seem to get much work done, then I was working on software systems for clients. Now dipping my toe back into RSSDeck, the biggest edifice I’ve ever created, I’m inspired by this short piece by Jason Fried, “To Make”:

I’ve consulted. I’ve done client work. I’ve advised. I’ve served on boards. I’ve invested. I’ve written books. I’ve spoken on the circuit. I’ve blogged for years. I have to say, I’ve found no greater professional joy than working with a tight group of people to ship and support our own products.

Wednesday, June 7th, 2023

At Why Svelte?, the homepage states “CSS is component-scoped by default” ⁠— the “by default” being the compliment vice pays to virtue. Because at the Github discussion on this issue (Ability to disable css scope across entire application #4764), Svelte Core Member/Maintainer @Conduitry, 2nd in commits only to founder Rich Harris, writes:

In general, using global CSS everywhere is something we want to steer people away from, and doesn’t feel like something we want to natively make easy or tacitly endorse.

The “C” in “CSS” stands for “cascading” yet the purpose of scoping CSS in components is to neuter that cascade. For the poster of this issue, Svelte’s stance was a dealbreaker, as it would be for me too. Scoped CSS components are the wussy option, which is fine and in many cases perhaps more viable, but the wussy option they should remain.

Wednesday, April 19th, 2023

In this tutorial by Martin Fowler for coding with ChatGPT, he interviews Xu Hao, who first tells the AI what tech stack he’s using, what the project is intended to be, and to generate not code but a list of tasks required to build it. He then tweaks this task list. And only then, working from the task list, do they begin generating code.

My take away from this discussion was that using chain of thought and generated knowledge prompting approaches can be a significantly useful tool for programming. In particular it shows that to use LLMs well, we need to learn how to construct prompts to get the best results. This experience suggests that it’s useful to interact with the LLM like a junior partner, starting them with architectural guidelines, asking them to show their reasoning, and tweaking their outputs as we go.

Sunday, April 2nd, 2023

Tuesday, March 28th, 2023

Thursday, March 2nd, 2023

Tuesday, October 4th, 2022

Thursday, September 22nd, 2022

Friday, August 26th, 2022

Tuesday, April 5th, 2022

Testing entire BPMN process paths ⁠— a Camunda blog article. I guess I’m being hopelessly naive but it seems to me BPMN could be used to test software logic; software doesn’t just power processes, software itself is comprised of processes, ie, the transformations that happen to variables.

Tuesday, January 18th, 2022

Computer, enhance! Jeff Dean, Senior Fellow and SVP, presents Google Research’s R&D accomplishments of the year ⁠— this company, wow.

Generative models for images … have made significant strides over the last few years. For example, recent models have demonstrated the ability to … “fill in” a low-resolution image to create a natural-looking high-resolution counterpart (“computer, enhance!”)…

Thursday, January 13th, 2022

In Firefox, when CSS’s scroll-snap is turned on, scrolling is broken. Yet the only mention of the problem that I can find is this open bug report at Bugzilla, “Trackpad scrolling gets stuck on containers with ‘scroll-snap-type: x mandatory’” featuring an unambiguous video of the problem. Given that both the Web and laptops are rather popular these days, I’d have thought this problem would have garnered much more attention. For me it has been a showstopper, finally causing me to make Chrome my default browser.

Saturday, October 30th, 2021

Saturday, September 11th, 2021

Coders: The Making of a New Tribe and the Remaking of the World

Clive Thompson

I enjoyed Clive Thompson’s Wired piece “Hundreds of Ways to Get S#!+ Done ⁠— and We Still Don’t” wherein he considers task management software as a kind of religious devotion:

To-do lists are, in the American imagination, a curiously moral type of software. Nobody opens Google Docs or PowerPoint thinking “This will make me a better person.” But with to-do apps, that ambition is front and center.

This bringing of theology and things of the spirit into the seemingly more mundane world of computing reminded me delightedly of Umberto Eco’s whimsical comparison of Mac vs Windows as Catholicism vs Protestantism.

So I was hopeful for Thompson’s book Coders, especially after reading the fun first Amazon Kindle sample chapter, and because I am increasingly embracing the identity of coder, given that it’s what I’ve ended up doing almost all my 21/2-decade professional life, and want to know just how much I fit the profile.

Well. I’ve come across writers before whose magazine articles impress but pall at book length. Mr Thompson’s interviewees so often “sigh” as they are clunkily pulled out of the aether to buttress his current argument, and I found particularly jarring that a provocative thought by one fellow ⁠— Dijastra, no less ⁠— is quoted using “he hissed” ⁠— though by then the mechanics of the book were transparent enough to predict the desultory “he has a point”-esque follow-up.

In thematic tandem with the book’s stale style, it degenerates into a long squawk of racial social injustice obsession. What pops into mind is the searing tedium of hearing Whitney Houston’s “I Will Always Love You” at every gas station across America.

So come rain or shine, this one’s going out on the street, and tech chronicler Clive Thompson will need to re-earn his welcome.

Sunday, August 1st, 2021

Friday, July 30th, 2021

Tuesday, June 29th, 2021

Chaos Monkeys: Inside the Silicon Valley Money Machine

Antonio Garcia Martinez

As author Antonio García Martínez battles away as an eager newcomer at Facebook, his account jolts one awake to the somewhat forgotten power of literature: we are reminded that what will survive these times will likely not be the mammoth trillion dollar company but instead this book.

And shame on Apple, caving to those who campaigned to have Martinez fired recently from his new job there because of some gross and silly yet heartfelt generalization in the book of San Francisco womenfolk; such philistine snowflakes do little more than buttress his point, as well as forcing our author to remain up on these more commanding if perhaps less remunerative cultural heights.

Wednesday, May 12th, 2021

Thursday, February 18th, 2021

Thursday, November 26th, 2020

3D model of Fallingwater by sighty for sale, including a portion of Bear Run, which interestingly gets cuts off even before the bridge that obviously crosses it, making this a model not of the house but of a model of it.

Boy, there are other models too. Here’s an interactive Fallingwater by archimore. It has the interior, even the raised rocks around the fireplace! (Though missing the grand swinging water heater.) The non-Wright dining-table chairs that Mrs Kaufman brought. The portrait of Edgar on the wall! Yet no walkway up to the Guesthouse, and no Guesthouse.

And another Fallingwater by Myles Zhang which does have the Gueshouse and ramp, even the steps into the swimming pool. And a very long stretch of Bear Run. It does have the round red water holer, but no furniture.

Would be good to merge these magnificent efforts to make a more detailed, canonical model.

Wednesday, November 18th, 2020

Sunday, November 8th, 2020

Friday, October 9th, 2020

Thursday, August 20th, 2020

Wednesday, August 5th, 2020

Tuesday, July 21st, 2020

Sunday, July 5th, 2020

Sunday, May 17th, 2020

The Making of Prince of Persia

Jordan Mechner

Video game maker Jordan Mechner wrote a rich diary of his life in the mid-1980s. This book covers the creation his second hit game, Prince of Persia, so we gain access of unique immediacy to the heroic tale of producing a universe-dent-making hit.

I wanted this book, which I discovered via Tyler Cowen’s most recent What I’ve been reading, as inspiration during a small lull in morale as I work on a digital product of my own.

Thirty years on there is some poignancy in that this early period of Mencher’s life was the peak: after graduating Yale, already dreamily successful, he shuttles between San Francisco and Hollywood creating video games and pushing screenplays, a digital Orson Welles (in his later game The Last Express, Mechner combines these passions, relying on cinema to produce an impressive commercial failure).

That said, perhaps it is no failure at all that one can point to the creative peak of a life ⁠— Mechner’s arguably was working within the memory constraints of the Apple II to create a foe, Shadow Man, based on the hero character. Here I’m reminded of Ken Kocienda’s not dissimilar Eureka moment when up against a constraint, that of using a dictionary to help create the iPhone keyboard.

Perhaps it would have been a better book if he had fleshed out the journal with an italicized retrospective written now, but count me a late-arrival Jordan Mechner fan. And don’t get the Kindle edition lacking the illustrations; I think I’m gonna need to buy the actual book.

Thursday, May 14th, 2020

The comfort of having an organization is largely illusory; it still comes down to one programmer in the end.

Jordan Mechner, The Making of Prince of Persia

Wednesday, March 11th, 2020

Sunday, March 1st, 2020

Becoming Steve Jobs: The Evolution of an Reckless Upstart into a Visionary Leader

Brent Schlener and Rick Tetzell

Although the simple thesis gets repeated interminably, nonetheless it’s a nice one: that Steve Jobs’s greatness stems muchly from his constant becoming, constant learning, constant trying to overcome himself (hence the title, which can be read as descriptive).

It’s great to be in his company, which you feel you are, as one of the authors was himself repeatedly so for decades.

One thing new to me was Pixar’s role in maturing Jobs; we don’t often read about who and what shaped the shaper.

Sunday, February 16th, 2020

Wednesday, December 18th, 2019

Friday, December 6th, 2019

Friday, November 1st, 2019

Friday, October 25th, 2019

Gadget: 1. Survey [PDF] is a cool history of software milestones “from Smalltalk to Minecraft” Chaim Gingold (2017). When you see these things collected you realize how much progress they collectively represent. I wonder what we’d have been doing otherwise…

Sunday, September 22nd, 2019

Tuesday, September 17th, 2019

“Please just leave me alone when I cross streets.” Richard Stallman’s terms of service for speaking engagements come to light [via The Register] surrounding his forced terminations. A couple of observations: for 66 his skin looks amazingly moist and smooth, like a healthy 25-year-old’s, which perhaps says something about his lifestyle and choices. And his exactingness regarding these terms is both ridiculous and admirable; few things are more important than knowing who we are and what we want and expressing these clearly.

Monday, September 9th, 2019

Monday, August 5th, 2019

Saturday, June 8th, 2019

Friday, May 10th, 2019

Thursday, October 25th, 2018

Friday, July 20th, 2018

Programming Sucks is some cynical cuteness on coding by Peter Welch.

Doing this all day leaves you in a state of mild aphasia as you look at people’s faces while they’re speaking and you don’t know they’ve finished because there’s no semicolon.