~/wiseowl/devlogs
Dev Logs
Raw engineering notes — less polished than articles, more immediate. What was tried, what worked, what didn't, and what's next.
10 entries across 2 projects
smalltalk-from-scratch
884 tests. CI is green.
All 884 tests pass in headless CI. Save/restore runs as a separate workflow job. Four Level 1 failures from last week are fixed.
smalltalk-from-scratch
Delete BitBlt
Deleted Form, BitBlt, Pen — three foundational 1980 classes. Canvas draws everything now. The image boots and renders.
smalltalk-from-scratch
First window
Smalltalk sent beDisplay. A WinForms window appeared. The image can now paint pixels.
smalltalk-from-scratch
Cold start: zero GC, 380ms
Rewrote the cold start loader. The full object graph loads in 380ms with zero GC collections.
smalltalk-from-scratch
The compiler compiles the compiler
Full compilation pipeline working: the standalone C# compiler compiles the entire Smalltalk-80 source, including the Smalltalk-80 compiler itself, to Blue Book bytecodes.
smalltalk-from-scratch
14,840 lines, zero parse errors
The standalone ANTLR4 compiler parsed the complete Smalltalk-80 system source — all 14,840 lines — without a single error.
apple-panic
nibbler v0.1 reads the disk
First working build of nibbler correctly reads, validates, and reports on all 35 tracks of the Apple Panic protection disk.
apple-panic
45 kilobytes hiding in plain sight
The custom RWTS loads 45 KB of game data that doesn't fit in an Apple II. It's compressed. Decoding it took two days.
apple-panic
The code that isn't the code
The loader decodes itself in memory before it runs. The bytes on disk are not the bytes that execute.
apple-panic
The sectors that don't read
Standard DOS 3.3 read routines return garbage on every track past track 2. The disk is not broken — it's deliberate.
smalltalk-from-scratch
6 entries884 tests. CI is green.
All 884 tests pass in headless CI. Save/restore runs as a separate workflow job. Four Level 1 failures from last week are fixed.
success
Delete BitBlt
Deleted Form, BitBlt, Pen — three foundational 1980 classes. Canvas draws everything now. The image boots and renders.
success
First window
Smalltalk sent beDisplay. A WinForms window appeared. The image can now paint pixels.
success
Cold start: zero GC, 380ms
Rewrote the cold start loader. The full object graph loads in 380ms with zero GC collections.
success
The compiler compiles the compiler
Full compilation pipeline working: the standalone C# compiler compiles the entire Smalltalk-80 source, including the Smalltalk-80 compiler itself, to Blue Book bytecodes.
success
14,840 lines, zero parse errors
The standalone ANTLR4 compiler parsed the complete Smalltalk-80 system source — all 14,840 lines — without a single error.
success
apple-panic
4 entriesnibbler v0.1 reads the disk
First working build of nibbler correctly reads, validates, and reports on all 35 tracks of the Apple Panic protection disk.
success
45 kilobytes hiding in plain sight
The custom RWTS loads 45 KB of game data that doesn't fit in an Apple II. It's compressed. Decoding it took two days.
success
The code that isn't the code
The loader decodes itself in memory before it runs. The bytes on disk are not the bytes that execute.
success
The sectors that don't read
Standard DOS 3.3 read routines return garbage on every track past track 2. The disk is not broken — it's deliberate.
partial