HNHacker News
TopNewBestAskShowJobs

grahamlee

687 karma · joined November 21, 2018

Has a PhD in software engineering and explains how to make better software engineers using AI. https://patreon.com/chironcodex
submissionscomments
grahamlee··on Saint Michael Sword: Are the cathedrals really on a straight line?
If you add every single other church or shrine that's dedicated to St. Michael to the map, what's the straight line you can draw that contains the most of those locations?
grahamlee··on 1800-2023 – IEEE Standard for SystemVerilog
I read 1800-2023 and thought wow, System Verilog had a great run, shame it's over.
grahamlee··on Lessons from a fountain pen addict
This is about smudging as a leftie, because your hand is trailing the pen if you write a LtR language like English. If you blotted every word or character before moving on you’d be there a while.
grahamlee··on 30cm worm fossil more than half a billion years old discovered in Greenland
The spice must flow.
grahamlee··on Transactions Are Not Locks (2022)
Lamport’s time/clocks paper solves this exact problem, using this exact example, without locks.
grahamlee··on OS/2 Warp, PowerPC Edition
I last used REXX last year, to write BDD tests for my Amiga software on AmigaOS 3.2. IBM still support it on MVS and z/OS, too.
grahamlee··on 30 years of The X-Files
“Rm9sbG93ZXJz” almost precisely presaged the entire plot of all of the Black Mirror episodes combined, and was great fun (particularly the near-total lack of dialog). I thought the “My Struggle” bookends in Season 10 were quite good, but then Season 11 retconned the whole plot away.
grahamlee··on 30 years of The X-Files
The change in that zeitgeist is also one of the things the creators "credit" with its decline, though Duchovny getting into a lawsuit with Fox and checking out certainly didn't help. After the 9/11 attacks public interest in not trusting the government sharply declined. The pilot episode of the Lone Gunmen spin-off, released earlier in 2001, featured a plot where "terrorists" had flown a passenger liner into the WTC but it was really a government inside job to gain support for a new war. That show didn't get renewed.
grahamlee··on Seven Sins of Writing
“Avoid the passive voice” is a rule that annoys me. Sometimes, the rule that’s annoying is more important than the person that’s being annoyed.
grahamlee··on A brief history of computers
No, Boole was dealing with probabilities. The first half of his investigation on the laws of thought is all ones and zeroes, but the second half admits any value in between.
grahamlee··on The Anti-Ownership eBook Economy
Especially among a forum who mostly derive income by renting their “products” as “services” without letting people own their output.
grahamlee··on The Anti-Ownership eBook Economy
Richard Stallman predicted this in 1997’s “The Right to Read”. Predictably rather than listen to him, software specialists discredited him. https://www.gnu.org/philosophy/right-to-read.en.html
grahamlee··on Open Letter to Tim O’Reilly to Free the Perl Camel
Context for people who weren’t there: Perl was created by Larry Wall, who became an O’Reilly employee. The camel was the unofficial logo because it was the picture (presumably from the Dover pictorial gallery) used for the book Programming Perl co-authored by Wall and published by O’Reilly.
grahamlee··on Ask HN: Could you share your personal blog here?
My current situation doesn’t allow me to post as much as I’d like, but I’m at https://SICPers.info.
grahamlee··on Objects Have Not Failed (2002)
It's true that the implementation model didn't change, but the conceptual model did: the new "class" thing lets people express designs containing what they call "classes" with "methods" even though what they're building is constructor functions that return objects where some of the properties are occupied by functions.

That kind of chicanery isn't unique to JS, by the way, which I mention because of the unfair malignment of JS in the original article. Smalltalk-80 syntactically has blocks, but the code in a block is just compiled into the surrounding method and the block invocation is a fancy GOTO statement.

grahamlee··on Objects Have Not Failed (2002)
sorry, on my keyboard 5 is right next to 6.
grahamlee··on Objects Have Not Failed (2002)
Indeed; and I was talking about the Javascript "object model" as it existed at the time, not the ES5 thing that adds classes back in after we failed to teach JS developers what "this" is. Those little dynamic effects were, after all, working almost exclusively with the Document Object Model.
grahamlee··on Objects Have Not Failed (2002)
> and nearly 2/3 are using JavaScript (which at least tries to be object-oriented)

While Javascript is usually maligned fairly, in this case I think it's unfair. The JS design learned from Self that one of Smalltalk's accidental sources of complexity was having classes as an object-like piece of syntax when they can be built out of objects themselves. JS has a more object-oriented design than some of the other examples of "object-oriented languages" presented without comment in the article.

[As an aside: I don't think programming languages can be functional, object-oriented, or otherwise paradigmatic. I think program designs can have those properties, and programming languages can support or hinder expressing those properties clearly.]

grahamlee··on Ask HN: Best solution for comfortably reading papers and other PDFs
I use a remarkable e-ink tablet, though I'm also looking longingly at the PineNote. Don't tell the whole class, but sometimes I print papers out and read the paper version.
grahamlee··on I'm going to scale my foot up your ass (2008)
Kubernetes: from the Ancient Greek word for “more pods than customers”.
grahamlee··on Ask HN: How long could Twitter operate if the remaining staff quit?
Actually short for “Site EVent”, but yeah a screwup.
grahamlee··on Ask HN: How long could Twitter operate if the remaining staff quit?
My guess is not very long. I've been on a project with three people where if we all quit, it would run until AWS EKS switched off the version of Kubernetes we were using; I'd expect from experience at FB that there's way more done to keep plates spinning on the Twitter fleet and within a couple of days there would be a SEV that no-one was around to respond to.

Of course they'd actually be pulled down by law enforcement much quicker than that if all their content mods left.

grahamlee··on A History of Oxford University Computing Services (2008)
It was ntl (styled as ntl:). Like your nerd house friends I had ntl in my house on the Cowley Road, and they offered a dual-line service so we had one line connected to the modem pool full-time (my SuSE Linux desktop ran an RFC1918 network for the other computers in the house).

Sadly around the time this history comes to an end OUCS (now IT Services) abandoned much of its work with bespoke open source development to become the Microsoft money funnel it is now. I say "sadly" not just out of a preference for free software: the way in which this was done deeply affected the mental health of some of the staff involved.

grahamlee··on The story of the first “computer bug” is a pile of lies
How long before the Nikola Tesla fans turn up to tell us that his bugs were more catastrophic than Edison’s anyway?
grahamlee··on Ask HN: Is there a spiritual successor to del.icio.us?
I moved from delicious to pinboard, then from pinboard to nextcloud bookmarks, then finally to Evernote. Clipping pages to Evernote means I get both the link and a searchable snapshot of the content: helpful for discovery and if the link rots.
grahamlee··on Why championship chess sets are so expensive
This still doesn't answer the why though: "because it's the rules" leads us to want to understand how the rules came to be. Is the president of FIDE a shareholder in the approved manufacturer? Or is their cousin? Or did they fall out with a different manufacturer? Or is that the only manufacturer that makes the sets in a particular way that benefits championship chess, and if so in what way is that a benefit? Why not just mandate that form of construction?
grahamlee··on When will Apple ship other M2 Macs?
They also said at WWDC 2020 on June 22 that they would have completed the transition within two years. So somewhere between 13 days and a very long time away.
grahamlee··on Ask HN: Is it true that any community that grows big enough, gets ruined?
At time of writing, five other comments in this thread link to Wikipedia articles. Wikipedia is an example of a large community that has not become ruined, through social and technical counter measures. There may well be people who think that it "is not what it once was" and that's probably true for Wikipedia and for many communities, but that's different from the changes being ruinous.
grahamlee··on The Brilliance of “nil” in Objective-C
You might want to return NSNull instead of nil (easy to do: in fact I extracted this from an object in which the nil-return value is configurable but simplified it for the post), in which case it becomes map-safe because NSNull->NSNull on map.

I use this pattern because then I can trust _everything_ in a collection. If an object, even an object that represents emptiness, receives a message, it will handle it and do something, even where that something represents emptiness.

grahamlee··on The Brilliance of “nil” in Objective-C
This nil-swallowing behaviour works really well with the "out error parameter" pattern of Cocoa methods. In short, methods that can fail have a signature like:

- (id)thingThatSometimesWorks:(NSError *)error;

You can chain these to your heart's content. The one that fails sets the error and returns nil; following messages are sent to nil which does nothing and a particular characteristic of doing nothing is that it doesn't overwrite the error that was set. So you still get to see the error when the workflow finishes.

As an objective-C programmer, I also have a tool in my toolbox which gives NSNull the same message-swallowing behaviour as nil.

@implementation NSNull(GJLNilReceiver)

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { return [super methodSignatureForSelector:aSelector] ?: [NSMethodSignature signatureWithObjCTypes:"@@:"]; }

- (void)forwardInvocation:(NSInvocation *)anInvocation { [anInvocation invokeWithTarget:nil]; }

@end

← PreviousPage 2 of 5Next →