(This is part of a series on the design of a language. See the list of posts here.) Popular advice for designing a language is to focus on semantics and worry about syntax later. So it might seem ill-advised to write about syntax before writing about semantics. But a) I think syn … | Continue reading
I wrote a lot this month. More unexplanations: Relational algebra is math Sql is syntactic sugar for relational algebra Some musings about small software businesses: How to trade software for small money? Miscellaneous ideas And some notes from work on zest: Notes on compiler IRs … | Continue reading
(This is part of a series on the design of a language. See the list of posts here.) zig (Based on reading code.) Zig has a bunch of IRs: Ast. Basic parse tree. Potentially contains parse errors. Zir. Untyped IR. Air. Typed IR. Mir. Arch-specific IR. I only looked at the wasm mir … | Continue reading
a better sql As much as I complain about sql, it's historically been too entrenched to be worth trying to compete. Building a database is really hard, and adopting a new database is really risky, so both vendors and customers have strong incentives to be risk-averse. ORMs, BI too … | Continue reading
Suppose that all your expertise is in making software for use by other programmers, and you want to run a small business. How do you make money? The weird thing about being a system engineer is that it's quite easy to make something that is valuable and widely used. But quite a l … | Continue reading
Unexplanations: sql is syntactic sugar for relational algebra Published 2024-03-18 This idea is particularly sticky because it was more or less true 50 years ago, and it's a passable mental model to use when learning sql. But it's an inadequate mental model for building new sql f … | Continue reading
Unexplanations: relational algebra is math Published 2024-03-11 I see this claim appear in various forms: relational algebra is math, is based on math, comes from math, has strong mathematical foundations. It's a statement that I struggle to assign any precise meaning to, but typ … | Continue reading
Zest: dialects and metaprogramming Published 2024-02-28 (This is part of a series on the design of a language. See the list of posts here.) I now have much of the core language sketched out and (poorly) implemented, including mutable value semantics, control-flow-capturing closur … | Continue reading
0044: zest progress, unexplanations, generic dilemma, bitc retrospective, adversarial memory safety, done list, tiny muffins, anti-anti-spam, happiness, daily rituals, other books Published 2024-02-28 zest progress I'm continuing to chip away at zest. Some new posts: Notation and … | Continue reading
Unexplanations: query optimization works because sql is declarative Published 2024-02-21 Here is a simple sql query. select users.id, ( select sum(posts.likes) from posts where posts.user_id = users.id ) as post_count from users; If we read this query literally … | Continue reading
Zest: notation and representation Published 2024-02-04 (This is part of a series on the design of a language. See the list of posts here.) I want to be able to describe all data with a consistent notation when writing code, printing values or in graphical inspectors (see the shap … | Continue reading
2023 Published 2024-01-15 Kind of a fragmented year. tigerbeetle I left in May. I learned a lot and I'm proud of the work I did. But I don't like the culture that surrounds startups, and that discomfort turns to burnout over time. 7am meetings probably didn't help either, putting … | Continue reading
0043: 2023, debog, never sort, critique of sql, status game, more fuel you Published 2024-01-15 Here's my yearly log entry for 2023. So you wanna de-bog yourself A list of ways to get stuck. It's nice to have labels for them, so they're easier to recognize and talk about. Terribl … | Continue reading
0042: consulting lessons, there are no strings on me, buttondown, focus goof, jsfuck, 1ml Published 2023-12-01 consulting lessons I ended my consulting gig not long after starting, when it became obvious that we had very different ideas about how to write high-performance softwar … | Continue reading
A shallow survey of OLAP and HTAP query engines Published 2023-09-28 Focused mostly on data layout and query execution. Query planning seems more or less the same as OLTP systems, and I'm ignoring distribution and transactions for now. Also see my full notes here. It was hard to … | Continue reading
0039: implementing interactive languages, baby's first wasm compiler, zig 0.11, attack of the killer features, zed, attention span, psychology's loss, privatizing sovereignty Published 2023-08-29 I wrote up some of the compiler stuff I've been noodling on for the last month or so … | Continue reading
Baby's first wasm compiler Published 2023-08-28 (This is part of a series. See the list of posts here.) I made a compiler from a toy language to wasm. The code quality is very much plan-to-throw-one-away. I'm just trying to get a feel for the amount of effort involved in a non-op … | Continue reading
Implementing interactive languages Published 2023-08-24 (This is part of a series. See the list of posts here.) Suppose I want to implement an interactive language - one where code is often run immediately after writing. Think scientific computing, database queries, system shells … | Continue reading
0038.1: consulting Published 2023-08-10 I'm putting aside around four months this year for consulting. Likely late October to end of March, with a gap in December. Here are some ideas for projects that work well for short engagements: Isolated or research-heavy features. Eg addin … | Continue reading
0038: cheap compilation, mvs-to-wasm, automatically isolating bugs, mastodone, other stuff Published 2023-07-28 cheap compilation? The most popular options for implementing programming languages and query languages are: Write a bytecode interpreter and try to amortize the runtime … | Continue reading
0037: dynamic mutable value semantics, interior pointers, uninterning, functionless effects, papers, books Published 2023-06-27 dynamic mutable value semantics I worked through a simple implementation of mutable value semantics here (tree-walking interpreter, no optimizations). T … | Continue reading
0036: typescript, papers, books Published 2023-05-29 Taking it easy this month. typescript I'm trying to clean up the mess of bash/python/clojure/julia/rust scripts/apps/glue that I've accumulated. Javascript seems like the most obvious candidate to consolidate on, with fast star … | Continue reading
0035: back to the shack Published 2023-05-04 I left tigerbeetle this week. They didn't do anything wrong, far from it. I'm just not well suited to long-term employment. I should know that by now, but I convinced myself that this time would be different. At the beginning I was tal … | Continue reading
0034: perf handover, compaction unchained, crash harder, sketching the query engine, focus catchup, android update policies, legopunk, a world without email, nobody cares, segcache, bloomRF, existential consistency, ssd parameters, fantastic ssd internals Published 2023-03-31 tig … | Continue reading
0033: table sizing, bench harder, wasm first steps, sycl vancouver, breathing for warriors, move your dna, the molecule of more, how to decide, slouching towards utopia Published 2023-03-05 February was really broken up by Systems Distributed so not as much coding or papers to ta … | Continue reading
0032: undroppable tombstones, forest fuzzer, manifest race, hash_log, zig coercions, zig pointer hops, zig object notation, domain knowledge, built from broken, database internals, papers Published 2023-01-31 at tigerbeetle undroppable tombstones forest fuzzer manifest race hash_ … | Continue reading
2022 Published 2023-01-05 (See other years). Office hours From January to March I ran office hours every friday morning. I wrote at the time: I'm trying to virtually recreate the cafe/salon culture I loved before moving to a tech backwater during an epidemic. I ended up talking t … | Continue reading
0031: 2022, systems distributed, random ids, deleting tombstones, disorderly compaction, juggling blocks, code review woes, holiday shutdown, searching for implementors, everything is copy, sharing the page cache after fysncgate, 9/10 climbers, rise and fall of peer review, real- … | Continue reading