HNHacker News
TopNewBestAskShowJobs

clintonb

1,552 karma · joined August 6, 2011

Engineer at Vori, formerly at Stripe

https://getfriendlyreminder.com https://clintonblackburn.com https://dev.clintonblackburn.com

submissionscomments
clintonb··on If AI writes your code, why use Python?
I picked Go because it tends to use fewer resources than Node.js, and startup time is quite fast.
clintonb··on From Supabase to Clerk to Better Auth
OAuth 2.x and OIDC haven’t changed much. I still use Passport.js with Firebase.
clintonb··on Formatting a 25M-line codebase overnight
LOC doesn’t have much to do with the “constraints of the language”.

Stripe has dabbled in Golang. There is also a growing Java monorepo.

clintonb··on Formatting a 25M-line codebase overnight
Ruby code touches financial transactions. Card payments were migrated to Java when I left in 2022. Non-card payments (e.g., ACH, checks, various wallets) were still processed by Ruby.

PCI-related/vaulting code lived in its own locked-down repo. I think that was a mix of Go and Ruby.

Once you have the foundations in place for account balances and the ledger, processing a payment isn’t that daunting. Those foundations, however, took a lot to build and evolve.

clintonb··on Maryland to ban A.I.-driven price increases in grocery stores
The electronic shel labels use e-ink. Their refresh time is around 30 seconds. What happens if two shoppers are looking at the same product?
clintonb··on Maryland to ban A.I.-driven price increases in grocery stores
Your plan fails in a few ways.

Refreshing the content on an electronic shelf label (ESL) takes about 30 seconds, and multiple people can view a product simultaneously. Unless the store is giving everyone AR glasses, people will notice the price discrepancy.

This assumes you have sufficient data to actually recognize a shopper such as facial ID or some form of iBeacon for every single product for which you wish to implement price discrimination. Basic ESLs cost $3 to $12, depending on size and use very little energy. Adding a camera means more energy, so a bigger battery and more cost.

Using in-app discounts is the most likely way to implement this, which I am okay with. Shoppers are willingly trading their data privacy for a discount.

clintonb··on Maryland to ban A.I.-driven price increases in grocery stores
You're thinking of pricing zones—shoppers in Zone A pay a different price than those in Zone B. This makes sense, for example, if shipping costs are higher in Zone B.

The bill in question is about per-shopper pricing (e.g, you and I pay different prices in the same store). This is something Lyft and Uber do, but it's not really possible in retail.

clintonb··on Spirit Airlines Is Winding Down All Operations
It’s strange to see so many commenters celebrating the death of a company and the loss of so many jobs.

I flew Spirit a few times. The first time sucked because it was an emergency and I had no other option. The last few flights were great. We got the large seats up front for $75 extra. That plus parking at SJC was still cheaper than flying Southwest out of OAK.

The staff were friendly, and the gate was conveniently across from a lounge, so we had a truly great experience for those couple flights to Dallas.

clintonb··on Ask HN: How is AI-assisted coding going for you professionally?
> make a code change and then deploy the changes to gamma and verify they work by making a sample request and verifying output from cloudwatch logs etc

This has been a godsend over the past week while deploying a couple services. One is a bridge between Linear and our Coder.com installation so folks can assign the work to an agent. Claude Code can do most of the work while I sleep since it has access to kubectl, Linear MCP, and Coder MCP. I no longer have to manually build, deploy, test, repeat. It just does it all for me!

clintonb··on MCP is dead; long live MCP
Nothing is “trivial” when you combine humans and computers. I worked at the MIT Computing Help Desk during my undergraduate years. We joked that we received callas from Nobel laureates who could find subatomic particles but couldn’t find the Windows Start button.

My company is currently trying to rollout shared MCPs and skills throughout the company. The engineers who have been using AI tools for the past 1-2 years have few, if any, issues. The designers, product managers, and others have numerous issues.

Having a single MCP gateway with very clear instructions for connecting to Claude Desktop and authenticating with Google eliminates numerous problems that would arise from installing and authenticating a CLI.

The MCP is also available on mobile devices. I can jot down ideas and interact with real data with Claude iOS and the remote MCP. Can’t do that with a CLI.

clintonb··on After two years of vibecoding, I'm back to writing by hand [video]
You're producing technical debt. At some point you will invest more time fixing the vibe slop than it would have cost you to do the work yourself in the first place. A lot of vibe-coding just feels like shifting responsibility and resources from "development" to "incident response".
clintonb··on After two years of vibecoding, I'm back to writing by hand [video]
How do you know the output is correct?
clintonb··on Claude Code gets native LSP support
You joke and folks downvote, but this is my biggest issue with WebStorm. I'm seriously considering switching for the first time in 16 years. Zed is quite snappy. The Claude Code integration in VS Code is brilliant. I've used the CLI in the JetBrains terminal. I had no idea I could revisit past conversations until I used the VS Code extension!
clintonb··on Pricing Changes for GitHub Actions
Thanks for the email and the reminder that we can use fewer shards with larger runners.
clintonb··on Pricing Changes for GitHub Actions
GitHub charges too much for hosted runners. It's pretty straightforward to switch to another runner provider at literally half the cost of GitHub.
clintonb··on Pricing Changes for GitHub Actions
Yikes! They seem to be gunning for services like WarpBuild, which we've used for a couple years to keep our costs low. The $0.002 per minute on top of WarpBuild's costs is exactly GitHub's new pricing scheme.

I'm happy for competition, but this seems a bit foul since we users aren't getting anything tangible beyond the promise of improvements and investments that I don't need.

clintonb··on Show HN: We built an open source, zero webhooks payment processor
> Not to mention choreographing the lifecycle of our business domain with the Stripe checkout flow and webhook event types, of which there are 250+

You don’t need to listen for all event types if you aren’t using _every_ Stripe feature.

clintonb··on What if you don't need MCP at all?
I like MCP for _remote_ services such as Linear, Notion, or Sentry. I authenticate once and Claude has the relevant access to access the remote data. Same goes for my team by committing the config.

Can I “just call the API”? Yeah, but that takes extra work, and my goal is to reduce extra work.

clintonb··on Exploring PostgreSQL 18's new UUIDv7 support
I prefer TypeID: https://github.com/jetify-com/typeid
clintonb··on Exploring PostgreSQL 18's new UUIDv7 support
Client-generated IDs are necessary for distributed or offline-first systems. My company, Vori, builds a POS for grocery stores. The POS generates UUIDv7 IDs for all data it creates and that data is eventually synced to our backend. The sync time can range from less than 1 second for a store with fast Internet to hours if a store is offline.

Is a collision possible? Yes, but the likelihood of a collision is so low that it's not worth agonizing over (although I did when I was designing the system).

clintonb··on Database Linting and Analysis for PostgreSQL
Seems nice. It would be better if it could be run as a script or agent, instead of a plugin, so it could work against hosted installations on AWS or Google Cloud (both of which limit extensions).
clintonb··on Meta launches Hyperscape, technology to turn real-world spaces into VR
VRML was one of my early computing interests. I’m actually excited for more ways to share 3D spaces with folks!
clintonb··on GitHub was having issues
Do you mean free private repos? GitHub has allowed free private repos for a few years now.
clintonb··on “Reading Rainbow” was created to combat summer reading slumps
Do you have children? You tell them something is animal-related and they tend to get really excited. Even more so for dinosaurs. My five year old has no concept of money, but he does have a concept of “new thing I can play with”.

When I was a kid we had Book It. I got a free personal pan pizza from Pizza Hut for every 10(?) books I read. I read a lot of books! I also learned a lot along the way, and continued the habit of reading for fun through college.

clintonb··on Is Firebase Console Down
https://status.firebase.google.com/incidents/qFom8wi75A4owwT...
clintonb··on Claude Integrations
Greptile (https://www.greptile.com/) tries to do that, at least for bug tickets. I recall being annoyed by its suggestions (posted as Linear comments).
clintonb··on A faster way to copy SQLite databases between computers
Despite the beta label and lack of a 1.x release, I would consider the project pretty stable. We've used it in production for over 18 months to support an offline-first point of sale system. We haven't had any issues with Litestream.
clintonb··on JetBrains defends removal of negative reviews for unpopular AI Assistant
I'm not OP, but agree that the tooling—DataGrip and WebStorm for me—is getting worse. Here are issues observed for the latest updates:

- DataGrip sporadically stops working when returning from sleep. I have to force-kill it to continue.

- Take a relatively empty file with 10 lines. WebStorm is supposed to reformat on save. It hangs for 10+ seconds or until I cancel reformatting.

- I saw a low memory alert for the first time in months this week. My workflow hasn't changed drastically and I wasn't running anything, just editing a few files.

- Overall everything feels a little slower than it did a couple weeks ago with the older version.

I don't think it's worth filing issues in YouTrack because I've seen those go nowhere in the past.

clintonb··on You're protecting your data wrong – Introducing the Protected Query Pattern
You're not crazy, but you assume everyone starts with security in mind. That is definitely not the case.
clintonb··on You're protecting your data wrong – Introducing the Protected Query Pattern
This is a nice setup for Attribute-Based Access Control (ABAC). I arrived at a similar design a couple weeks ago, using Casbin as our authorization backend. The challenge is that I want to store user's roles and domains and use those domains to limit access. However, I do not want to replicate my existing DB to create a record in Casbin for every resource that might be accessed.

This means, yes, when validating access, you must load the data you want to access and compare its attributes against the user's authorization. One advantage of doing this is that the system can either return a 404 if the object belongs to a completely different domain, or, if the object belongs to a sub-domain, return a 403 and sufficient data to power a request for temporary privilege escalation.

I'm open to ideas for improving this.

← PreviousPage 2 of 26Next →