Yep, it's astoundingly inefficient. I've been meaning to pull the code back into working memory and do the things I mention in Future Considerations, but it took long enough just to do this write-up; could be years before I get around to it.
Hey, thanks for checking this out. I wanted smooth motion to keep close to the JS piece that inspired this; it seemed like it should be eminently possible to get smooth motion, after all.
And yeah, I was reminded of Bresenham's algorithm a few days back, and had a suspicion that I've basically redone it independently (and inefficiently) by doing the trig. As mentioned at the end there, the math isn't where I'm losing most time in rendering though.
The Mastodon release post (cite 0) has comments talking about doing the score recalculation only at time of collision, but the worst thing I do is use a block of RAM for the playing field and another block of RAM for the _display_ of the playing field. Copying those blocks of 20 bytes, gosh it's slow.
Over the years I've written a bunch of things in the orbit of retrocomputing, the largest of which was an incremental game based on a C64 emulator. Somehow I've never written anything substantial for the C64 itself; this post documents my learning while implementing a graphical effect in assembly language, over the course of twelve thousand words and three digressions into side quests.
Let me know if this was entertaining, useful or even both.
Arabic is on the Semitic branch of the hypothesised proto-Indo-European language, which has dual number: https://en.wikipedia.org/wiki/Dual_(grammatical_number)
So you'd expect to see languages from western Europe to south Asia that either have the dual concept, or have an attested ancestor that did.
It's worse than that even: there are delays after every _bit_ transferred, due to various design decisions that were made along the way, which is why the C64's disk drive is slower than the previous computer (the VIC-20), which is slower than the one before that (the PET).
I wrote about the decisions and the resulting delays for one of those 100-post Threadapalooza projects in 2024, compiled here for easier reading: https://imrannazar.com/articles/commodore-1541
https://imrannazar.com - Sporadic blog posts on web development and retrocomputing
If nothing else, you can put up a static page on the basics of Boglehead-ish finances; a copy of The Flowchart from /r/personalfinance would be a great low-effort stop-gap.
Mm, I still recall the time my Windows 98 installation corrupted its registry somehow. The only fix was to reinstall, and the machine had no floppy or CD drive... getting Windows back on there was a task.
They're larger and heavier for the same capacity, but the lower price makes up for it
So yes, the battery will be heavier because sodium's heavier, but it's so much cheaper that you can afford the extra footprint.
Reminds me of a ROM-hack for Zelda: Ocarina of Time from a few years ago, that was presented in the release video as using unused assets and storyline from the game itself, when it was actually almost entirely new material. A great technical achievement, to be sure, but somewhat dishonest in its presentation.
I'm reminded of an MVC microframework I put together many years back in PHP: https://github.com/Two9A/BirSaat
Having pulled down a copy just now, the framework itself is 526 lines of PHP, and the sample site (a newsfeed that pulls from the BBC) is perhaps 300 lines in models and controllers. I use the framework to this day to serve out my blog and other small sites, seems to work well without getting in the way.
I also see a Login Via GitHub, but there could certainly be scope to allow local accounts here.
Quoting from the README:
Our VDI guy, Andy, was one of my favorites. He was grumpy, always tucked his shirt in, kept his desk Type A clean and was just so principled. ...I always thought he'd be there and was devastated when I found out he died unexpectedly.
"What about his homelab?" I thought. "Will his wife's wifi devices even be able to get an IP address if his DHCP server goes down?". I reached out to her to see how she was doing and she told me that, six months on, she avoids his office at all costs. She worries what will happen when her TV no longer works, when her wifi no longer works.
I believe it's a reference to the look of a failed LiPo battery: it puffs up and looks like a pillow, but if you puncture it fire spews forth.
Reddit first came up with the phrase "spicy pillow" to describe that combination.
Many of these types of games are daily, so I'd expect it's a different angle tomorrow.
(Thanks for the hint.)
Sounds somewhat familiar. I worked at a place that replaced a basic LAMP stack with microservices written in Perl and MongoDB as a backing store, for the sole purpose of raising complexity.
And left Mongo on the default settings for the time (speed of return over reliability of saving data), so they ended up with a reporting replica which was MySQL.
Don't think I've seen anything before or since which was architected so exactly backwards.
And I've been using vim exclusively for north of fifteen years with Tab replacement, never had a problem with the editor getting confused about what happens with spaces when I hit Tab.
Some detail about the corner cases you've run into would be great, if they're happening constantly I can see how it would be a bugbear.
"CBE" refers to Commander of the most excellent order of the British Empire [0] which is a title conferred by the monarch on those deemed to have performed especially well in the service of the nation.
So you can see how its value might be diluted by this instance.
[0] https://en.wikipedia.org/wiki/Order_of_the_British_Empire
Many years ago, I wrote up a post on doing this kind of thing in plain DOS .com files: https://imrannazar.com/articles/x86-printable-opcodes
It's good to see the principle can be expanded to EXEs, I'll have to dig into this some more.
I should write that down; -Z would've been really useful when my SSH server was falling over in a heap and I was left scrolling through strace to work out what happened.
I wrote that experience up last week, for what it's worth: https://imrannazar.com/articles/linux-upgrade-fail
I always enjoy reading stories of yak-shaving adventures whenever they come up, so when I ran into my own back in November, I thought it might be fun to write up as a post.
This adventure starts with a small email problem, balloons into a Debian upgrade, and then it all goes sideways. Let me know what you think!
Oh goodness, this is the kind of thing I've been trying to find for years now: some method of making a computer from scratch, as in from raw materials.
Will have to look into your progress, thanks.
These kinds of articles are always fun: essentially playing golf with the size of an executable or some other file format.
To plug my own entry in the genre, back in 2006 a few members of the Nintendo DS emulation scene tried to put together the smallest DS ROM that would still do something visible on the system: https://imrannazar.com/hacks/the-smallest-nds-rom
We ended up with a 352-byte file with two minimal executables, for the ARM7 and ARM9 cores. I've yet to see a .nds file smaller than that.
Quick note: your article links to webbu.app but the link text is "webu.app"; that was awfully confusing.
Might be worth a pass through to proof-read; I saw another couple of typos, but the page is now throwing a Wordpress database error, so that might be more urgent to look at.
This is one aspect of the RTO discussion that's sometimes missed: there are plenty of people in the tech sphere (myself included) who've been comfortably remote for much longer than those who were pushed into remote work by lockdowns and pandemic response. We're not about to give up a whole lifestyle we've built over (in some cases) decades, on the whim of whichever executive we happen to be serving under at the present time.
Props to the author for highlighting this.
If I'm allowed to self-promote, my own blog just got its redesign released today, so now it's responsive for mobile etc: https://imrannazar.com/
The most recent programming content on there is from ten years ago though... I should really get around to putting something new together, now the design work's done.
Honestly, you see this all over the world where anticipated development either hasn't materialised or funds have dried up. The A57(M) freeway through Manchester, England was planned to continue from its current endpoint southwards, but the rest of it... never happened. And now there's a bridge over the A34 that doesn't connect to anywhere.
As I recall, the M1 emerging from London starts at "Junction 4" and there were three more junctions planned deeper into central London, but that part of the road never happened either.
I've just been catching up with Corey Olsen's exploration of Lord of the Rings, and he makes the same point regarding Tolkien: the man thought in alliterative prose, and there are some places where it stands out even to the eye, but you can catch a lot more of the alliteration by reading passages out loud.
The example that brought it up was towards the end of the attempt to climb the Redhorn: "Soon they all stood once more on the flat shelf at the head of the steep slope where they had felt the first flakes of snow the night before." (The F in 'before' might not line up with the previous F's unless you've been reading out loud.)
Perhaps a hundred posts, with the last significant block being ten years ago. I should really get back to it sometime... Posts that tend to have some lasting power:
- https://imrannazar.com/GameBoy-Emulation-in-JavaScript - A ten-part series (intended to be longer) on the implementation of emulators with the example of a GameBoy;
- https://imrannazar.com/Let's-Build-a-JPEG-Decoder - A four-part series (intended to be longer) about the concepts behind JPEG and building a decoder;
- http://imrannazar.com/Extended-Text-Mode-on-the-C64 - Going back fifteen years, an exploration of how to build an 80x25 text mode on the Commodore 64.
Just to update you: I've added this feature. It actually doesn't take more than a few seconds to build the thread, but there's some space for progressive enhancement with a progress bar / spinner... I'll think some more on that, in the meantime.