Sign in

Matt Hamlin

@matthamlin.me
521 followers 2.1K following 450 posts

Software engineer at HubSpot, also working on way too many side projects. Co-host of @bikeshedpod.com 🎙️ matthamlin.me

PostsRepliesMedia
Matt Hamlin @matthamlin.me · 16/12/2025
The modern day "my code is compiling"
010
Matt Hamlin @matthamlin.me · 18/11/2025
Cloudflare hosts their status page CSS on Cloudflare it seems, maybe not ideal 🙃
040
Matt Hamlin @matthamlin.me · 02/10/2025
ChatGPT, you good?!
000
Matt Hamlin @matthamlin.me · 23/09/2025
i still find it crazy that both Connecticut and Massachusetts said you know what, yea, we don’t want to take those additional 1500 square miles
100
Matt Hamlin @matthamlin.me · 16/08/2025
how is there no way to disable this obnoxious screen for discord audio calls on iOS?!
000
Matt Hamlin @matthamlin.me · 23/07/2025
Kinda wild that someone thought to themselves that they wanted this to exist in the world
pub fn try_map<F, R> (
self,
f: F
) → <R as Try>: :Residual as Residual<[<R as Try>:: Output;
N]>>:: TryType
where
source
F: FnMut (T) →> R,
R: Try,
Try>: : Output; N]>,
<R as Try>:: Residual: Residual< [<R as
120
Matt Hamlin @matthamlin.me · 12/07/2025
Darn - the only one I missed on the quiz and it was because I forgot that the answers were based on another timezone 🤦‍♂️ Check out the quiz at jsdate.wtf
Screenshot of an incorrect answer in the jsdate.wtf quiz, the question was: `new Date("maybe 1")` and the correct answer was `2001-04-30T23:00:00.000Z` but I responded with `2001-05-01T00:00:00.000Z`.
010
Matt Hamlin @matthamlin.me · 27/06/2025
Still not sure if bash is goated or mid for this syntax
Screenshot of the following bash code:

if (cond)

fi

case

esac
010
Matt Hamlin @matthamlin.me · 26/06/2025
Added a new feature to my personal site - post link preview tooltips! Hovering over links to blog posts shows a little detailed tooltip of the title, description, and publish date!
Tooltip showing above a link titled "Async Class Creation in JavaScript" with the contents of:

Async Class Creation in JavaScript
Published: Jun 3, 2025, 4:04:58 PM EDT
Have you ever wanted to create a class in JavaScript or TypeScript but also have the initialization be async? Here's a quick tip on a pattern that I've used in the past!
030
Matt Hamlin @matthamlin.me · 26/06/2025
why did the new xbox launcher update have to put me on blast like that?
Photo of the Call of Duty xbox launch screen showing game stats with 97 days 8 hours and 17 minutes of play time
000
Matt Hamlin @matthamlin.me · 10/06/2025
A cartoon comic with two stick figures having a sword fight on rolling office chairs, with a doorway open to an office in the background with the following content:

Title:
The #1 programmer excuse for legitimately slacking off: ChatGPT is Down

Dialog:

From the office: "Hey! Get back to Work!"
From one of the stick figures fighting: "ChatGPT is Down"
From the office: "Oh. Carry on."
030
Matt Hamlin @matthamlin.me · 06/06/2025
Discord brought back this bug on iOS where voice channels are treated like phone calls 😭
Sceeenshot of the iOS phone like lock screen, showing Discord Audio General channel, with icon buttons at the bottom of the screen
000
Matt Hamlin @matthamlin.me · 04/06/2025
This feels weirdly misogynistic to me... Even if you took the gender out of the "role" of the agent, it feels weird to me to personify the agents like this Source: www.semafor.com/article/06/0... from @semafor.com
Screenshot of an article with part of the content highlighted:

Outside of YC, Pukar Hamal, CEO of SecurityPal — which helps companies automate responses to security-related questions during the sales process — is vibe coding agents to fill some open positions rather than hiring personnel.

START highlight:
SecurityPal needed a product manager, and instead of creating a job posting, Hamal spent three hours vibe coding an agent named Penelope, depicted as a brunette mountaineer wearing aviator goggles and a fur-lined bomber jacket (a nod to the company’s office in Nepal). “Penelope is going to be a very integral part of how I as a CEO make decisions,” he told Semafor. “She’s also going to be part of my leadership meetings, where we can interrogate her on different ideas we have.”
END highlight

SecurityPal has incorporated two vibe-coded agents into the security analyst team, which manages security data sharing between customers. The company onboarded them like it would any employee, and they participate in all-hands meetings — camera on. “We’ve probably already hired our last security analyst,” he said.
000
Matt Hamlin @matthamlin.me · 29/05/2025
Installed an app on my phone and it showed this count down advertisement as an activity on the dynamic island. Immediately uninstalled the app
Screenshot of an iPhone activity from the dynamic island showing an activity with one side saying “50% off” and the other side showing a countdown timer at 9 minutes and 45 seconds remaining, the text is in a bright bold red color
100
Matt Hamlin @matthamlin.me · 28/05/2025
Yet another change for the Vercel ecosystem
A screenshot of the title of a merged GitHub pull request titled "Delete edge functions"

Content of the screenshot was lightly edited for brevity (author changed)
230
Matt Hamlin @matthamlin.me · 23/05/2025
Here's the list, feel free to shout out ones that sound like they might be interesting to you read! (I had to zoom out quite a bit to get it in one screenshot - hopefully the quality is fine!)
A list of blog post titles / concepts in my notes:

Design By Committee Doesn’t Work
Demo Driven Development
DIY - Deploy It Yourself Software
Green Pastures
Keep a Messy Desk
Managing Monorepos
Monorepo Guidebook
My Motivations
Ownership Hot Potato
Principles for Maintaining Great Applications
Separating Deploys From Releases
Supporting Multiple Release Environments
Technical Artifacts
What To Do When Everything is on Fire
Adopting Next.js App Router
An Organization as the Ship of Theseus
Belgium and Amsterdam Trip 2023
Career Development Template
Test Driven Refactors
Pull Request Etiquette
Early Feedback, Late Stoppage
False Confidence
Keys for Developing Software Quickly (and Safely)
Live Code Reviews
London 2023 Trip
Maintaining A Library, Well
Navigating Turborepo Monorepos with Ease
On Engineering Career Ladders
Open Sourcing a Design System Isn’t Possible
Sail or Parachute?
The Risks of Auto-Mocked E2E Testing
The Risks of E2E Testing
Thin Clients
Using Cypress and Jambox to Create a Sturdy Integration Testing Framework
What to Ask During an Interview
Avoid Compound APIs
Benchmarks and Leaderboards Don't Win Customers
How to Write the Perfect Issue
Tips and Tricks for TypeScript Projects
Isomorphic Cookie API for Next.js Middleware
Custom Catch-All OG Images for Next
Building a Web Sandbox Part 2
Code Spelunking
To Remain On Stack Or Not
Supporting Auth in Preview Deploys
Draft Driven Development
It Depends Considered Harmful
snippet - Progressively Enhanced Identifiers
Side Quests
Onboarding Your New AI Teammate
You Should Be Everything-Maxxing
On Dependency Management
In Review - The Belroy Transit Workpack Pro v2
Website Redesign v10
000
Matt Hamlin @matthamlin.me · 20/05/2025
opened a pretty exciting PR this afternoon:
A line diff counter view on a GitHub PR, showing an addition of 183 lines, and removal of 2684 lines of code
130
Matt Hamlin @matthamlin.me · 16/05/2025
Working on a new navigation for my personal site #wip
A rounded pill-like navbar with an active link for Home, and inactive links for Blog, Projects, Bookshelf, and About
140
Matt Hamlin @matthamlin.me · 16/05/2025
this is on par with twitter open sourcing their algorithm
xAI post on twitter:

We want to update you on an incident that happened with our Grok response bot on X yesterday.
What happened:
On May 14 at approximately 3:15 AM PST, an unauthorized modification was made to the Grok response bot's prompt on X. This change, which directed Grok to provide a specific response on a political topic, violated xAl's internal policies and core values. We have conducted a thorough investigation and are implementing measures to enhance Grok's transparency and reliability.
What we're going to do next:
- Starting now, we are publishing our Grok system prompts openly on GitHub. The public will be able to review them and give feedback to every prompt change that we make to Grok. We hope this can help strengthen your trust in Grok as a truth-seeking Al.
- Our existing code review process for prompt changes was circumvented in this incident. We will put in place additional checks and measures to ensure that xAl employees can't modify the prompt without review.
- We're putting in place a 24/7 monitoring team to respond to incidents with Grok's answers that are not caught by automated systems, so we can respond faster if all other measures fail.
100
Matt Hamlin @matthamlin.me · 03/05/2025
Kinda wild that `useId` was released 3+ years ago and yet is still not compatible in CSS use cases. Need to consistently manage the `::` characters via `.replace`
let id = useId().replace(/:/g, "-");
120
Matt Hamlin @matthamlin.me · 01/05/2025
Only took me 453 weeks to become a professional apparently
Notifications in Todoist, notifying me when i reached specific levels in their Karma scale. Top notification was from 1 minute ago saying I reached the Professional level, second notification was from 47 weeks ago saying I reached the Intermediate level, and the last notification was from 453 weeks ago saying that I was a Todoist Novice
000
Matt Hamlin @matthamlin.me · 30/04/2025
Spotted a dark pattern in Todoist, their update notification is the same color as the CTA to upgrade to the pro plan
Screenshot of the dropdown menu in the Todoist app, showing a orange indicator dot on the avatar matching the same orange color used for the CTA to upgrade to the pro plan shown in the dropdown
010
Matt Hamlin @matthamlin.me · 29/04/2025
Spring is here!
A brick sidewalk covered in small white petals, with flower boxes between the building and the street with many different blooming vibrant flowers
030
Matt Hamlin @matthamlin.me · 28/04/2025
Finally starting to feel like spring ☀️
A street and sidewalk heading up a  hill, with a few trees just starting to get their leaves, buildings on either side of the street with a blue sky in the background
000
Matt Hamlin @matthamlin.me · 12/04/2025
This is how I view @scottykaye.com by default now:
Screenshot of the Bikeshed Pod episode details page, showing the following:

"Spicy Takes: Tune in to hear the takes that Dillon and Matt share to make Scott react like Mr. Krabs"

With an image of Mr. Krabs from Spongebob with a dizzying effect around him.
120
Matt Hamlin @matthamlin.me · 10/04/2025
Why is my rental insurance company emailing me using Comic Sans?!?
Screenshot of a clipped email message, with some text using the Comic Sans font
010
Matt Hamlin @matthamlin.me · 18/03/2025
I haven't been able to listen to anything else than this song for the past two weeks. It's just too good
Screenshot of the song "party 4 u" by Charli xcx off of the album "how i'm feeling now" in YouTube Music
010
Matt Hamlin @matthamlin.me · 16/03/2025
Just another cursor rule will fix it! Just one more!
Two brick layers building a wall, the bricks are all askew and at different angles
45510
Matt Hamlin @matthamlin.me · 20/02/2025
Damn, now looking for a good screenshot and screen recording mac app!
Screenshot of an email from Dropbox announcing that Dropbox Capture will be discontinued on March 24th 2025
210
Matt Hamlin @matthamlin.me · 18/01/2025
Strong Elon “what did you get done this week?” energy
A message from someone else in iMessage saying “Where are we on the podcast website?” and my reply saying “i’ll get to work on it”
000
Matt Hamlin @matthamlin.me · 12/01/2025
Did some work this evening:
020
Matt Hamlin @matthamlin.me · 27/12/2024
This feels a bit clickbait-y to me, not all TS features work in Node yet:
Screenshot from a section of the quote post’s linked article, stating:

“Are Enums and Namespaces Supported?

Enums and Namespaces are not supported by default.”

And notes that you may need an additional flag still to support those features: “—experimental-transform-types”
130
Matt Hamlin @matthamlin.me · 25/11/2024
Trying out Croissant for posting to Bluesky!
Screenshot of the Croissant app from an iPhone, showing the composer view
000
Matt Hamlin @matthamlin.me · 20/11/2024
A meme containing the following content:

The 90/20 rule:

Try working at a ratio of 90:20. 90-minutes of work before taking a 20-hour gaming break. This will create a “Fun Cycle” where you do lots of gaming, and leave a full 2.5hrs for “extras” like sleep, wife or children.
0132
Matt Hamlin @matthamlin.me · 19/11/2024
Whoa - new way to a/b test models/model responses in ChatGPT
A heading with the following content "You're giving feedback on a new version of ChatGPT." followed by two separate responses shown side by side
000
Matt Hamlin @matthamlin.me · 19/11/2024
Minor update to my personal site (matthamlin.me), changed a lot of my twitter links over to @bsky.app links, including a "See discussion on Bluesky" link from my blog posts!
Screenshot of my site footer showing a Bluesky link and a GitHub linkA screenshot of a link showing "See discussion on Bluesky" from one of my blog posts
010
Matt Hamlin @matthamlin.me · 18/11/2024
See ya later london
020
Matt Hamlin @matthamlin.me · 15/11/2024
Beer and a fish finger sandwich with chips 🙌
Two glasses of beer on a table in a puba fish finger sandwich with a small bowl of chips
4110
Matt Hamlin @matthamlin.me · 11/11/2024
Case in point:
Screenshot of my previous post in the feed, with various labels applied to my post that takes up a decent amount of screen real estate
000
Matt Hamlin @matthamlin.me · 07/11/2024
Setting up a screen limit for twitter in my phone (i honestly probably should have had a limit on it before too)
A screenshot of the App Limits/Screen Time settings view in iOS, enabling a 1 minute limit for the X app (Twitter)
000
Matt Hamlin @matthamlin.me · 29/10/2024
Peak programming in 2024
A code comment with the following contents:

"@TODO - this is a bit of a hack - ideally we'd center align
the text in each chunk however this code just evenly distributes
the letters within a chunk across the width of the container
I need to look into that but I'm out of my v0 messages for the day 🥲"
010
Matt Hamlin @matthamlin.me · 23/10/2024
Voted last night!
A hand holding an “I Voted” sticker
190
Matt Hamlin @matthamlin.me · 21/10/2024
I still don't understand why @vercel.com limits the number of projects per repo on the Hobby plan 😢
Screenshot of a row within a table containing the following information:

Vercel Projects Connected per Git Repository:
- Hobby Plan: 3
- Pro Plan: 60
- Enterprise Plan: Custom
020