HNHacker News
TopNewBestAskShowJobs

taolson

120 karma · joined February 8, 2025

submissionscomments
taolson··on Saab has unveiled its A3 collaborative combat aircraft concept
Yes, that's an even better picture! Austrian air-force version, right?
taolson··on Saab has unveiled its A3 collaborative combat aircraft concept
I still consider the Saab Draken one of the most beautiful aircraft ever designed:

https://en.wikipedia.org/wiki/Saab_35_Draken

Especially the top view:

https://www.flyajetfighter.com/wp-content/uploads/2025/09/Sa...

taolson··on Jolt: Clojure compiler implemented with Chez Scheme
You're probably thinking of Ian Piumarta's COLA project (Combined Object Lambda Architecture), which had parts named after cola soft-drinks (Coke was a lisp-like language, Pepsi was a Smalltalk-like language, and Jolt was an early implementation of Coke):

https://www.piumarta.com/software/cola/

taolson··on Squeak 6.1
Congrats to the Squeak 6.1 team! I was an early contributor to Squeak from when Alan Kay's group was at Apple (I see that SameGame, the first game implemented in Morphic is still in the image), and still enjoy following the progress of Squeak and all of its spinoffs.
taolson··on Show HN: Wyzer Programming Language
Since your language is very "rust-like", what made you choose Ocaml as the implementation language?
taolson··on Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer
The FPU in the 29050 was based on the Am29325 bit-slice family FPU; an extra write port was added to the register file to allow for asynchronous FPU result writeback, which allowed the parallel operation.

gr2 and gr3 were used in the 29050 for FP condition code registers, but otherwise I'm pretty sure accessing the rest caused a trap.

taolson··on Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer
The registers could also be partitioned into fixed sizes and protected, to allow for a banked register file that allowed for amazingly fast context switches in RTOS systems.
taolson··on Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer
> Well that was basically an am29000 but with an x86 instruction decoder front end.

The K5 was based upon a 29K-family design, but it was actually an un-released superscalar project code-named "Jaguar", rather than just a 29K with an x86 decoder.

taolson··on Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer
Yep, it wound up as the main CPU in a bunch of laser-printers, as well as Apple's 8*24GC QuickDraw accelerator card for the Macintosh, and as part of the flight-control computer on Boeing 777s, among many other embedded system designs.
taolson··on Unearthing my 1996 windowed OS in machine code for Am29000 homebrew computer
Wow, blast from the past! I was on the architecture / micro-architecture team for the 29K and 29050, and your story of writing and debugging the emulator brought up similar memories of working on the performance simulator for these chips.

Very impressive work -- congratulations!

taolson··on Steel Bank Common Lisp version 2.6.7
Fun fact I learned from a Func Prog podcast: the name Steel Bank is a play on it's origin as Carnegie-Mellon Common Lisp (Carnegie made his fortune in Steel, while Mellon did so with Banks):

https://www.sbcl.org/history.html

taolson··on Astronauts told to return to ISS after sheltering over air leak repairs
We actually did this in my freshman dorm room, as the paint color almost exactly matched the original Crest "green".
taolson··on The BeBox: BeOS Hardware, Photos, and the Apple Deal That Wasn't
I remember a visit by Gasseé and a team of BeBox engineers to the PowerPC design center in Austin, where they demo'ed the yet-to-be released early version of the BeBox and OS. We were all duly impressed by the speed and responsiveness of the system. At one point they were demoing that it really was running multiple processors by opening a control panel that showed the processor activity, and clicking a button to disable one of the processors, which instantly doubled the load on the other processor. Someone in the crowd asked "What if you disable the other processor, too?", and they said "I don't know -- let's see." The system promptly crashed ;-)
taolson··on Sky – an Elm-inspired language that compiles to Go
Sorry, I meant "Haskell / Miranda style syntax" -- e.g. curried functions, concise syntax with little boilerplate, etc. The word type is too overloaded ;-)
taolson··on Sky – an Elm-inspired language that compiles to Go
Nice to see another language with Haskell / Miranda type syntax, but the vibe-coded implementation sure shows: e.g. src/Compiler/Infer.sky isUpperStart:

    isUpperStart : String -> Bool
    isUpperStart name =
        case String.slice 0 1 name of
            
            "A" ->
                True
            
            "B" ->
                True
            
            "C" ->
                True
        ... for 23 more cases.
And the corresponding go code in the bootstrap compiler is even worse.
taolson··on A case against currying
An example where this is useful is to help inline otherwise recursive functions, by writing the function to take some useful parameters first, then return a recursive function which takes the remaining parameters. This allows the function to be partially in-lined, resulting in better performance due to the specialization on the first parameters. For example, foldr:

foldr f z = go

  where

    go [] = z

    go (x : xs) = f x (go xs)
when called with (+) and 0 can be inlined to

go xs = case xs of

    [] -> 0

    (x : xs) = x + go xs
which doesn't have to create a closure to pass around the function and zero value, and can subsequently inline (+), etc.
taolson··on Lil' Fun Langs
Yes, the open-source release he did is what introduced me to Miranda. I rewrote a lot of my previous Haskell solutions to Advent of Code puzzles with it, and liked it so much I decided to try to improve on it ;-)

That's what led to Admiran. I originally wrote Admiran in Miranda, then bootstrapped from that to self-hosting when it was stable enough to do so. The original Miranda combinator compiler / interpreter took 20 minutes to compile all of Admiran, while the self-hosted version now takes 20 seconds.

One of the grad students of David Turner has taken up maintenance on the original Miranda source; the repository is now at https://codeberg.org/DATurner/miranda

taolson··on Lil' Fun Langs
Don't know if my language is considered Lil' enough for this, but it's a pure, lazy functional language based upon Miranda (progenitor language to Haskell) that compiles to x86-64 asm. ~6700 SLOC for the (self-hosted!) compiler, and ~3300 SLOC additional for the extensive library of functional data structures and functions.

https://github.com/taolson/Admiran

taolson··on Lil' Fun Langs
Either newt was already in the list, or it got added. We talked a bit about using our languages for AoC 2024 -- looks like you've been keeping busy working on it!
taolson··on Byte magazine artist Robert Tinney, who illustrated the birth of PCs, dies at 78
The logo for Smalltalk-80, and later Squeak, came from the Robert Tinney cover of the Byte issue which introduced Smalltalk. The story behind it is documented here:

https://wiki.squeak.org/squeak/3459

taolson··on The WiFi only works when it's raining (2024)
Also this one, which originally came from Usenet days:

https://old.reddit.com/r/talesfromtechsupport/comments/cp48t...

taolson··on Zen-C: Write like a high-level language, run like C
The author includes some easter-eggs (printing random facts about Zen and various C constructs) which trigger randomly -- check out the file src/zen/zen_facts.c in the repository...
taolson··on Advent of Code 2025
>I made my own, with a Haskell+Bash flavor and a REPL that reloads with each keystroke

That was impressive! Do you have a public repo with your language, anywhere?

taolson··on Advent of Code 2025
Yes, there are some cool solutions using laziness that aren't immediately obvious. For example, in 2015 and 2024 there were problems involving circuits of gates that were elegantly solved using the Löb function:

https://github.com/quchen/articles/blob/master/loeb-moeb.md

taolson··on Advent of Code 2025
AoC has been a highlight of the season for me since the beginning in 2015. I experimented with many languages over the years, zeroing in on Haskell, then Miranda as my language of choice. Finally, I decided to write my own language to do AoC, and created Admiran (based upon Miranda and other lazy, pure, functional languages) with its own self-hosted compiler and library of functional data structures that are useful in AoC puzzles:

https://github.com/taolson/Admiran https://github.com/taolson/advent-of-code

taolson··on Solving Fizz Buzz with Cosines
Along that line, an over-engineered fizzBuzz using lazy list operations:

https://github.com/taolson/Admiran/blob/main/examples/fizzBu...

taolson··on Learn Prolog Now (2006)
Prolog's constraint solving and unification are exactly what is required for solving type-checking constraints in a Hindley-Milner type system.
taolson··on What happened to Transmeta, the last big dotcom IPO
>something AMD noted IIRC in the original K5 with its AMD29050-derived core

Just a small nitpick: I've seen the K5/29050 connection mentioned in a number of places, but the K5 was actually based upon an un-released superscalar 29K project called "Jaguar", not the 29050, which was a single-issue, in-order design.

taolson··on What Dynamic Typing Is For
What about Miranda, Haskell, OCaml and F#?
taolson··on Type Theory and Functional Programming (1999) [pdf]
> Indeed Smalltalk - a pure OOP language - had `Block` objects fifty years ago.

Although in the original Smalltalk-80, blocks were not full closures, so it didn't support all the things you would expect to be able to do with a lambda.

Page 1 of 2Next →