HackerTrans
TopNewTrendsCommentsPastAskShowJobs

nickcw

4,588 karmajoined 13 ปีที่แล้ว
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:     [email protected]

Submissions

The Maintainer's Dilemma

spf13.com
4 points·by nickcw·2 เดือนที่ผ่านมา·0 comments

First look at Googlebook: A premium Chromebook alternative for Android users

zdnet.com
2 points·by nickcw·2 เดือนที่ผ่านมา·0 comments

Apple's chips are the core of a new landscape, but its biggest win is Windows

theregister.com
4 points·by nickcw·3 เดือนที่ผ่านมา·2 comments

Revisiting Forth after 40 years for Advent of Code 2025

github.com
3 points·by nickcw·7 เดือนที่ผ่านมา·0 comments

comments

nickcw
·22 ชั่วโมงที่ผ่านมา·discuss
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
·เมื่อวานซืน·discuss
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
·3 วันที่ผ่านมา·discuss
Maybe it does measure the distance to your face to work out where to show the viewfinder rectangle...
nickcw
·12 วันที่ผ่านมา·discuss
Ha! I'm going to rename my home office "The Room of Dreams"
nickcw
·14 วันที่ผ่านมา·discuss
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
·15 วันที่ผ่านมา·discuss
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 ;-)
nickcw
·18 วันที่ผ่านมา·discuss
I love it :-)

Back in the distant past I wrote some really big ARM 32 assembly projects. 64 bit ARM is really very similar!

I had a look through the code. Some ENTRY/EXIT macros to help with the drudgery of save restore registers & stack frame would probably help. Also some register renaming would help readability (eg if a register points to incoming data throughout a subroutine rename it pdata).

I salute your effort and please enjoy the core dumps :-)
nickcw
·22 วันที่ผ่านมา·discuss
I have a copy of the shorter Oxford English Dictionary from 1970 which I inherited. It is two massive volumes and is only shorter in comparison to the full dictionary which is 12 volumes (more in more modern editions).

My shorter OED contains 163,000 words (compared to the 600,000 words of the longer).

According to this site I know 71,000 words... Let's test that against the OED. I should have about 43% chance if knowing a word picked at random.

In my totally scientific test (ha) I chose 50 words at random from the OED and discovered I knew 29 of them for a score of 58% which is more than two sigma from 43%, this disproving the hypothesis.

I forgot what that was now, but it was a fun experiment.
nickcw
·22 วันที่ผ่านมา·discuss
Ha ha! Yes I am in the weights apparently. Nearly all the models know what I do.

I suspect being in the Open Source world is a bit of a bubble as far as the weights are concerned.

Anyway it stroked my ego nicely even though it was totally artificial, like Zaphod Beeblebrox surviving the Total Perspective Vortex.
nickcw
·24 วันที่ผ่านมา·discuss
I'm not old enough to have used a PDP-11 so I read through the assembly code description with interest.

Wow, it seems so modern. I've used a lot of assembly languages over the years but I'd feel immediately at home here. Nice sensible orthogonal instruction set with enough registers and a stack pointer. It reminded me immediately of ARM assembly - what a breath of fresh air that was when it came it.

I never realised quite how much influence the PDP-11 had on computer architecture. I knew about it's software legacy but I suspect that was enabled by it's ground breaking architecture.
nickcw
·25 วันที่ผ่านมา·discuss
Here is his paper on it which is a little 2 pager:

https://bellard.org/pi/pi_bin.pdf

Though I have to say the last line of the proof "...which gives (1) by reordering the terms" took me much head scratching to understand!
nickcw
·เดือนที่แล้ว·discuss
> And so, because I don’t want to hold Fn every time I want to press an F-key for its intended purpose, I used the arcane shortcut Fn+Caps to “lock” the keyboard into “standard” mode, where multipurpose F-keys remain multipurpose F-keys unless I hold down the special magic button that transforms them into rarely-used single-purpose special function keys.

> But here’s where the problem occurs. If the batteries get changed, or if the keyboard gets turned-off for an extended period, or sometimes – seemingly – just randomly… that function-lock gets switched off.

I have this problem with my Microsoft Natural keyboard; my favourite ever Microsoft product which helps me keep my RSI at bay.

Every now and again the Fn lock key gets pressed by accident. I then look very confused for some time as to why none of the Fn keys are working before I remember the dratted Fn lock key.

The Fn lock key is next to F12 so well in the range of accidental presses.

Maybe not many people drive their setup with function keys any more, I don't know.
nickcw
·เดือนที่แล้ว·discuss
After I made the emulator I trawled GitHub to try to find games it could play within the 32K limit. I found yours - thank you :-) - and the ./try.sh script has an option to download it from GitHub for the user to test.
nickcw
·เดือนที่แล้ว·discuss
That is correct. It is cheating, but the judges let a small amount of it slide, especially if you come up with an amusing enough justification. I could not get it to fit otherwise!
nickcw
·เดือนที่แล้ว·discuss
I pointed Claude Opus 4.7 at my Forth entry ( https://github.com/ioccc-src/winner/blob/master/2025/ncw3/pr... ) and it absolutely refused to have anything to do with it citing security violations and accusing me of creating malware :-)

Claude seems OK with it now, so I don't know whether that was a glitch but it was quite funny.
nickcw
·เดือนที่แล้ว·discuss
Glad you enjoyed it :-)

If you want to see how the sausage was made, here is the source:

https://github.com/ncw/ioccc-gameboy

You'll find an unobfuscated version (kind-of) there too. This the the one I actually worked on then I had a program squash all the variable names and squeeze it into the gameboy shape

The size limit for the entry was the killer. You are allowed 2503 non white space characters (a simplification - the rules are complicated) in IOCCC entries and 4K total code size. This isn't a lot to fit a Z80 processor and a GameBoy hardware emulator in!

I first wrote a full Gameboy emulator in C. It started out at about 6000 non white space characters. I then spent about about 100 hours work trying to get it to fit into the 2503 limit. For a long time I wasn't sure it was going to fit.

I decided making the emulator play Tetris (which is a fairly simple game) was the target so I stripped out features like the half carry flag in the Z80 emulator and the windowing system in the Gameboy emulation which Tetris didn't need. I also abused the C code terribly doing things with implicit int I can never un-see. I also got creative with the IOCCC rules which are implemented in a C program which checks your source and I spent some time reverse engineering that looking for loopholes! I discovered that the operators defined in <iso646.h> only count for one token which was very useful.

Once I had it small enough I had to supply some games to run with it. I created 4, a test program written in z80 assembler, a pi calculator (written in assembler), a 3d tic tac toe game (written in C with gbdk-2020) and a chess program also written in C. I discovered that quite a few open source games ran on the emulator too so I added a downloader for those where I could. Apparently not many games use BCD arithmetic - who would have thought!

It was a fun project.
nickcw
·เดือนที่แล้ว·discuss
Link local addresses are exactly that. They don't route and they are for low level stuff like adding stuff to the routing table or BGP.

If you want to do this properly then you configure a Unique Local Addresses (ULA) out of the range fc00::/7. These are the equivalent of 192.168 or 172.16 or 10. and they can be routed.

Trying to run services on fe80: addresses is a mistake IMHO
nickcw
·เดือนที่แล้ว·discuss
That brings back fond memories of my first employer in the early 90s.

They used to rent a single scan line (VBI) of the TV broadcast to use as a data transmission method encoded the same way Teletext was. IIRC you could fit 45 bytes in a single scan line, with 50 per second that gives you a nationwide data broadcast capability of something like 18 kbit/s. We had a 19,200 bits/second leased line to send the data.

That scan line was really really expensive I seem to remember! If your TV wasn't quite adjusted properly you could see the data scan lines at the top of the screen as flickering white dots and lines which was fun.

The data got sent to financial institutions for real time stock feeds and nationwide networks of shops.

I never worked on the code for that part of the business though - I worked on the replacement system which ran via satellite with much more bandwidth at much lower cost.

Eventually the internet killed that too :-)
nickcw
·เดือนที่แล้ว·discuss
I found a similar vulnerability in the Zeus Web Server ( https://en.wikipedia.org/wiki/Zeus_Web_Server ) in January 2000.

Zeus had a great feature where you could set up virtual servers just by creating directories. So if you wanted to host www.example.com and www.anotherexample.com you just created two directories of those names like that and away you went.

I discovered that the if you sent `Host:` headers which started with `/` then you could use it to traverse the file system and read any file you wanted.

Plus ça change, plus c'est la même chose!
nickcw
·2 เดือนที่ผ่านมา·discuss
If you read the advisory and are wondering what starlette is, from it's web page: starlette is a lightweight ASGI framework/toolkit, which is ideal for building async web services in Python.

It's used a lot in the data heavy AI world for it's efficiency shipping large files. This includes lots and lots of production servers.

From the advisory: this includes LLM inference servers like vLLM, LLM proxy servers like LiteLLM, AI agent frameworks, MCP gateways, and custom APIs. MCP servers are especially at risk because the MCP spec mandates unauthenticated OAuth discovery endpoints, providing a reliable path for exploitation.