The impetus for this post was my recent realization that I’ve developed an involuntary reflex for spotting AI-generated content. The tells are subtle now, but (sadly? tellingly?) this sort of content is seemingly everywhere now once you start looking. The Rise of AI Slop One bit of hipster cred I get to claim is that I followed Simon Willison...
Recent advances in LLMs have demonstrated increasingly powerful reasoning capabilities, primarily through eliciting chain-of-thought outputs from models. While these methods have proven effective, they rely on discrete, tokenized representations of reasoning steps. A recent research paper from Meta introduces a novel approach that steps away from...
I lived in the Eastlake neighborhood of Seattle for several years. Eastlake, by its name, sits on the east side of Lake Union. As a runner, I spent many mornings running along the lake, passing by the South Lake Union Streetcar. Each time I ran past the streetcar, what consistently struck me as odd was that the streetcars were almost always...
I haven’t been writing much recently (sound of crickets coming from this year’s blog archive), but this is such an OnBrand™ post that I couldn’t not write it. At work, I’ve been shifting into more of a TL role, and as such I’ve been tracking an increasingly large number of streams of information. We use JIRA for bug/feature level work, but a lot...
I’ve been in a mode of trying lots of new AI tools for the past year or two, and feel like it’s useful to take an occasional snapshot of the “state of things I use”, as I expect this to continue to change pretty rapidly. Claude 3.5 Sonnet (via API Console or LLM): I currently find Claude 3.5 Sonnet to be the most delightful / insightful /...
I’ve recently been contemplating a recurring pattern that I’ve observed in several teams I’ve worked on – the ‘Load-Bearing Script.’ The outline of this pattern goes like this: A team member writes a portion of a system as a shell script for a quick prototype. That shell script, initially quite simple, grows in complexity over time. Eventually,...
I recently read Pema Chödrön’s Living Beautifully, and I was struck by the following passage: Chögyam Trungpa demonstrated the co-emergent nature of feelings in a teaching on boredom-on how we feel when nothing’s happening. Hot boredom, he said, is a restless, impatient, I-want-to-get-out of here feeling. But we can also experience nothing...
Two of my all-time favorite articles about managing one’s energy and time relate to the notion of maintaining “Slack” in one’s life. The first, Slack, by Zvi Mowshowitz, directly describes the Slack concept that I refer to in this post. The second, Sabbath hard and go home, expands on this notion in the context of the author’s Jewish upbringing....
I recently got an M2 MacBook Air to replace my 2014 MacBook Pro. Apple offered to recycle my old machine (and give me a token $90 off my new laptop as a trade-in), which I gladly opted-in to. However, when it got time to actually wipe my old laptop and trade it in, I couldn’t help but get a little sentimental about it. I’ve used this laptop for...
I’ve been using Scala for the better part of a year, and it’s mostly been an enjoyable experience. Scala fits in a comfortable position in the programming latent space somewhere in between Java, Python, JavaScript, and Rust. However, Scala is definitely a a “big” language – it has lots of language features, supports many programming paradigms,...
[P]hysics simulates how events play out according to physical law. GPT simulates how texts play out according to the rules and genres of language. – Scott Alexander (Source) 1. Whence Prompt Engineering The notion of “prompt engineering” has been rattling around in my head for the last several months, and I’m still trying to grasp if there’s a...
Previously: 2021, 2020, 2019, 2018, 2017 Another year come and gone. For me, 2022 had the feeling of being the first real “post-pandemic” year (despite the fact that I caught COVID in July). There clearly was a vibe shift this year, as the pandemic became less of a headline story, the war in Ukraine caused downstream political and economic...
Previous book lists: 2021, 2020, 2019, 2018. My Reading List has a full log of the books I read. Another year, another slate of books to reflect back over! I read about as many books this year as I usually do (perhaps slightly fewer), but many more of them were read as audiobooks than I usually do....
For the last couple years, I’ve maintained a spreadsheet of personal predictions. It’s been a useful practice that I would recommend. “Personal” in this context has 2 meanings: first, that I don’t preregister or publicly publish these predictions; second, that the content of some of the predictions is personal in nature. I’ve had predictions &...
“Stacked PRs” is the practice of breaking up a large change into smaller, individually reviewable PRs which can depend on each other, forming a DAG: I wrote about this in my post about git-branchless, but I think the practice itself deserves...
In some ✨personal news✨, I’ve recently left Google. It was a great ~3 year ride, and I couldn’t have asked for a better place to begin my career. Obligatory badge-and-laptop goodbye photo Whenever I’d interview...
In “Difficult Problems and Hard Work”, David McIver writes: An idiosyncratic distinction I find useful (though don’t reliably stick to) is that there is hard work and difficult problems, and these are not all that closely related. The distinction is roughly that something is hard work if you have to put a lot of time and effort into it and a...
To be a well-calibrated predictor, you need to to be wrong (sometimes). “Well-calibrated” means that if you predict something occurs with X% probability, then that event actually occurs X% of the time. Since predictions are often made on one-off events, another way of expressing calibration is that X% of predictions that you made with X%...
A useful mental model for reasoning about behavior change is the Transtheoretical model – sometimes also known as the “Stages of Change” model. This model describes the phases of human behavior change: Precontemplation (“not ready”) – “People are not intending to take action in the foreseeable future, and can be unaware that their behaviour is...
I spent a week in NYC earlier this month. Here are some unprocessed impressions I had of of the city, as of Summer 2022. (Disclaimer: Many of these are probably so obvious as to be uninteresting) Transit Google Maps’ subway directions work great in NYC. The schedules/transfers were accurate, and the directions – e.g. “look for a train with sign...
The most difficult decisions are when one needs to choose between options that are equally good or equally bad. This is nearly tautological: if you’re choosing between a good option and a bad option, just choose the good option. Similarly, if there is a clear “lesser of two evils”, then that is the obvious choice. However, if the choices have...
I’ve been playing around with Manifold Markets recently. Manifold is a fake money prediction market platform whose differentiator is that it allows anyone to create arbitrary prediction markets. Unlike other platforms1, that moderate market creation and resolution criteria, Manifold users can make whatever markets they want, with arbitrary...
Over the past few months, I’ve been hard at work trying to reduce the latency of workflows for one of the APIs that my team owns. Last week, I discovered a small change that had a larger impact on reducing latency than 3 months of work. Somewhat embarrassingly, that change was effectively “don’t call time.Sleep”. For a bit of context, one of the...
TL;DR: I wrote a little web app to view Kindle Highlights; you can check it out here. One of my favorite features of reading books on Kindle is that you can highlight interesting quotes as you read, and revisit those highlights later. Your Kindle highlights are saved to The Cloud™️ for books that you’ve purchased from Amazon, but books that are...
Life can only be understood backwards; but it must be lived forwards. - Søren Kierkegaard ‘Tis the season for prognosticating 2022. It seems like January now brings a deluge of folks registering predictions for the upcoming year (and, even better, scoring their previous predictions!). I’m becoming more interested in predictions and prediction...
Previously: 2020, 2019, 2018, 2017 To expect the unexpected shows a thoroughly modern intellect. - Oscar Wilde From the record-breaking heat wave to the record-breaking cold-snap during which I’m now writing this post, 2021 in Seattle was truly a land of contrasts. More seriously, 2021 is a strange year to summarize. My year felt like a near...
Previous book lists: 2020, 2019, 2018. My Reading List has a full log of the books I read. Fiction The Overstory (Richard Powers) The Overstory is a story about trees, the people that endeavor to protect them, and how rooted human culture is in nature (pun intended). The story is told...
Git is a (in)famously polarizing tool, and there are as many distinct Git workflows as there are developers that use Git. However, since Git has the most mindshare of any extant VCS tool, it’s worth finding ways to make it more comfortable to use. One Git usage pattern that I think is underused is the “branchless” workflow. The idea here is...
A few weeks ago, I stumbled upon a trick to use Go’s type system to disambiguate between variants of credentials on a RPC service I work with. The premise of the example is that we’re writing an RPC request handler that needs to perform two outbound RPCs – one to an external service that uses user credentials, and another to an internal service...
WFH, Month 19 I was pretty heads-down on work this month. I’m working on a relatively greenfield project that’s had some fun opportunities to make architectural decisions. It’s very satisfying work, but it’s the type of work that stays stuck in your head, making it hard to switch out of “work mode” at the end of the day. I feel really lucky to...
Last week, I onboarded onto a new code review system. In learning how to review code in this new tool, I got to thinking about best features of previous code review systems I’ve used. What follows is an opinionated (and very incomplete) list of what I think are “table stakes” for code review in 2021. For the purposes of this post, “code review...
New Tools This month I put some time into writing a couple more Datasette-adjacent tools: (See previous Datasette posts) instapaper-to-sqlite - 📑 Export your Instapaper bookmarks to SQLite overcast-to-sqlite - 🎧 Download your Overcast listening history to sqlite Instapaper: For a while, I’ve been using Instapaper’s RSS feed to export my saved...
As I’ve written in the past, I’ve been using Obsidian to store notes, links, and other “outboard brain” type information that I want to keep track of. As my Obsidian vault grows, one thing that becomes more of a risk is the potential for link rot. Much has been written about the problem of link rot, so I’m going to focus on how I decided to...
August was a fun month for me. I’ve picked up a new habit of taking pen-and-paper notes while reading non-fiction, and it’s been pretty engaging. So far, I’ve noticed that I retain content a lot better when I take notes, though it does take substantially longer to get through books this way. I don’t plan to take notes on all the non-fiction I...
Recently, I’ve been reading through the excellent Database Internals (Alex Petrov, 2019). The first half of the book is dedicated to the implementation of database storage engines – the subsystem(s) of a DBMS that handles long-term persistence of data. A surprising amount of this section discusses the implementation and optimization of various...
It’s shaping up to be another intense season for wildfires on the West Coast. Last year, we had about 2 weeks where the air quality was bad enough that we needed to limit our time outdoors. It’s been on my mind to stock up with supplies for wildfire season. Air filters (for reducing the amount of smoke indoors) are now plentiful, but inexpensive...
I skipped the June edition of these retrospective posts, but in the spirit of not breaking a habit more than once, I’m back with July! I was hoping that COVID was pretty much “over”, but with the delta variant and my work pushing back our return-to-office until mid-October… the pandemic is very much still with us. This whole situation has been...
On January 1, 2016, I started a daily journaling habit. As of today, I now have 2000 daily entries – a continuous run for over 5 years1. 🎉 My “journal” started as an accidental offshoot of one of my early Quantified Self projects. The goal was to keep a log of how I was feeling each day, so I could look at trends over time. My first “journal”...
One of my favorite features in Gmail is the ability to schedule an email to be sent in the future. Other email clients, like Thunderbird1, have this capability as well. I think of this feature not as “scheduling an email to be sent at a specific time”, but rather as “deferring sending the email for a period of time”. Put another way, scheduling...
COVID: May was a good month on the COVID front in Washington. Vaccines were generally available – and at least 56% of adults have gotten their first dose. Washington is on track to “reopen” completely by June 30th. All good news! Things are progressing faster and with fewer negative surprises than I expected. Though, since the CDC decided...
Over the past couple weeks, I’ve been working on an implementation of the Raft distributed consensus algorithm written in Go. It’s been a great exercise in “grokking by doing”. It’s one thing to understand an algorithm, and another thing to implement a correct instance of...
For various reasons, it’s probably a good idea to keep backups of data that is stored in The Cloud™️. I have a bunch of data in my Google account from years of usage – photos and email primarily, but also a bunch of other digital detritus that would make me sad if it went away. Google Takeout is a pretty painless way of getting a bulk export of...
It finally seems like we’re nearing the end of the acute phase of the pandemic in the US. 🙂 Vaccines are now available to all adults, which is months ahead of what I was expecting earlier this year. There are still reasons to be concerned about the global state of the pandemic, but at least locally I’m optimistic. At work, our offices have begun...
Gödel, Escher, Bach: an Eternal Golden Braid (Douglas Hofstadter, 1979) is a book that’s been sitting on my shelf for years, never quite getting to the top of my “to read” list because of it’s intimidating length and density. On a lark, I gave the first chapter a read, and got sucked in within the first several pages. It took me a few months, but...
This is the third post inspired by my current read-through of Gödel, Escher, Bach. See also “A Hand-wavy Proof for the Infinitude of Prime Numbers” and “Three Layers of Information”. One of the most interesting concepts I remember from my Introduction to Number Theory course in college was the notion that there are different “types” of infinity....
There’s not as much to write about this month (fortunately?). The US vaccine rollout continues to hum along – I already have a family member who’s received both doses of the vaccine, and another family member who’s scheduled for their first appointment. I still think it’ll be some time before I am able to get the vaccine (my current gut estimate...
In Gödel, Escher, Bach, Douglas Hofstadter proposes a three-tiered hierarchy of information in messages: the frame, the outer message, and the inner message. [W]e can separate out fairly clearly three levels of information: (1) the frame...
Recently while reading Gödel, Escher, Bach, I learned about a neat proof for a rather intuitive fact: there are an infinite number of prime numbers. For whatever reason, prime numbers pop up in computer science frequently (or, at least, in computer science textbook examples and interview questions, for those of us that don’t work in...
It’s been a couple months since I’ve written one of these “Recently” posts. January was a… surprisingly eventful month, but I feel like all the takes that could possibly be made about the various big news events are already out there. The world doesn’t need another $GME reaction. 😅 Tampermonkey A few weeks ago, I “discovered” Tampermonkey, which...
The upcoming Go 1.16 release has a lot of exciting updates in it, but my most anticipated addition to the Go standard library is the new io/fs and testing/testfs packages. Go’s io.Reader and io.Writer interfaces, along with os.File and its analogs, go a long way in abstracting common operations on opened files. However, until now there hasn’t...