In last month’s Blog of the Blog, I wrote that I wanted to continue the weekly update series I started in July, although maybe not weekly. I’ve done a poor job following through with that: the last one was posted over two months ago. I’ve done a poor job doing much of anything with this site in the past month — I’ve been busy with so many other things that it’s kind of fallen to the side. But I don’t want to neglect this site! So, let’s catch up. This is what I’ve been up to in the past month.
Pour painting and home maintenance
The first weekend of September our kitchen faucet broke. Over the previous week the sink started losing pressure, but by Saturday it was almost unusable. I was able to isolate the cause to the tubing connecting the faucet to the hot water spigot, which was built into the faucet itself. I tried clearing the blockage, but continued to have low pressure. In addition, a few months prior the button controlling the sprayer had physically broken — you could depress it to engage the sprayer, but it wouldn’t pop back out. The only way to turn the sprayer back off was to hook a paper clip behind the button and pull it back out. Both of those things together compelled me to just buy a new faucet. Installation was pretty easy — the most difficult part was removing the nut securing the old one. I have a basin wrench I bought for some other project, but it was hard to get enough torque with it to turn the nut — I only realized after the fact that you’re supposed to stick a screwdriver or something through the hole at the bottom and use that for leverage (whoops).
A couple weeks after that I had to replace our shower head, too. It started spraying out from where the shower head screws into the faucet. I tried tightening the connection, but ended up snapping the plastic screw part on the shower head — which made it spray even harder.
We also cleaned out the basement one weekend — we actually have some usable space down there again now. I still have six Better Bottles in my trunk because Goodwill wouldn’t take them — I need to remember to list them on Craigslist next weekend.
One weekend, Jami and I tried acrylic pour painting. It was a lot of fun and a good way to spend a Saturday, and some of them came out pretty good, although it was really expensive — we spent over $100 for the initial supplies. We tried a few different techniques we learned from YouTube. I think the “dirty pours” came out best, a technique where you pour all the colors you want into layers in a cup and dump it out onto the canvas.
A couple weeks later we made another set of paintings to give to Jami’s mom for her birthday. Jami tried a technique where you blow through a straw on the paint to create movement which worked well, but was a lot of work.
I was going to build Jami a gaming PC for her birthday in April, but because of the pandemic decided it wasn’t a good time to spend money. I didn’t know what was going to happen to the world in April, or if I’d even still have a job in a month. We’ve been trying to organize some game nights with our friends the past few weeks, but it’s been difficult since we only have a Switch and they have PCs. The only game we’ve been able to play together has been Fortnite — and even then, only one of us, me or Jami, can play at a time. I’m confident that my job is stable now, so it seems like a good time to build Jami’s PC.
Building Jami’s PC
It’s been probably fifteen years since the last time I built a PC — I’ve been using Thinkpads or MacBooks exclusively for the last 10 years. Surprisingly, things haven’t changed that much. I wanted to build an AMD-based system because I’ve always been a fan (that computer I built 15 years ago? Athlon 64) and think they’re a great value compared to similar Intel processors. I wanted a Radeon GPU since they are more supportive of the open source community;1 it should be good enough to play Fortnite at 1080p on max settings. I used pcpartpicker.com to plan the build, and picked parts based on the parameters in their “Excellent AMD Gaming/Streaming Build”, Tom’s Hardware’s “Best Graphics Cards for Gaming in 2020”, and people’s experiences on /r/buildapc.
This is what I came up with:
|AMD Ryzen 5 3600X||$209.09|
|Sapphire Radeon Pulse 5600XT||$322.26|
|ASRock B550 Phantom Gaming AC motherboard||$124.99|
|Crucial MX500 500GB SATA SSD||$57.99|
|EVGA 750 GQ 80+ Gold 750W PSU||$119.99|
|Phanteks P400S midtower ATX case||$82.99|
|2 x 8GB Crucial Ballistix Elite 3600 MHz CL 16 DDR4 RAM||$79.99|
|Total (w/ tax + shipping)||$1056.13|
It wouldn’t post after I first assembled it, and had lights indicating issues with the CPU and RAM. I checked those and they were okay, seated correctly. The issue was that I didn’t connect the CPU and GPU power pins to the PSU. Once I did that everything booted fine and I got Windows installed on it for Jami. She’s been playing Fortnite, Subnautica, and Phasmophobia on it and they all look great — much better than on her 12” MacBook.
Planning my build
Of course now I want to join in on the fun with Jami and my T460 is definitely not up to the task, so I’m planning out a build for me too. And it’s my birthday this week.
My requirements are going to be a little different than hers because I want to use it for games and as my regular workstation for development work. I’m going to be dual-booting Linux and Windows, but mostly hanging out in Linux unless a game will only work on Windows. I care a little less about being able to run the games on the highest settings, so I’m going to shoot for a cheaper GPU, but more RAM and a CPU with at least 8 cores.
This is what I’m thinking so far:
- Ryzen 3700X, unless 3900X gets a nice sale in the next few weeks, with Zen 3 coming early November. The Zen 3 processors look great, but don’t think they’re worth the price jump for what I need — I’ll leave room to upgrade to one in the future when the price drops a bit, and if I end up needing it.
- Radeon RX 5500XT, or maybe an RX 580 or 590.
- A B550 of X570 board with onboard wifi.
- Crucial Ballistix 2 x 16 GB DDR4-3200 CL16 RAM. I picked this up already because Amazon had it at a pretty steep discount. Planning to overclock it.
- 2 x 500GB Crucial MX500 SSD. One for Windows, one for Linux.
- Modular, 80+ Gold 650W PSU.
- MicroATX mid tower case. The only thing I’d change about Jami’s build is that it’s too freaking big.
Updates as I’m editing this later, the next day: I ended up buying a PowerColor Radeon 5500XT from Prime Day; an Asus “TUF GAMING X570-PLUS” board (it’s advertised as having “military-grade TUF components” and looks gaudy as hell, but it was the cheapest X570 board with decent reviews and wifi, and NewEgg had a good sale); and a 750W 80+ Gold EVGA PSU that was on sale at NewEgg for $99.
I’ve also been learning Elixir and functional programming. I’m about two-thirds of the way through Dave Thomas’s Programming Elixir 1.6. I’m also working through exercises on exercism.io, which I’ve never used before. It’s a cool platform for learning a language. In the past I’ve used Advent of Code problems to wrap my head around a new language; Exercism gives you similar kinds of problems, but your solutions are submitted for review by volunteer “experts.” It’s very helpful to get feedback on your solutions from people more knowledgeable, especially when you’re learning a whole new programming paradigm in addition to the syntax and idioms of a new language. I wish the site had been around when I first started learning to program — I probably could have quickly learned a lot of things it took me years to figure out on my own.
Anyway, I got hyped on Elixir because of LiveView (web apps without React!) and Saša Jurić’s talk “The Soul of Erlang and Elixir”. I haven’t started any real projects with it yet, but I’d like to try to make a clone of TiddlyWiki once I finish Dave Thomas’s book. So far though I’m loving the idioms of the language and the functional paradigm — pattern matching causes a complete shift in the way I think about writing programs.
Working with ECS
At work we’ve been in the process of migrating our applications from bare EC2 instances to ECS. I’ve been spending a lot of time getting our ECS cluster autoscaling working correctly. We’ve been noticing that scaling takes a really long time — one day a couple weeks ago, after we created a new autoscaling group for testing, it took over two hours to scale from 0 instances to our baseline capacity of ~40. Something was not right there, so I’ve been digging into that to understand it better. In the process, I’ve found and fixed a few different issues with our setup — the biggest one being that we had a capacity provider attached to the cluster, but we didn’t have any services using the capacity provider. This was causing a lag of about 8 minutes between each EC2 scaling event in the ASG. Because the services were all using the EC2 launch type, as soon as a new instance appeared in the ASG they would all try to place a task. Only a small subset of them would succeed before capacity was reached. Because capacity was reached the ASG would spin up a new instance, but services which failed to find an instance would wait 7.5 minutes before trying to place a task again. No new instances would spin up in that time because the CapacityProviderReservation metric never exceeded 100 — because the services weren’t tied to the capacity provider, the capacity provider didn’t know about those tasks.
Last month I wrote about some things I’d like to do with this website:
- Continue making blog-style update posts, like this one;
- Improve content organization — make it easier for readers to find things they want to read;
- Update the styling to separate the header of a post from its body;
- Consistent style guide — are titles capitalized or not?
- Improve CloudFront’s caching behavior so requests hit the cache (I had a high miss rate the month before).
I did put some effort into improving the look and the readability of the website in the last month. To distinguish the header of the post from its body I modified the styling to italicize subheadings, and I added more padding between the navigation bar at the top and the content. I also worked on optimizing images and making them more accessible — they all have captions and alt-text now. I experimented with other typefaces too, but ultimately I decided shipping a font goes against the values and intentions of this site, so I reverted to the system sans-serif fonts it’s using now. Speaking of which: I updated the about page with some principles that I want to use to define what I’m doing here.
I think I fixed CloudFront caching too, but I don’t remember, and I don’t really care enough to check right now — I’m going to check on the site metrics again soon anyway, so I’ll take care of that then if I didn’t already.
I do want to keep making these blog-style posts, although more frequently so that I don’t have to recall and type out a month’s worth of updates like I’m doing here. I don’t know if these are interesting for anyone else to read, but I find them really helpful just as a way to reflect, synthesize, and understand what I’ve been up to. I also feel like this kind of writing and thinking may just make life a little slower and a little more satisfying. So much of my life seems like a blur — taking the time to stop and reflect on what I’ve been up to really helps to cement those experiences into something that I’ll remember longer. I only have one life to live; I’d like to remember as much of it as I can.
So, following in last month’s footsteps, here are some more things I’d like to do with this site:
- Continue writing posts like this. Like I said, I think they’re mostly for my own benefit. But maybe someone else will find them interesting too; and I don’t think I could motivate myself to write in a private journal.
- Automate reporting — Rather than “blog of the blog” posts, I want a dashboard that shows overall and monthly view counts for posts. That’s really the only metric I care about.
- Comments / some way to interact with me. First step may be an email address; I’ve also seen some other blogs on HackerNews that implemented a comment system using GitHub issues, which seems like a neat idea.
- Gopher? I like the idea of Gopher a lot, but haven’t used it much. I don’t know how much work this would be.
One thing I am going to do (like, I’m doing it right now, before I even publish this): open GitHub issues for all of these ideas so I can track them more easily.
That’s all folks
Sorry for the huge post. We’re living in strange times, and, like I said, writing is therapeutic. Indulge me. See you all later.