<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>David Golden on xdg.me</title>
    <link>https://xdg.me/</link>
    <description>I like building things, solving problems and playing games, occasionally at the same time</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>xdg@xdg.me (David Golden)</managingEditor>
    <webMaster>xdg@xdg.me (David Golden)</webMaster>
    <copyright>Unless otherwise noted, text and media are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Code samples licensed under The MIT License.</copyright>
    <lastBuildDate>Mon, 09 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://xdg.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hacking the job interview</title>
      <link>https://xdg.me/hacking-the-job-interview/</link>
      <pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/hacking-the-job-interview/</guid>
      <description>&lt;p&gt;&lt;strong&gt;The best thing you can do in an interview is make the interviewer picture
you already doing the job.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once that image takes hold &amp;ndash; you on their team, solving their problems,
relieving their stress &amp;ndash; 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. &lt;strong&gt;It&amp;rsquo;s psychologically harder to say &amp;ldquo;no&amp;rdquo;
to someone you&amp;rsquo;ve already imagined saying &amp;ldquo;yes&amp;rdquo; to.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Resources for verbal communication skills</title>
      <link>https://xdg.me/resources-for-verbal-communication-skills/</link>
      <pubDate>Wed, 26 Nov 2025 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/resources-for-verbal-communication-skills/</guid>
      <description>&lt;p&gt;This list targets &lt;strong&gt;verbal communication in the workplace&lt;/strong&gt; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;If you have suggestions of things to add, please tell me!  My contact info is
at the bottom of the page.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>AI conversations</title>
      <link>https://xdg.me/ai-conversations/</link>
      <pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/ai-conversations/</guid>
      <description>&lt;div class=&#34;aside&#34;&gt;
&lt;p&gt;I wrote this in December 2024 but it sat as a draft until I rediscovered it in
early 2026. I&amp;rsquo;ve backdated it as a record of where my head was at the time.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;rsquo;ve always considered myself a great refiner of other people&amp;rsquo;s ideas.  Tell
me your idea and I can instantly tell you what works and what doesn&amp;rsquo;t and give
you lots of suggestions for refinement.&lt;/p&gt;
&lt;p&gt;But give me a blank sheet of paper and a general topic and I&amp;rsquo;ll struggle to
get traction.  Even when I do, I feel the burden.  It&amp;rsquo;s not fun.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Supercharging MongoDB Atlas Data Lake (MongoDB World)</title>
      <link>https://xdg.me/supercharging-mongodb-atlas-data-lake/</link>
      <pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/supercharging-mongodb-atlas-data-lake/</guid>
      <description>&lt;h2 id=&#34;original-abstract&#34;&gt;Original abstract&lt;/h2&gt;
&lt;p&gt;Data Lake Storage (DLS) is a new, managed data service that automatically
optimizes your ingested data for lightning-fast analytic queries.&lt;/p&gt;
&lt;p&gt;Join MongoDB staff engineer David Golden as he explains how we built DLS and
why it improves query performance.  We&amp;rsquo;ll cover how DLS ingests, partitions,
and automatically rebalances your data.  We&amp;rsquo;ll explain how this works in
concert with our new metadata catalog to optimize query planning.  And we&amp;rsquo;ll
describe the asynchronous workflow underneath it all that seamlessly recovers
from outages to keep your data safe.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Mentor matching platforms</title>
      <link>https://xdg.me/mentor-platforms/</link>
      <pubDate>Wed, 18 May 2022 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/mentor-platforms/</guid>
      <description>&lt;p&gt;I wrote &lt;a href=&#34;https://xdg.me/mentor-engineers/&#34;&gt;How to mentor software engineers&lt;/a&gt;, 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&amp;rsquo;ve found:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://get-merit.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Merit&lt;/a&gt; (free): tech mentorship, focused on under-networked tech workers&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mentorsintech.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Mentors in Tech&lt;/a&gt; (free): mentorship for US community college students who are trying to break into tech&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.codementor.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CodeMentor&lt;/a&gt; (paid): paid mentorship for software developers&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mentorcruise.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MentorCruise&lt;/a&gt; (paid):  paid mentorship from senior engineers and engineering managers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you know of others I should add, please let me know.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Human-readable bytes like &#39;ls -lh&#39; in Go</title>
      <link>https://xdg.me/human-readable-bytes/</link>
      <pubDate>Mon, 10 Jan 2022 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/human-readable-bytes/</guid>
      <description>&lt;p&gt;I once had a feature request for &amp;ldquo;human-readable bytes like &lt;code&gt;ls -lh&lt;/code&gt;&amp;rdquo;.
&lt;em&gt;Surely, there must be a library for that&lt;/em&gt;, I thought.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;ls -lh&lt;/code&gt; has special, irregular semantics I couldn&amp;rsquo;t find all implemented
together in the same library!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use no decimal or unit suffix for values under 1024 bytes: 0 or
897&lt;/li&gt;
&lt;li&gt;Use one decimal if the integer part is a single digit: 1.0 K or
9.9 M&lt;/li&gt;
&lt;li&gt;Use no decimal if the integer part is more than one digit: 10 K or 582
M&lt;/li&gt;
&lt;li&gt;Aggressively round up: 999 M + 1 byte rounds up to 1 G&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you ever have a similar request, here&amp;rsquo;s some Go code you can use.  Unlike
&lt;code&gt;ls -lh&lt;/code&gt;, this does add a space between the number and the suffix.  It&amp;rsquo;s also
generic to any base or suffixes you want.  See my &lt;a href=&#34;https://github.com/xdg/zzz-humanbytes&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;demo
repo&lt;/a&gt; for more examples and test cases.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Unmarshal text with Go reflection</title>
      <link>https://xdg.me/unmarshal-reflection/</link>
      <pubDate>Sun, 02 Jan 2022 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/unmarshal-reflection/</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Parsing JSON with Go is easy &amp;ndash; just unmarshal it right into a struct.  I
wanted to unmarshal a line of text the same way, so I wrote a library,
&lt;a href=&#34;https://pkg.go.dev/github.com/xdg-go/strum&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;strum&lt;/code&gt;&lt;/a&gt;, to do exactly that.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How to mentor software engineers</title>
      <link>https://xdg.me/mentor-engineers/</link>
      <pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/mentor-engineers/</guid>
      <description>&lt;p&gt;A friend and fellow staff+ engineer posted a question to a peer group Slack:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Anyone have suggestions on how best to mentor software engineers?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At the time, I said a few things about &lt;em&gt;radical candor&lt;/em&gt; and &lt;em&gt;actionable
feedback&lt;/em&gt;, but the question stuck with me. I mentor people, but I&amp;rsquo;ve never
thought formally about what it is or how I do it.  &lt;strong&gt;Like a lot of soft skills,
we&amp;rsquo;re rarely taught how to mentor&lt;/strong&gt; &amp;ndash; most of us are left to figure it out on
our own.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Use a career ladder for growth conversations</title>
      <link>https://xdg.me/growth-conversations/</link>
      <pubDate>Wed, 29 Sep 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/growth-conversations/</guid>
      <description>&lt;p&gt;A &amp;ldquo;growth conversation&amp;rdquo; is a talk with your manager about how to get promoted.
It might not be explained that way, but don&amp;rsquo;t be fooled.&lt;/p&gt;
&lt;div class=&#34;aside&#34;&gt;
&lt;p&gt;I&amp;rsquo;ve written this for non-managers. But if you&amp;rsquo;re a manager, use this
technique and your team will love you for it!&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;rsquo;ve found that a lot of these talks wind up muddy and subjective.  It&amp;rsquo;s easy
to come out of them without actionable steps or with generic advice.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Best career advice: ask for feedback</title>
      <link>https://xdg.me/ask-for-feedback/</link>
      <pubDate>Mon, 13 Sep 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/ask-for-feedback/</guid>
      <description>&lt;p&gt;The best career advice I ever heard was this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;No one cares more about your career than you!&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you wait for your manager or your company&amp;rsquo;s review process to give you
feedback, it&amp;rsquo;s almost certainly going to come later than you&amp;rsquo;d like.  There&amp;rsquo;s
a good chance that you&amp;rsquo;ll have missed out on opportunities to improve and the
review you eventually get will bake in the bad habits you could have fixed if
only you&amp;rsquo;d known.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Articles on equity comp and value</title>
      <link>https://xdg.me/articles-on-equity-compensation/</link>
      <pubDate>Fri, 30 Jul 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/articles-on-equity-compensation/</guid>
      <description>&lt;div class=&#34;aside&#34;&gt;
&lt;p&gt;As I wrote &lt;a href=&#34;https://xdg.me/equity-comp&#34;&gt;&lt;em&gt;How to think about equity
compensation&lt;/em&gt;&lt;/a&gt;, I found the following articles helpful:&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/swlh/a-no-b-s-guide-to-startup-stock-option-grants-526a8bc33c2b&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;A No B.S. Guide to Startup Stock Option Grants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/journal-of-empirical-entrepreneurship/dissecting-startup-failure-by-stage-34bb70354a36&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Dissecting startup failure rates by stage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tanay.substack.com/p/employee-compensation-and-one-year&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Employee compensation and one-year equity grants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.pragmaticengineer.com/equity-for-software-engineers/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Equity 101 for Software Engineers at Big Tech and Startups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://startupljackson.com/post/135800367395/how-to-get-rich-in-tech-guaranteed&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;How to get rich in tech, guaranteed.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.fundz.net/what-is-series-a-funding-series-b-funding-and-more&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Series A, B, C Funding: Averages, Investors, Valuations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.investopedia.com/articles/personal-finance/102015/series-b-c-funding-what-it-all-means-and-how-it-works.asp&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Series A, B, C Funding: How It Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cloudways.com/blog/startup-funding-stages/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Startup Funding Stages You Should Know About&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cbinsights.com/research/venture-capital-funnel-2/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;The Venture Capital Funnel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.holloway.com/g/equity-compensation/sections/typical-employee-equity-levels&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Typical Employee Equity Levels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.angellist.com/blog/angellist-unicorn-rate&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;What Percentage of AngelList Seed-Stage Startups Become Unicorns?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://andrewchen.com/venture-capital-returns/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Why startups are hard — the math of venture capital returns tells the story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://every.to/napkin-math/you-probably-shouldn-t-work-at-a-startup-9387b632-345c-4a22-bac0-3cb92f0eecf1#%23&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;You Probably Shouldn’t Work at a Startup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additional articles since then:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How to think about equity compensation</title>
      <link>https://xdg.me/equity-comp/</link>
      <pubDate>Thu, 29 Jul 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/equity-comp/</guid>
      <description>&lt;p&gt;Many tech jobs pay a portion of employee compensation in the form of equity.
This is a great deal for companies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They get to defer paying you&lt;/li&gt;
&lt;li&gt;They get to pay you without burning cash&lt;/li&gt;
&lt;li&gt;If you quit before you vest, they don&amp;rsquo;t have to pay you&lt;/li&gt;
&lt;li&gt;If you have a lot of unvested equity, you&amp;rsquo;re less likely to leave&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;how-good-a-deal-is-this-for-employees-really&#34;&gt;How good a deal is this for employees, really?&lt;/h3&gt;
&lt;p&gt;Imagine that your employer only paid cash and said they wanted to pay part of
your salary &amp;ndash; &lt;em&gt;still in cash!&lt;/em&gt; &amp;ndash; in pieces over the next several years.  You&amp;rsquo;d
only want that deal if they were going to pay you more in the future than they
would otherwise pay today to make up for the risk that you might never see the
money.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Why I write</title>
      <link>https://xdg.me/why-i-write/</link>
      <pubDate>Sat, 29 May 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/why-i-write/</guid>
      <description>&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why do I write?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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 &lt;em&gt;both&lt;/em&gt; were to keeping
me motivated.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Why the Apache2 License</title>
      <link>https://xdg.me/why-apache2/</link>
      <pubDate>Sun, 23 May 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/why-apache2/</guid>
      <description>&lt;p&gt;For any open source work, I always pick the &lt;a href=&#34;https://opensource.org/licenses/Apache-2.0&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Apache2
License&lt;/a&gt; if I have the
choice.  It&amp;rsquo;s not as short and simple as the &lt;a href=&#34;https://opensource.org/licenses/MIT&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MIT
License&lt;/a&gt;, but it has one killer feature:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apache2 is the only popular open source license that makes explicit
provision for licensing contributions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the key paragraph:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Submission of Contributions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unless You explicitly state otherwise, any Contribution intentionally
submitted for inclusion in the Work by You to the Licensor shall be under
the terms and conditions of this License, without any additional terms or
conditions.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>A better way to learn a new codebase</title>
      <link>https://xdg.me/learn-a-new-codebase/</link>
      <pubDate>Sat, 15 May 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/learn-a-new-codebase/</guid>
      <description>&lt;p&gt;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. &lt;strong&gt;Being
able to learn a new codebase quickly and effectively is a programmer
superpower.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most guides I&amp;rsquo;ve seen on learning a codebase boil down to &amp;ldquo;read and ask
questions&amp;rdquo;.  For a small codebase, that can work.  But as the codebase grows,
that isn&amp;rsquo;t enough.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>80/20 is half-ass when value is logistic</title>
      <link>https://xdg.me/80-20/</link>
      <pubDate>Tue, 04 May 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/80-20/</guid>
      <description>&lt;p&gt;&lt;em&gt;80/20 is a great heuristic for power laws and asymptotic progress, but
be careful when value accrues logistically.&lt;/em&gt;&lt;/p&gt;
&lt;img src=&#34;80-20-inline.png&#34; alt=&#34;80/20&#34; /&gt;
&lt;p&gt;My friend &lt;a href=&#34;https://x.com/swyx&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;swyx&lt;/a&gt; wrote an article, &lt;a href=&#34;https://www.swyx.io/8020/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&amp;ldquo;80/20 is the
new half-ass&amp;rdquo;&lt;/a&gt;, 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.&lt;/p&gt;
&lt;p&gt;To me, the 80/20 heuristic is a mental model about &lt;strong&gt;diminishing marginal
returns&lt;/strong&gt;.  80/20 thinking works best in two cases:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using git merge --no-ff</title>
      <link>https://xdg.me/git-merge-no-ff/</link>
      <pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/git-merge-no-ff/</guid>
      <description>&lt;p&gt;When working with git, I like linear history because otherwise merging
concurrent feature branches makes the history graph look like spaghetti.&lt;/p&gt;
&lt;p&gt;Two common ways to get a linear history are squashing and rebasing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Squashing&lt;/strong&gt; applies all the changes on the feature branch as a single linear
commit on the target branch.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Before squashing:

A---B---C main
     \
      D---E---F feature

# After squashing:

A---B---C---G(=D+E+F) main
     \
      D---E---F feature
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Rebasing&lt;/strong&gt; moves &lt;code&gt;D-E-F&lt;/code&gt; to the tip of main.  A normal merge will
fast-forward, keeping the history linear.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How I broke the MongoDB Go driver ecosystem</title>
      <link>https://xdg.me/i-broke-the-mongodb-go-driver-ecosystem/</link>
      <pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/i-broke-the-mongodb-go-driver-ecosystem/</guid>
      <description>&lt;p&gt;I unintentionally broke the MongoDB Go driver ecosystem one March weekend in
2021.  Dependency management systems are hard.&lt;/p&gt;
&lt;img src=&#34;thumbnail.jpg&#34; alt=&#34;trees on fire&#34; /&gt;
&lt;p&gt;In late 2018, I moved all my Go libraries from &lt;code&gt;github.com/xdg&lt;/code&gt; to
&lt;code&gt;github.com/xdg-go&lt;/code&gt; to keep my Go work separate from other projects/languages.&lt;/p&gt;
&lt;p&gt;This seemed painless, because GitHub automatically redirects repositories
after a rename.  For example, in a project that was importing
&lt;code&gt;github.com/xdg/stringprep&lt;/code&gt;, a dependency resolver would try to pull from that
repository, and GitHub would transparently redirect that to
&lt;code&gt;github.com/xdg-go/stringprep&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Interviewing engineers, part 2</title>
      <link>https://xdg.me/interviewing-engineers-2/</link>
      <pubDate>Fri, 19 Mar 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/interviewing-engineers-2/</guid>
      <description>&lt;p&gt;Welcome back!  In &lt;a href=&#34;../interviewing-engineers&#34;&gt;part 1&lt;/a&gt; of this article, I said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think tech industry hiring is pretty broken.  If you feel the same and are
looking for inspiration, I&amp;rsquo;ll tell you what I did differently when I had the
chance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Part 1 covered my philosophy about interviewing and I described changes I made
to the hiring process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using promotion criteria to guide hiring criteria&lt;/li&gt;
&lt;li&gt;Having the hiring manager do the first interview&lt;/li&gt;
&lt;li&gt;Saving synchronous time for interaction, not coding&lt;/li&gt;
&lt;li&gt;Using take-home exercises as part of the initial screen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also gave examples for &lt;a href=&#34;../interviewing-engineers/#only-give-a-take-home-if-they-pass-a-non-technical-phone-screen&#34;&gt;effective non-technical
interviewing&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Interviewing engineers</title>
      <link>https://xdg.me/interviewing-engineers/</link>
      <pubDate>Thu, 18 Mar 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/interviewing-engineers/</guid>
      <description>&lt;p&gt;I think tech industry hiring is pretty broken.  If you feel the same and are
looking for inspiration, I&amp;rsquo;ll tell you what I did differently when I was a
hiring manager at MongoDB.&lt;/p&gt;
&lt;div class=&#34;aside&#34;&gt;
&lt;p&gt;Caveat: I don&amp;rsquo;t claim this only way to interview.  It&amp;rsquo;s just something I tried
that I think is better than the typical way it&amp;rsquo;s done.  Take my ideas if you&amp;rsquo;d
like, but do your own experiments and see what works for you.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Craft of coding reading list</title>
      <link>https://xdg.me/craft-of-coding/</link>
      <pubDate>Fri, 19 Feb 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/craft-of-coding/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m sharing a list of recommendations to help software developers learn &lt;strong&gt;the
practice of software development&lt;/strong&gt; as a combination of craft and career. I use
this for recommendations for new junior engineers.&lt;/p&gt;
&lt;p&gt;The items are generally language-agnostic. They cover topics including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Professional behaviors and human interactions&lt;/li&gt;
&lt;li&gt;Software design principles and heuristics&lt;/li&gt;
&lt;li&gt;Testing best practices&lt;/li&gt;
&lt;li&gt;Development practices and patterns to reduce errors&lt;/li&gt;
&lt;li&gt;War stories about projects gone wrong&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Highly recommended for entry-level developers:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Leading without managing</title>
      <link>https://xdg.me/leading-without-managing/</link>
      <pubDate>Fri, 12 Feb 2021 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/leading-without-managing/</guid>
      <description>&lt;p&gt;&lt;em&gt;What does it mean to lead when you don&amp;rsquo;t have coercive power to get your way?&lt;/em&gt;&lt;/p&gt;
&lt;img src=&#34;leader-manager-midsize.jpg&#34; alt=&#34;leader vs manager&#34; /&gt;
&lt;p&gt;Good managers are often good leaders.  But managers don&amp;rsquo;t have to be good
leaders to get their way because they have authority to make decisions
unilaterally.&lt;/p&gt;
&lt;p&gt;What if you don&amp;rsquo;t have that authority?&lt;/p&gt;
&lt;p&gt;Perhaps you&amp;rsquo;re an individual contributor.  Perhaps you &lt;em&gt;are&lt;/em&gt; a manager, but
want to show leadership when you&amp;rsquo;re the junior person in the room.  In both
cases, you lack the authority that comes from coercive power.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Convert Google Doc to Markdown</title>
      <link>https://xdg.me/google-doc-to-markdown/</link>
      <pubDate>Sun, 25 Oct 2020 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/google-doc-to-markdown/</guid>
      <description>&lt;p&gt;Occasionally, I want to convert a Google Doc to Markdown in a way that
preserves links and at least some of the formatting. I&amp;rsquo;ve tried various online
recommendations and been disappointed.&lt;/p&gt;
&lt;p&gt;Here is the approach I&amp;rsquo;m using lately:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the Google doc, select the menu item &lt;code&gt;File → Download → Microsoft Word (docx)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upload the DOCX file to &lt;a href=&#34;https://x.com/benbalter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;@benbalter&amp;rsquo;s&lt;/a&gt; free &lt;a href=&#34;https://word2md.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Word to Markdown Converter&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>Curated links on better technical interviewing</title>
      <link>https://xdg.me/better-technical-interviewing/</link>
      <pubDate>Sun, 25 Oct 2020 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/better-technical-interviewing/</guid>
      <description>&lt;p&gt;&lt;strong&gt;The software industry&amp;rsquo;s usual approach to interviewing and hiring
is terrible&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m keeping an evergreen list about problems that exist and what people are
doing about it.&lt;/p&gt;
&lt;p&gt;Also, see my own long-form article, &lt;a href=&#34;https://xdg.me/interviewing-engineers&#34;&gt;&lt;em&gt;&lt;strong&gt;Interviewing Engineers&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;aside&#34;&gt;
&lt;p&gt;The list is roughly alphabetized by title, with a few short notes to remind
me about key points.  Suggestions for additions are welcome!&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.urth.org/2017/07/14/a-technical-hiring-process/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;em&gt;A Technical Hiring Process&lt;/em&gt;&lt;/a&gt; (Dave Rolsky)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More interviewers in the room, fewer interviews overall&lt;/li&gt;
&lt;li&gt;Homework followed by 2nd round pairing on homework&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://slack.engineering/a-walkthrough-guide-to-finding-an-engineering-job-at-slack/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;em&gt;A Walkthrough Guide to Finding an Engineering Job at Slack&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Resources for system design interview prep</title>
      <link>https://xdg.me/resources-for-system-design-interview-prep/</link>
      <pubDate>Wed, 16 Sep 2020 00:00:00 +0000</pubDate>
      <author>xdg@xdg.me (David Golden)</author>
      <guid>https://xdg.me/resources-for-system-design-interview-prep/</guid>
      <description>&lt;p&gt;&lt;strong&gt;You have to do a systems design interview and you have no idea what that means?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Typically this means drawing boxes for components like load
balancers, web servers, databases, caching layers, etc. and describing how
they work together to deliver the desired service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There is no right answer!  What matters is how well you can talk it
through.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
