RSSAmplifier

Blog

David Golden on xdg.me

I like building things, solving problems and playing games, occasionally at the same time

xdg.meRSS feed ↗25 posts

Latest posts

Hacking the job interview

The best thing you can do in an interview is make the interviewer picture you already doing the job. Once that image takes hold – you on their team, solving their problems, relieving their stress – they start to feel relief, maybe only subconsciously, at the idea of you being hired. And when it comes time to make a decision, loss aversion kicks in. It’s psychologically harder to…

Resources for verbal communication skills

This list targets verbal communication in the workplace for people in the tech industry. Some links may have ideas that apply to written communications or public speaking, but that is not the focus. I do not have personal experience with all of these, but I hope this list is still a useful jumping off point for people looking to level up their communication skills. If you have suggestions of…

AI conversations

I wrote this in December 2024 but it sat as a draft until I rediscovered it in early 2026. I’ve backdated it as a record of where my head was at the time. I’ve always considered myself a great refiner of other people’s ideas. Tell me your idea and I can instantly tell you what works and what doesn’t and give you lots of suggestions for refinement. But give me a blank sheet…

Supercharging MongoDB Atlas Data Lake (MongoDB World)

Original abstract Data Lake Storage (DLS) is a new, managed data service that automatically optimizes your ingested data for lightning-fast analytic queries. Join MongoDB staff engineer David Golden as he explains how we built DLS and why it improves query performance. We’ll cover how DLS ingests, partitions, and automatically rebalances your data. We’ll explain how this works in…

Mentor matching platforms

I wrote How to mentor software engineers , but not everyone has access to mentors and mentees around them. Some companies have sprung up to try to help match people up. Here are some I’ve found: Merit (free): tech mentorship, focused on under-networked tech workers Mentors in Tech (free): mentorship for US community college students who are trying to break into tech CodeMentor (paid): paid…

Human-readable bytes like 'ls -lh' in Go

I once had a feature request for “human-readable bytes like ls -lh ”. Surely, there must be a library for that , I thought. But ls -lh has special, irregular semantics I couldn’t find all implemented together in the same library! Use no decimal or unit suffix for values under 1024 bytes: 0 or 897 Use one decimal if the integer part is a single digit: 1.0 K or 9.9 M Use no decimal…

Unmarshal text with Go reflection

As much as I like Go, I sometimes really miss dynamically-typed languages. I find Go tedious when I have to parse some arbitrary text format or lines from stdin, which would be trivial with Python, Ruby or Perl. Parsing JSON with Go is easy – just unmarshal it right into a struct. I wanted to unmarshal a line of text the same way, so I wrote a library, strum , to do exactly that.

How to mentor software engineers

A friend and fellow staff+ engineer posted a question to a peer group Slack: Anyone have suggestions on how best to mentor software engineers? At the time, I said a few things about radical candor and actionable feedback , but the question stuck with me. I mentor people, but I’ve never thought formally about what it is or how I do it. Like a lot of soft skills, we’re rarely taught how…

Use a career ladder for growth conversations

A “growth conversation” is a talk with your manager about how to get promoted. It might not be explained that way, but don’t be fooled. I’ve written this for non-managers. But if you’re a manager, use this technique and your team will love you for it! I’ve found that a lot of these talks wind up muddy and subjective. It’s easy to come out of them without…

Best career advice: ask for feedback

The best career advice I ever heard was this: “No one cares more about your career than you!” If you wait for your manager or your company’s review process to give you feedback, it’s almost certainly going to come later than you’d like. There’s a good chance that you’ll have missed out on opportunities to improve and the review you eventually get will bake…

Articles on equity comp and value

As I wrote How to think about equity compensation , I found the following articles helpful: A No B.S. Guide to Startup Stock Option Grants Dissecting startup failure rates by stage Employee compensation and one-year equity grants Equity 101 for Software Engineers at Big Tech and Startups How to get rich in tech, guaranteed. Series A, B, C Funding: Averages, Investors, Valuations Series A, B, C…

How to think about equity compensation

Many tech jobs pay a portion of employee compensation in the form of equity. This is a great deal for companies: They get to defer paying you They get to pay you without burning cash If you quit before you vest, they don’t have to pay you If you have a lot of unvested equity, you’re less likely to leave How good a deal is this for employees, really? Imagine that your employer only paid…

Why I write

I was out for a walk. And as I often do on walks, I used the time to think about an article I was working on. Suddenly, though, I was struck with a deeper question: Why do I write? I realized there are two parts to the answer to this question. And the more I thought about it, the more I realized how important both were to keeping me motivated.

Why the Apache2 License

For any open source work, I always pick the Apache2 License if I have the choice. It’s not as short and simple as the MIT License , but it has one killer feature: Apache2 is the only popular open source license that makes explicit provision for licensing contributions . Here’s the key paragraph: Submission of Contributions. Unless You explicitly state otherwise, any Contribution…

A better way to learn a new codebase

Some people work on the same codebase for years, developing deep mastery. The rest of us have to start from scratch as we switch projects or jobs. Being able to learn a new codebase quickly and effectively is a programmer superpower. Most guides I’ve seen on learning a codebase boil down to “read and ask questions”. For a small codebase, that can work. But as the codebase grows,…

80/20 is half-ass when value is logistic

80/20 is a great heuristic for power laws and asymptotic progress, but be careful when value accrues logistically. My friend swyx wrote an article, “80/20 is the new half-ass” , that pushed my buttons. But on a second read, I realized that nothing he said is wrong. It bothered me because it dunked on one of my favorite tools without advice for using it well. To me, the 80/20 heuristic…

Using git merge --no-ff

When working with git, I like linear history because otherwise merging concurrent feature branches makes the history graph look like spaghetti. Two common ways to get a linear history are squashing and rebasing. Squashing applies all the changes on the feature branch as a single linear commit on the target branch. # Before squashing: A---B---C main \ D---E---F feature # After squashing:…

How I broke the MongoDB Go driver ecosystem

I unintentionally broke the MongoDB Go driver ecosystem one March weekend in 2021. Dependency management systems are hard. In late 2018, I moved all my Go libraries from github.com/xdg to github.com/xdg-go to keep my Go work separate from other projects/languages. This seemed painless, because GitHub automatically redirects repositories after a rename. For example, in a project that was importing…

Interviewing engineers, part 2

Welcome back! In part 1 of this article, I said: I think tech industry hiring is pretty broken. If you feel the same and are looking for inspiration, I’ll tell you what I did differently when I had the chance. Part 1 covered my philosophy about interviewing and I described changes I made to the hiring process: Using promotion criteria to guide hiring criteria Having the hiring manager do the…

Interviewing engineers

I think tech industry hiring is pretty broken. If you feel the same and are looking for inspiration, I’ll tell you what I did differently when I was a hiring manager at MongoDB. Caveat: I don’t claim this only way to interview. It’s just something I tried that I think is better than the typical way it’s done. Take my ideas if you’d like, but do your own experiments…

Craft of coding reading list

I’m sharing a list of recommendations to help software developers learn the practice of software development as a combination of craft and career. I use this for recommendations for new junior engineers. The items are generally language-agnostic. They cover topics including: Professional behaviors and human interactions Software design principles and heuristics Testing best practices…

Leading without managing

What does it mean to lead when you don’t have coercive power to get your way? Good managers are often good leaders. But managers don’t have to be good leaders to get their way because they have authority to make decisions unilaterally. What if you don’t have that authority? Perhaps you’re an individual contributor. Perhaps you are a manager, but want to show leadership when…

Convert Google Doc to Markdown

Occasionally, I want to convert a Google Doc to Markdown in a way that preserves links and at least some of the formatting. I’ve tried various online recommendations and been disappointed. Here is the approach I’m using lately: In the Google doc, select the menu item File → Download → Microsoft Word (docx) . Upload the DOCX file to @benbalter’s free Word to Markdown Converter .

Curated links on better technical interviewing

The software industry’s usual approach to interviewing and hiring is terrible . I’m keeping an evergreen list about problems that exist and what people are doing about it. Also, see my own long-form article, Interviewing Engineers . The list is roughly alphabetized by title, with a few short notes to remind me about key points. Suggestions for additions are welcome! A Technical Hiring…

Resources for system design interview prep

You have to do a systems design interview and you have no idea what that means? A systems design or architecture interview is a conversation about how to build a software system given real world assumptions about scale, constraints and tradeoffs. Typically this means drawing boxes for components like load balancers, web servers, databases, caching layers, etc. and describing how they work together…