Zest: syntax

(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


@scattered-thoughts.net | 11 days ago

0045: unexplanations, business things, zest progress, internal consistency repro, why murat blogs, compiler books + papers, compiling sql to wasm, other books

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


@scattered-thoughts.net | 1 month ago

Notes on compiler IRs

(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


@scattered-thoughts.net | 1 month ago

Miscellaneous ideas

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


@scattered-thoughts.net | 1 month ago

How to trade software for small money?

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


@scattered-thoughts.net | 1 month ago

Unexplanations: sql is syntactic sugar for relational algebra

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


@scattered-thoughts.net | 1 month ago

Unexplanations: relational algebra is math

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


@scattered-thoughts.net | 1 month ago

Zest: dialects and metaprogramming

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


@scattered-thoughts.net | 1 month ago

0044: zest progress, unexplanations, generic dilemma, bitc retrospective, adversarial memory safety, done list, tiny muffins, anti-anti-spam, happiness, daily rituals, other books

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


@scattered-thoughts.net | 1 month ago

Unexplanations: query optimization works because sql is declarative

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


@scattered-thoughts.net | 2 months ago

Zest: notation and representation

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


@scattered-thoughts.net | 2 months ago

2023

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


@scattered-thoughts.net | 3 months ago

0043: 2023, debog, never sort, critique of sql, status game, more fuel you

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


@scattered-thoughts.net | 3 months ago

0042: consulting lessons, there are no strings on me, buttondown, focus goof, jsfuck, 1ml

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


@scattered-thoughts.net | 4 months ago

There are no strings on me

Continue reading


@scattered-thoughts.net | 5 months ago

0041: columnar kernels in go, go grouches, column sketches, why user-mode threads, gross margins vs open source, celebrity worship

Continue reading


@scattered-thoughts.net | 5 months ago

Columnar kernels in go?

Continue reading


@scattered-thoughts.net | 6 months ago

0040.1: meta in myanmar

Continue reading


@scattered-thoughts.net | 7 months ago

0040: olap survey, lobster, feldera, innovation, wizard papers, umbra papers, olap papers

Continue reading


@scattered-thoughts.net | 7 months ago

A shallow survey of OLAP and HTAP query engines

Continue reading


@scattered-thoughts.net | 7 months ago

A shallow survey of OLAP and HTAP query engines

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


@scattered-thoughts.net | 7 months ago

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

Continue reading


@scattered-thoughts.net | 8 months ago

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

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


@scattered-thoughts.net | 8 months ago

Baby's first wasm compiler

Continue reading


@scattered-thoughts.net | 8 months ago

Baby's first wasm compiler

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


@scattered-thoughts.net | 8 months ago

Implementing interactive languages

Continue reading


@scattered-thoughts.net | 8 months ago

Implementing interactive languages

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


@scattered-thoughts.net | 8 months ago

0038.1: consulting

Continue reading


@scattered-thoughts.net | 8 months ago

0038.1: consulting

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


@scattered-thoughts.net | 8 months ago

0038: cheap compilation, mvs-to-wasm, automatically isolating bugs, mastodone, other stuff

Continue reading


@scattered-thoughts.net | 9 months ago

0038: cheap compilation, mvs-to-wasm, automatically isolating bugs, mastodone, other stuff

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


@scattered-thoughts.net | 9 months ago

0037: dynamic mutable value semantics, interior pointers, uninterning, functionless effects, papers, books

Continue reading


@scattered-thoughts.net | 10 months ago

0037: dynamic mutable value semantics, interior pointers, uninterning, functionless effects, papers, books

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


@scattered-thoughts.net | 10 months ago

0036: typescript, papers, books

Continue reading


@scattered-thoughts.net | 11 months ago

0036: typescript, papers, books

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


@scattered-thoughts.net | 11 months ago

0035: back to the shack

Continue reading


@scattered-thoughts.net | 11 months ago

0035: back to the shack

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


@scattered-thoughts.net | 11 months ago

What is a database?

Continue reading


@scattered-thoughts.net | 1 year ago

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

Continue reading


@scattered-thoughts.net | 1 year ago

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

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


@scattered-thoughts.net | 1 year ago

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

Continue reading


@scattered-thoughts.net | 1 year ago

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

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


@scattered-thoughts.net | 1 year ago

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

Continue reading


@scattered-thoughts.net | 1 year ago

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

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


@scattered-thoughts.net | 1 year ago

2022

Continue reading


@scattered-thoughts.net | 1 year ago

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-world concurrency

Continue reading


@scattered-thoughts.net | 1 year ago

2022

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


@scattered-thoughts.net | 1 year ago

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-world concurrency

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


@scattered-thoughts.net | 1 year ago