Audio Basics
A quick tour of what’s involved in a computer recording & generating audio.

GPUs
How do computers convert a 3D scene into multiple megabytes of 2D image data to be sent to your monitors 30+ times a second in realtime? This hypothetical strives to be as accurate to real hardware as public documentation allows. Includes a segment on early arcade graphics.

Browsers from Logic Gates
How do web browsers & their underlying operating systems (including I/O, text, & networking) work? How would we build one from-scratch, starting from logic gates? While this will cover core computing concepts in a relatively simple context, it will take a while! To keep things interesting this hypothetical device won’t support JS, which would necessitate a somewhat-typical CPU. To keep things simple I’ll focus on a happy webby codepath, you should be able to intuit error handling & e.g. Gemini support.

Hypothetical Device Features |
---|
Custom Hardware |
Networking Stack |
Auditory HTML Rendering |
Custom GPU |
Image Decoding |
Webpage Layout |
Interactivity |
Developer Tools |

And I wrote about how we’d extend to handle Internet Messaging, maps, other protocols, & other media.
In summary, I’d build hardware focused on parsing text & otherwise-binary streams to arrange them via a callstack, possibly going through multiple passes. Making frequent use of metaprogramming for key-value mappings, caching, event dispatch, decompression codebooks, CSS stylesheets (parsed in multiple extensively-sorted passes), etc. This device would require not much more software than the standardized EBNF grammars for:
- Its own assemblers & linkers
- Hardware I/O
- Filesystems
- IETF’s TCP/IP stack
- Transfer protocols like HTTP or Gemini
- Zip files (mounted on filesystem for hotswapped updates)
- URI schemes
- Markup languages like W3C’s XML/HTML, or even CSV
- CSS properties
- Speech Synthesis Markup Language
- Audio
- Linguistic pronunciation rules (sourced from eSpeak NG)

Some of this will require non-trivial task switching; & we’d still require a minimal (I’m thinking a 16bit RISC machine, dedicated & possibly-mirrored RAM) arithmetic processor for:
- Timekeeping
- Triggering timeouts
- Generating random numbers & gathering external “entropy” for it
- Cryptography (though assymetric may require dedicated circuits)
- Parsing & serializing numbers
- Various counters
- Checksums (though dedicated CRC circuits would be cheap & handy!)
- Comparisons for sorting
- Sound effects & speech synthesis (augmented with dedicated multiply-adder between it & the speekers, referencing sine-wave generators simulating breathing)
Add in an analog AI coprocessor (energy efficient, but its durability requires to largely stick with the same few neuralnets; not a problem here!), as well as the various I/O devices we require to access the data we need & to communicate with users, & we’d have an auditory hardware-browser!
A visual browser not only requires additional parsers for images, video, & fonts but also additional hardware. One chip would take a large list of sprites to composite together into the display, caching frames for efficient static displays & video inter-frame decompression. A vectorized multiply-summer within it would aid colour-mixing, gradients, rounded corners, colour-space conversion, resizing, blurs & other convolutions, matrix transforms, etc.
I’d also include a co-processor optimized for doing 32bit arithmetic during tree traversals (binary at a hardware-level, not a software-level though) to handle the complex negotiation involved in document layout, heavily referencing lookup tables to decide how to render text & how wide that text should be. There’d be a few different languages for programming this chip. The lower-level language would be functional (compiling recursion specially), building upon a lower-level stack/concatenative language. The primary & high-level language would allow declaring formulas for CSS properties, keywords, units, etc to for the compiler (running largely on the Layout Unit) to infer atopological sort & implicit loops giving those formulas all the data they need, whilst lowering a high-level collection type. The initial pre-order loop would instead the Output Unit before introducing concurrency, taking full-advantage of the Parsing Unit, Arithmetic Core, & Layout Co-Processor for the more expensive calculations.
See the linked chapters to read in great detail how I’d achieve this!

Form-factors
What am I imagining for a user-experience. Depends on the form-factor the device is packaged in!
An auditory device (with tactile joystick & volume wheel) would operate on a you-state-a-topic & it’ll-infodump-all-about basis. Forms, once you follow their links, would be more conversational, as it asks you the website’s questions. This could be aided with extensions to HTML. You’d be able to invoke a bookmark at any time, which would include several internal pages. A buzzer would distinguish notifications, whilst marking the hour & quarter-hour like a bell tower.
For more visual devices I’d organize everything into a new-tab page (frequent pages/history, bookmarks & their tags, contacts, mailboxes & shared folders, unread links from webfeeds, reading list, templates for creating new files), local-searchbox (history, bookmarks & their intersected tags, open tabs, contacts, local files via their metadata, street addresses & geospatial queries, math formulas, web addresses, filepaths, emails, phone numbers, etc), & a statusbar (open windows, date/calendar, time/timers, speaker, location, networks, contacts, notifications, battery, accounts/power, etc). I might use inverted colours to render scrollbars, so I don’t feel a need to remove them to remove screenspace.
For desktops/laptops I’d default to a tiling window manager, though you’d be able to drag a window out to overlap others. Or drag tabs between windows. Include a toolbar for offering window management, tab-history, reload, menu of alternate viewers, & the local searchbox. Statusbar icons would be split between left-side (navigating windows), middle (date & time), & right (hardware-status), with middle-click & scroll actions. I am drawing some inspiration from my favourite desktop!
For a smartphone I’d want to lean heavily into gestures, whilst displaying the page’s label & security below. Horizontal swipes across the page could navigate tab history, or across the page’s label would switch tabs. Swiping down would reload, swiping up would reveal more tools for interacting with the page. Down on the page’s label would list all open tabs. Tapping the label would bring up the local-searchbox. Up top I’d have the statusbar, swiping down from which would reveal the peripheral’s settings. A 2 finger gesture could toggle the device or adjust its, say, volume. I am drawing inspiration from iOS Safari.
What other form-factors can you dream up?

Hardware-Database
How’d we engineer an SQL database from the hardware on up?

Idiomatic/Minimalist Computer
How’d I design a computer that ran your Love2D or Assembly programs & practically nothing else? The appeal of 1980s-era computers refined with 2000-era hardware! In answering this question I explore semi-modern hardware & a stripped-down OS.

Idiomatic Hardware
This section is under construction!