HNHacker News
TopNewBestAskShowJobs

nickcw

4,949 karma · joined January 27, 2013

Maths, Science and Computing Geek. Currently having a lot of fun with Go.

For more info:

    Github:    https://github.com/ncw/
    Homepage:  https://www.craig-wood.com/nick/
    Rclone:    https://rclone.org
    Twitter/X: @njcw
    Email:     nick@craig-wood.com
submissionscomments
nickcw··on Domain hacks with unusual Unicode characters (2018)
Ha! Yes I discovered that this is true in C as part of my IOCCC entry:

https://github.com/ioccc-src/winner/blob/master/2025/ncw3/pr...

nickcw··on Neal Stephenson on AI and What Comes Next [video]
Thirded for Anathem. It isn't for everyone, you've got to have a high tolerance for made up words and enjoy puzzling things out but if that is you (likely if you read HN) then it is great. Probably my favourite sci-fi book ever by number of re-reads!
nickcw··on Gforth 1.0
You may enjoy ccforth then which is a mostly gforth compatible compiler which compiles to native via C.

https://github.com/ncw/ccforth

I wrote it as an experiment in having both a forth interpreter and compiler running at the same time.

nickcw··on How does Fable 5.1 hide messages in images?
I missed that and that is much more pleasing than the LLM reading the SVG source!
nickcw··on How does Fable 5.1 hide messages in images?
I thought this was a fun idea and the images are quite pleasing.

I decoded the Morse code image with MkI eyeball. It's quite difficult to read when the trails overlap. I suspect the LLM is reading the SVG source where that doesn't matter so this could do with a little tweak so the dits and dahs don't overlap if it is intended for humans to decode.

If it isn't intended for humans then you might as well use the last 8 bits of your 32 bit float coordinates.

nickcw··on Google Cloud outage affects almost all banking and other operations in Europe
From Google's status page https://status.cloud.google.com/incidents/Xs2XTHzAVC9YnafnPy...

    We are experiencing an issue with multiple services in
    europe-west2 beginning on Monday, 2026-10-19 23:08 PDT.
    
    Due to a power event we had suffered an outage within
    europe-west2-b zone. The power event is mitigated. Partial
    mitigation to infrastructure services will be observed within the
    next 30 minutes and the remaining services will be mitigated there
    after.
So some kind of power failure happened to bring down one zone. Unfortunate, but this kind of stuff happens. That is why all the cloud providers have multiple zones, and I'm amazed the big companies reported as down weren't using multiple zones.

(Also reporting the times in PDT is quite unhelpful for users of this zone who are likely based in the UK or EU)

nickcw··on BIPM decides to stop adding leap seconds to UTC
I think about Vinge's treatment of time often. Though I find "see you in a kilosecond" doesn't go down well with the family, so clearly some cultural adjustments needed!
nickcw··on Powerless F1 drivers frustrated by Bahrain F1 software glitch
Here is the team radio of Lewis Hamilton literally turning his car off and in again on the formation lap!

https://youtu.be/e1bPfbNn_TU?is=zrTGCKm_6klH0JwZ

nickcw··on C's Flexible Integer Sizes Were Not a Design Mistake
The fixed size int types int32_t and friends weren't introduced until C99. Microsoft held out until 2013 before it put <inttypes.h> into Visual Studio!

So there has been a really long time in C's evolution where we haven't had fixed size types which has been a super annoying mess of #ifdefs in portable code.

The variable size ints have allowed some super weird architectures though. I remember looking at the datasheet for the Motorola 56000 DSP and noting that the C compiler set char = short = int = 24 bits! That was because the hardware could not address anything smaller than 24 bits. I think long could be 48 bits.

nickcw··on Engineering Memory: On learning to memorize first 100 digits of pi (2024)
I know pi to 50 places learned through lots of repetition. I've always been good at remembering numbers though.

I don't find the memory palace tricks helpful at all though. I think that is a consequence of my Aphantasia and something I only realised recently. I can't visualise a memory palace so placing things in it is impossible!

nickcw··on SDCC – Small Device C Compiler
I used sdcc for an 8051 based commercial project a while back. I seem to remember spending more time reading the assembly to figure out workarounds for the compiler than actually writing C code!

Whereas sdcc works brilliantly for z80 lineage processors. I wrote quite a lot of C for Gameboy recently and didn't find a single compiler bug in sdcc which revised my opinion of it upwards greatly.

nickcw··on A 386 PC for Your RP2350
Was the performance mentioned anywhere - I couldn't find it on the page?
nickcw··on 2026 Hugo Awards
Disappointed to see I already read the Hugo winner for best novel - The Everlasting by Alix E. Harrow.

It is a worthy winner in my opinion. Fantasy with a sci-fi element along with a story which takes some untangling. Five stars from me :-)

nickcw··on Just the rumour of a bug is enough to find an exploit these days
Yes I update the CVE-PENDING once the CVEs are in to keep the record straight.
nickcw··on Just the rumour of a bug is enough to find an exploit these days
I got a 6 month free subscription of Claude Code Max under Anthropic's open source program which has been very helpful.
nickcw··on Just the rumour of a bug is enough to find an exploit these days
This describes my life as an open source maintainer at the moment!

In the first 10 years of the rclone project we received about 20 security disclosures through GitHub. We had to deal with over 40 in the last month! That has taken a huge amount of my time, even using AI tools to triage and come up with fixes for review.

The hit rate for those security disclosures is pretty good - about 75% of them have a nugget of something which needs looking at. The configurations for rclone have got increasingly unlikely so I'm hoping they will dry up eventually.

I was considering just merging the fixes straight to master just to make my life easier rather than holding a dozen independent security fixes on branches and merging them at the point release and hoping not to have too many conflicts to fix up. I've decided to stick with the process for the moment.

GitHub assigns CVEs for the advisories. Before the AI apocalypse they took 2-3 days for an assignment but now it they are running at 3-4 weeks so I have to send the point releases out with CVE-PENDING in the changelog which isn't ideal.

Not sure what the solution is, but it is definitely a problem for us.

nickcw··on CSS: The bomb inside your inbox
Here is an idea...

Why don't we give up on HTML in emails and just use markdown instead? It is readable and writable by humans and doesn't have insane security problems.

It seems to be our AI overlords' preferred communication format too so it would future proof email for the aipocalypse.

This would, alas, make the the people sending you marketing emails very unhappy. Maybe they could attach a PDF instead, I'm sure that would be safe.

/s

nickcw··on Show HN: SIMD Viterbi Decoder in Rust
I was looking at the reed Solomon implementation. I've done a few of those in the past! I note that you are using logs for multiplication. I always used to use a 64kb table for direct lookup, though maybe that isn't faster on modern processors?

Next LDPC codes?

nickcw··on Twenty Years of RISC OS Open
I used and developed software for RISC OS for many years and it was there I cut my teeth as an open source developer.

I wrote the very popular !Director application which let you customize your Desktop and add lots of nifty shortcuts. It could be expanded with BASIC plugins to do just about anything! It was distributed by the Arcade BBS to start with then Acorn User magazine put it on the floppy disk that came with the magazine.

Amazingly Director was written entirely in ARM assembler (with the help of lots of macros). I used to really enjoy writing ARM assembler and used to grit my teeth whenever I had to read the assembly output of the C compiler! I remember writing quicksort in ARM assembler as part of this (to sort menu entries) which was a lot of fun.

I still have a RiscPC under my desk, but I don't think I've turned it on for nearly 15 years :-(

nickcw··on An Uncomplicated Man – A review of The Odyssey, directed by Christopher Nolan
[after a pretty scathing review which I mostly agree with]

> Despite all this, the release of The Odyssey is still an event to celebrate. In what we are told is the streaming era, this epic is bringing audiences back to cinemas. In what we are told is a time of declining literacy and the ‘death of the humanities’, translations of The Odyssey, including mine, are flying off the shelves. Some of those who buy the book or show up in cinemas to watch Tom Holland may go on to study ancient Greek. Perhaps the film will persuade a few college administrators not to cut their literature, language and history departments. Nolan, who studied English at University College London – where students still study The Odyssey as a first year ‘foundational text’ – is doing his best to get the general public reading again, and I am grateful.

nickcw··on How is the Bun rewrite in Rust going?
Maybe it would have made more sense for Anthropic to rewrite Claude Code in rust, and cut out the middle man (bun)?
nickcw··on I tricked Claude into leaking your deepest, darkest secrets
I set my name as Sir and I enjoy the obsequious responses this generates :-)

It worked well in my banking app too which greets me with " Good morning, Sir" which is the level of relationship I want with my bank!

nickcw··on Show HN: Shirei, cross-platform GUI framework in native Go
I had a look through the code to see how it manages not to use a pile of C libraries with cgo like other Go GUI libraries.

The answer is platform dependent:

Windows loads the relevant DLLs by hand and calls them. This is a well established technique in Go programs and due to the super stable DLL interface works well.

Linux has an x11 and Wayland backends and these implement (through a library) the wire protocols directly in Go which is nice and will make cross compilation and distribution easy.

macOS does appear to use cgo to access the cocoa libraries. macOS doesn't like statically linked Go programs anyway though as they don't use system name resolution so this isn't a bad compromise, but will mean macOS stuff needs to be built on macOS I think.

I didn't see Android or iOS support.

A nice innovative approach to GUI building. Since the lowest common denominator for the backends is an RGBA buffer, this will bypass all accessibility things the OS provides.

The above gleaned after a few minutes reading the source so may not be 100% accurate.

nickcw··on Einstein's relativity rules chemical bonds in heavy elements, new research shows
One of the disappointing realisations I got from my physics degree was that as you move into the real world with non-spherical cows you can no longer solve any of the equations.
nickcw··on Life with Hazard Ratios
From the article:

> This is essentially the observation Keyfitz made in his 1977 paper, “What Difference Would It Make if Cancer Were Eradicated?” Cancer is responsible for 18 percent of deaths, so does that mean eradicating it would increase lifespan by 18 percent, or around 13.6 years? Nope, Keyfitz says, it’s only 2.3 years.

A very interesting thought!

nickcw··on Show HN: 18 Words
I didn't realise at first that you could choose letters which weren't adjacent which made it very hard! Guess I've been playing too much https://zanagrams.com/ (which was also posted here recently).
nickcw··on Camera with transparent display launches for the equivalent of $29
Maybe it does measure the distance to your face to work out where to show the viewfinder rectangle...
nickcw··on 1.38 Millimeter Microcontroller
Ha! I'm going to rename my home office "The Room of Dreams"
nickcw··on Long Wave radio era set to end with switch-off
The Droitwich transmitter used to transmit on exactly 200 kHz which I always thought was very cool, but it moved to 198 kHz in 1988 to better harmonize with European stations.

The program was mostly the same as BBC Radio 4 but it used to diverge at certain times of day. I used to be woken up at 5am every day by my parents clock radio with the farming news which was very dull, but easy to sleep through.

nickcw··on Incident CVE-2026-LGTM
That is very very funny, and oh so plausible.

I enjoyed this bit a lot from the timeline

> Karen Oyelaran finds the payload by reading the source code with her eyes and files a second issue. The triage assistant closes it as “duplicate of #8814.” Issue #8814 is a feature request for dark mode. Karen reopens it. The assistant closes it. Karen reopens it. Karen’s GitHub account is rate-limited for “patterns consistent with automated behaviour.”

And this - the final sentence is a perfect indictment of the timeline we are in.

> Two AI review agents from competing vendors, both attached to a downstream pull request bumping foxhole-lz4, enter a disagreement loop over whether the package is malicious. After 340 comments and $41,255 in inference spend, Finance revokes both API keys; one vendor’s marketing team, cc’d on the cost anomaly alert, issues a press release citing “a 430% YoY increase in adversarial multi-agent security reasoning.” The stock opens up 6%.

I'm joining the goat farming waitlist ;-)

Page 1 of 17Next →