Alright, living in the future is pretty damn cool!
We were in San Francisco this weekend and decided to try riding in a Waymo. This was insanely wild. It’s such an incredible novelty at first — taking pictures, watching with fascination as the the steering wheel moves all by itself and the car seamlessly navigates around obstacles and through traffic.
After awhile, you settle into it and quickly forget how crazy it is.
As I mentioned yesterday, Anthropic released Claude Code. I saw it pop up fairly soon after it was announced and downloaded it rather quickly. One thing that I thought was notable was that you install it via npm:
> npm install -g @anthropic-ai/claude-code
As a seasoned TypeScript / JavaScript developer myself, I was excited to take a peek into the (probably minified) source code and see if I could glean any insights into making my own CLI tool. It’s always fun to see how different applications and tools are created.
Sidenote: I’ve been using Aider with great success as of late. It is a fantastic piece of open-source software — it’s another agentic coding tool, written in Python. I’ve been meaning to look under the hood, but building applications with Python definitely is not something that’s ever been in my wheelhouse.
Since Claude Code was installed into my global node_modules folder, I opened things up and immediately found what I was looking for. A 23mb file: cli.mjs.
I click on it, and as expected, it is minified.
Ah, well! I guess I should get on with my–
Wait a minute! What is this: --enable-source-maps?
I scroll through the file and at the bottom, I see what I’m looking for:
Sublime Text tells me there are 18,360,183 characters selected in that line.
Interesting! Since this part of the file seems to take up such a huge chunk of the original 23mb size, this means that it potentially contains full inline sources — we can rebuild the original source code from scratch!
However, this would have to wait. I had to take Benson to a vet appointment. I throw my laptop in a bag and head out.
While in the waiting room at the vet, I noticed a message in my terminal from Claude Code, telling me “Update installed, restart to apply.“
Hey, I love fresh software! So, I restart the app and go on my merry way. Benson finishes his appointment and I head back home.
Later that evening, I open up my machine and decide to open up the Claude Code folder again to start taking a look at the source code. I already had Sublime running from my earlier escapades, but out of habit I click on the file in Finder and open it up again in Sublime. I scroll down to the bottom of cli.mjs and see… nothing. The sourceMappingURL string was gone!
Apparently, the fine folks at Anthropic realized they made a huge oopsie and pushed an update to remove the source map. No matter! I’ll just head over to NPM to download an earlier version of the packa- oh! They removed that, too! History was being wiped away before my very eyes.
As a last resort, I decide to check my npm cache. I know it exists, I just don’t know how to access it. So, I head over to ChatGPT (sorry, Claude — I’m a bit miffed with you at the moment) to get myself some handy knowledge:
> grep -R "claude-code" ~/.npm/_cacache/index-v5
We run it and see:
/Users/daves/.npm/_cacache/index-v5/52/9d/8563b3040bf26f697f081c67231e28e76f1ee89a0a4bcab3343e22bf846b:1d2ea01fc887d7e852cc5c50c1a9a3339bfe701f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.9.tgz","integrity":"sha512-UGSEQbgDvhlEXC8rf5ASDXRSaq6Nfd4owY7k9bDdRhX9N5q8cMN+5vfTN1ezZhBcRFMOnpEK4eRSEgXW3eDeOQ==","time":1740430395073,"size":12426984,"metadata":{"time":1740430394350,"url":"https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.9.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, must-revalidate, max-age=31557600","content-type":"application/octet-stream","date":"Mon, 24 Feb 2025 20:53:14 GMT","etag":"\"e418979ea5818a01d8521c4444121866\"","last-modified":"Mon, 24 Feb 2025 20:50:13 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
/Users/daves/.npm/_cacache/index-v5/e9/3d/23a534d1aba42fbc8872c12453726161938c5e09f7683f7d2a6e91d5f7a5:994d4c4319d624cdeff1de6b06abc4fab37351c3 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.8.tgz","integrity":"sha512-HUWSdB42W7ePUkvWSUb4PVUeHRv6pbeTCZYOeOZFmaErhmqkKXhVcUmtJQIsyOTt45yL/FGWM+aLeVSJznsqvg==","time":1740423101718,"size":16886762,"metadata":{"time":1740423099892,"url":"https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-0.2.8.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, must-revalidate, max-age=31557600","content-type":"application/octet-stream","date":"Mon, 24 Feb 2025 18:51:39 GMT","etag":"\"c55154d01b28837d7a3776daa652d5be\"","last-modified":"Mon, 24 Feb 2025 18:38:10 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
/Users/daves/.npm/_cacache/index-v5/41/c5/4270bf1cd1aae004ed6fee83989ac428601f4c060987660e9a1aef9d53b6:fafd3a8f86ee5c463eafda7c481f2aedeb106b6f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai%2fclaude-code","integrity":"sha512-ctyMJltXByT93UZK2zuC3DTQHY7O99wHH85TnzcraUJLMbWw4l86vj/rNWtQXnaOrWOQ+e64zH50rNSfoXSmGQ==","time":1740442959315,"size":4056,"metadata":{"time":1740442959294,"url":"https://registry.npmjs.org/@anthropic-ai%2fclaude-code","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 25 Feb 2025 00:22:39 GMT","etag":"W/\"02f3d2cbd30f67b8a886ebf81741a655\"","last-modified":"Mon, 24 Feb 2025 20:54:05 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
Your eyes may glaze over, but what that big wall of text tells me is that a reference to claude-code-0.2.8.tgz exists within my cache. Brilliant!
More ChatGPT chatting (again, still smarting over this whole thing in the first place) and I get a nifty bash script to help extract the cached file. Only to find… they purged it from the npm cache. Noooooooooooo!
I stare at my computer screen in defeat. You got me this time, Anthropic.
As I decide to shut things down for the night, I’m tabbing through my open applications and get to Sublime Text, which is still open to cli.mjs. On a whim, I decide to try something: ⌘ + Z.
And there it is. The Holy Grail. The source map string.
And wouldn’t you know, it had a lot of interesting stuff! Due to the nature of parsing the source map, nothing is organized, but it’s still kind of fun to look through.
A few things struck me:
It’s written in React (!) using an interesting tool called Ink (this allows you to create CLI apps using React). I hadn’t used Ink before but this looks like a lot of fun.
While processing requests, Claude Code will show a nifty animated asterisk. I wondered how they did this. It looks like it’s a simple animation between a few ASCII characters: ['·', '✢', '✳', '∗', '✻', '✽'].
In terms of system prompts, there’s no secret sauce to leak that you can’t already read by just looking at the minified JS file.
These files are probably going to go out of date pretty dang quick, as the Anthropic team is actively developing the tool. As of right now, it’s already up to v2.19. This whole post was trying to look at the source code for v2.8, which went live yesterday.
Lastly, in terms of Easter eggs, I look forward to receiving some Anthropic stickers…
One of my absolute must-download apps whenever I setup a new MacOS machine is Alfred. It’s a customizable app launcher that helps me more efficiently use my computer. I frequently use its many features, from clipboard history and snippets management, to downloading workflows to quickly find my IP address, or even writing my own plugins.
Each morning at work, we kick off the day with our daily stand-up meeting — a quick way for us to let our teammates know what we did yesterday, what we’re doing today and any blockers we’re encountering.
I use Obsidian (see previously) to write these notes. Traditionally, creating a daily note is kind of an annoying process for me:
Open Obsidian
Right click on my “DSUs” folder
Create a new note based on my “daily stand-up” template
Replace the place holder text with today
Start typing my notes
There has to be a better way.
*Cue suspenseful music*
There is!
We can utilize Alfred’s nifty keyword action. I will trigger the action using the keyword “dsu“. From there, we will run a bash script (thank you, ChatGPT) which will do a few things:
Check if a file with today’s date already exists. If so, open it! (Because we probably want to reference it or update it.
If it doesn’t exist, create a new markdown file with the following format: YYYY-MM-DD.md
Update the file contents to match (my) specific / preferred layout for the DSU notes
Open it.
Bash
# Get the current year dynamicallyCURRENT_YEAR=$(date +"%Y")# Define the base directoryBASE_DIR="/Users/daves/Documents/Obsidian/Standup Meeting Notes"# Target directory for the current yearTARGET_DIR="${BASE_DIR}/${CURRENT_YEAR}/"# Create the directory for the current year if it doesn't existmkdir-p"$TARGET_DIR"# Get the current date in the required formatCURRENT_DATE=$(date +"%Y-%m-%d %A")FILENAME="${CURRENT_DATE} Standup.md"# Full path for the new Markdown fileFILE_PATH="${TARGET_DIR}${FILENAME}"# Check if the file already existsif[-f"$FILE_PATH"];thenecho"File already exists: $FILE_PATH"else# Create the new Markdown file and populate it with the templatecat<<EOF>"$FILE_PATH"Y:Y:T:T:B: None---## Action Items----## Summary----## Tags#standup<!-- ${CURRENT_DATE} -->EOFecho"Created: $FILE_PATH"fi# Open the file in Sublime Text/Applications/Sublime\Text.app/Contents/SharedSupport/bin/subl"$FILE_PATH"
When we run that script via the Alfred action, it looks like this:
Sweet!
(One thing to note: I open the file with Sublime here, but since it still creates the file in my Obsidian directory, all my notes are still synced.)
Back in November, I went with some friends to play paintball — it was the first time I ever played. We had booked a 3 hour session that would feature multiple matches. I don’t think any of us had ever played before and we were all pretty nervous about getting hit.
Lo and behold, within the first 30 seconds of the game, I took a paintball to the knee (cue the “I used to be an adventurer like you…” meme from Skyrim). Somehow, I twisted my leg as I rag dolled into the ground.
Of course, you can’t just give up after 30 seconds, right? So, on I played. The result is that I ended up tearing my ACL (the doc said he had no idea how this could have happened), have a bone contusion, and will likely need reconstructive surgery at some point. Fun!
Anyway, the point of all of this — for funsies, I tried to create a song about the situation using Suno’s generative music service (see previously). I used ChatGPT to come up with some initial lyrics and then did some work to refine them.
Then! I decided to use OpenAI’s generative video tool, Sora, to attempt to create a bunch of clips. I strung everything together in iMovie and the result is this rowdy music video: “This is What I Get“
Earlier this year, OpenAI added memory to ChatGPT. If it thought something you discussed was notable, it would add that to its memory bank in order to make future conversations better.
If you’re a ChatGPT user and haven’t looked through what ChatGPT has added to its memory yet, do it! It’s wild. Here is a small sample of the things that it has remembered from various conversations.
Anyway, I decided to ask it: “Based on everything we’ve chatted about, can you create an image of what you think I look like? I want you to use your own creativity and insight into things we’ve talked about that might give you an idea of what I look like. And then create an image based on this.”
And it went to work!
Haha! I wish. I asked what the prompt for that image was:
“A creative depiction of a senior software engineer with a thoughtful and analytical demeanor. The person is sitting at a modern workspace, surrounded by elements representing their interests such as a laptop with coding screens, a bookshelf with a mix of technical books and sci-fi novels, a Betta fish tank on the desk, and a coffee mug. The individual has an approachable and intellectual vibe, with a relaxed yet focused expression. Their workspace is neat but personalized, reflecting creativity and problem-solving. The background includes subtle references to hobbies like running gear, a small display of game design sketches, and tools for crafting AI-related projects. Natural lighting with a modern and clean aesthetic.”
“Their workspace is neat…” — oh boy, if only you knew. Regardless, I’ll take it. Sure!
May 18th marked the 44th anniversary of the 1980 eruption of Mount St. Helens. Over on Threads, someone started an account that posted pseudo-realtime updates leading up to the eruption and its aftermath. It’s been really fascinating to follow and it stoked my interest in learning more about the eruption (no surprise, given my past geology background, eh?).
Like most things that I start digging into, I ended up finding a book!
Eruption: The Untold Story of Mount St. Helens by Steve Olson. It details events surrounding the eruption and explores how a number of victims ended up around the mountain on the fateful Sunday morning. Reading it sent me down a rabbit hole of Wikipedia entries, USGS reports and Google Earth sleuthing…
—
In the summer of 2009, I visited Johnston Ridge Observatory and was able to see the volcano first hand (see image below). Johnston Ridge Observatory is located on the site of the Coldwater II observation post — where volcanologist David Johnston famously radioed his last words before the lateral blast swept over the ridge, destroying his encampment (Johnston’s body was never found): “Vancouver, Vancouver! This is it!”
Source: Me
The lateral blast, the result of a M5.1 earthquake that triggered the largest landslide in recorded history (sheering 1,300 feet off the top of the mountain), sent a violent pyroclastic blast northward, scouring the landscape for miles. You can still see the results of the blast to this day.
When we visited in 2009 — 29 years after the blast, evidence of the lateral blast was evident in obvious signs of tree fall (below image) — gigantic trees snapped over in the direction of the blast as if they were toothpicks.
Source: Me
Johnston Ridge (and the site of the Coldwater II Observation Post) sit about 5 miles from the Mount St. Helens. Looking out over this grand vista, your sense of scale is completely messed up. The mountain is so huge that it looks like you can reach out and touch it — you swear to yourself that it’s just right there, a short hop and skip away.
“I’m going to go on a quick hike to the volcano. I’ll be back by lunchtime,” you say.
Everyone else: “lol”
The shockwave and pyroclastic blast that resulted from the lateral blast were estimated to have reached upwards of 670 miles per hour. At that speed, it would have taken 30 seconds to travel from the volcano to overtopping the ridge.
Looking at my own photos from the observation post, you can’t help but wonder what David Johnston was thinking as he saw the shockwave and pyroclastic blast rapidly spread across the valley below, approaching his location. It was probably an awesome sight to see, quickly followed by “Oh. Shit.”
—
Thanks to the wonders of modern technology, we have some fantastic exploration tools. I loaded up the Google Earth web app and set about exploring the area.
One of the first things I notice is how huge the mountain is (err… was?) and how small and insignificant Johnston Ridge seems, especially in the face of the resulting landslide and pyroclastic blast.
Via Google Earth
Zooming in on the Spirit Lake area, you can still see floating tree trunks grouped together, covering the northern part of the lake (I assume due to prevailing southerly winds in the area).
Via Google Earth
If we turn toward the west and look at Johnston Ridge, you can see deposits left over as the pyroclastic blast topped the ridge. They are the lighter grey outcrops you see around the map. (I’ve attempted to poorly outline them below).
Via Google Earth
Let’s pop over the the valley just to the north of Johnston Ridge (where Spirit Lake Highway runs). We can zoom in and see a mess of tangled tree trunks along the banks of South Coldwater Creek.
Via Google Earth
At the top of that valley, we can see more evidence of pyroclastic blast deposits. Like the image of Johnston Ridge above, look for the light grey outcrops and exposures.
Via Google Earth
Alright, let’s check out how far the effects of the lateral blast were felt. If we zoom out a bit and go to the top of the ridge (the next ridge north of Johnston Ridge — I am unsure of the name), we see more evidence of blast zone tree fall. At this point, we’re about 6.5 miles from the volcano.
Via Google Earth
If we skip north across the next valley that contains Coldwater Lake, we get to the third ridge we’re going to look at. Again, at the top, we see evidence of blast zone tree fall. This is 8 miles from the volcano.
Via Google Earth
Now that we’re getting a sense of the scale of the blast, we can zoom out and start putting things together. Wherever this sort of tree fall exists, it almost looks like the landscape was scoured (it was!).
Let’s see if we can find anything else interesting. We zoom out and see some scour marks on ridges way off to the north.
Via Google Earth
The area I circled looks interesting. It’s called Goat Mountain and it’s nearly 12 miles from the volcano. Let’s zoom in… ah, yes. There is the distinct “hash mark” pattern we keep seeing, that represents the blast zone tree fall.
Via Google Earth
From our computer screen, it’s hard to get a proper sense of scale. If we use Google Earth to measure the length of one of these “match sticks” (a big dead tree!), we get about 33 feet!
Via Google Earth
A USGS report on the lateral blast showed evidence of 100 foot tall trees knocked over that were located 19 miles from the volcano! Try as I might, I am unable to find evidence of this via Google Earth, as the margins of the blast zone seem to merge with areas where loggers have clear cut the forest.
“But Dave,” I hear you say, “how do you know some of those are from the blast and some are from logging?”
You’re right! In a way, I don’t. However, one potentially easy way to tell is by the presence of logging roads. In my example from Goat Mountain above (12 miles from the volcano), the tree fall was located on a ridge, away from any sort of easily accessible logging road.
—
There was one section of Steve Olson’s book that I found particularly fascinating, especially because I hadn’t heard about it before. At the exact time the mountain erupted, a small plane was flying overhead with two geologists as passengers — Keith and Dorothy Stoffel.
They were on their fourth pass over the north rim of the crater, flying west to east, when Keith noticed something moving. “Look,” he said, “the crater.” Judson tipped the Cessna’s right wing so they could get a better view. Some of the snow on the south-facing side of the crater had started to move. Then, as they looked out the plane’s windows, an incredible thing happened. A gigantic east-west crack appeared across the top of the mountain, splitting the volcano in two. The ground on the northern half of the crack began to ripple and churn, like a pan of milk just beginning to boil. Suddenly, without a sound, the northern portion of the mountain began to slide downward, toward the north fork of the Toutle River and Spirit Lake. The landslide included the bulge but was much larger. The whole northern portion of the mountain was collapsing. The Stoffels were seeing something that no other geologist had ever seen.
A few seconds later, an angry gray cloud emerged from the middle of the landslide, and a similar, darker cloud leapt from near the top of the mountain. They were strange clouds, gnarled and bulbous; they looked more biological than geophysical. The two clouds rapidly expanded and coalesced, growing so large that they covered the ongoing landslide. “Let’s get out of here,” shouted Keith as the roiling cloud reached toward their plane.
Excerpt From Eruption by Steve Olson
Now, wait a minute! You’re telling me that at the exact time the volcano erupted, there were people flying overhead? I know this happened in 1980, but there just has to be photos of this, right?
Here’s a fun aside (if you can call something related to an epic natural disaster “fun“). A YouTuber took the series captured by Rosenquist and ran some magical AI frame interpolation on them (essentially — an AI tries to generate content to fill in missing information between frames of a video). The result is a near real-time simulation of what those initial moments of the blast may have looked like.
After taking the photos, Rosenquist and his fellow friends correctly decided it was time to leave. Immediately.
He took one last photo (this is another one I don’t remember seeing before).
I’ve been playing around a lot with Ollama, an open source project that allows one to run LLMs locally on their machine. It’s been fun to mess around with. Some benefits: no rate-limits, private (e.g., trying to create a pseudo therapy bot, trying to simulate a foul mouthed smarmy sailor, or trying to generate ridiculous fake news articles about a Florida Man losing a fight to a wheel of cheese), and access to all sorts of models that get released.
I decided to try my hand at creating a simplified interface for interacting with it. The result: Super Simple ChatUI.
I recently finished up reading “The Cuckoo’s Egg” by Cliff Stoll. It was a fascinating story that details some of the first examples of computer hacking and computer forensics.
This post isn’t a review of his book, however! It’s more to document some adventures that resulted after reading it.
First, a quick summary:
In 1986, Cliff Stoll was an astronomer working at Lawrence Berkeley Laboratory when he was tasked to look into a $0.75 discrepancy in compute time billed to physicists and other scientists who remotely connected to their machines.
What resulted was a year long wild-goose chase that ended up in the arrest of a KGB operative in Germany who remotely connected to university computers in the United States in order to gain access to military networks through ARPANET (precursor to the Internet of today).
Cliff wrote a book about his experience that went on to become a best seller. For fans of esoteric computer history, this was one of the first documented examples of hacking and marked the beginning of computer forensics. This book was published 35 years ago and deals with (now) antiquated technology that the young ones around here know nothing about — but oh wow, did I thoroughly enjoy this!
Anyway! That’s not why I’m here. I’m here, because I keep seeing his name pop up in various places (more recently Hacker News). A post mentioned his TED talk in 2008. It’s a hoot — and pretty inspiring, too!
One person mentioned that he makes Klein Bottles (an interesting manifold that ends up being a container with zero volume, as it only has a single surface) out of his home in… North Oakland. Oh, he also enjoys visitors.
Oh, really?!
The Klein Bottles are a really interesting object and have been a fun talking point with friends. I ended up purchasing a Klein Bottle from Cliff and asked if I could pick it up, since I live nearby. He happily obliged.
I ended up bringing our oldest kiddo and we had an absolute blast. He spent an hour with us, showing some of the artistic stuff he’s been working on (mathematical quilts!), showing off various gadgets he’s made (a fun device that draws images on his shipping boxes using Sharpies — an automated personal touch), and letting my kiddo drive the remote controlled robot he built that runs under his crawl space (!).
Just an absolutely memorable time. Thanks so much, Cliff!
I didn’t get a chance to make it out to see the total eclipse in person this time. (Really bummed… 2017 turned me into a legit umbraphile!)
Earlier today, I pulled down a number of images from NOAA’s GOES-East satellite and compiled this video. It takes a photo every 10 minutes. You can clearly see the Moon’s shadow as it makes its way across North America.
(Protip: Set the image quality to 720p. YouTube’s compression makes that video look like garbage otherwise!)
Pretty awesome!
Somewhat related — in 2020, I compiled a bunch of NOAA imagery that encompassed 3 weeks. I need to get that project up and running again…