D
David Given
cowlark.com · Personal blog · on HN since 2009
David Given writes about programming languages like Go and Ada, retro computing projects such as Cowgol and FluxEngine, and the WordGrinder terminal word processor.
What HN saysHN commenters link his critical Go comparison, his Ada introduction, WordGrinder screenshots, and his video on programming a ZX81.
94HN people shared it
61linked it in comments
66stories submitted
1.9Kstory points
5 months agolast shared
2009people per year2026
Most-shared posts
- 1Go and Brand X: A language comparison25 people · 104 points · first shared 2009 · 20 comments on HN
- 2A Random Walk Through Ada (2014)7 people · 189 points · first shared 2015 · 88 comments on HN
- 3WordGrinder: Lightweight word processor that runs in a terminal7 people · 3 points · first shared 2015 · discussion on HN
- 4Cowgol6 people · 3 points · first shared 2018 · discussion on HN
- 5Wordgrinder: A text mode, keyboard driven word processor6 people · 3 points · first shared 2018 · discussion on HN
- 6FluxEngine5 people · 1 points · first shared 2020 · discussion on HN
- 7A Random Walk Through Ada (2014)4 people · 42 points · first shared 2014 · 14 comments on HN
- 8Fuzix on the Raspberry Pi Pico4 people · 33 points · first shared 2021 · discussion on HN
- 9Rapidly rendering fractals on stupidly unsuitable machines4 people · 22 points · first shared 2019 · 1 comments on HN
- 10Fluxengine4 people · first shared 2019
- 11Luje 0.1 – a pure Lua JVM3 people · 160 points · first shared 2013 · 77 comments on HN
- 12Porting Fuzix to the ESP8266 on Video3 people · 1 points · first shared 2021 · discussion on HN
- 13Lbw3 people · first shared 2016
- 146502 arithmetic and why it is terrible2 people · 94 points · first shared 2018 · 59 comments on HN
- 15CP/Mish is an open source sort-of-CP/M distribution for Z802 people · 93 points · first shared 2019 · 45 comments on HN
What HN people wrote when they linked it
ThinkBeat · 2024-08-01
The webpage http://cowlark.com/wordgrinder/
has a lot more information and some screenshots.
I find it a bit amusing that the programmers write the following about the last version upgrade:
""This version has a tonne of new features""
Creating a simple, get out of your way wordprocessor that cant do a few things very well seems at odds with feature bloat when you cram more and more features into each release.
unregistereddev · 2023-04-11
It supports more formatting than notepad does. The project link has a site that includes screenshots: http://cowlark.com/wordgrinder/screenshots.html
My first thought was to compare this to MSDOS edit or *nix nano, but it has basic formatting that they lack. While I doubt I would ever use this for real work, I enjoy that it exists. Back when I was in college I used to pull the PCMCIA wifi card out of my laptop, put AbiWord in full screen mode, and write papers without distractions. It was a great way to write, and this tool seems like the terminal equivalent.
josephcsible · 2022-05-26
Indeed. My overall complaint about Go is that despite being a very new programming language, it hasn't incorporated a lot of lessons learned long ago (e.g., the billion dollar mistake). One of my favorite articles about Go is http://cowlark.com/2009-11-15-go/
_vdpp · 2022-04-10
Ada syntax takes a little while to get used to, but replace
{} with begin/end and it otherwise feels like any other procedural language out there.
This is one of the better intros: http://cowlark.com/2014-04-27-ada/index.html
One of my favorite lesser-advertised features is the ability to return arbitrary-length arrays or sum types from functions without heap allocation due to the use of a secondary stack.
rwmj · 2022-03-05
David Given, who posts on here sometimes, did a great video about the process of coding a game on an unexpanded ZX81: http://cowlark.com/2018-09-26-zx81-programming/index.html
badsectoracula · 2020-09-08
There is Wordgrinder[0] and can export to LaTeX for printing.
In classic Unix tradition, it looks way more plain than the screenshots of WordPerfect you posted :-P.
[0] http://cowlark.com/wordgrinder/screenshots.html
kencausey · 2020-07-03
Hjalfi works on an Z80(/8080) assembler for CP/M (there are plans for portability) using his own Ada-influenced language Cowgol (https://cowlark.com/cowgol/).
This is a long video (7:09:57) but as always enjoyable. Hjalfi's videos can rarely be considered directly instructional but I find it interesting to watch what seems to me to be a very natural response. In the process he stumbles on to deficiencies and even bugs in his own Cowgol compiler. If you have the time, I recommend it.
snvzz · 2019-03-17
While Kryoflux was first at dedicated hardware, it's worth noting a software solution using Amiga 1200 was used beforehand by softpres.org to low-level read floppies, and that there's open hardware alternatives to kryoflux today.
Fluxengine: http://cowlark.com/fluxengine/
As an aside, for Amiga floppies specifically:
USB floppy controller for Amiga disks: https://github.com/jtsiomb/usbamigafloppy
With an Arduino: http://amiga.robsmithdev.co.uk/
david-given · 2018-06-11
Hello, author here.
Naturally I get my fifteen minutes of internet fame while I'm on holiday on the pilgrimage paths in Japan, so this is going to be pretty short, but yeah, there are some mistakes in the article (`cpx #0xff`... bah); please post comments and I'll fix them. Eventually.
There's also a followup article on doing exactly the same thing on the Z80: http://cowlark.com/2018-03-18-z80-arithmetic/
This was all in aid of writing the 6502 and Z80 backends for my self-hosted Ada-like programming language, Cowgol: http://cowlark.com/cowgol/ (Supports native compilation _on_ CP/M, Fuzix and BBC MOS, _for_ CP/M, Fuzix and BBC MOS!)
...and I put what I'd learned to work and have a program which will render Mandelbrots in under 13 seconds on a 2MHz 6502: http://cowlark.com/2018-05-26-bogomandel/ (Although I do need to point out that the key algorithm isn't mine!)
coldtea · 2014-12-16
That would be a great promo material:
Go: still better than just plain C.
Even beats Algol 68: http://cowlark.com/2009-11-15-go/
jacques_chester · 2013-10-06
David Given is one of those prolific thinkers and doers who seem to be overrepresented in the Lua community.
He's probably best known to HNers for his critical article "On Go" and Objective Lua.
http://cowlark.com/2009-11-15-go/
https://cowlark.com/objective-lua/index.html
i336_ · 2016-01-15
It looks like you fished the awk file out - I found http://cowlark.com/mercat/com.awk.txt linked directly on that page, which, at 1610 total lines (1518 SLOC counting commented-out code), sounds like exactly what you're referring to.
As for fforth.... your signoff at the end of the comments sums it up much better than anything I could say.
# No evil was harmed in the making of this file. Probably.
This thing is absolutely awesome... a self-modifying tri-language source file, implementing Forth in just 22KB (or 34KB on x64). Very nice.
Now to go read the, um,
panic: unrecognised word: help
...documentation? :P
It actually happens that I've recently become really interested in Forth implementations and systems, so discovering this is especially cool... and on that note, what sources would you recommend I study to get an overview of Forth history and development? I've read enough historical anecdotes to understand there are conflicting opinions (as always), but nothing thus far has shown the evolution of the language itself, how ANS became a thing, and so forth.
PS. clang-3.7 -Os is the winner on i386, gcc-5.3 -Os on x64. tcc-0.9.26, interestingly, comes second on both (26KB and 36KB respectively). (Using Slackware-current.)
PPS. Your site's About section might want to know the Antix website seems to have been taken over by a spam system.
verytrivial · 2025-12-20
This port of Fuzix to the Pico was done by David Given. In 2021 he also screen-recorded and narrated basically his entire effort porting Fuzix to similarly-sized ESP8266. Really very interesting if you are in to that sort of thing!
https://cowlark.com/2021-02-09-esp8266-fuzix/index.html
rasz · 2025-10-16
Thats exactly what fluxengine is for. You load flux image and it exposes the filesystem https://cowlark.com/fluxengine/doc/filesystem.html
mhd · 2024-11-08
There's a lot of hearsay in that articles, and a lot of sentiment rooted in the particulars of that time.
Sure, it was a complex thing in the late 60s/early 70s. Sure, Wirth came up with something simpler. But I'm missing a deeper analysis, especially with a more modern view point where basically any language is at least as complex as Algol 68[0].
> Arguably Wirth’s Algol-W was a better successor to Algol-60
I might not even disagree, but what were the arguments, and how are they holding up?
> and arguably did not have the same connections to industry as the likes of Fortran and Cobol
Sure. But neither did Algol-W or Pascal. And pretty much anything else in the 20th century.
[0]: http://cowlark.com/2009-11-15-go/
Brian_K_White · 2024-07-28
Or FluxEngine.
http://cowlark.com/fluxengine/
Just stick a pin header directly on an off the shelf fpga dev board and that's the hardware done.
https://photos.app.goo.gl/aDKggy7UAHsyLj717
Although half of the awsomeness is that lack of hardware, I did make up some PCBs to adapt FluxEngine to various 8" floppies. Mostly not tested yet. I have some of each of the different kinds of drives but haven't finished the project of fabricating nice drive enclosures and power supply hookups, and of course getting the drives to work at all.
github.com/bkw777/FluxEngine_Kit
d0mine · 2023-11-28
> 70s, 80s and 90s
It reminded me of Go vs. Algol-69 http://cowlark.com/2009-11-15-go/
shadowofneptune · 2023-11-12
Static stack allocation is the approach that the 6502 really demands, and it's cool to see in a conventional compiler toolchain. See the Cowgol language for another example: https://cowlark.com/cowgol/
saurik · 2023-04-12
Speaking of Go and Algol...
http://cowlark.com/2009-11-15-go/
userbinator · 2022-10-10
tl;dr: WINE can be considered to be more like an API translator. The opposite is also possible (Linux binaries on Windows), the most recent attempt being WSL from Microsoft itself, but there were a few other attempts before that: http://cowlark.com/lbw/index.html is one example I just found.
...and as an aside, the comments about the alcoholic beverage really suggest that they should've kept it named WINE (all uppercase).
grumpyprole · 2022-07-09
> God what's the compilation time of millions of line of Haskell?
It wasn't compiled with GHC, but a proprietary compiler. It could typecheck the entire lot in a few minutes (in parallel) which was usually enough to detect breaking changes.
> There are plenty of industrial languages with algebraic data types and immutability.
A few do, yes, certainly not plenty. But defaults matter and immutability means more than just "const", e.g. persistent collections.
> Not as many as I would like with purity but I doubt it will take 30 years.
Given that big tech is delivering languages that are basically the same as Algol 60, I honestly think it will take at least 30 years.
http://cowlark.com/2009-11-15-go/
thecatinabox · 2022-05-01
You can create app's on them, either native apps built for armv7 (and an old version of glibc), or create a 'kindlet' (java app made for kindles, using java 1.4 (or 1.5 if you compile it down to 1.4))
https://wiki.mobileread.com/wiki/Kindlet_Developer_HowTo
https://cowlark.com/kindle/getting-started.html
At my current job, I made an app for the older Kindle 4, as a way to replace paper pick lists. It ends up being both cheaper then paper + ink and more convenient. It's also a nice way to recycle old/unused kindles.
tyingq · 2021-06-04
In somewhat the same space, there's FUZIX[1], which supports the Z80, 68k, and 6809.
Also, recently, someone ported it for the Raspberry PI pico, which makes it easy to get it up and running with something modern: https://cowlark.com/2021-02-16-fuzix-pi-pico/
Edit: Also ported to the 8266: https://cowlark.com/2021-02-09-esp8266-fuzix/
[1] http://www.fuzix.org/
fsiefken · 2021-05-17
nice, i like the aesthetic and the minimalist mindset. i get that small is beautiful and constraints are useful to get to the essence, but I was thinking that fuzix would be more versatile on 8/16 bit chips while easy to virtualize - or would it be less power efficient or needlessly complex?
http://www.fuzix.org/
Someone got it running on the RPi Pico http://cowlark.com/2021-02-16-fuzix-pi-pico/
There also is mruby, version 3 can load applications in just 100 Kb.
How would these projects compare or differ with the minimalism and design goals of uxn?
less is more from MIT
https://spectrum.mit.edu/winter-2007/less-is-more/
NegativeLatency · 2021-05-17
Related to that there are many different copy protection schemes and other formats for writing the data that don't result in circular tracks. Lots of old computers addressed the drive at such a low level that it was possible to directly control the head between tracks, and control the rotational speed of the disk.
For example there's this project that reads stranger formats http://cowlark.com/fluxengine/
betamaxthetape · 2021-04-01
There's also the FluxEngine: http://cowlark.com/fluxengine/
(I use it as it has support for reading and writing 800KB Mac disks, which would otherwise require a special floppy drive that can change the rotation speed).
retrac · 2021-02-28
And just in the last couple weeks, ported to the Raspberry Pi Pico and ESP8266 by David Given!
http://cowlark.com/2021-02-09-esp8266-fuzix/
http://cowlark.com/2021-02-16-fuzix-pi-pico/index.html
jstanley · 2021-02-09
Thanks, this is serendipitous timing. I definitely plan to watch the YouTube playlist.
I'm designing a simple CPU at the moment[1] and one of the things that keeps me awake at night is thinking about how to make a compiler for it.
It only supports 64K words of RAM (and I'm not planning to implement bank switching), and I definitely want the compiler to be self-hosting on my CPU, so retargeting LLVM or similar won't be applicable.
I've looked at Small-C[2], Cowgol[3], and PL/0[4] which all target related goals, from different directions.
[1] https://github.com/jes/scamp-cpu
[2] https://en.wikipedia.org/wiki/Small-C
[3] http://cowlark.com/cowgol/
[4] https://en.wikipedia.org/wiki/PL/0
Jerry2 · 2020-09-09
My grandfather, who's in his 80s and has been using WP for the longest, has switched to WordGrinder about 8 years or so ago. He co-wrote several books with WG as well. He likes it a lot but it'd definitely not as feature-complete as WP. He mentioned to me that he still starts up WordPerfect every now and then to do some task.
When I bought a computer for him, an iMac, he asked me about WP and I setup a DOSBox with it for him. But then I managed to compile Wordgrinder and showed him how to use it and he's been using it since. Wordgrinder used to be a pain in the neck to compile on a Mac but it's much easier now after 0.7.x version was released. I still update it for him when I visit him.
You can see what WordGrinder looks like here: https://cowlark.com/wordgrinder/
LeoPanthera · 2020-08-29
This pairs well with WordGrinder, a word processor (not text editor) for the terminal.
http://cowlark.com/wordgrinder/