Stupid Computer Drag Racing

Two mini PCs, facing off against each other in a race that’s somewhat network dependent. What fun!

I got a couple of those weird mini NUC-style PCs. They’re very cosmetically similar PCs, of the “AK2” variety, that you can get on the Amazon for between $70 and $175 depending on what deals are going on and spec. They were bought for other things, but I figured why not see what the difference is between a couple of generations of Celeron?

Similar things on each: both have 2x HDMI ports, a smattering of USB 2 and 3 ports, RTL8111-family GbE network, onboard single-port SATA, AC wireless (one with an Intel card, one with a Realtek). The differences are memory, CPU, and storage (outside the SATA).

AK2: J3455 - Celeron J3455 Apollo Lake (4c4t), 6GB RAM, 64GB eMMC, no NVMe slot (there is an open slot but it’s Mini-PCI for some reason)
AK2 “Pro”: N5095 - Celeron N5095 Jasper Lake (4c4t), 12GB RAM, 256GB NVMe SSD (this came with an SSD that threw a ton of errors during Ubuntu installation.. swapped it for a known-good 256GB drive but not sure if that was just weirdness or that the pack-in drive is flaky)

To do the drag race, I set both of these up with Ubuntu Server 22.04 LTS with full updates, pyenv, and Docker Engine; and connected them to my network via Ethernet. The Ethernet connection is somewhat bottlenecked as I’m using the two Ethernet ports on the TP-Link Deco P9 mesh pod in the room where they are, and that’s generally using the slower HomePNA powerline backhaul to the rest of the netwrok. But, they ranged from 7-10MB/s when both were hitting the network simultaneously to about 15MB/s when one got full shouting rights over the cable, and they were run so they were both basically sharing space all the time.

The workload I chose was setting up an Open edX devstack instance on each from scratch. Open edX is a pretty big thing - a full “large and slow” setup ends up with 14 Docker containers - and there’s a smattering of compiling stuff and decompression and database ops and all that, so it seemed like a good fit. (Plus, I’m really familiar with it. The day job mostly entails writing software that interfaces with Open edX in some manner, so I’ve run it on much faster systems than these two.) However, it’s worth noting that some of these steps are very network bound, and those steps are noted as such. I did include the preliminary Python setup steps here too, so that’s a lot more compiling.

Here’s the results. The times listed are the Real time from time(1).

J3455 N5095
pyenv install 3.11.0 10m40s 05m20s
pyenv virtualenv 00m12s 00m05s
make requirements 01m35s 01m09s - this step is pretty network dependent
make dev.clone.https 04m56s 05m00s - this step is pretty much just network access (cloning GH repos)
make dev.pull.l&s 10m20s 09m39s - yup a lot more network, this time Docker stuff
make dev.provision 108m54s 51m32s - this one is not network

Round 2: now with identical TeamGroup AX2 SATA SSDs (512GB) connected to onboard storage and fresh install of Ubuntu Server 22.04. Some of the network speeds went up here; the machines got kinda out of sync and so they had the network to themselves for a bit.

J3455 N5095
pyenv install 3.11.0 10m40s 05m22s
pyenv virtualenv 00m12s 00m05s
make requirements 03m35s 01m11s - this step is pretty network dependent
make dev.clone.https 04m04s 06m33s - this step is pretty much just network access (cloning GH repos)
make dev.pull.l&s 09m22s 07m31s - yup a lot more network, this time Docker stuff
make dev.provision 90m03s 43m48s - this one is not network

The most telling of these is the first and last result - pyenv install 3.11.0 and make dev.provision are places where you can really tell what the difference a couple of generations of Intel architecture enhancement make. As a reminder, these two chips are about 5 years apart (Skylake to Ice Lake; 6th gen Core to 11th gen). Interestingly, the performance difference is about the same as the cost difference. The J3455 system was about $75 and the N5095 system was about $150.

Neither of these systems are particularly performant (and they’re probably gonna lose those 512GB SSDs) but they make good point of need systems for lower-end tasks. They’re pretty small - roughly 5in square and about 3in high. The J3455 is going to be a Home Assistant box because it’ll outperform the Raspberry Pi 3 that’s currently doing that task and it’ll fit nearly anywhere.

A couple weird hardware things I’ve noticed:

  • They both have a USB-C under the lid. You can get power out of it, but it doesn’t seem to do anything. I plugged a drive into it and nothing.
  • The J3455 has a micro SD card reader on the board (that evidently works). The N5095 one doesn’t.
  • The J3455 has a mini PCI slot on it. I was thinking maybe I could put a M.2 2242 drive but nope! I suppose you could use it for a WwAN modem or something, though.. do they still make those in mini-PCI? I have a CDMA one floating around, I could try it to see if it works in the slot..
  • If you get one and take it apart, be careful about the WiFi antennas. I disconnected one taking apart the J3455 unit and in the process of trying to wedge the connector underneath the plastic thing they glued down to the top of the WiFi module (to keep the antennas connected..) I really broke the other one. Surprisingly it still connects to my local network, but that may be a function of it being basically next to one of the mesh pods.
  • I also learned that Realtek USB WiFi NICs are less than great for use in Linux.

Most of this was from some videos by Goodmonkey on YouTube. He had some better luck with the AK2/GK2 pricing than I did. (But I might also look at deploying these TP-Link Omada WiFi dingles..)

A comparison of two laptops

Full disclosure: this is more or less going to be however many words of me hating on my MacBook Pro. Just so you know.

I have a 2019 13” MacBook Pro system, the base two USB-C port model with slightly upgraded storage (256GB from the base 128GB). I bought this system to do software development and as a general purpose daily driver to replace the hodgepodge of machines I was using so I could be a more effective software developer on a project I was working on. The choice to get this particular model machine came down to cost, capabilities over the similar tier MacBook Air model, and desire to have a macOS-based system (as my dev toolchain works best on a Unix-y system). This was a $1,500 system when I bought it, after my educator discount and fortuitous timing to get it during a tax-free weekend.

This thing was a mistake. (This is the bit where I just complain about this dumb computer.) On paper, it seems pretty nice for the time, but there’s problems. The 8th generation Core i5 CPU in there was getting old, even in 2019, and it doesn’t help that it’s a laptop efficiency SKU so base clock on it is 1.4GHz (and no HyperThreading). The 256GB storage is far more limiting than it seemed it would be. The keyboard, well.. this one’s got the 3rd generation butterfly switches, so it doesn’t fail if you look at it wrong or happen to not live in a clean room, but the switch feel is terrible. Some of this I tried to remedy - really, this thing mostly lived as a desktop, so I’ve amassed a bunch of USB-C dongle docks and one quite fancy CalDigit one, and so I had additional storage hooked in and screens and a real keyboard - but then you have to deal with macOS getting confused by there being things attached and then generally sometimes forgetting that there are screens, getting stuck in beachball mode, etc. All the while, WSL kept getting better, and PC parts kept getting cheaper, so ultimately I ended up building (now a handful of times - fiddling with things is fun!) a desktop system that’s now my daily driver and the Mac rarely gets used anymore. I didn’t even miss it when it had to spend a week or so out at AppleCare for service. (The keyboard broke. But not in the way everyone’s did - my backlight gave up. So, it’s got a new keyboard now. And a new screen, because the shitty webcam also failed. First time I’ve sent a machine in for service in maybe a decade.)

Now, the easy fix for this is one you can do on the front-end: don’t buy the base model. I thought 8GB RAM, especially coupled with Apple’s “fast” SSDs, would be OK, but really with the stuff I tend to need to have running (which includes Docker, IDEs, all that) it doesn’t work out. I thought too that I could make do with 256GB but that just meant I was running the SSD close to full all the time, which is bad. And sorry 1.4GHz Core i5 sucks. Just does. Almost as much as the keyboard. So, why didn’t I get the 4-port model instead? In this case, because the cost went up dramatically - I got this thing during a tax-free weekend, so not only would stepping up mean going to the $1,800 system or so, it’d also mean paying another roughly 10% more in sales tax, so really instead of a $300 difference, it’s closer to $600. (In Tennessee, tax-free weekends cover computer purchases up to $1,500 as long as they’re entirely under that amount. Go a penny over and the entire purchase price becomes taxable again.) Plus, the obvious - I had the money for that machine, and not more than that. So, I dealt with it and as things went on built up my daily driver desktop PC into the fairly ridiculous system it is.

Laptops are nice to have and it’s also nice to be able to do stuff from not my desk with the questionable ergonomics, so I’ve been looking and thinking about getting a new system. I’m also now mostly a Windows user again - Docker and WSL 2 especially make things a lot nicer for the things I need to do - so I’ve been considering those things too. I’d mostly thought on a Dell XPS 13” or HP Spectre x360 13”, as I like the form factor of the smaller machine. Either of those would run about $1,500 - of those, the Spectre was the winner since Dell likes to run warranty scams and it just had better specs for less money. But, I saw that Best Buy actually had a Lenovo system for pretty cheap that had pretty nice specs. Poor impulse control said I could get it, so I did.

The machine I got is a Lenovo Yoga 6, which I suppose is nominally part of their ideapad line, so not a fancy ThinkPad system. It’s a 13.3” machine again, occupying the same 2d space as the MacBook Pro but somewhat thicker (maybe about 33%? Both of these machines are super thin) largely due to its convertible nature (has touchscreen, folds backwards). The screen isn’t quite as nice as the Mac’s - just a 1080p panel versus the sort of 2.5k that the Mac has that you can’t actually run at native resolution - but it’s close enough. The trackpad isn’t as nice but it’s worth noting that Windows Precision trackpads are leaps and bounds better than what used to come on Windows laptops. (Again, it’s close enough.) Port selection is way, way better - 2 USB-Cs and 2 USB-As, though only one of the USB-Cs supports PD, and no headphone jack on the Lenovo. The keyboard is so much better and mine’s even slightly broken - the LEft Shift Key Sticks Occasionally - but the layout is comparable to the Mac and is even backlit. No touch bar, which I prefer but I wasn’t a touch bar hater. (Escape is still roughly in the same place either way but tactile feedback is nice, but on that same token, the touch bar does some neat things too that I sort of miss a bit.) Has a fingerprint reader! The webcam sucks - it’s a 720p thing, but it works, I guess - but as a nice touch it has a physical shutter you can activate. Mine came in a nice darkish blue with a denim cover on the screen, which I like a lot. Needless to say, this is a plastic machine, but it’s nice plastic.

The guts are where the thing really stands out. Even adjusting for time, it’s way better. The Lenovo came with an AMD Ryzen 7 5700 CPU, 16GB of RAM, and a 512GB SSD that’s actually upgradable. This means it’s got a CPU that’s pretty comparable to my desktop and better graphics than most anything Intel has, especially the UHD stuff that’s in the 8th gen. (Prob worth noting that despite the name the laptop 5700 Ryzen is internally a Zen 2 CPU, so it is really the baby laptop-style sibling of my main machine’s Ryzen 7 3700X. Same architecture, same 16 threads, but clocks and TDP are different, and the laptop CPU’s got graphics where the desktop one does not.) 16GB RAM is good too, especially since that isn’t upgradable, and though it’s limited to PCI-Express 3.0 I can swap in a bigger SSD easily. The SSD itself is a Western Digital Black model, even, that I believe benchmarks faster than the one in the Mac too. (I can feel the difference between it and the ridiculous Sabrent Rocket PCIe 4.0 one in the desktop but that’s a ridiculous drive.)

Price comparisons are a fun thing to do, so let’s do that. I looked on the Internet’s favorite auction and corporate intimidation site, eBay, and found that my MacBook Pro can be had for around the $600-$700 mark at this point. Which is handy, because the Lenovo was $700. Yep. Granted, I saw this system on Best Buy via the Ars Technical deals thing, so it was on sale - normally it’s $950.

Basically, this all made me somewhat more annoyed than I was with the Mac before - if I stripped out the macOS requirement when I was looking initially, I’d have ended up with a much better laptop, and now, barely 2 years later, I spent about half the price of the Mac and got easily way more machine. Oh well. At least the USB-C dongles and such are still useful - while the Lenovo lacks Thunderbolt (it’s an AMD machine), it’s still got a couple of whatever the fast USB C ports are so I can still use ‘em. (And part of my annoyance was/is those things - I have like 3 of the dongle dock things, and the CalDigit one wasn’t cheap.)

So, moral of the story: don’t buy the base model, and, yeah, look at the damned Windows machines. I’d have been happier with either a contemporary Dell XPS or HP Spectre/Envy or something or by saving a bit more and getting one of the 4-port MacBook Pros. (Or even the Air, really - 512GB storage would be better. Or being able to upgrade the storage. Damned Apple SSDs aren’t even that fast. They’re not magic.) I am, though, real impressed with this cheap Lenovo.

Other thoughts: Battery life is still pretty great - I get a good 8 hours at least depending on what I’m doing. Lenovo gives you a year warranty and adding on up to 4 years is pretty cheap - something like $200ish to go up to 4 total years with on-site support; less if you’re good with shipping it out. Mine didn’t have too much bloat crap on it, just a handful of annoying Lenovo apps and McAfee (or the ghost thereof), all of which (other than a couple of Lenovo things to make the support site work) went away when I reformatted and installed Windows 10 Pro. I can’t unlock it with my watch, but then most of the time I unlocked the Mac with the Touch ID sensor because the watch unlock is really slow. The convertible bit is pretty nice, though I won’t use it much. Still nice to have and because of poor impulse control I did get a Wacom Bamboo pen for it, which works pretty well (at least as good as my ancient Surface Pro 4 pen). I have in fact used it a few times in the short time I’ve had it so far. And man the keyboard. It’s like it was designed by people who actually use their computers for things and who might want to type on them occasionally. Nice travel, nice tactile bump, and this isn’t even the nicer ThinkPad keyboard. Being able to actually do things from the couch is nice.

Quick actual nerd thing!

The other day, I shipped my MacBook Pro off to be fixed, as the webcam and the backlight on the keyboard stopped working. (They broke some time ago, but it’s coming up on the end of the standard warranty, so I figured I’d get that done before it cost actual money to fix.) This post isn’t really about that computer, though; it’s much more about something that I managed to cobble together to take care of a thing I was doing on it. This post is much more about Platypus.

Not this kind of platypus. (From https://www.livescience.com/27572-platypus.html)

So, while I do still use my Macs a good bit, they don’t get used a whole lot for real work. (The ridiculous Ryzen machine takes care of that for the most part.) The Mac gets used for Web terminal stuff, email - Outlook on Mac is better than Outlook on Windows, because unified inbox and it actually checks gmail accounts on a regular basis why is this so freaking difficult - and messaging via Messages, so basically text messaging. With the new machine in for service, I set up my 2010 MacBook machine to handle the handful of Mac-type things I can’t reasonably do on the Windows PC. It works well enough for its age but it’s not the quickest thing to do Web browsing on, and I was getting somewhat annoyed anyway with having to switch machines to send Messages (or otherwise having to do all that on my phone).

To that end, I set up the MacBook as sort of a third screen next to the Ryzen machine’s monitors and put Synergy on it. Synergy still works really well, and I can control the MacBook from the Ryzen box. Then I got thinking on getting it set up to open links and stuff on the Ryzen system, rather than trying to do it on the MacBook itself. I did some poking around and found some manager apps that give you a lot more options on the Mac side - there’s Choosy and Finicky and a few other things - and I found a page talking about using the Chrome remote debugger, which has now been deprecated, and I had an epiphany: can’t I open a URL on the command line? And, well, yes - on either Mac or Windows, running a command will allow you to open arbitrary things through the GUI (on Mac you use “open”, on Windows you use “start”). So, “start http://www.google.com" opens a new tab in Chrome and loads that URL.

So now I just needed a way to get URLs across the wire from the Mac to Windows. The Windows side was actually pretty easy: I just wrote a (very) simple PHP script that looks for a “url” GET argument and then pipes that into an exec call. This is wildly insecure but it does at least check for a valid remote IP and it’d be pretty easy to put in a simple URL regex check in there or to add some simple request signing (and of course everything’s behind a firewall anyway), but, after firing it up with the built-in PHP server, I could hit a URL with another URL in it and it’d open on the Windows machine.

The Mac side was a bit more involved. I wrote a simple shell script to pump the first argument passed to it into curl, so curl’s hitting my fancy endpoint ont he Windows side of things, and so I could open URLs remotely via the command line that way. The next step was figuring out how to get macOS to treat it as a “Web browser” and therefore “open” links using it. That’s where Platypus comes in.

Platypus is a pretty neat utility that I had no idea existed until today. At its core, it allows you to wrap a script (including a shell script) in a standard Mac app bundle, so that to the system it looks and works mostly like a normal app. It’s also got a bunch of neat features to handle script output and do things like load bits into a WebView (not like an app-specific browser, though), or display progress bars, or etc. etc. etc. The only drawback to it nowadays is that modern macOS really, really wants your apps to be signed, and it doesn’t do that, so if you’re on a modern system you’ll have to jump through some hoops to get that to work. But, it’s a pretty versatile utility that’s available for free.

I packaged the shell script up using Platypus. That worked about as well as it could have - I didn’t make any attempt, really, to get it to do anything but launch and run the script, and it did that (and, somewhat hilariously, it kept blocking because on the Windows side it was spawning a command prompt, which I had to close before PHP would consider itself done and then also return data back to curl on the Mac). The next step was to figure out how to get the thing registered as a Web browser system-wide and hope that macOS passed the target URL into it in a sane way.

Registering an app as a Web browser requires a couple of things: the app’s Info.plist needs a couple of key/value pairs to tell the system that it can handle http and https links, and the app needs to be in the system Applications folder. Platypus doesn’t have any controls in it to edit the default app Info.plist, so a bit of poking about was needed to edit it. (The gist of it: on the command line, I just used the plutil -convert command to convert the plist to XML format, then made some chanages, and then same thing to convert it back to binary format.) The necessary values that had to go into the plist itself I found in this Stack Overflow post, and, once I had those in and move the app bundle to /Applications, it showed up in the Default Web Browser dropdown in System Preferences. Selecting it, then opening a URL.. actually worked. (Not the first time as.. well, that blocking issue? I’d managed to trigger that again, and had a couple of requests queued with no URL in there. So, once I cleared out the command prompt windows, I got a barrage of things I’d clicked on.) So, now I can click on URLs on the Mac and they’ll open in Chrome on my Ryzen machine.

Now, the next steps are to make this somewhat more secure. Platypus can run pretty much any script - it just, really, runs it, so it can be in any language; it just happened that shell script was the most straightforward for now. So, I’d like to switch it up a bit so that I can maybe accept an SSH key or something and do this that way, so it’s not just piping things in cleartext over the network and has at least some form of authentication. It’d also be great if the thing could figure out if nothing’s listening on that particular IP and port so that it can revert back to a local web browser - if I grab the machine and go elsewhere, I’ll have to remember to switch it back over to Chrome or I won’t be able to click links outside the browser, and that’ll be annoying. Then, maybe I can release it on Github or something.

Is this the easiest way to do this? Oh god no - the easiest way is probably just to keep using my phone for this stuff. And, as mentioned, I have Synergy set up between these systems - it syncs the clipboard, so I can right-click and copy links and paste them into Chrome (in either direction) that way too. But, this was a fun 30 minute distraction that honestly makes things a lot nicer. (And, as a note, I’ve spent easily two to three times as much time writing this post about all this - and it was supposed to be short, even! - than I did actually doing the thing. I don’t even want to calculate the difference in length here with code written as it’s quite literally less than 10 new lines of code so far.)

So, just a.. well, not quick post about this neat thing. Stay tuned for the next post, in which I will invariably do something stupid with an old computer!

(Updated shortly after posting: Platypus actually does have an interface in it to register URI handlers for your generated app. I missed that somehow, so you can probably use that instead of mucking about with the Info.plist directly. Whoops!)

Cheap computer = go

So, at the beginning of the lockdown situation I had a go at refurbishing an old corporate desktop class machine for use by a friend. This thing was an Optiplex 790 or some such tomfoolery, which was a first-generation Core i7 machine in the small form factor case (closer to a Mac mini in size, low-profile PCIe slots, etc.). It actually impressed me when it was done - it was a perfectly capable lightweight computing machine. My refurbishing extended to all of fitting 16GB RAM to the thing (it had none at the time) and putting Windows 10 on it (which activated with the 7 license it had - corporate desktop!), and even with the spinning disk inside as a boot drive, it’s perfectly fine even for some rather older games, and handles basic tasks like web browsing and Office perfectly well. I did hold off on replacing the hard drive with an SSD, though - some quick looking showed that the price of doing that (even with how cheap SSDs are now) wouldn’t have been a good idea.

The looking did give me ideas, though, as to what you can get for not much money. The dumb-no-longer-dumb-but-real-PC really started up as an experiment to see how cheaply you could build a decent PC, and that got pretty cheap but some more eBay searching and benchmarking indicated that you could do, perhaps, a bit better. So, I started looking at some of these business PCs, specifically the small form factor ones, and basically came up with this: for between $100 and $150, you can get a 3rd or 4th-gen Core i3/i5 system with some memory (generally about 8GB) and a spinning disk drive (usually around 500GB, though sometimes bigger or sometimes SSD), and it will likely have Windows 10 on it. That’s a complete computer (unless you want to get a bit tetchy about it not having a keyboard, mouse or monitor). To put that into perspective, the new build involved a Pentium Gold CPU for about $70, and about another $50 on the motherboard, and that doesn’t include even RAM or storage.

Prices spike after the 4th gen CPUs at this point in time, and systems with i7s in them come at a premium as well that I’m not entirely sure is worth the additional cost or jump down to a 2nd-gen CPU. (I’d rather have a i5-4560 rather than a i7-2660, personally.) You’re also not going to get a real GPU most of the time with these - onboard or bust - and if you get an SSD, it’s going to be a 120GB one. (I did look, and while I was more after a SFF system, a regular midtower doesn’t incur a price premium, other than maybe additional shipping cost.) But, that’s still a complete system, with a licensed and activated copy of Windows 10, for about $150. And, that’s a fair amount of computer too - it’s not going to be the thing you want to depend on to do your 4k renders for YouTube, but for most anything else it’ll be perfectly acceptable. Even some software development stuff shouldn’t be too hard to do on a machine like this.

I did end up putting a bit of money where my mouth is on this one, and I ended up with an HP ProDesk 600 G1 SFF machine. Spec-wise, this thing came with 8GB DDR3, a 500GB spinning disk (with two! empty bays and matching SATA ports for each, one of which a 2.5” one), a DVD-DL RW drive, a Core i5-4570 CPU (3.2GHz, burst to 3.6), and Windows 10 Pro. Also handy: 3 PCIe slots (one 16x and two 1x), DisplayPort, and USB 3 ports. And a serial port. Because business. It’s also a vPro capable system, so it even has some rudimentary LOM stuff on board and ready to be an attack vector because Intel has problems with that. I’m going to drop a 240GB or so SSD in it (those run about $30 these days) and another 8GB RAM to.. bring it half to max - did I also mention it’s got 4 RAM slots and supports up to 32GB RAM? No? Well, it does - and then basically leave it alone. The spinning disk in there hurts performance a good deal, as they always do, but it’s a pretty decent machine otherwise, and it did for sure boot into an activated install of Windows 10 Pro. With shipping costs, this ran me a total of $105.

I like the way the Dell SFFs are done up - they just seem really solid and.. dense, really, which is nice - but I actually think I prefer the HP layout. It’s a bit bigger than the Optiplex SFFs but all of the bays are on a swing-out bracket, and there was even spare mounting screws included (in a designated spot, from the factory) for adding additional drives. There’s a 3.5” and a slim 5.25” external bay, and a 2.5” and 3.5” internal bay each. So, with some additional commodity mounting brackets, you could slot a total of 3 SSDs in here and have a pretty decent little storage server. Expandability is pretty nice on here - it of course uses low-profile cards, as do most any SFF-style machine, but three total slots is pretty good, and there’s a good number of USB 3 ports on the front and back. (And, of course, vPro management stuff and the one somewhat neat thing that tends to get glossed over: the internal speaker’s hooked to the sound card, so you have actual audio without having to hook up speakers. Not good audio, but not just the 1981-style PC beeper either.) One big drawback here, though, is that the power supply is totally nonstandard; sometimes these things will have an SFX or TFX power supply, which is at least pin-compatible with ATX, but in a weird size. This doesn’t; the power going to the motherboard is totally weird. There’s like 3 different, beefy 6-pin connectors that would be at home in an Amiga. It’s a good PSU in there, but if it goes out, the machine is unlikely to be salvageable. Still, that’s a lot of good machine and options for the $105.

Now, am I going to use this as a desktop PC? Of course not. It’ll work fine for that purpose, but that’s not really why I wanted to get one. I also got a 4-port GigE card (also HP, with an Intel chipset) that uses a PCIe x4 slot, and that’s been added to it. In essence, this is going to become a router. Commodity WiFi routers cost about this same amount, but not ones that can be loaded down with Proxmox (and/or maybe Kubernetes) and pfSesne. (And obviously WiFi routers have WiFi, and this doesn’t. But, I’m just going to keep using my cheap TP-Link router, and just make it not do routing anymore. It’ll just have to manage WiFi and the what-passes-for-mesh networking I have.) So, for $100, another $30 or so for the NIC (you don’t have to get a quad-port one, but they all run about the same price via the eBay) and about another $60 in some upgrades I don’t really have to do, I’ll have a pretty decent home router and edge server. And it’ll be way easier to do WireGuard up to real cloud stuff too. And I can maybe finally use the IPv6 block I’ve had forever. And VLANs, because what every home network needs is 4 more networks laid on top of it!

In conclusion, if you need a decent amount of computing power, but don’t have or don’t want to spend a bunch of cash on a new build.. old business desktops are a thing to check out. $125ish for a machine that you can then slap an SSD and some sort of half-height video card into, and play some games or get some work done is a great deal - it’s excessively hard to compete with that by building your own from scratch.

At the end of Pinnochio, the puppet becomes real

Or, the continuing saga of the original “dumb PC”!

The “dumb PC” has seen a lot of changing roles and changing uses since I set it up. Originally, its purpose in life was “I have this case, what’s about the cheapest PC I can build into it?” and part of that goal was to re-use some spare parts I had from refurbishing and upgrading an HP all-in-one I managed to take home. Ultimately, building a system with even used parts around an old Athlon II X2 CPU was pretty cost prohibitive, and I ended up putting together a pretty cheap 9th-gen Intel Core system. Doing that gave way to trying to use a Linux desktop for the first time in.. well, decades, which went well, but, yano, games, so Windows 10 it was, and it got a fairly decent video card. It ended up becoming my main system, especially after the pandemic hit and working from home was the order, and more upgrades ensued until it ended up moving from an 8GB/240GB machine to a 16GB system with a 500GB M.2 SSD and a 1TB SATA SSD. It’s got both my 4k screens on it, and I even got it a cheapish webcam (once demand settled a bit) that actually works pretty well and support Windows Hello.

At this point, the machine really is my main system - all of my main job stuff is done there, most of the screwing around I do is done there, games are on there (when I have time and interest in playing them), etc. But, one of the things I started to run into was a lack of processor. This was supposed to be a cheap machine and as such it’s got a cheap processor in it - a Pentium Gold G5400, which is based on the 9th generation Core architecture, but is intended for budget systems and appliance use more than anything. It’s only got 2 cores, and does do HyperThreading, but my workflow now depends on virtual machines and Docker and all that more and more and that’s a bit much for that CPU. So, I decided it was time to bite the bullet and move from “let’s build a PC for cheap, it’ll be fun!” to “yep let’s build a pretty serious system.”

The one thing I didn’t do is actually stick with Intel. The 9th-gen Cores are great and all, and I’ve had an eye on a i5-9600 that’d swap right into the board, but it bothered me that I’d then have this basically new, current CPU floating around not doing anything, and it’s both too modern and too budget to really get anything out of it on the used market, so I’d want to also get another motherboard to slot it into and use for, I dunno, something. (Plus with previous upgrades I did have 8GB of DDR4 and the original 240gb SSD not doing anything.) But, looking at prices for the motherboard plus CPU kinda put me off. And, I kept seeing things on YouTube and whatnot talking about the Ryzen CPUs, and I hadn’t had a really good AMD system in a while.. so that’s what I went with: a Ryzen 7 3700x. That’s an 8 core/16 thread CPU for about the same money as the i5 (6 core/12 thread). On top of that, the new B550/X570 chipsets also just came out, so why not do all the new things?

As a quick aside, one of the first real modern systems (or maybe the first real modern system) I built was a 1.2GHz Athlon Thunderbird. It’s been a long, long time - arguably since the Pentium 4/Athlon XP Barton days - since AMD was not only a power player but legitimately better than Intel. Processors sure are ridiculous these days but it’s nice to kind of revisit those days of building systems and playing Unreal endlessly, and loading up games because it’s just so damned weird to have things that look so good. (And if you want to go back further.. we had a 386DX-40 system back in the halcyon days of Windows 3.1, CPU lawsuits, and the very early Internet. Me and AMD go back a ways, and those DX-40s were fast as hell and bulletproof in the day.)

Anywho, so aside from the processor, I also ended up with an ASUS Prime B550 motherboard to slot it into. The nice thing about the B550 is that it’s PCI-Express 4 capable now, and will support the new Zen 3 processors when those come out too. (So in 6 months or whatever, my VM infrastructure will become properly ridiculous.) It’s also got two PCI-Express M.2 SSD slots, one that maxes out at 2280 and one that goes up to 22110 or whatever the longer one is. And better I/O - the Intel board I have (also an ASUS Prime) has like 4 on-board USB ports total; this one has 6, at least, 4 of them USB 3.1 and two 3.2s on top of that. The one thing that kinda sucks about it over the other B550 boards I was looking at is that the LAN port is only 1Gb where other ones have 2.5Gb Ethernet. But on that same token I’m totally not putting the money down yet for 10GBaseT infrastructure so not gonna worry too hard on that.

I threw that all together and.. holy crap Docker starts so fast now. I did a test Windows install to the 240GB SSD and kept getting up while it was doing its thing, to come back 20 seconds later to a reboot, and then confusion because it wasn’t erroring out, it just blew through the install steps that quickly. I did run a Cinebench R20 test, and it benches about 6 times faster. The NVMe stuff is also vastly improved - somehow or another, my drive was running at PCI-E 2.0 with just 2 lanes, where it supports PCI-E 3 x4. (Why this was I don’t know.) I haven’t run games or 3DMark yet, but I don’t expect a huge increase there; I’m still on the older RX 570 GPU and I have a hard time justifying that expense. That said, it’s definitely snappier, which alone is an accomplishment - things are just so damned fast nowadays that it’s hard to really get a machine that feels faster, but this is a move that does it. To be sure, this was a pretty massive upgrade - it’s 4 times the cores and threads, and on an architecture that’s perhaps a bit faster than the Coffee Lake stuff now - but when you factor in the cost, it’s pretty impressive.

So, loads of SSD, a video card I’m pretty happy with, and a real fast processor. This thing is a pretty properly good computer now. The current final specs on it:

  • AMD Ryzen 7 3700x 8-core/16-thread unlocked CPU (3.6GHz factory)
  • ASUS PRIME B550M-A/CSM B550 chipset motherboard
  • 16GB Crucial 2666MHz DDR4 RAM (2x8GB)
  • AMD Radeon RX 570XT GPU (6GB I think? Maybe 3)
  • 500GB Mushkin M.2 NVMe SSD (PCI-E 3.0 x4)
  • 1TB Patriot Burst SATA SSD

I’m pretty happy with it. So, I’m done now, right? Well, of course not! I am a terrible nerd after all, and there are slots and things that aren’t being used.

The first thing in line is the case and PSU - the Rosewill case it’s in is cheap and I’ve cut myself each time I’ve had to work in it, and it’s cramped and yeah basically no cable management. Airflow is OK given the case fans and mesh front but cable routing is a pain. And, the RAIDMAX 500 watt PSU that’s in it now makes odd noises sometimes. (The fan’s dying.) I’m not terribly worried about power consumption - the UPS that runs the whole nine yards there, including the screens, the MacBook Pro, its screens, and the dock/charger, all together use about 300wt - but bad fan is no bueno, and I want a modular PSU anyway. So, probably going with a Thermaltake or Fractal Design case and some sort of real PSU (Tt, Corsair, or Silverstone probably) for the next round. I have like maybe 1cm of clearance between the GPU fans and the front panel cabling/bottom of the case on the current one so this is now pretty needful.

Next up is RAM. 16GB good, 32GB better, RAM is cheap. 4x8GB DDR4-3200 or whatever runs like $130, and that board has 4 slots for a maximum of either 64 or 128GB. NVMe SSDs are cool but actual RAM is better. Speaking of, I’d also love to jettison the SATA SSD and drop in a NVMe 1TB one (or two!) in there. Even those are pretty inexpensive - I won’t get a Samsung 970EVO PRO for $100ish but the WD Black drives are pretty damned good too. (I believe I get RAID on the 3700x CPU too so a RAID 0 of two NVMe drives sounds like I need a moist towelette.)

I’d like to do up a faster video card but until case and power supply (and probably RAM) I’d rather not. It’s just too cramped in there as is. And I kinda want an RTX card (yes, for Minecraft), and those are still way more than I want to pay.

So, not but a few months in, and the fun plaything modern PC turned into my main machine, then turned into a real boy. I mean computer. And, I’ve already repurposed the Intel stuff into a new machine - the new and improved sinbox! So many weird computing projects.

New experiment time!

For about half a week now, I’ve been performing a bit of an experiment with my main computing environment. This has been triggered by my frustrations with macOS Catalina - it’s no secret that Catalina isn’t perhaps as well baked as it should have been, and my complaints with it aren’t new. There came a point where I just got tired of dealing with it not remembering that I had extra monitors, or getting all sorts of chewed up because of.. reasons (never really could figure that one out), or the admittedly small boot volume in it being damned near full all the time. I finally got fed up with it and decided to do two things: reimage the damned thing (which I honestly should have done to begin with - never trust the base image in the box) and switch up the environment some.

With that in mind, I took the silly Linux/Windows desktop I’d built up and began looking at what it’d take to push it into full-time use. The answer to that question was “not much”: most of the stack I use nowadays really works just as well on Linux as it does anywhere else, and I’d really just need to find a way to hook my screens into it. (If you’ll recall, this is a Pentium Gold-base system on a pretty entry-level H310 chipset board - integrated graphics here, and the board itself only has VGA and HDMI video outputs.) A bit of looking and some quick education on video cards pointed me in the direction of an AMD (weird) Radeon RX 570 GPU, and one in particular with 3x DisplayPort 1.4 outputs on it, so I grabbed that. For good measure, and certainly not because it was really necessary, I also opted to upgrade the storage to 500GB of M.2 SSD (it was on sale). I figured that, worst case scenario, this would mean I’d have a decent enough gaming PC to work with if the experiment failed. I do have a pretty long list of things in Steam and such that I either haven’t played or couldn’t play because of a lack of Mac support.

The SSD and video card came in on a Saturday and I went ahead and got everything installed and configured. And, of course, I started out by testing it out with some games. Intel has certainly come a long, long way from the i810 chipset video, and even the cut-down stuff in the Pentium Gold CPUs is pretty decent (especially for the older games I tend to like to play), but that RX 570 is so, so much faster.

After a lot of cultivating was done - Farming Simulator ‘19 is surprisingly fun - I went ahead with the core of the thing and got Xubuntu installed and going on the machine. That went pretty well, outside of some issues that were more caused by my router being dumb intermittently, and I got my normal stack installed and all that. Xubuntu got the Radeon configured and set up fine and it’s humming along nicely with my ridiculous mouse and the two 4K displays I’ve got for the main system. I’ve got my SSH and other access set up and working and have deployed some code and all that. So far, so good, and I’ve been able to be pretty productive on the system without it being too weird. There are very much some differences between macOS and Xfce on Linux but a lot of my work revolves around using PhpStorm, Sublime Text, Chrome, and a terminal, so all of that generally works just fine.

There are, of course, a few quibbles.

  • The ATI–er, I mean, AMD Radeon Linux drivers don’t work with non-LTS Ubuntu. Sensible but I’m running 19 so I’m out of luck for the “real” drivers. Game support is even less on Linux than on macOS - far better than I can remember it ever being but still not great - so that’s not a big deal; the 2D performance on this thing is performant to the point of it not mattering.
  • GRUB still can’t figure out that I have a Windows installation. I didn’t reinstall it - it’s on a separate disk - but the standard install nonsense didn’t pick it up. The workaround is just to hit F8 to get a boot menu and force it into Windows when I need that, which kinda sucks, but whatever.
  • There are oddities with the screensaver on Xubuntu. Something something compositing, something something xfce4, I dunno, sometimes I come back and the screensaver can’t figure out that it actually needs to stop and give me a login prompt. I can go in and switch to another text console, log in, and kill the screensaver, but that obviously sucks. (Although, yeah, text console is really graphics now and so text console at 4k res with a 9x16 font is like watching the Matrix in real life. I would totally screw with a DESQview-type grid-based text windowing interface for a while if there were decent tools to do my stuff there.) I’ve got xscreensaver installed now and we’ll see if that works out better but I’m not holding my breath.
  • Mail clients are terrible. I’m spoiled, though; I really actually do like Outlook now. Mailspring comes closest but it doesn’t support calendaring and real Exchange server environments so I can’t get my University mail. (Yes, there’s IMAP/POP as an option in Mailspring. No, I can’t use it. And neither should you.) The other option seems to be Thunderbird, which hey guys remember Netscape 3? It works well enough but meh. I’m sticking with Mailspring for now but I may be looking for something else in the near future.

The one of these that’s really a big deal is the screensaver - one reasonably expects that to, yano, actually work, and to be able to get back into your machine when you’ve wandered off. Perhaps moving to regular xscreensaver over xfce4’s one will help. And, there’s little things that macOS does (and the tight integration that Apple can provide when you’re all-in on the ecosystem) that I miss. I never turn my phone off now because if I do it’s just that much more of a pain to talk to people. Unlocking my computer via my Watch is neat (even if I can only do that at home for now). The keys are in the wrong damned place now and I miss having Alfred and less shitty access to my Apple Music library. These (other than screensaver stupidity of course) are all fairly minor and ultimately I can get my stuff done without really noticing that I’m on a Linux system.

That said, I’m half of a week into it, during a week in which I’m not being particularly productive, so we’ll see what happens when I get back into gear and do stuff. But, who knows - this might just be the wave of the future for me. It’s been a really, really, really long time since I’ve actually wanted to and enjoyed using Linux on the desktop.

Oh - and that Pentium Gold CPU? Perfectly acceptable. I honestly can’t tell that much of a difference between it (2-core, 4-thread, 3.7GHz nominal speed, 9th gen Coffee Lake architecture) over the Core i5 in the laptop (4-core, 4-thread, 1.4GHz nominal speed, 8th gen Coffee Lake). Yes, they’re cut from the same cloth, but the Pentium chips slot under the Core i3 CPUs and the difference between 8th gen and 9th gen aren’t much. But, I have to say, this thing flies.

Even more computer weirdness

So, because I evidently need a stream of things to play with, I grabbed a little 11” Chromebook (a Lenovo N22) absurdly cheap. Woot had a bunch of models for around $75 and this one was one of ‘em, except I got it through Amazon since it would have taken longer otherwise.

Initial impressions: it’s a refurb, but it’s pretty nicely done. The screen is good enough (1366x768). Case design is chunky and kinda ugly but when it’s open the worst parts of it go away. It has a couple neat party tricks, in that the webcam rotates 270 degrees and it has a built-in handle. The keyboard is nice enough, given the size and the slight oddness of the Chromebook layout. It’s not fast but it’s good enough; I can put YouTube videos at full-screen and it’s fine with that. Battery life so far is awesome; it’s reporting about 13 hours remaining after an hour or two of unplugged use including installing software and stuff.

Oh, and it’s not running Chrome OS anymore. ‘Hacking’ these things has changed a good deal since the last time I had a Chromebook and you’ve got the option to install a third-party EFI setup on there that makes it into a regular x86 PC. GalliumOS is what I’ve got on here; with the base system install, my typical stack for basic web development stuff, and a few other things, I still have 10GB free on the internal 16GB storage.

I tried not to completely wipe Chrome OS off of here, but it ended up being more of a roadblock - Chrome OS has also progressed a great deal in the years since I’ve used it last, and the Crostini thing has even been more fully baked into the base OS (so you get Debian Stretch more or less running in a hypervisor of sorts), so it has the potential to be useful for more than just basic stuff, but there’s too much that doesn’t work still. (Some of this stems from the fact that their GPG keys had expired earlier this year. If I’d known a bit more about apt at that point, I might have just kept with it, but decisions were made. And yes, regular X/graphical apps run in Crostini - just for the hell of it, I fired up rxvt and it came up just fine.) You can dual-boot Gallium and Chrome OS, but dual-booting to essentially choose between running Chrome in forked Ubuntu and Chrome in Chrome OS seemed dumb, so I just went ahead and did the full install. Plus, I won’t have to worry about Google bricking it when they decide that this thing is too old for Chrome OS updates.

So now I have 4 weird computer projects to ramble on about on here: this Chromebook, the accidental Xubuntu/Windows build (now my gaming PC!), the HP all in one, and the Pentium 133 nostalgia machine. It’s going to be fun when I get a Raspberry Pi or two, or maybe start fiddling with one of Ben Eater’s bare computer kits…

Adventures in New Computing

So, in the interim of remembering what I did and writing down the nuts and bolts of the Pentium 133 build, I decided to (for one) redo it now that it’s mostly working and I remember how to work things like Windows 95 and DOS, and, secondly, to utilize some spare parts I had to build a somewhat newer machine. (In a future post, I plan on going over this HP all-in-one I’ve got, and what I did to upgrade it in a not particularly intelligent sort of way. The gist of it, though, is that I had some spare disks and a spare CPU or two to use.)

Armed with a fairly meager array of spare CPUs and such and a new case acquired by trade, I went off and went through the normal channels to find matching motherboards and such. And.. ended up just building a modern PC. The CPUs I had floating around were both of the AM3-socket Athlon II variety, which meant new motherboards are still being built to support them, which also means that really stupidly inexpensive parts were sort of hard to come by, which then leads to replacing the handful of parts I had with new stuff being not much more expensive.

The parts I ended up getting included an ASUS H310M chipset (such that there are chipsets these days) motherboard, coupled with a Raidmax 500 watt power supply, 8GB of Crucial DDR4 RAM, a really cheap NVMe 256GB M.2 SSD, and a Pentium Gold G5400 CPU running at 3.7GHz, all of which slotted into a Rosewill Raider-M case or somesuch. In essence, this is a cut-down Core i3-based system - the CPU has a crappier version of the GPU that the Core i3 does, and it’s got 2 cores with HyperThreading rather than 4 without. There’s some evidence that at least some of these are binned CPUs so there may very well be 4 actual cores in there, and it’s a 9th-gen Core architecture CPU so easy to swap in a Core i9 when I finally actually do go insane. I went with Xubuntu 19.10 on it - Eoan Ermine - with ZFS roots and whatnot. For the $250ish I paid for the parts, it’s really damned quick, though playing games in Linux still sucks a bit.

In terms of the computer itself, I came away with two main things:

  • Even this cheap no-name 256GB NVMe SSD can push a full GB/s, in my totally unscientific and probably pointless GParted benchmarks I ran when I was also installing games in Steam.
  • Parts to first boot - everything just sitting on the desk for sanity/functionality check - took like 10 minutes. No kidding. Another 10-15 to put things in the case, and maybe 20 more to install Ubuntu, and.. like.. a few more to make sure the front-panel USB and audio worked before I closed everything up. Had I actually prepared, this would have been a 30-minute build.

On a whim, I bought a regular SATA SSD with an odd name (Alertseal! Almost as good as Fatty Duck Racing) and then slapped that in there haphazardly for a Windows 10 install. It’s also real fast, and now I’m using a disk drive that has a picture of a happy seal on it. And a 5-year Wrrnty. Whatever that is.

I haven’t put it through paces with coding and such but VirtualBox.. runs.. on it (admittedly with Windows 10, which isn’t the best of ideas given limited resources) and it’s certainly snappy enough to play high-def YouTube videos OK. Games are a bit more of a mixed bag; I’ve only tried GTA:IV and Portal 2 so far. Portal 2 is totally cool at 1920x1200 - hits the 60FPS limiter - on Windows but dips into the 20s on Linux and is happier at 1280x800. GTA:IV on Windows needs a lot of things turned down/off but is playable at 1280x800 or so. (I’m just happy to actually be able to play it finally. I bought that years and years ago and have never really been able to run it - either my computer wasn’t good enough for it at all, or it doesn’t work well in virtualization, or something. So far, it’s.. not really all that great but we’ll see.)

Next steps for ridiculous stupidity include trying to get macOS on it, because I obviously need a crap Hackintosh to run along side my real MacBook Pro. And then, I dunno.. maybe more fiddling with Docker/K8s, media serving, Android dev, stuff like that. Or a Core i3 sans video and a real video card for gaming funtimes. (I have a bunch of games I’ve never played because no Mac versions.) In any case, throwing together a machine was pretty fun, if quick and somewhat anticlimactic.

Some More Information For Y'all

Hi, I'm James. Some people call me 'murgee'.

I'm a web developer, general computer nerd, and music geek based in Memphis, TN.

This blog is powered by Hexo, Bootstrap, and coffee. Hosting by DigitalOcean (referral). Fonts by Google Fonts.

Background image: unsplash-logoTara Evans

Because I have to: unless otherwise noted, © 2019-2022 James Kachel.

The Socials

Social media links and stuff:

The Tweet Machine