Some personal news: I've accepted an offer to join Ramp as a Staff Software Engineer. It seems like a wonderful fit, and I'm very excited to start at the end of the month. If you're a senior engineer who hasn't done an open-market search in nearly a decade, this post is for you. Hesitating to run a broad search often means staying underpaid in a role that's no longer the…
This probably sounds a bit crazy. Or, you may have forgotten what a network stack is. But before you dismiss the concept of a layered protocol stack inside of a browser extension as ravings by a madman, or a concept too convoluted to bother understanding, let me provide some context. We’ll go over the background info of: What our browser extension does What the architecture of a MV2 browser…
Given a uniformly distributed random-number-generating function, f() , how can you transform it into a function with a bimodal distribution, g() ? A histogram of a normal distribution. Randomly sampled values are evenly weighted across the output range. A bimodal distribution. Most values (mode) clump in two (bi) heaps, hence "bimodal". This is the question that I dealt with as I overengineered my…
Author's note: this stream-of-consciousness journal entry has not been through the editing cycle I try to apply to posts. That said, it's been a useful reference to at least one early-career PM, so I've made it public. I hope you find it helpful. I'm still an engineer, but we're trying out something new at Jam (where I work). For this 6 week engineering sprint, I'll…
Have you ever wondered how mail clients work under the hood? Most mail clients fetch your mail with a protocol called called IMAP, and it's surprisingly human-readable. Here's how it looks: Three examples of how you might use the IMAP FETCH query to see the raw data that your mail client uses Above, I've queried the same message in three different ways, each returning different…
This post is about saving money on hobby projects, by scraping the bottom of the barrel with what your cloud provider offers. Most cloud providers have a free tier of hosting, with low RAM. For example, Fly.io currently offers 3x instances of a shared-1-cpu instance with 256mb RAM. But what if you need more? Fly.io's pricing page shows you'd pay ~$10/mo for a 2gb RAM instance. I have a…
Of all the skills to learn on the job, onboarding quickly is possibly the most underrated. You only onboard to a job once, that initial momentum sets up the rest of your experience. But people learn from experience, and it's not often that you switch to a new job. Luckily, in college, I had 4 internships, and then immediately worked at 3 startups (which had a big spread—1 IPO'd, and two…
Earlier this week, I hit Hacker News's frontpage with a technical magic trick. HN users were surprised, impressed, and paranoid. Maybe a little too paranoid , in classic HN fashion. If you haven't yet, you can test it out here (desktop Chrome only). Once you're done, you may be curious about the details. How does it work? In order to understand the magic, let's first go over…
Oftentimes, it feels like we overengineer the solutions we build. Patching packages never feels this way. When I use patch-tool, it's often the best solution. It may not be the best long-term solution, but it's so darn fast. And at a startup, speed of development directly translates into product velocity. So let me tell you how to use it. With an example: Patching Datadog. What…
Do you know how some kids want to be teachers when they grow up? Do you know why? I do. When I was in fifth grade, I was shy, short, and quiet. I had skipped two grades, and so I was two years younger than the other students. My parents had moved five times (Vermont, Pennsylvania, Indiana, New Mexico) before we had come back to Texas, and I didn't have a lot of friends. Or, for that matter,…
(This post originally published on Tandem's blog ) What’s the piece of technology that reduced your headache the most in the last year? For me, it’d be Portal Windows . It's a library we made at Tandem that lets you render and position native windows as simply as you render and position tooltips in your React app. tired: juggling your free time. wired: juggling some portal windows A year…
I don't know. Maybe it's because I've got lots of things to do. Maybe that's just something I tell myself when I procrastinate work that seems hard. Why is writing hard? Because it's vulnerable? Or because vulnerable work is held close-to-heart, and the standards are higher, so I truly do need to do more work to get it out? Why don't I feel like writing? I don't…
My parents live in a fairly rural area of Texas. There's no cable internet, and fiber is out of the question—they're the target demographic for Starlink. When I was in high school, we used our phone landline for a very-flaky, too-expensive DSL. Nowadays we use hotspots. So if there's no hotspot, there's no internet. And when I flew in this winter to visit, my paid hotspot plan…
Most task managers make two assumptions. Do you make them too? A task manager needs to remember all of your tasks (Would you buy a task manager that lost data?) All tasks can use a similar creation workflow (You hit the 'create issue' button, and fill in some fields. Simple, obvious, how could it be better?) It's not obvious that they're wrong—they actually seem useful . But…
Fiddling with monitors is annoying. This method lets you get an SSH connection to your Pi without having to connect it to a monitor, find an external keyboard, or manually type in your wifi password. Simple and portable enough that you could do the entire process at a cafe Taking out the manual process and sending everything over the wire makes it much easier to automate initial config, and I…
Having a home server has many benefits: Spotify-connected speakers 🔈 wifi printing 🖨 automated laptop backups over wifi 💿 and more! 😱 And you might find this useful, when you have: unused speakers a wired, usb-only printer and a laptop that hasn't been backed up in a year And I did. And I had an unused Raspberry Pi I could use as a home server. But I kept procrastinating on setting it up.…
I used to find writing for a public audience to be a taxing process. I wasn't sure why , but I thought it might be because my workflow was bad. To tackle that, I built a small project. I hoped it'd be an end to my writing troubles. This post goes over how I built that project (it is kind of a cool project). But it also goes over why it was the wrong solution. Misdiagnosing the root issue…
This weekend at HackPrinceton, my teammate Benny Yan and I made a prizewinning electronic banjo. It's not an electric (amplified) banjo. The difference is when you hold down frets and strum strings, the sounds it plays are mp3 files, not amplified string vibrations. Final software and hardware, side by side In addition, there are LEDs under the fretboard that light up to show you where to…
At this Spring's HackPrinceton, my friend AK and I built a fast and efficient 3d scanner out of spare parts. I think it's very cool. The final product. The slower the motors run, the more accurate the scan. Both the project submission and the source code are online. How does it work? For measurement, we used a reflective IR LED. More detail on this later, but basically I'm using it…
So you're a beginner to either hackathons or hardware hacking, and you're not sure what to bring? Well, at HackDFW, we've got a pretty solid hardware setup, so you should have everything you need. At hackathons that aren't as focused on hardware though, here's an example list of what to bring. There's also a section on helping you figure out which board to use for a…
This isn't just for people who haven't gone to hackathons before, but also for people who went to one and had an underwhelming experience. Hackathons are all different, so don't let one bad experience shy you away from them. What are they? So you're going to a hackathon. You've signed up, and you don't know quite what it is, but you're interested, maybe because…
Here's my first post on here. I wrote it before I ended up setting up my blog. I figured I had to start writing blog posts some point, and by writing my ideas on things as I encountered them, I'd remember my ideas better. Inspiration: I started writing this after looking at some GitHub API docs , and not understanding how to read files from a private repo. I ended up looking around,…