Latest Posts

Review-First Programming

Food critics who can't cook at Michelin level. Editors who don't write novels. Casting directors who can't act.

Different skill. Not lesser skill.

LLMs are revealing something we've ignored: generation and evaluation are cognitively asymmetric. Research on utterance planning shows construction is harder than execution. Starting from nothing costs more cognitive load than refining something that exists.

This isn't new. "Real Programmers Don't Use Pascal" (1983) mocked structured programming as "quiche eating." Every abstraction faced resistance from people who valued control over leverage.

Review-first programming isn't decline. It's specialization.

The developers adapting fastest aren't the ones who generate the most code. They're the ones who know what not to build.

Semantic layers are finally getting opinionated enough to be useful

Semantic layers are finally getting opinionated enough to be useful

A semantic layer isn't new; it's the "business translation" that turns raw data into actionable insights for real decisions. It is now necessary for AI, as it's a relatively new technology.

40% of people who use Databricks still don't use dbt. Each BI tool has its own definition of "revenue." What happened? There are dozens of dashboards, but none of them line up.

AtScale, Stardog, Databricks Unity Catalog Metrics, and other semantic layers fix this by defining metrics once and making them usable in SQL, DAX, MDX, Python, and even AI agents.

Your dashboards and model training data should both use the same "revenue" metric.

The magic is not "no-code BI." It's no-drift semantics, which means that metrics have the same meaning for analysts, ML engineers, and LLMs.

The AtScale + Databricks "Semantic Lakehouse" model gets this right:

  • No moving data 
  • Automatic aggregates 
  • Unified metric definitions 
  • Direct integration with Unity Catalog and Spark.

It's not so much about analytics as it is about providing AI with a stable way to discern the truth in business.

The Yard, The Sparkly Hat, and The Doomsday Clock

AI doom talk usually comes from two places:

  1. Titans of industry hyping their own power.
  2. Abstruse nonprofits predicting apocalypse to keep the lights on.

But what happens when the loudest warnings come from outside those loops?

  • Freddie deBoer, the skeptic, mocking hype with his “Shitting-in-the-Yard Challenge.”
  • Scott Alexander, the rationalist, translates MIRI's doomsday math into metaphors akin to a toddler in a Ferrari.
  • Daniel Kokotajlo, the whistleblower, walked away from millions in OpenAI equity to warn about a 2027 AGI arms race.

They’re not all predicting the same future. But their tracks converge on the same station: institutions and incentives utterly unprepared for what we’re building.

When three people with nothing to gain all say “something’s wrong here”—even if they disagree on what—that’s your signal.

The Null Equivalence Principle for JSON APIs

Most APIs should treat omitted, null, and empty values consistently to reduce complexity and ambiguity. When you truly need distinct semantics—PATCH (RFC 7396), GraphQL nullability, or OpenAPI 3.1 union types—document it, enforce it, and make the exception explicit.

猫(Neko)

I've never done proper Mac app development, and I thought I would never have to touch Objective-C. As new wavers Romeo Void said, "Never say never!" So here we are with a proper app icon, a real menu for switching characters, some restored sprites, and some much DRYer code (I think? I didn't actually look up any real Objective-C idioms). This is Neko as it should be on modern macOS - a proper citizen of the desktop, living in your dock, chasing your cursor just like the old days.

View more posts in the archive →

Recent Links