Disquisitions

Disable the Firefox Tab Manager

November 10, 2022

Did you recently update to Firefox (or Librewolf) 106?

Do you use Tree Style Tabs, and hide the normal tab bar?

Did you notice an inverted caret (ˇ) that restored the height pixels of the hidden tab bar? (alt text for this caret labels it "list all tabs")

Did it annoy you that you can't remove that button, even in the "customize toolbar" view?


Optimizing a Jekyll Blog Containing Lots of Images

October 21, 2022

This website features blog posts with many images -- often more than 20 per post!

Meg and I take a lot of these pictures on bike trips. Frequently with a fancy mirrorless Sony camera. They can be pretty large. But they're also frequently very pretty. Neither of us wants to shrink the images into oblivion.

I used to host those chonky images directly in my Jekyll blog, via the _images subfolder.

Eventually my site's GitHub repo ballooned to over a gigabyte in size. I know you shouldn't host blobs in source control, but... GitHub doesn't seem to care if your repo is a little big. And it's the cheapest blob storage out there, at a grand total of $0 for a half decade of usage.

But all good things must come to an end, and I started to get worried about the long-term scalability of my blog. Deployments for GitHub pages, which I use to host my site, crept above 10 minutes.

Even worse, I knew my pages weren't respectful of user data connections. Opening one of my blog posts with 20+ images in it resulted in a 200MB download. That's $2 on my Google Fi metered data plan! For one page!

So I decided to solve the problem. I attacked it from multiple angles:

  • I moved images out of my Jekyll GitHub Pages blog, and purged the blob files from the repo's history.
  • I created a new repo, images, with one purpose: hosting blob files.
  • I set up a GitHub Action that automatically generates thumbnails of all image files uploaded to the image repo.
  • I overhauled my blog site to download only those thumbnails on page load.
  • So users can still view images in full resolution, I set up the thumbnails to directly link to GitHub's raw user content API... to show the full image.

If you:

  • would like to set up thumbnails for your own GitHub Pages-hosted Jekyll blog
  • are just morbidly curious about the kinds of Rube Goldberg machines I assemble when I should be Halloween party planning

read on.


You Don't *Have* to be a Developer

September 13, 2022

I originally wrote this post a short time into my first tech writing job on MongoDB's Server Docs team. I never ended up sharing it because, for a while, I wasn't sure if I would end up staying in the docs world or switching back into software development.

Less than a month ago, I got a new job running documentation at Gradle. My experience as a Developer Educator for MongoDB Realm Docs convinced me that documentation can scratch all of my developer itches -- building automation, infrastructure, and writing tutorials and code snippets.

I've added some thoughts at the end of the post and tightened up some language. But this post largely reflects my thoughts on working as a documentarian very early in my transition from software development. If you're currently pursuing a computer science degree, or attending a coding boot camp, or working as a developer, and it's not completely satisfying... maybe this will help.


Natopia

September 12, 2022

Over the past few years, I've slowly tried to reduce my dependence on big tech. I know this is popular in some circles right now, and I've made all the standard moves:

  • remove myself from Facebook and Instagram
  • migrate my personal email from Gmail to Protonmail (update: now trialing Purelymail)
  • reduce subscriptions to music and video streaming services across the board
  • start a blog where I can shamelessly rant and rave about cool things I've done

But why did I do this? Not (just) because I love to chase the latest technocrat trends. Honestly it's mostly because I hate feeling dirty when I use these services:

  • When I used Spotify, I was constantly frustrated by regressions and podcasts shoved in my face (despite the fact that I cannot stand Spotify's approach to podcasts, where they buy up exclusive distribution rights to a family of podcasts and turn them into... Spodcasts, which aren't really podcasts because they aren't distributed the way all other podcasts circulate: RSS). And their offline playback support is laughable.

  • Google services constantly misbehave when you use Firefox or Librewolf, my browsers of choice.

  • Newsletters constantly send spam mail, and are often much harder to fully unsubscribe from than an RSS feed.

  • iOS still doesn't support ad blocking anywhere near the level of uBlock Origin, or allow me to use real add-ons in a browser... prompting me to find alternative methods to block ads on my phone.

And every tech company I've ever bought any product from seems to abuse dark patterns to manipulate users out the wazoo. All in the name of getting you to buy one more thing, or look at one more not-really-notification. Weak.

This post talks about how I freed myself from a myriad of big tech services, all with the support of a small investment in hardware, electricity, and personal time. I call my open source confederation of services Natopia, because, well, narcissism.

NOTE: Literally all of this is a work in progress. Open source projects continually develop. Standards change. This all works right now, but there are many pieces I'd like to improve. Expect updates to this page over time.


IDID-3210

September 11, 2022

Recently I made the mistake of attempting to log in to my Spectrum account. As a conscious human being with not-so-fond memories of Time Warner Cable, I'm aware that using Spectrum for internet is a fool's errand. But I have no choice in the small New England town that I now live in. Thanks, FCC.


Make a Bootable USB in macOS

January 28, 2022

This post explains how to make a bootable USB drive for installing Linux, macOS, Windows, or... whatever else you want. From macOS. Using the command line, mostly. And unlike every other article on the internet that explains this concept on the internet, it's not blogspam, it's not filled with ads, and it's not written in broken English or with so much fluff you give up halfway through.


The Hitchhiker's Guide to Kotlin

December 11, 2020

Lately I've been doing a lot of work in a relatively new programming language: Kotlin. From my experience, I've concluded that Kotlin is pretty rad. If you've considered learning Kotlin, or just using it in a personal project, this post might help you with your decision. Below, I hope I'll (attempt) to tell you a little bit about my experience with Kotlin, and describe what I liked about Kotlin and what I didn't like.


Site Redesign!

November 30, 2020

When I originally created this site, I had no clue what I was doing. Some friends told me I should think about creating a personal website, and I thought it would be fun to write a few blog posts. So I threw together a few basic styles with GitHub's static site generator, broke Jekyll a few times, and eventually figured out how to get things working!


Five Months with the 15-inch 2017 MacBook Pro

March 14, 2018

I have now spent about five months with a work-supplied Macbook Pro 2017, complete with discrete GPU and the infamous TouchBar.

So far, my experience has been... well, I'll get to that eventually.


Peter Kovak' *Flash Boys: Not So Fast*

January 24, 2018

Last week, I read Michael Lewis' Flash Boys. I was unimpressed. I had quite a few complaints, all of which you can read about in my post from last week. If you're looking for a summary, however, it boils down to this: Flash Boys was bad enough that I decided to read a book that is literally just a rebuttal to Flash Boys from the perspective of a former high frequency trader -- one of the many that Michael Lewis didn't bother to interview for his book.


Michael Lewis' *Flash Boys*

January 18, 2018

Just last week, I finished reading Flash Boys, written by Michael Lewis. This book can be summarized pretty easily by a single statement: "High Frequency Trading".


Looking Forward to 2018

January 03, 2018

It is now 2018, and I've been thinking about what I intend to accomplish this year. I've never been one to embrace New Years resolutions or anything like that, but I do appreciate the value of outlining some goals for the year, however inconsequential.


Reflecting on Six Months at Bloomberg

December 18, 2017

I'm an adult now -- at least, that's what they tell me. I've been working as a ssoftware developer here at Bloomberg for almost 6 months now - I started June 19th, so it's actually 5 months 29 days today. Since it's the end of the day and programmers start counting at zero, let's just call it 6 months and be done with it.


Why "Lambda Lovers?"

February 25, 2017

Since I created this site, I've received many questions about the name. As a result, I've created this blog post to try to address the issue. In short, the name of this site stems from Alonzo Church's Lambda Calculus. Lambda Calculus was a highly influential mode of computation invented in the 1930s that eventually influenced a great deal of programming. This is most obvious in the form of the Lisp family of languages, where lambda functions have been present from day one, and where the very structure of code is based off of lambda calculus. However, the Lambda Calculus has now managed to seep into other programming styles-- most famously, C++ and Java have variants of lambda functions.