HNHacker News
TopNewBestAskShowJobs

theobr

344 karma · joined May 1, 2019

Founder of Ping.gg
submissionscomments
theobr··on Request logging and web vitals for Vercel apps
We've been using Axiom at Ping for awhile now and it's 100% the drop-in logdrain we've been looking for.

Couldn't be simpler. Team's great too. Highly recommend

theobr··on TRPC: End-to-end typesafe APIs made easy
tRPC has been a lifesaver for us at Ping.gg

Never had such a seamless experience building and deploying “full stack” apps. Multiple classes of bugs just, like, don’t happen now?

Helped build up a lot of the GraphQL tech at twitch, and I still love it, but man do I not miss all the work maintaining the “contract” between front and back. I know we will have to move off tRPC eventually, but I’m hyped at how far it’s taken us already

theobr··on Migrating from SQLite to PostgreSQL
Re: the "tailwind is the new Bootstrap" bit - half agree.

tailwind-typography is highly opinionated and "automatically applied", unlike Tailwind itself. I don't think that Tailwind will be quite as immediately visible outside of blogs....unless TailwindUI really takes off.

Unless you're really sensitive to colors, then you might notice the Tailwind gray

theobr··on Functional Web App (FWA)
Lambda =/= microservice. I run my entire company off of a single lambda function and a single Next.js project - best DX I've ever experienced.
theobr··on Functional Web App (FWA)
This feels a lot like the growing Vercel + Planetscale solution. (or Netlify/Cloudflare/Amplify + Cockroach/Supabase/Aurora)

Vercel provides CDN caching for static assets, edge functions, and lambdas. Planetscale provides MySQL as an interface on top of an effectively infinite scale Vitess cluster.

My app is a stupid pipe from my db to my user that goes through a single lambda function on Vercel. Pretty hard to beat.

theobr··on Launch HN: GrowthBook (YC W22) – Open-source feature flagging and A/B testing
Been using GrowthBook for a few weeks now at Ping Labs and man, this is exactly what we needed.

We're a small startup moving incredibly quick. I was shocked at how much setup time it took to get a simple feature flag into our app with other services like Darkly. We had Growthbook working in roughly 15 minutes with under 10 lines of code changed.

Feels a lot like the "a-ha!" moment I had with Plausible.io. This is all we will need for a long, long time.

theobr··on Ask HN: My boss doesn't think I'm doing good work, how to proceed?
I'm getting a suspicion of an "umbrella manager" here, like the boss is a storm and your manager has done a good job keeping you out of it. Either that or he threw you under the bus, but that feels less likely.

I would try and talk with your manager about this. See how he feels about the boss and their method of delivering feedback. If my suspicion is correct, he's getting it even worse than you.

Either way, I'd recommend you start hunting for your next gig. If your manager is dealing with the same type of degrading feedback, bring him too :)

theobr··on An Inconsistent Truth: Next.js and Typesafety
They use those things for some very specific math-heavy transforms and rendering - still all Javascript for the UI. I’ve used WASM for some ffmpeg-in-browser stuff too.

The belief in WASM as a method to build client-facing software is an amusing self own. There is literally no production examples because it is not production ready for dom-heavy stuff.

theobr··on An Inconsistent Truth: Next.js and Typesafety
Point me at one fast moving “large client side app” that uses Rust via WASM over Typescript and I will move my entire company over
theobr··on An Inconsistent Truth: Next.js and Typesafety
The solution I recommend (tRPC) allows you to write no typedefs whatsoever lol
theobr··on An Inconsistent Truth: Next.js and Typesafety
This reply alone makes all the effort I’ve put into my stack worth it. Thank you :)
theobr··on An Inconsistent Truth: Next.js and Typesafety
Without a strongly inferred type system, all of the things you’re describing around “changing everything to change one thing” are just as much a problem.

In a well typed system, you can choose how deep you want your changes to go.

Let’s say you choose to rename a field in db, I.e. “imageUrl” -> “profilePicURL”. Upon making this change, you will receive type errors on the client consuming it.

At this point, you can make a choice. You can go address all the furthest end consumers, which is what you imply is necessary here. You can just as easily re-shape the data being returned though.

return { …user, imageUrl: user.profilePicUrl }

I firmly believe we’re nearing the “best of both worlds” here :)

theobr··on An Inconsistent Truth: Next.js and Typesafety
You should check out the video I link at the end - the most complex problems have the exact same solutions when your types are inferred :)
theobr··on An Inconsistent Truth: Next.js and Typesafety
This is super cool and I’m excited to dig in more

Any chance there are some demos building a full stack app on this tech?

theobr··on An Inconsistent Truth: Next.js and Typesafety
Hey y’all! I’ve been a big nerd about all things React, Next and Typescript for awhile and wanted to formalize some of my thoughts and frustrations into this article.

I was lucky enough to get some awesome eyes on it early, including a handful of people from Vercel. I hope this sparks some good discussion!

theobr··on Next.js 12
Webpack is no longer a dependency of Next.js - this was the big announcement about the compiler. You will have to opt out of the new SWC compiler (if this is an option atm)
theobr··on Quitting your dream job twice
When you say "+ dependencies" do you mean the package lock file? I measure written-by-humans LOC.

This particular rewrite happened to drop about 14 unnecessary deps in favor of vanilla Node.js, Typescript and Socket.io

theobr··on Quitting your dream job twice
Would love for some of these commenters to tell my customers to go back to Zoom because it's a "real product" lol

Really appreciate the support man. I've built enough "real product" to be confident that this method of building is just as real as the rest.

theobr··on Quitting your dream job twice
Honestly I expected it to take at least a week or two. The team that owned the backend made it seem like there was a lot of "super tough magic going on here", which was a lie on its face.

Lesson learned for sure - spend a few hours hacking at it before trusting someone else's claims of inherent complexity

theobr··on Quitting your dream job twice
I really need to do a follow up post on this: "building safety nets"

If you plan ahead, risk can be contained to small enough spaces to make big experiments much safer. Had surprisingly good luck with this over the last year. Round is practically a ship of Theseus with how many parts I've gutted

Love seeing you here man, let's catch up soon

theobr··on Quitting your dream job twice
I've taken plenty of these opportunities. I describe one in detail in the post. The majority of the teams I've been on were structured well enough for easy wins to be taken and good solutions to be built.

The issues come when the red tape is so absurdly placed that obvious wins are being missed. I'm not leaving due to my inability to communicate what is right, I'm leaving _in spite of_ my communication and leadership being effective.

Always happy to be challenged and find compromise, but this post isn't about that. It's about drawing the line.

I hope you have your line drawn somewhere reasonable too. "CTO" or not, I promise it will make you much happier :)

theobr··on Quitting your dream job twice
We have a lot of ideas but I don't want to share too much as we haven't committed to any one thing yet. Definitely eyeing the IRL/mobile streaming market though, feels like there's a growing need for some innovation in that realm
theobr··on Quitting your dream job twice
We're built on top of Agora at the moment. We saw some super promising numbers in the sub-100 range but I didn't thoroughly test. Their SD-RTN whitepaper(1) makes claims nowhere near that bold, so I will update accordingly

1) https://hello.agora.io/rs/096-LBH-766/images/Agora_WP_SD-RTN...

theobr··on Quitting your dream job twice
Oh man no way I wrote this!!! Thank you for sharing, happy to take questions
theobr··on Tony Hawk on his skateboarding legacy
fwiw Andy has had some brutal head injuries. He wears the helmet because of his uniquely high risk

Still love that he has put so much work into normalizing the helmet, even spinning up a new brand and helmet style that's much less hideous. Tbh I don't even notice the helmet when I watch him skate

theobr··on Tony Hawk on his skateboarding legacy
Lifetime skater here. You hit the nail on the head with the 'genius-from-restriction'. I call it "the Mullen effect"

Every generation has a handful of those skaters that grew up in total isolation. Instagram and other social media has made it less likely that a skater stays fully separated, but those that do still stand out.

The big one of the last generation was Chris Cole, who grew up skating in his driveway with a little ledge he built himself. Similar to Mullen mastering flatground, Cole mastered every single ledge trick. The term "NBD" (Never Been Done) was coined to describe the tricks that only he is known to have done

theobr··on Babel is used by millions, so why are we running out of money?
Mind introducing me to some of these people? My company is actively hiring experienced JS devs and I’ve yet to find any senior enough to maintain Babel for under $200k
theobr··on Show HN: Dogecoin Simulator – A Game About Dogecoin
Gladly :)

Zustand is a state management library for React, similar to Redux or Mobx. It’s super minimal, allowing you to configure a single object with values and functions that is shared across the codebase

Almost all of the “game logic” lives in a single file that only depends on Zustand: https://github.com/TheoBr/dogecoin-simulator/blob/main/src/e...

I am also using Zustand for my job: https://tt.fm

I’ve been super impressed with Zustand’s conciseness and performance. Recently have been impressed with portability too, all our Zustand stores have been copy-pasteable between our React and RN apps :)

theobr··on Show HN: Dogecoin Simulator – A Game About Dogecoin
Hey HN!

Excited to share this dumb little game I made over the last week. I had the idea Thursday and couldn't shake it so I hacked it out over the last few days. The core loop is heavily inspired by Universal Paperclips https://www.decisionproblem.com/paperclips/index2.html

Tech stack is React + Typescript with a pile of helper tools such as Zustand, Victory and react-modal. There's a somewhat complete list in the in-game settings window. Happy to go more into detail on any of this if there's interest - the Zustand state machine in particular was quite fun :)

Source code is available on Github https://github.com/TheoBr/dogecoin-simulator/

theobr··on AirPods Max: An Audiophile Review
Heyo, audiophile here. This is an...interesting review.

I'm not sure what he listened to, but man, that DSP does as much as bad as good on a _lot_ of types of music.

I also reviewed the AirPods Max, and while I very much enjoyed their sound on a good chunk of music, I came to a very different conclusion.

If you're interested, link below :)

https://t3.gg/blog/posts/airpods-max

← PreviousPage 2 of 3Next →