Thanksgiving ruminations

It is Thanksgiving. It is a strange Thanksgiving — my first without my mom. Not the first I’ve ever not spent with my mom; for many of my adult years we would spend the holiday with my wife’s larger family, until that Thanksgiving 13 years ago that was the first without her mom.

It’s the first Thanksgiving I can’t spend with my mom, because she’s not here anymore. And it’s not something we’ve had the majority of a year to prepare ourselves for. She’s been gone for precisely 56 days. Enough time for it to become a familiar daily fact of life, but not enough for us to know what to do with the information, much less what to do with ourselves on a holiday we are used to spending together.

Thanksgiving has always been a rather strange holiday, the one most singularly centered around food. Particular types of food that, for the most part, we only consume as part of this annual ritual. It’s a strange ritual, too, reinforcing the simplistic, sanitized version of our (white America’s) history. But I suspect that my family is far from unusual in focusing very little on that history, one way or another, and instead turning towards the activities in the kitchen, accompanied by a soundtrack of parades, dog shows and football, emanating from the TV in the next room.

When we shifted to spending almost every Thanksgiving with my family — many years spent at holiday rentals on Lake Superior’s North Shore, just before heavy winter weather sets in and the trip would be more adventure than my parents would be willing to undertake — I became self-appointed head chef, attending to the turkey, the gravy, and a green bean casserole stubbornly made from scratch. It was my way of giving to those I love, but it was also my way of coping, as an introvert who often needs to flee for some alone time, even amongst close family.

Things in the kitchen always seem to culminate in a moment of peak chaos, as the preparation of all dishes is timed to coordinate with the turkey emerging from the oven. Gravy, by necessity, comes last, made from collected pan drippings as the turkey rests in its foil tent, awaiting the big show. But often there’s still a mad flurry of activity around potatoes, stuffing (which never lives up to its name in our House of Perpetual Fear of Food-borne Illness), and assorted vegetable side dishes. Things got even more chaotic when Sara and I became vegetarian — well, pescatarian, but we only eat seafood 0-5 times a month — and I needed to start making our vegetarian mushroom gravy in addition to everything else. (We don’t faff around with vegan loafs or anything like that. We just make sure that all of the sides that call for broth use vegetable broth, and we’re good. We’ll often have a small piece of turkey but honestly, for us Thanksgiving dinner has always been about the sides anyway!)

Sara has dubbed me the saucier for my (semi-)expertise in the realm of gravies and sauces, and it is true I do take great pride in delivering a perfectly smooth, rich and flavorful gravy to the table. I never forget the first time I made Thanksgiving gravy, in 1999, the year we hosted both of our sets of parents — all four of them, still alive and well — at our one-bedroom, garden level apartment in Uptown Minneapolis. I didn’t know what I was doing, and the gravy was a lumpy disaster I tried to salvage by running it through the blender.

Since that time, I truly did get the knack for making gravy. First, you’ve got to know your proportions: n tablespoons of fat, n tablespoons of flour, and n cups of liquid. For Thanksgiving, n = 4. Melt the fat (butter or skimmed from drippings), stir in the flour and mix until completely combined, and then gradually add the liquid (drippings or broth), about 1/4 cup at a time, constantly whisking until everything comes together before adding more. Along the way, “everything together” gradually changes from the consistency of cookie dough, to paste, to thick cream, to smooth liquid. Once all of the liquid is added, you keep it at a low boil and continue to stir constantly until it’s the desired thickness. Oh, and there’s another trick: in addition to adequate seasoning with salt and pepper, and other herbs if desired, around halfway through the final thickening process, also whisk in around a tablespoon of tomato paste, ketchup, or my personal favorite, Heinz chili sauce (which really is just a more “rustic” ketchup). It adds a bit of color, a slight tang, and helps the gravy to thicken up. Just be sure you whisk it in completely. But the key above all else is that bit in bold.

This year we weren’t sure what to do for Thanksgiving. We’re spending it with my dad, of course, but he’s not comfortable driving in the metro area anymore, so we’re going to him. We didn’t want to cause stress for him with a bunch of dirty dishes (even if we do all the clean-up) and many hours of chaos in his apartment kitchen in Rochester, so we decided to cook the whole meal a day ahead. (Although in the end it was only about half of the meal, and we’ll finish the rest in Rochester today.)

Cooking Thanksgiving dinner when you have an entire day wide open, and no need for everything to come together at once, is a transformative experience. Each dish could receive undivided attention. It also was a chance for some personal reflection, on a day when I really needed it. First up was my 100%-stubbornly-made-from-scratch green bean casserole. Next, I took a break to enjoy the unusually warm weather with a run while Sara made the apple pie.

Once I was back in the kitchen, it was time for my mushroom gravy, and I have to say, it is quite possibly the best mushroom gravy I have ever made. It’s amazing how good a gravy can be when you’re able to give it your undivided attention. I gently cooked about 6 oz of thin slices of mushroom — heavily seasoned with Trader Joe’s “Green Goddess” seasoning blend (mostly garlic and onion powders with dried spinach [!] and parsley, and lemon peel) — in a half a stick of butter until they were very soft and just starting to caramelize a bit on the edges, then I added 1/4 cup of dry white wine — a Sauvignon Blanc from New Zealand, my personal favorite — and let that cook off. Next up came 4 tbsp flour with a dash of McCormick “Poultry Seasoning” (which I think is nutmeg, sage, marjoram, thyme, maybe oregano?), followed by the gradual addition of 4 cups of vegetable broth, and of course later a dollop of Heinz chili sauce. It wasn’t anything radically different from what I always make, but sitting there stirring it gently and giving it my undivided attention for 20 or so minutes, really made a difference.

Yes, I said “sitting there.” By this point late in the afternoon, I was sitting on a stool at the stove, because my plantar fasciitis was acting up from a day on my feet. It’s something I’ve been struggling extensively with all year, after a day this past spring, when my anxiety over the return of my mom’s cancer, and our ambivalence over having urged my parents to sell their house — a constant source of stress in recent years — and move into an apartment, filled me with an impulse to organize my stacks of storage bins in our basement, and I spent an entire day standing in sock feet, shuttling bins up and down from the basement to our dining room. My left foot was destroyed after that day. It took months to get back to pain-free running, and I now need to wear heavy-duty Dr. Scholl’s insoles in all of my shoes, including an old pair of running shoes that have now become my indoor “slippers” that I need to have on my feet pretty much any time I’m not lying in bed.

It’s been a strange, difficult year, stacked on top of a string of strange, difficult years. My mom was initially diagnosed with stage 3 lung cancer at the beginning of 2019, and after a couple of months of brutally taxing proton beam treatments at the Mayo Clinic and lingering side effects (the treatments essentially fried her esophagus), she was mostly back to her old self by the end of the year. But then covid hit, and we only saw them in person twice after March 2020, even though they just lived 70 miles away. By the time we were all vaccinated in 2021, regular visits returned, but so did my mom’s cancer. Another brief round of proton beam treatments, plus a completely unrelated skin cancer on her nose, which required a skin graft from her forehead, and all of us learned just how weird and complicated the recovery process for something like that can be. She made it through that too, stronger and more determined than anyone — most of all herself — believed she could be. But 2022 began with more cancer, more treatments, and then eventually, no more treatments.

August and September were particularly difficult. She started to use a walker around the apartment, and after a couple of late-night falls, and her right lung filling with fluid (a symptom of the metastasized cancer), she spent her last 6 weeks in the hospital — most of those in Lake City, an hour away from home, because Mayo seems to need to shuttle off its long-term hospitalized patients to far-flung outposts rather than keeping them in Rochester, followed by 4 — in retrospect, mercifully brief — days in hospice in a mediocre nursing home (chosen because it was available and her insurance-approved hospital time had run out) a couple of miles from their apartment.

Rochester, Minnesota is an interesting place to observe the best and worst of the American medical system. In the Mayo Clinic it has world-class medical technology, and the best experts you will find anywhere. For almost any type of medical treatment you may need, there is scarcely any place in the world where better care is available. And yet, if you are a U.S. citizen trapped in our byzantine insurance and medical billing system, it can be an absolute nightmare. Fortunately for my mom, her working years came at a time when someone in a fairly low-level clerical office job could still make a career, retire after 30 years at a reasonably young age, and live out their days with a guaranteed pension and comprehensive health insurance coverage. Cancer didn’t bankrupt her family. Still, in the end, the best medical treatment in the world was only able to give her a couple of extra years. Eventually a day comes where the treatments end, the breathing ends, and those concerns float away with the wind.

But it’s difficult, as one left behind, to spend more than a few scattered moments reflecting on what was, and what was lost. There are arrangements to be made, bills to be paid, documents to get notarized, phone calls, letters, emails, files to organize, the pointless busy work of a society where every moment we’re drawing breath, and fair bit of time on either side of that, is a business opportunity for someone.

So where am I going with all of these ramblings? Do I have a point? Does any of it? Life is a series of moments, and the meaning is what we find in them for ourselves. Sometimes I just want to take a “time out” and try to set a few of these moments into something more permanent.

And what’s more permanent than a blog post?

A lament for a lost video gaming era

For a long time I have been lamenting why computer games aren’t like the ones I loved to play in the late ’90s/early 2000s… games like SimCity 2000 and Age of Empires. Even the über-nerdy version of Scrabble I had on my computer back then, with tournament rules and rankings, etc.

Oh, the descendants of those games certainly exist, but they have lost all of the things that made them interesting to me. And there are no new games that really capture that spirit effectively anymore. (Even the new ones that ostensibly try to evoke that spirit… don’t. At least not for a purist like me.)

Finally today I realized why. Because back then the video game market was way smaller than it is now, and it only catered to hardcore nerds like me. These days, it’s so much bigger, and so much broader, that there’s (comparatively) no money to be made on the types of games I liked back then.

And the real tragedy for me is that I can’t even play those games I loved anymore, because I don’t have any hardware that can play them. There’s emulation, but these games seem to exist in a technological gap. Emulators are great for even older games, mostly console games, but I haven’t really been able to find a decent way to emulate these games that required more computing power. Then again… maybe I just haven’t been trying hard enough.

The Raspberry Pi Arcade Project: An Interlude

I’m currently at Part 8 of my Raspberry Pi Arcade project. That is, my own Raspberry Pi Arcade project is at the point of what I have planned as part 8 in the blog series. The blog series itself is stalled out after Part 3. And while the risk of getting too far ahead of myself is there — I don’t keep copious notes, so by the time I write a blog post my own project is so far removed from the topic of that post that I may forget key details — the real threat to the project is coming from what I’m experiencing around my own “Part 8”: polishing the user experience.

I’ve come to realize that while the Raspberry Pi is unequivocally an awesome piece of technology — a complete computer that fits in an Altoids tin, runs on a cellphone charger, plugs into your TV and costs less than $50 — it’s not a powerful computer.

Yes, I always knew it was not a powerful computer. And for a lot of applications it doesn’t need to be. But the main thing you gain by sacrificing that power is its diminutive size. It fits anywhere.

The thing is… for some applications you don’t need a computer to be tiny. And if there’s any application where you can afford for your computer to be huge, it’s a full-size arcade cabinet. I originally had visions of opening up my X-Arcade Tankstick and mounting the Raspberry Pi inside it. That would be cool — amazing, in fact — if I weren’t also mounting the Tankstick onto a full-size cabinet.

So… as I struggle with tweaking settings in my advmame.rc configuration file at the command line, trying to eke every last bit of processing power out of the Pi just so it can render simple early ’80s video games at full screen, I begin to wonder why, and whether or not it’s worth it.

Clearly my emulation dreams would be better served by powering my cabinet with a more robust PC. And the whole thing would probably be a lot easier to set up.

But as I stayed awake last night until well past 1 AM, sitting in front of my living room television, typing arcane commands on a black screen in that classic ’80s DOS font, I realized that this experience is part of what it’s all about. Not just having an arcade cabinet, but hardcore geeking out on Linux. Using a computer the way I used my first computer back in the 1980s.

As much as I’ve embraced the “it (usually) just works” ethos of iOS and modern mobile computing devices, app stores and touchscreens and nary a file system or command line in sight, sometimes I miss computing the old way, when it was a tinkerer’s hobby.

That’s what the Raspberry Pi Arcade project is really about. And maybe it will be the stepping stone to even more creative electronics projects with the Raspberry Pi as their brain. I could see, at some point in the future, replacing the Raspberry Pi in my arcade cabinet with a more powerful PC running Ubuntu Linux, and finding a new, even crazier project where the Pi would be right at home.

The Raspberry Pi Arcade Project, Part 3: Get Raspbian

Now that you have your Raspberry Pi and assorted accessories, it’s time to get it up and running. The Raspberry Pi doesn’t have a hard drive… that’s what the SD card is for. The Raspberry Pi includes an ARM CPU, so in principle any operating system that has been ported to the ARM architecture should be able to run on it.

In practice… I’m already in over my head trying to explain CPU architectures. But you don’t need to know anything about that to get your Raspberry Pi running. Several “flavors” of Linux have been ported and modified specifically to work well with the Raspberry Pi but the gold standard is Raspbian, a variant of the popular Debian distro, and the preferred choice for starting out on the Raspberry Pi. If you really know what you’re doing and have very specific requirements, other OSes may be preferable over Raspbian, but if you just want to get your Raspberry Pi up and running with a stable, easy-to-use Linux, Raspbian is the way to go.

Get Raspbian

The first step in setting up Raspbian is to download it. This of course assumes you have another computer to download the disk image to. Any Windows, Mac or Linux PC should do. The key is having a PC with an SD card slot, because you’ll need to use it to get Raspbian onto the SD card.

If you don’t have a PC with an SD card slot, or you just don’t want to mess around with it, you can buy an SD card preloaded with Raspbian for not much more than the cost of the card itself. Note that the preloaded SD cards are probably only going to be 4 GB however, not the 16 GB card I recommended in Part 2 of this series.

Assuming you’re going to install Raspbian yourself, the first thing you need to do is download it. This download link includes a few other options for different OSes that will also work on the Raspberry Pi, so if you are inclined to ignore my advice, check them out!

Install Raspbian on Your SD Card

Once you have Raspbian downloaded, you’ll need to install it on your SD card. The process for doing this varies depending on whether you’re on Windows, or using a UNIX-based OS like Mac OS X or Linux. More detailed Windows instructions are available on the download page I linked to above. Being a die-hard Mac user, I am going to describe the Mac/Linux process, which I recommend doing at the command line.

1. Insert the SD card into your SD card slot.
This should be fairly self-explanatory. On most MacBook Pro’s the SD card slot is on the side near all of the other ports; on other Macs like my Mac mini, it’s in the back. Not all Macs have an SD card slot, e.g. the MacBook Air. If your computer doesn’t have an SD card reader, USB add-ons are available.

2. Open Terminal and become a superuser.
If you’ve never used Terminal before… well, to be honest, if you’ve never used Terminal before, this whole project is going to be a bit of a challenge. But solider on! Terminal is located in your /Applications/Utilities folder. It’s your way to access the command line on the Mac. You’re going to be doing some things that require root (“superuser”) access. The “safer” way to do this is to prepend any of those commands with sudo but I prefer not to mess around with that. Type sudo -s Enter to enter superuser mode. Note the command prompt will change from $ to #. Now you can do some real damage. Consider yourself warned. (And do not, under any circumstances, type rm -Rf / ever. For real.) Proceed at your own risk, or just prepend commands with sudo along the way if the system says you don’t have permission.

3. Identify your SD card in the filesystem.
In Terminal, type df Enter. You’ll get a list of all of the disks (“volumes”) on your Mac. You’re looking for the SD card. The name it displays in the Finder will be shown in the far right column, “Mounted on”. But you need to know what its name is in the “Filesystem”, the far left column. On my Mac mini it comes up as /dev/disk2s1. You don’t need to worry about the s1 part; that’s the partition. We just need the disk number, e.g. /dev/disk2. Make note of this for future reference. Now you need to unmount the volume so you’ll be able to write to it. Take a look at the disk name under “Mounted on” (starting with /Volumes/). Type umount -f [disk name] Enter, replacing [disk name] with exactly what was listed under “Mounted on.” Important: if there are any spaces, you’ll need to edit the name and put that portion, between slashes, in quotation marks. For example, if the name is /Volumes/My Awesome SD Card you’ll need to type umount -f /Volumes/"My Awesome SD Card" instead. And if this doesn’t work, check here for another tip on unmounting the volume.

4. Identify your Raspbian disk image.
Now you want to switch to the directory where your downloaded Raspbian disk image is. This is likely to be the Downloads folder in your home directory. If so, then in Terminal you’ll type cd ~/Downloads Enter. Then type ls -al Enter to see a list of the files in this directory. You’re looking for one with a .img file extension. In my case it’s 2013-02-09-wheezy-raspbian.img. If you don’t see that, but you see something similar with a .zip extension, you just need to unzip it. Type unzip [filename] Enter (using the real filename, of course) and then type ls -al Enter again, and you should see another file with the same name but ending in .img. That’s the one.

5. Write the image to the SD card.
Now that you know the name of your Raspbian disk image and the disk you’re writing to, you can run the dd command to copy the image over. This command includes a lot of different options for setting the block size, etc. The kinds of technical details about computers most of us haven’t thought about since the early days of MS-DOS, if ever. In my experience these settings don’t appear to matter here, however, as I was able to prepare my SD cards with only the basic parameters of if (input file) and of (output file). Here’s the command I would use in my exact situation. Adjust your if and of according to your results of steps 3 and 4 above.

dd if=2013-02-09-wheezy-raspbian.img of=/dev/disk2

Then hit Enter and… wait.

And wait.

And wait.

This is the command line. You will get no feedback that any progress has been made, or that anything is happening at all. So just leave Terminal open and go about your business. Some substantial amount of time later (in the realm of a half hour, in my experience), the process will have completed, and you’ll get your command prompt again. That’s how you know it’s done. Now, go back to the comfortable confines of the Finder and see if the SD card is showing up as a mounted volume. If it is, eject it. Now you can take out the SD card and insert it into your Raspberry Pi. You’re ready to power up!

Next time… powering up your Raspberry Pi with Raspbian for the first time.

Update (11/29/2022): This is mainly for my own future reference, but you can get a status update during the long wait by pressing Ctrl-T.

The Raspberry Pi Arcade Project, Part 1: Introduction

If you’re bothering to read this, I probably don’t need to explain either the Raspberry Pi or emulators (specifically, MAME and Stella), but for the sake of completeness, I will.

Raspberry Pi

The Raspberry Pi is a tiny, inexpensive Linux-based computer that, after years of anticipation, was finally released to the public last year. It’s designed to be versatile and to encourage creative, educational programming and electronics projects.

Emulation Software

Emulators are software programs designed to run on modern computers that emulate the physical hardware of older, simpler video game and computer systems. When combined with ROM files, the programs that ran on those old systems, it is possible to play near-perfect recreations of those classic games on modern equipment.

Of course, while the emulators themselves are (usually) perfectly legal, there is a (charcoal) gray area of legality regarding the distribution and even the possession of these ROM files. Legally, you should only possess ROM files for games you physically own. In the case of home video game consoles, that would be the original cartridges or disks. For arcade games, that would be the actual hardware cabinet with all of its electronic guts… or, at least, the ROM chip from said cabinet that contains the actual game program. (I do actually own an original Asteroids arcade cocktail table, and a very large collection of original game cartridges for the Atari 2600, 5200 and 7800; the Intellivision; the Nintendo Entertainment System [NES] and others. These will be the focus of my efforts with this project.)

There are numerous emulation programs, representing dozens of arcade and home video game systems, and most have been ported to a variety of different modern platforms, including Windows, Mac OS X and Linux. My interest primarily lies with the classic games of the late 1970s and early 1980s; specifically, arcade coin-op games which are emulated by the Multiple Arcade Machine Emulator (MAME) project, and the Atari 2600 which is emulated by the Stella project.

One of the dreams of many aficionados of early arcade games is to own a “MAME cabinet” — a real arcade game cabinet (or modern recreation thereof) with a modern PC and display inside, programmed to work with an arcade-style control panel, and loaded with emulation software.

The Project

I’ve wanted to build a MAME cabinet for years. The biggest hurdle for me has been a willingness to dedicate an expensive (or even semi-expensive) and significantly overpowered PC to use solely as the “brains” of such a cabinet.

I’ve also been interested in the Raspberry Pi ever since I first heard of it. The idea of a credit card-sized Linux computer that could be embedded in a creative electronics project sounded amazing! But possessing a woeful lack of knowledge of the circuit board-level details about electronics, and being equally woefully inept at either soldering or construction, I wasn’t sure what I could really do with it.

But then it hit me… I could build a MAME cabinet! What’s really great about attempting a project like this today is that you don’t really need to solder or build anything. The X-Arcade Tankstick is an (almost) plug-and-play, arcade-quality control panel, and the Xtension Arcade Cabinet is a prefabricated arcade-style cabinet designed to work perfectly with the Tankstick, the PC of your choice, and a 22-inch TV or LCD monitor to create a MAME cabinet that’s still a fun DIY project without requiring the same levels of skill that have previously made this kind of thing unapproachable for me.

The Road Map

I am already well underway with this project, but from the beginning it has been my intention to create a series of blog posts detailing the process, so others who, like me, have an intermediate-or-better level of knowledge of command line Linux; a rudimentary understanding of electronics — at least, which plugs go into which ports; and above all a deep and abiding love of classic ’80s video games, can make this kind of thing happen.

I owe a huge debt of gratitude to Shea Silverman, who is several steps ahead of me in working with and blogging about using the Raspberry Pi for emulation, but whose blog posts come with a tad steeper of a learning curve than what I am hoping to lay out for the readers of these posts. I’ll tell you what I think you need to know to make this stuff work, but for a more in-depth exploration of the details, please check out his blog.

Now then, here’s an outline of the posts I intend to include in this series. (I’ll update this page to make each a clickable link as the posts get published.)

Part 1: Introduction
Part 2: The Essential Gear
Part 3: Get Raspian
An Interlude
Part 4: Up and Running with Raspbian
Part 5: Emulator Set-up — Stella
Part 6: Emulator Set-up — MAME
Part 7: Configuring the X-Arcade Tankstick
Part 8: Polishing Your User Experience
Part 9: Preparing the Cabinet
Part 10: The Finished Product