Skip to content
J
ust
J
eb
Agents · Engineering · The parts nobody documents
Home
Writing
Talks
Projects
Advising
About
search
Light
Dark
Projects
2.69M
downloads / month
1,275
stars
717
releases
10+
years in open source
angular-builders
GitHub ↗
An Angular CLI with a builder slot, and the ready-made builders that drop into it
A pill on the left reads ng command. A dashed arrow leads into a box labelled angular cli, and another dashed arrow leaves it for a smaller box marked output. A slot is cut clean through the lid of that box and stays there in both states, because it belongs to the CLI. Inside the box the dashed flow line continues, aimed straight at the slot. The figure moves between two states. In the first the slot is empty, the flow line has a gap in the middle where nothing sits, and a dashed unfilled outline of a part hovers above the machine — a builder nobody has written yet. In the second three shaded parts are there instead, named esbuild, jest and bazel; one has dropped through the slot and the other two wait on either side of it. The seated one has a channel bored through its lower half and the flow line runs through that channel, so a dot travelling from the command to the output passes through the builder itself. A handwritten line above the machine names each state and settles on "builders off the shelf". The whole sequence runs forwards and then backwards.
ng <command>
angular cli
output
jest
esbuild
bazel
builders off the shelf
the slot also takes yours
jest
esbuild
bazel
builders off the shelf
a sealed CLI, its builder slot, and three builders
jest-marbles
GitHub ↗
One Jest test of an RxJS stream, with jest-marbles and without it
The drawing is headed one Jest test of an RxJS stream, and under that heading it is two columns: the left one titled without jest-marbles, the right one carrying the words with jest-marbles inside a teal box. The upper row is labelled writing it. On the left are four small grey boxes naming four things a plain RxJS test has to build for itself — a TestScheduler, an assert callback, a run wrapper and a helpers object — with a word underneath saying four things to learn. On the right is one inked box holding a single import line, with a word underneath saying that is the only setup. Nothing crosses between the columns on this row. The lower row is labelled when it fails, Jest prints. On the left is a block of sixteen lines of small real text, a nested dump of notification objects with frame numbers and values, too small to read comfortably and captioned two arrays, sixteen lines. A dashed arrow crosses the gap to the right, where the same failure is two short strings, one marked expected and one marked actual, with a teal ring drawn round the single character where the two stop agreeing and a caption reading one character apart. A handwritten note underneath reads: no need to know what it says.
one Jest test of an RxJS stream
without jest-marbles
with jest-marbles
writing it
TestScheduler
assert callback
run() wrapper
helpers object
4 things to learn
import { cold, hot }
the only setup
when it fails, Jest prints
Array [
Object {
"frame": 4,
"notification": Object {
"error": undefined,
"kind": "N",
"value": "r",
},
},
Object {
"frame": 5,
"notification": Object {
"error": undefined,
"kind": "C",
"value": undefined,
},
two arrays, 16 lines
expected
-
-
-
-
r
|
actual
-
-
-
-
-
r
|
one character apart
no need to know what it says
one test, written and then read back when it fails
ChatGPT on a speaker
GitHub ↗
Speaker, Home Assistant and the ChatGPT API, with the voice going out and coming back
Three boxes in a row: speaker on the left, home assistant in the middle, chatgpt api on the right. Dashed arrows run left to right along the top of the gaps between them and right to left along the bottom, the speaker's also noting it is any compatible esp32. Three arcs to the left of the speaker stand for the sound it makes. A dot travels the whole way out and the whole way back, over and over, and rests inside the speaker. A handwritten line above the row names each leg of the trip as the dot makes it, and settles on "the answer comes back as speech".
speaker
any compatible esp32
home assistant
chatgpt api
you ask, out loud
home assistant sends it on
chatgpt answers
the answer comes back as speech
the answer comes back as speech
three parts, and a voice that makes the round trip