HN user

billforsternz

2,319 karma

Veteran embedded and desktop assembly, C, C++ developer. Email billforsternz (at) gmail.com.

See my github; https://github.com/billforsternz including my Chess GUI Tarrasch.

Posts9
Comments856
View on HN

Stuck it out to the end against my better judgement. Got 89/100 due to difficulties at the "Grandmaster" stage (12/20).

I thought it was going to be tougher because the very first word on my run was "Yield" and none of the options seemed convincing to me. I went with something that was at least fairly adjacent to the "something produced by" (as opposed to "submit to") meaning and this did successfully yield (he he) my first point.

The wording is very unambiguous, it means something very specific in chess. In every legal chess position either White is checkmated or Black is checkmated or (by far the most common except in film and TV!) neither side is checkmated. So the wording is crystal clear, you should be able to freely place the White king on any of the unoccupied 59 squares and the position will be one of those in which White is checkmated.

A real shame, this totally ruined the puzzle for me as it seemed so unlikely that all five Black pieces would be mutually protected. I should have forced myself to ignore the faulty clause and try to solve without it. The bad clause is also completely unnecessary - one of those cases where deleting text (or code!) is an improvement with no downside!

Why TUIs are back 3 months ago

I is tab ('\x09' or '\t') and J is new line ('\x0a' or '\n'). These Ctrl combinations follow a predictable linear mapping to the control character section of the ASCII table. Basically Ctrl subtracts 0x40, so I is 0x49, Ctrl I is 0x09.

Ti-84 Evo 3 months ago

Thanks for clarifying. I think this is an ARM and a break from a history of Z80 and Z80 adjacent CPUs. I do get the impression TI have done a good (financial) job milking these products whilst under investing in real product innovation.

We're both seeing rudeness. We both dislike rudeness. I think it's rude to rain on someone's parade. You think it's rude to assume someone hadn't thought through their comment (I basically agree) and to address the person rather than the points (I also basically agree).

You might note my original comment included softening elements ("perhaps", "not saying you're wrong"). In general if you look at all my comments you'll see I'm not a rude person, I'm pretty agreeable in general.

I was (trying to) make a meta point rather than a point about the specific technical issue. I agree (again!) that the last word has not been said on this issue or on any other issue where tradeoffs need to be weighed.

I read Walter's comment and thought "Wow, that's a surprising, clever and innovative idea, I'm impressed". And I just didn't enjoy someone bluntly saying, in effect. "No you're wrong, you shouldn't do it like that". It's as simple as that really. I know blunt exchanges of views are normal for programmers and engineers, I don't have to like it every time.

Finally, I know Walter Bright is no shrinking violet and he definitely doesn't need me to defend him!

I wasn't really appealing to authority. I was just suspecting a familiar pattern that I always find a little distasteful. Person A describes a brilliant idea they're obviously proud of. Person B casually dismisses it and just claims without evidence that the obvious way of doing it is better. I find that pattern to be not only rude, but to suck some of the joy out of life. The fact that person A on this occasion is widely acknowledged as a brilliant practitioner I thought added weight to me pushing back. But I'd be inclined to feel the same way if person A was an enthusiastic wide eyed student (say) with a fresh perspective.

How long did you think about this before making this declaration? How long did Walter Bright think about this before making his decision when designing his language? Not saying you're wrong, just something to think about perhaps.

Sir Edmund Hillary and his team drove early Massey-Fergussons to the South Pole in 1958 (much to the annoyance of Sir Vivian Fuchs who Hillary beat to the pole even though Hillary was supposed to be a support player only :). The tractors weren't really suited to the job but they were tough enough to make it anyway.

Back in the early 1980s I leveled up my self taught Z80 assembly skills by reading a book that attempted to disassemble and explain the Sinclair Spectrum ROM.

I remember the very first ROM instruction was XOR A and this was already a revelation to me as I'd never considered doing anything other than LD A,0 to clear the accumulator.

I remember Joel of Joel on Software publicly working through the process of creating a remote desktop for normals type product called Copilot back in the day. If I remember correctly he had to pay quite a pretty penny to acquire copilot.com.

I wonder if MS Copilot meant he made money on that investment?

AirPods Max 2 4 months ago

By convention if it was 13.600 they would present it as 13.600 not 13.6. If I remember correctly Everest was first surveyed as 29000 feet tall and they changed it arbitrarily to 29002 to avoid the apparent imprecision!

AirPods Max 2 4 months ago

386 grams, the extra 0.2 grams is not only irrelevant it's non existent because the process of converting from one measurement standard to another never increases the precision of the measurement.

Using 3 digits of precision also avoids being temped to use the rather niche ,2 convention when claiming to embrace a region as large as the rest of the world.

C dev wasn't a problem with MSDOS and 640K either. With CP/M and 64K it was a challenge I think. Struggling to remember the details on that and too lazy to research it right now.

It's very interesting how the "you know the city, the state, the country" mantra here is really "you know the city, the state and obviously the country is the USA no other possibilities are considered or worth considering"

One of my best rescue jobs involved doing this in 1999, yes that 1999. The client had shuttered their development department years before but was expecting to continue happily supporting and selling their simple enough alarm system products indefinitely. Testing revealed that come 2000 the alarms would just fire continually. Whoops. Fortunately there was one dev PC they'd decided to keep and not touch. Found the offending .c code and the corresponding offending machine code after some disassembly. A little bit of creative assembly language was required to squeeze an extra check in but really no big deal and the day was saved. I remember the client manager being ridiculously happy and grateful.

I enjoy coding something new up in Notepad++, without any annoying autocomplete and jank. I call it unplugged (acoustic?) mode. Jeepers Visual Studio these days starts autocompleting if and while for example and sometimes doesn't respect normal keystrokes because it expects me to complete these kind of interactions instead.

Maybe we should just freeze development in lots of designated areas and declare victory (I know this isn't a practical suggestion, but still...).

Eg in desktop OS's. Apple for example makes everyone miserable by re-breaking macOS every year. To what point?

Bonjour monsieur, je voudrais une eclair chocolate s'il vous plait is my number one French phrase. I can usually sell it. Maybe you needed the prefixes?

I love the Z80, I started my career writing Z80 assembly for various embedded projects on a Z80 host system 45 years ago.

But you don't need a physical Z80 to enjoy that classic instruction set. For example see this source file from one of my projects; https://github.com/billforsternz/zargon/blob/main/src/zargon...

The good ole' Z80 assembly code is right there unaltered on the right, but it executes using C macros. In my humble consumer laptop I get a 40,000 times performance boost compared relative to a colleague's physical Z80 running the same code. I love the combination of nostalgia AND modern hardware performance.