Linux Fu: Windows Virtualization The Hard(ware) Way

As much as I love Linux, there are always one or two apps that I simply have to run under Windows for whatever reason. Sure, you can use wine, Crossover Office, or run Windows in a virtual machine, but it’s clunky, and I’m always fiddling with it to get it working right. But I recently came across something that — when used improperly — makes life pretty easy. Instead of virtualizing Windows or emulating it, I threw hardware at it, and it works surprisingly well.

Once Upon a Time

First, a story. Someone gave me a Surface Laptop 2 that was apparently dead. It wouldn’t charge, and you can’t remove the keyboard without power. Actually, you can with a paper clip, and I suggested pulling it to see if the screen would charge by itself. They said they had already bought a new computer, so they didn’t care.

Unsurprisingly, once I popped the keyboard off, the computer charged and was fine. You just have to replace the keyboard or use another one. Or use it as a tablet, which it is set up for anyway. But I have plenty of laptops and computers of every description. What was I going to do with this nice but keyboardless computer? Continue reading “Linux Fu: Windows Virtualization The Hard(ware) Way”

Flex PCB Underlies The Watch Of The Future

If you were at OpenSauce, you may have seen new Youtuber [Sahko] waltzing about with a retrofuturistic peice of jewelery that revealed itself as a very cool watch. If you weren’t, he’s his very first video on YouTube detailing the design and construction of this piece.  We’ve embedded it below, and it’s worth a watch. (Pun intended, as always.)

The build was inspired by the delightful amber LED dot-matrix display modules that circle the band of the watch. They go by HCMS2901, but [Sahko] recommends using the HCMS3901 as it’s both more 3.3V-tolerant and easier to find now. A challenge in mounting so many displays was the voltage on the supply rail dropping below the logic level; presumably the newer version does not have this problem to the same degree. Either way we love the look of these little displays and are pondering projects of our own that might include them.

He’s got quite a few wrapped around his wrist, so at full brightness, all these displays draw one amp. That explains why like the LED watches of the 1970s, the default state of the displays is “OFF”. Even with a LiPo pouch salvaged from a disposable vape, the runtime would only be half an hour at full brightness without that periodicity. Luckily [Sahko] included buttons on the band of the watch to activate it and control the brightness so it isn’t always blasting at full. There are also different modes available, including a really cool waterfall effect you can see in the video.

The band is an interesting choice, too: it’s just a flex PCB. There’s nothing backing it, aside from its own stiffeners, which makes us very curious how well this watch would hold up to daily use. There’s no clasp in the traditional sense, either: the band is closed by a 4-pin connector that doubles as both charge and the USB programmer for the stm32u08 microcontroller that runs the displays. Conveniently for a watch, this version of the stm32 has an RTC, so it keeps time as well. We dig the minimalism of this design; it’s a great contrast to the maximalism of wrapping your wrist in displays.

We’ve seen very similar displays on an edge-viewed watch, but a tiny amber LED matrix never gets old. If you wrapping your wrist in all those tiny LEDs is too impractically power-hungry, try using Nixie tubes.

We’re always watching for projects– wrist mounted clocks or otherwise– so if you’ve got the time, please drop us a tip.

Continue reading “Flex PCB Underlies The Watch Of The Future”

Soldered RAM Upgrades Finally Available For Mac-PPC

In the retrocomputing world, [DosDude1] is a name spoken with more than a little respect. He’s back again with a long-awaited hack for PowerPC Macintosh: soldered RAM upgrades!

[DosDude1] is no stranger to soldering his way to more storage– upgrading the SSD on an M4 Mac Mini, or doubling  the VRAM on an old GPU. For a PPC Mac, though, it is not enough just to solder more RAM onto the board; if that’s all it was, we’d have been doing it 20 years ago. Once the RAM is in place, you have to have some way to make sure the computer knows the RAM is in place. For a WinTel machine, getting that information to the BIOS can be as easy as plugging in the right resistors. Continue reading “Soldered RAM Upgrades Finally Available For Mac-PPC”

2025 One-Hertz Challenge: It’s Hexadecimal Unix Time

[danjovic] came up with a nifty entry for our 2025 One-Hertz Challenge that lands somewhere between the categories of Ridiculous and Clockwork. It’s a clock that few hackers, if any, could read on sight—just the way we like them around here!

The clock is called Hexa U.T.C, which might give you an idea why this one is a little tricky to parse. It displays the current Unix time in hexadecimal format. If you’re unfamiliar, Unix time is represented as the number of non-leap seconds that have ticked by since 1 January 1970 at 00:00:00 UTC. Even if you can turn the long hex number into decimal in your head, you’re still going to have to then convert the seconds into years, days, hours, minutes, and seconds before you can figure out the actual time.

The build relies on an ESP32-S2 module, paired with a 7-segment display module driven by the TM1638 I/O expander. The ESP32 syncs itself up with an NTP time server, and then spits out the relevant signals to display the current Unix time in hex on the 7-segment displays.

It’s a fun build that your programmer friends might actually figure out at a glance. As a bonus it makes an easy kicking-off point for explaining the Year 2038 problem. We’ve featured other similar Unix clocks before, too. Video after the break.

Continue reading “2025 One-Hertz Challenge: It’s Hexadecimal Unix Time”

Remembering Chiptunes, The Demoscene And The Illegal Music Of Keygens

We loved keygens back in the day. Our lawyers advise us to clarify that it’s because of the demo-scene style music embedded in them, not because we used them for piracy. [Patch] must feel the same way, as he has a lovely historical retrospective out on “The Internet’s Most Illegal Music” (embedded below).

After defining what he’s talking about for the younger set, who may never have seen a keygen in this degenerate era of software-by-subscription, [Patch] traces the history of the jaunty chiptunes that were so often embedded in this genre of program. He starts with the early demoscene and its relationship with cracker groups — those are coders who circulate “cracked” versions of games, with the copyright protection removed. In the old days, they’d embed an extra loading screen to take credit for the dastardly deeds that our lawyer says to disavow.

Continue reading “Remembering Chiptunes, The Demoscene And The Illegal Music Of Keygens”

Coroutines In C

It is virtually a rite of passage for C programmers to realize that they can write their own cooperative multitasking system. C is low-level enough, and there are several ways to approach the problem, so, like Jedi light sabers, each one is a little bit different. [Christoph Wolcher] took his turn, and not only is his system an elegant hack, if that’s not an oxymoron, it is also extremely well documented.

Before you dig in, be warned. [Christoph] fully admits that you should use an RTOS. Or Rust. Besides, after he finished, he discovered the protothreads library, which does a similar task in a different way that is both more cool and more terrible all at the same time.

Once you dig in, though, you’ll see the system relies on state machines. Just to prove the point, he writes a basic implementation, which is fine, but hard to parse and modify. Then he shows a simple implementation using FreeRTOS, which is fine except for, you know, needing FreeRTOS.

Using a simple set of macros, it is possible to get something very similar to the RTOS version that runs independently, like the original version. Most of the long code snippets show you what code the macros generate. The real code is short and to the point.

Multiprocessing is a big topic. You can have processes, threads, fibers, and coroutines. Each has its pros and cons, and each has its place in your toolbox.

screenshot of C programming on Macintosh Plus

Programming Like It’s 1986, For Fun And Zero Profit

Some people slander retrocomputing as an old man’s game, just because most of those involved are more ancient than the hardware they’re playing with. But there are veritable children involved too — take the [ComputerSmith], who is recreating Conway’s game of life on a Macintosh Plus that could very well be as old as his parents. If there’s any nostalgia here, it’s at least a generation removed — thus proving for the haters that there’s more than a misplaced desire to relive one’s youth in exploring these ancient machines.

So what does a young person get out of programming on a 1980s Mac? Well, aside from internet clout, and possible YouTube monetization, there’s the sheer intellectual challenge of the thing. You cant go sniffing around StackExchange or LLMs for code to copy-paste when writing C for a 1986 machine, not if you’re going to be fully authentic. ANSI C only dates to 1987, after all, and figuring out the quirks and foibles of the specific C implementation is both half the fun, and not easily outsourced. Object Pascal would also have been an option (and quite likely more straightforward — at least the language was clearly-defined), but [ComputerSmith] seems to think the exercise will improve his chops with C, and he’s likely to be right. 

Apparently [ComputerSmith] brought this project to VCS Southwest, so anyone who was there doesn’t have to wait for Part 2 of the video to show up to see how this turns out, or to snag a copy of the code (which was apparently available on diskette). If you were there, let us know if you spotted the youngest Macintosh Plus programmer, and if you scored a disk from him.

If the idea of coding in this era tickles the dopamine receptors, check out this how-to for a prizewinning Amiga demo.  If you think pre-ANSI C isn’t retro enough, perhaps you’d prefer programming by card?

Continue reading “Programming Like It’s 1986, For Fun And Zero Profit”