Look at this time crystal on shopgoodwill. A pristine Antec SX1030 case (or chieftech dragon or one of the other clones), painted metallic green with a window installed. Every commercial or DIY gaming PC in the first few years of the 2000s was in one of these. It even has a case badge from an unreliable (but I repeat myself) Chaintech nforce2 motherboard installed, and a visible QC stamp from 2000.

It’s probably pristine because it exists permanently in 2001 and we’re just perceiving it in the present. If you built a sleeper in it, when you were done installing the OS there would be a cracked copy of Halo already installed. Wherever the buyer puts it, a half empty bottle of Bawls will phase into existence somewhere in a 6ft radius.

Posted on by pappp | Leave a comment

SC’23 Notes

The entryway to the SC23 conference at the Colorado Convention Center

I got talked into going to SC again this year, as I have almost every year since 2009.
It’s not really my area of focus, but it’s always interesting.

UK's booth at SC'23, featuring the KES PBP demo.

UK’s presence featured a mixture of IT/CCS types and researchers, the research end of the booth was mostly focused on ongoing Parallel Bit Pattern Computing work, featuring a new demo/visualization thing that I built much of the hardware and some of the software for in the 3 weeks before we left for the conference (the rest came from Hank modelling some printable parts, pulling the compute engine from an older demo he wrote, and building some adapter code). It was more exhausting than the conference itself, but a really fun prototyping/micomanufacturing flex. Fancy 3D printed parts, 2020 extrusion, some laser cut bits, piles of addressable LEDs, a bit of embedded electronics. There is also a partially-functional prototype backplane to link 4 EBAZ425 FPGA boards through an Aggregate Function Network as a PBP substrate that …I designed. There’s a lot of not-my-job work I did on display; I should probably start throwing more of a fit about that.

Some notes about the stuff we were showing and interesting(?) industry observations below.

Continue reading
Posted in Computers, School | Leave a comment

A Staggeringly Clever Input Conditioning Circuit

Input conditioning is one of those things that snares novice designers, causes late-process changes that overrun expectations on cost and board area, and traditionally isn’t terribly well taught to EE/CPE students.

It’s on my mind because next week is the point in the semester where I drag UK’s current crop of EE/CPE sophomores through a lab exercise I designed about 5 years ago to drive home gate delays, static hazards, switch bounce, etc.

While I was thinking about it, an upperclassman who regularly digs up neat stuff sent me the cleverest input conditioning circuit I’ve ever encountered.

The circuit comes from the late, great Don Lancaster of TV Typewriter fame, who in addition to his published designs, wrote and self-published a number of instructional/reference books. He had a well-deserved reputation for clever, cheap, robust circuit designs, and this particular trick is the highest wizardry.

Here’s the whole circuit diagram from the text:

The design comes from his CMOS Cookbook (PDF, link to his own hosted copy of the 2nd ED), on p.317 amid a discussion of Flip-Flops and Clocks. It is presented as “An Alternate-Action Push Button” which is entirely correct but really undersells how clever it is, and has apparently been in there since the 1st edition in 1977.

Here’s a link to it pre-built in the CircuitJS simulator so you can manipulate it and see it work. I had to play with it for a few minutes before I really understood the genius.

The fundamental trick is that it’s a master-slave Flip-Flop where the capacitor is the master storage element, and the pair of feedback-coupled inverters is the slave. The cap tanks the next state based on the output of the first inverter when the switch is open, and induces it on the inverters on switch close. This means, in addition to latching/toggling, it de-bounces, because the capacitor sets the time constant for hysteresis. It conditions, because the load sees the output of the second inverter. No race conditions or potential oscillations, because the cap can’t charge/discharge while the switch is held. No charge is moving inside the mechanism at steady state, so it’s not leaking power. It’s brilliant.

It is only suitable for relatively slow human-scale edges, so probably not a good method for encoders or the like. You can manipulate the time constant for the de-bounce by changing the value of the capacitor, but only down to a few 10s of nF (depending on what kind of inverter you use) before it gets marginal because it doesn’t have the charge to reliably throw the input of the first inverter.

Not only is it ridiculously cheap and simple as presented, which I think intends a 4067 or 74HC04, you can built it out of anything. Any inverting CMOS gate will work. Any inverting TTL gate will work. Ridiculous old RTL or DTL inverters work. A pair of N-Channel FETs (another CircuitJS link, has an extra transistor on the output for integrity reasons) with pullups to build your own cruddy NMOS inverters works. As would P-channels with pull-downs, or BJTs with resistors for constructed RTL (though doing it that way is leaky), or various other assemblages of tiny mass produced minimum cost components to make it even more minimal (though maybe not cheaper in a modern context).

I appreciate a clever domain-crossing design, and this is the highest form.

Posted in DIY, Electronics, General | Leave a comment

I had nothing to do with this but I’m super excited.

There has been a long-standing bug in the CPU emulation in Basilisk II (a 68K Macintosh emulator) that could be reliably triggered when *inhales* Bruno the shark killed you in a later level of Barrack, an Ambrosia Software enhanced Jezzball type game that I’m quite fond of. Barrack has bugs in almost all emulators including Apples’ own Classic environment, so it’s a good test for emulators (…and it’s a great game, IMO the best of the genre).

I saw the basiliskii-git AUR package update when I was running updates earlier, played one round of Barrack during my afternoon coffee break to see if anything major changed, and … it’s fixed!

It looks like it might be this little one-liner to the control register handling related to differences in MOVEC between the 68000 and later 680×0 versions, in some core code inherited from UAE.

Posted on by pappp | Leave a comment

Hacked Chromebook Thoughts

Several years ago I picked up a used Dell Chromebook 11 3189 (model code “Kefka”) to play with. At the time it was still receiving ChromeOS updates, had a sticky hinge that required some lubrication and manipulation to get working, and cost around $100 including the separately purchased power adapter. I’ve hacked on it in a wide variety of ways over the years, and the main interesting result is that I’m starting to think a hacked out-of-support x86 Chromebook is, in many ways, now better and cheaper than a Raspberry Pi in that role as a modern accessible extra computer to enable fearless play the Pi was intended to fill. I’ve been taking notes, so way too much detail below.

Continue reading
Posted in Computers, DIY, General, Objects | Leave a comment

A Classic 3D Printing Task: Thread Adapter

Every now and then I like to post one of these, just to show process I currently use. The magic of 3D printing is that once you’re set up this kind of quick job comes up all the time.

I have this cheap thread assortment that came on tubes rather than spools. It’s surprisingly decent thread, has good coverage for finding suitable colors for any project… and the 13mm ID tubes wobble badly on standard 4.5x40mm spool pins on sewing machines, especially when filling bobbins.

I was doing a little (ham fisted) machine sewing this weekend and it was irritating me …so I fixed it.

I’m finally getting less-incompetent with FreeCAD. Straight to “Part Design” workbench, sketch only one extruded pads’ features at a time, then decorate in any chamfers etc. at the interfaces. Import into PrusaSlicer with some sane defaults, send to the Anycubic Linear Kossel in the basement via OctoPrint (No, I don’t do it blind, I send and load the file, then go down to keep an eye on the startup sequence and make sure the filament hasn’t cracked and such), receive part.

Fit is intentionally a bit loose on all dimensions, nothing this part interacts with is consistent or close-tolerance, everything should move if it wants to, and the chamfer gets the tube seated well enough to not flop about.

FCStd and 3mf if anyone else happens to have this exact problem, which seems likely because similar thread assortments seem to be pretty ubiquitous on the usual eCommerce sites.

Posted in DIY, General, Objects | Leave a comment

In which I nerd out about Coffee Paraphernalia

Back in early 2010 I posted about my home espresso setup at the time. I recently (finally) replaced it, and I have thoughts. Obnoxious, obsessive, thoughts.

The TL;DR is that I bought a Breville Bambino espresso machine and a Turin SK40 grinder, the former is good, the latter is really good, but there is plenty of rambling and pictures and such below the fold.

Continue reading
Posted in FoodBlogging, General, Objects | Leave a comment


I’ve been playing some Tunic the last few days, because the Steam Summer Sale managed to poke me at just the right moment to get an impulse buy. I was interested enough that I paid $20 for a game that came out like a year ago instead of my usual “Wait until I can pick it up for a few dollars and run it on a contemporary potato” gaming strategy.

It’s very to my taste, and I’m enjoying it, but it is, in classic self-indulgent indie game fashion, “Video game tropes: the game.” Not that there’s anything wrong with making things for your own in-group, but it winks so hard you start to wonder about a palsy.

The visual style and gameplay nod to everything. Fez. The whole Zelda franchise. Soulsbornes. Some Monument Valley style geometry illusion/architectural environmental storytelling. Bunches of stereotypical Supergiant details. It’s never met a game trope it didn’t like. They executed and integrated pretty well though, and I am in the market segment that connects to the references. [Ed: Oh look. Some Half Life 2 Citadel and more explicit Chrono Trigger refs late(?) game!]

It’s not …quite… as self-indulgent as Lenna’s Inception (same kind of 2D Zeldalike vein, did it a few summers ago, had slightly more fun than irritation about how hard it was sniffing its own farts), and it’s far more modern and sophisticated than the various Solarus engine games. The visual style is both cuter and more spectacular than either.

It also has the classic indie game feature of being relatively graphically simple, built on a major engine, and still being kind of a resource hog … though I’m playing on Linux via Proton/DXVK, on a workstation-model Polaris12 GPU, so some of the “Barely holding 24fps at 720p on a system that can do way more visually impressive games” is probably my fault [Ed: performance issue suddenly fixed after update and reboot, must have been a driver/system state thing]. I will say, having not played many commercial game for the last few years, the progress with transparent, performant functionality out of the Proton ecosystem is really impressive.

Posted in Computers, Entertainment, General | Leave a comment

Anbernic RG351(p) and Powkiddy RGB10 Max2 Button Membranes are Drop-In Compatible

I’ve had an Anbernic RG351P for roughly 2 years now, and it’s an absolutely delightful object.

For those unfamiliar: the RG351 is an example of a class of little gaming emulation handhelds that started back in the mid-to-late 2000s with things like the Dingoo A330. They are, essentially, a tiny ARM (+ usually Linux) machine the size and shape of a handheld gaming device, set up with a built-in controller specifically to run games in emulation. The stock firmware on the RG351 is an ancient EmulationStation/RetroArch/Linux stack, but there are better alternatives – IMO, throwing in a decent SD card loaded with AmberElec is the first thing to do when you get one. It will play essentially everything from the dawn of gaming through the PlayStation and some (but not all) of the Nintendo 64 library, and has limited/marginal support for PSP and DS. It is …straightforward but not the sort of thing I’ll link… to obtain the full ROMsets for these platforms, they are frankly not that large. I paid about $90 for mine, I think they’ve gone up a bit, but there are a whole range of similar options at different price points, build qualities, and platform support.

The build quality, however, isn’t perfect. It’s small-brand China-export hardware. You know you have to be a little careful with it just from handling (I keep mine in a fitted case when throwing it in a bag). I’ve been through a screen (I got red lines in my original after about a year), re-gluing the back rubber pads (original glue melted), and now after two years I wore through the membrane behind the “A” button, and that’s actually what this post is about.

I opened it up, found the worn though button, looked around online, couldn’t any in stock, contacted Anbernic through their AliExpress store front (none available), asked the subreddit (no leads), and couldn’t come up with any exact replacement membranes.

HOWEVER on inspection, the membranes from the similar Powkiddy RBG10 appeared extremely similar, and those are readily available (as a $12ish pack of all the membranes and button caps to refit an RGB10, which includes two of the 4x membranes). I ordered this set via Aliexpress, and ~16 days later when it showed up, can confirm the membranes are slightly different, but drop-in compatible.

As you can see from the photos, the Powkiddy membranes have a bit more flat area, and the bottoms of the mounting holes are filled in rather than fully punched through, but the dimensions are exactly right. The height and force of the domes is even almost identical to the originals, and at effectively $6/membrane it’s a very reasonable repair.

Posted in DIY, Electronics, Entertainment, General, Objects | Leave a comment

Dumb Linux trick:

Suspicious of damaged system files on an RHEL-like (rocky, alma, centos, probably fedora, whatever) system?

Once you get it unfucked enough to use the package manager (dealing with filesystem problems, hand-re-installing the rpms required to make dnf work, etc.) , systematically reinstall all installed packages!

As root do a:
rpm -qa --queryformat "%{NAME}\n" > installed.txt
dnf reinstall $(<installed.txt)

and settle in for a long operation.

I’ve done it on Arch boxes where it is written as something like pacman -Qqn | pacman -S -, but hadn’t tried it with dnf until I had a Rocky 8 box wedge during a dnf upgrade yesterday and wipe out large pieces of the system, then cause some damage to the (annoying default XFS on LVM) root when a reboot failed. It seems to have worked.

Posted on by pappp | Leave a comment