My New Office Chair

2020-05-19 21:22 - General

A shot of my "new" "office" chair.

With pandemic and lockdown forcing a work from home scenario, I'm spending a lot more time at my desk in front of my computer. Very shortly after that started, I started feeling a bunch of upper back pain. I was pretty sure it was down to the instant switch from near-100% full time standing desk at work to full days of sitting desk at home. (I've got a really nice desk, but it's a standard desk that isn't set up for standing at.)

I decided to get myself a new nicer chair. It's been a few years since I went almost standing only at the office, but I spent plenty of time working in a chair before that. And my "office" chair at home is both several years old and from the lowest quality tier, before all that wear.

I can confirm that the chair was mostly to blame, because it took a long time for the replacement to come. The old chair has fixed arms, which form part of the support structure for the back. I took them off and flipped them around, so they still held the back up, but they followed the shape from seat to back, rather than rising up to make a potential armrest. Being fixed, they were at a fixed height. One that was much too high. I was scrunching my shoulders to fit around them.

That said, this chair took a full month (ordered April 14, arrived May 15) to show up. I have no idea whether to consider that as awful as it seems, or to give a lot of slack for the current global situation. I definitely don't appreciate the completely opaque communications of the seller. First I reached out because the passed "14 days" long end of the estimate turned out to be 14 business days (which feels intentionally selected for misinterpretation), not passed. Once that date finally slipped, they gave another several-week window for possible delivery, but nothing more.

Now, it was a great deal. I paid $324 (plus $34 for carpet casters), which is well under half of the $900 for a brand new one. It was listed as "open box" but this is clearly a used/refurbished chair &emdash; plenty of light scratches, but all on the sides/bottom, so I can live with it. The price where I bought it has gone up to $374 in the intervening month. Only since then I learned about National Office Interiors and Liquidators, who are currently listing the same chair (but with the full-option arms, mine only raise/lower) for $299 (though only in grey, every other color is $399!). And more honestly listed as condition "used".

Either way, this is a quality chair, and I'm already happy with it.


Making My Own 3.5" → 5.25" HDD Bracket

2020-05-12 22:01 - Making

The brackets, fresh out of the 3D printer. The brackets after cleaning up a bit. Test fit on a spare old drive. Installed!

I haven't used my 3D printer in quite a while. This is the time, it's tough to get things these days. I'll save the long story of many failed attempts and tweaks to get it working again, but I just have done that.

I've had an extra drive in my home server for a while, since I upgraded the main set from a three-drive single parity to four-drive double parity setup. And nowhere good to put it. It's the remote backup for my Mom's files, on the server I keep at her place which is itself the remote backup for my own files. It's been awkwardly perched, upside down, on a piece of cardboard. I've got four unused 5.25" bays in that case, so it should go there!

I found a nice, compact design for brackets to fit a 3.5" drive in a 5.25" bay online and printed a set out. My printer makes "hairy" prints, with fine strands everywhere, due (I think?) largely to its design. And at least while I'm using up the ton of free ABS filament I got, bed adhesion is tough so I tend to print with a brim. First step was quickly cleaning up all that cruft, which is shown in the second picture. They're not pretty (I picked fast rather than high quality print settings), but they'll work.

Next, I drilled out all the holes. Half large enough for a screw to fit cleanly through, so they could screw into the drive. The other half exactly the right size to grab the threads of the screws, the outside holes are for holding the whole thing into the case. I did a test fit (the third picture) and it worked well enough, after a little more adjustment with the hole position. Then it was straightforward to pop the drive in a proper location, and screwed down!

In that last picture, you can see one of my main drives, currently tucked into the floppy drive slot, so the mounting holes don't line up well. I might make a second bracket to hold that one, too.

A Tale of Two Processors

2020-05-11 22:44 - General

(The box for) my old and new server CPU(s).

In late 2017 I broke and replaced my server computer at home. It was in a partially working enough state that I could wait a while, so it was mid January of 2018 when I finally bit the bullet and bought parts to assemble a whole new computer (except the drives, which I kept). At the time the best bang for my buck was an AMD Ryzen 5 1600 CPU, along with a compatible motherboard and RAM, and other assorted things.

Having just been through a small nightmare to get the server to work fully again, I was very happy when that was done. There were a few small oddities. It would crash when idle, which turns out to be a strange power management thing. And more rarely it would fail under load as well. It took until just last month for me to realize that segfault under load is a known failure for (early?) Ryzen CPUs.

My old, broken, replaced CPU.

So I contacted AMD, on the 19th. The RMA request was approved and I shipped this, pictured, CPU back to them. The second line of text there UA 1746PGS tells me, among other things, that this was from 2017, week 46. That was a little worrying — only "early" 2017 CPUs are supposed to have this issue. According to rumors online. But I had to take everything apart to get this picture to know that fact, so I was nearly committed anyway. I delayed shipping it until the 27th. It was clear that I'd have to wait for shipping in both directions, and processing in between, with no CPU in my server — which holds all my files! I was seriously thinking about buying a new replacement no matter what, and selling whatever they shipped back to me, later.

In researching what exact replacement I would pick up, I discovered both that Microcenter is open (despite global pandemic), and that they had the best priced option. I came very close to heading there to grab one the weekend before I shipped my CPU away. But I realized: I can go visit them any time. I can be patient, and waste money on a new and extra part only if and when it becomes desperate, without much delay. So I took my server apart and shipped the CPU away.

I had the tracking number, which I watched eagerly. It was delivered on the 1st of May, according to FedEx. On the 4th I get an email that the "return processor has successfully passed the inspection and your replacement product is now approved". It's been a full week, but I guess that's good news. On the 5th I get a message that the replacement was shipped. And that's it. No tracking number.

Today, the 11th, the replacement arrived. To my surprise, it's a Ryzen 7 1700. I paid $200 for my CPU just over two years ago. If I look today, the price seems to be $250 (it might be limited old stock making pricing strange, this is an older model now). The newer/better 5 3600 costs just $130. The replacement costs $320 today (the 3700 is also over $300). It's got a slightly lower base clock speed (3.0 vs 3.2 GHz), but eight instead of six cores. And it came in a retail box with new cooler and everything. I was not expecting an upgrade, but for multiple weeks of doing without my server it's a nice perk to have ended up with.

My Custom (Nintendo) Switch

2020-02-09 12:56 - Gaming

I got a Nintendo switch console just under two years ago. I've been loving it. I've also got a huge collection of other video game consoles, and I've been slowly gathering second spare units as well: nothing lasts forever, and I'd hate to find some time down the road that my (say) Super Nintendo has gone bad and it's really hard to find another replacement.

The extra detail with the Switch is that the original units have a built-in hardware vulnerability which makes them trivially easy to hack and thus run anything you desire. I like to mod all my consoles to run whatever I choose, whenever I can. But these early Switch units are becoming more rare and expensive. I watched eBay for a while and finally caught one at the very end of December.

The front view of my custom Nintendo Switch. The backview of my custom Nintendo Switch.

I knew then that it was used with some minor cosmetic issues. Once I got it in my hands they were even a bit more obvious, so I decided to replace some parts to make it new and pretty again. I replaced the plastic shell with this pictured transparent green version. I'm really happy with it. I also took the time to paint the labels on the buttons in white. The cheap kit came with only nearly invisible embossing on the buttons. That was hard effort but well worth it. I elected to not install the metal plate across the main unit. It serves a minor role in heat dissipation, but I believe things will be fine without it, and it makes the transparent back look extra awesome.

While I had it open anyway, I also installed an internal "RCMX86" chip, which makes the unit automatically boot up in completely open and hackable mode. (Otherwise you need to plug something, like the RCM Loader visible in some of these pictures, in each time you turn it on.)

Installing the mod wires. Continuing to install the mod, tweaking the final wires. RCMX86 mod chip completely installed.

Installing this mod was quite challenging! Look closely next to the mod chip in the final picture and you'll see some tiny gold circles (a group of four is somewhat clear). Those are about one millimeter across. A couple of the connections were to "easy" points like those. Others were to significantly smaller points. Some of the super tiny rectangles you can see on the board are resistors and capacitors. The small ones are probably "0201" or 0.02 by 0.01 inches, 0.6 by 0.3 millimeters -- and the pads on either side are a fraction of that! Somehow I managed to get everything connected and functional, and didn't destroy it along the way!

The worst thing that happened was a slip during re-assembly damaging one of the buttons' (ZL) contacts. It's still functional, but takes a little more force than normal and doesn't "click" like it should. A replacement part is on the way.

My Automatic Heater Controller (Thermostat)

2020-02-05 21:03 - Making

Lots of New York apartments are actually too hot in the winter. Steam radiators are common, and they don't offer much control. There's strict laws about lower temperature bounds, but none for upper bounds. And most significant: the building usually shares one control everywhere, but the heat reaches different parts of it differently, and the cold seeps in differently.

In my current place, it's also too hot in the winter. I think that uneven-across-the-building issue is the real one for me. I've heard that other parts of the building are too cold. My heat comes from a forced hot water system, which the building controls. I suppose I'm closer to the feed than other apartments. I've only got standard plumbing style cut-off valves. I can totally disable the heat, but then it often gets too cold. I can enable it, but then it often gets too hot. For a few years I've been hoping to make something to help fix this. The video above is my solution!

I actually got a "test valve" some time ago to play with, when starting this project. My test valve didn't work at all for the project, but I lucked out: the test valve's handle is permanently attached, but my real valve's handle is attached with a hex nut, it's removable. The first part of the project was the handle replacement. It's the round smoky plastic bit. It has a hole in the center that's just the right shape (an eight millimeter hole, but with two sides squared off at six millimeters) to turn the valve. It's got eight small holes around the edges and one late addition hole for a screw to hit the valve's end stops.

Those eight holes are for screws, to attach to the large black 3D printed gear. This is a 180-tooth monster built to fit a GT2 timing belt, as are commonly used in 3D printers. It's big for mechanical advantage. I started with a 30 and 60 tooth pulley (for three and six times advantage). They weren't enough so I got a 20 and a 16 tooth gear, and ended up with the 16 tooth gear, for a slightly greater than ten times mechanical advantage. A straight GT2 belt section was cut to the right length, and belt clamps and tensioner springs turn that into exactly the right size belt for this contraption. The big gear is these two parts screwed together for two reasons. First, it would take a long time to 3D print the whole thing as one part. More importantly: the quarter-inch acrylic plastic is strong enough to turn the valve, but a 3D printed part is not!

That's all connecting my big gear to the small pulley on the end of a stepper motor. This is the first real motorized project I've put together myself, and I was not at all confident. When I spotted the uStepper S product on Kickstarter, I knew it was perfect for this. It's a clever combination of stepper driver, Arduino, and hall effect sensor (which uses a simple magnet stuck to the stepper motor's shaft!) to give it closed-loop control abilities.

The stepper is screwed into another acrylic sheet. It's in slotted holes, which gives me some room to adjust the length. This mounting sheet is mostly zip-tied to the copper heating pipes. But it's also screwed down into the floor, through a brace piece of scrap plywood, to keep it in place left/right. Otherwise the tension of the belt would pull it loose!

So there's a simple control loop running on the uStepper, which accepts commands over serial. It's wired into an ESP8266, which has WiFi connectivity. It monitors the temperature sensors I've already got, and sends commands to open and close the valve based on the current temperature. Simple, now that the mechanicals are all there to support it!

I've gotten this working reliably only recently. My problem is the end stops. Even though I have closed loop control, that only gives me relative data about motion, none about absolute position. The uStepper libraries have a convenient "move to end" feature, but it turns out my system is too mushy. I've got tensioner springs on the belt, which can thus stretch a bit. And worse (I think!) the end stop I've got is just a screw in some plastic, and it's longer than the original steel handle part. It flexes a bit when it reaches the end stop, before it pushes hard enough to actually stop the stepper. When it closes (clockwise motion), you can see a big jump backwards as it stops. (There's a smaller one when it stops going the other direction, I believe this to just be the slack from the springs. I never actually open the valve all the way, it's not necessary and why stress the system more than necessary?) The built in "move to end" feature sees that as constant motion: some of it forwards, some of it backwards, but it doesn't distinguish! I had to write my own routine to detect both a lack of forward motion or backwards motion as the end condition, and then the stepper stops turning.

Now I should finally be able to keep myself comfy over the winter! But even more so in the late fall and early spring, when the building has the heat on, but it's not nearly as necessary.

My Modded Dreamcast

2020-01-26 15:45 - Gaming

I've got a large collection of video game consoles. Building it is something I enjoy. I also both enjoy getting great deals and have great patience. In late 2018 I got a Framemeister device, as part of a lot with other video game stuff. I hardly have any Sega systems but this lot came with a Saturn, in addition to the Genesis (and Sega CD) I already have. So I've been monitoring eBay for some time to get a Dreamcast. Late last month I grabbed a deal: two systems, several games, four controllers (two OEM, two third party) and two VMUs.

One of the two systems works fine, and I've left it as-is. The other was missing its disc cover, and the GD-ROM drive didn't hold (and thus didn't spin) discs correctly. I've modded this second one.

The case of my modded Dreamcast.  The SD card and button for the GDEMU are visible where the GD-ROM should be, with a 3D printed insert to hold them, and fill the hole. The insides of my modded Dreamcast.  The replacement power supply (Pico PSU) is visible on the left.  The black board in the middle is the GDEMU drive replacement, and the 3D printed bracket and insert sits atop that.

It was only the disc drive that was bad on this second unit. I've replaced it with a GDEMU drive emulator. To that I added a 3D printed bracket. This fills the hole left by removing the original drive, and makes the SD card and "eject button" easily accessible. In addition, I replaced the internal power supply with a Pico PSU. I've heard that GDEMU modded consoles have an extra tendency to overheat, and this helps.

This system still looks a little funny without the disc lid, but seeing as that was the only broken part, the GDEMU (which I wanted to add anyway) was a perfect replacement!

Farewell, Tegs

2019-12-11 21:40 - General

Back in late 2004, just after renewing the lease to my apartment (and even though it did not permit cats), I adopted a very fine cat, named Tegs. She's a wonderful pet. Almost exactly two years ago, we (my Mom really, when we were visiting for Thanksgiving) noticed that she was very thin. She's been slowly losing weight, with some periods of stability since then. A few vet visits generally gave me no useful information or treatment. This October I tried a new vet who diagnosed her with nasal cancer, which was described to me as being common for cats. Since then her weight continued to drop and her face swelled terribly. This morning, I cleaned up a particularly goopy face, with pus gathered in both eyes and nostrils.

Tonight I came home, and she was peacefully resting on the floor, not a foot away from her (also, separately adopted) sister. Cold and still. She's passed on, at a few days shy of sixteen years and three months of age.

Below is a gallery of all her best photos, going way back to 2004, with no further comment.

You'll be missed.

Cord Cutting Experiments: Antenna

2019-09-16 23:31 - General

I've been a TiVo user for almost exactly a decade. It's pretty great, but as is it's tied to cable service, because a few years back (and before my most recent (and I'm pretty sure only) upgrade) they split their product line so that the device only supports cable or OTA broadcast, not both. More things are going online only (I'm looking at you, "CBS All Access" locking the new Star Trek behind a $6/mo charge that certainly isn't worth it for one show!) and I'm hearing more and more about "cord cutting". Might it be for me?

My new OTA TV antenna, taped up in the best place I've found so far. The antenna is currently angled off of pure vertical, by resting on a bit of packaging material.

So I got an antenna. Broadcast TV is legitimately free, after all. Free over-the-air TV plus a streaming package or two should be more content than I need, for less than I'm paying now, right?. This is a "Channel Master FLATenna" which is probably just like all the similar "sheet of paper" looking modern digital antennas, but was reviewed well and only costs $10 (plus $10 shipping). I live in Manhattan, so signal coverage should be great, right?

I put it at the very top of my window at first, which was mostly fine, but I couldn't get ABC. I summoned distant memories from my childhood of playing with TV antennas, and started playing with positions. I first tried the wall above the TV because it's an easy location and 90 degrees offset from the window. Then I tried a couple others, including an awkward compound angle hanging across the corner and pointed up, and lots of other similar variations. Blue painters tape and shipping bubbles certainly isn't an awesome permanent solution, but for now it's been useful to be able to move it around for easy experimentation.

Of course with this small indoor antenna, across various locations I can receive more channels than I can get in any one of them. This is the best compromise I've found so far. Here I get all the big national stations (CBS, NBC, FOX, and ABC), plus some more local stations, plus one of the two local PBSes (WLIW yes, WNET no). I spent quite a bit of the weekend popping the antenna into various places, then running scans and checking the signal strength across the dial. Of course the evangelical stations are the only ones that come in super strong regardless of location.

And since we're in the digital broadcast era, each of them come with a couple to several substations. My favorite discovery, which I was previously unaware of, is Quest TV. With shows like Modern Marvels and Factory Made it should be a good stand-in for losing Discovery and Science.

Along the way I've also discovered that my TV has basic PVR functionality built in! It's disabled in the USA (why?) but that can be fixed. It's basic and seems to only work while the TV is on, but it helps evaluate things.

It will require being happy with more SD content, but I can live with that. There appears to be a rather inconsistent handling of 4:3 content, though. Some of it is letterboxed, so should be zoomed. Some is pillar-barred, so should probably be left as is. Some others appear to be anamorphic and require stretching to 16:9. And my Samsung TV at least can't figure this out automatically.

Another pleasantly surprising detail is the availability of program guide data. I've never hooked this TV to the internet. Especially since it sometimes blanks out the video preview, the guide data is clearly coming over the air. I assume there's a standard tied in to digital broadcasting. I'm curious about it but haven't managed to find any clear information about this online yet.

Right now I'm looking at 39 non-junk channels, which is pretty good. What remains is to experiment with some sort of DVR for broadcast TV, and streaming solutions.


New Bed Light

2019-08-01 22:24 - Making

The prototype light above my bed.

After I built the bedsofa, I rearranged the bed and sleeping area around it. It had to go up against a wall to avoid tipping over when I lean on it. But the head of the bed was previously in open space. When I turned the bed, this made the light there, hanging from the wall, end up at the foot. Not a great way to illuminate the area, like for reading.

For a while, I pointed it at the ceiling and lived with the indirect light. The existing fixture won't work well in the new space that I've got. I've looked for fixtures that would work better, and found nothing pleasing. But I also have this strip of LED lights, which I intended to install in my 3D printer. (And, of course, never quite got around to doing.) It puts out a ton of efficient light, even just a small part of the reel I've got. The picture above is the "prototype", just taped to the wall. It's intended to run from 12V (and I picked that because the 3D printer has ample 12V power available).

In bed, I actually want very subdued lighting. A half meter of that LED strip running at 12V is really brighter than I want. I've got plenty of spare AC adapters lying about, but they're all too high or too low. But I also have some spare DC/DC buck converters! So now I've got a 12V AC adapter, into a buck converter that's infinitely variable, with its output powering the lights. I can tune it to the exact brightness I want. Perfect.

Some aluminum channel turns an LED strip into a nifty light fixture on the cheap.

I recently found this ultra-cheap extruded aluminum channel. Pop an LED strip into it and instant light fixture. I got this V shaped version which mounts at a 45 degree angle. I intend to point it towards the ceiling for primarily indirect light.