Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    L

    Lawrence Jones

    blog.lawrencejones.dev · Personal blog · on HN since 2019

    Lawrence Jones, a software engineer and early incident.io employee formerly at GoCardless, writes about lessons from startup engineering, Postgres, and infrastructure.

    Visit blogRSSHN submissions
    ProgrammingDatabasesDevOps & Cloud
    What HN says

    The author describes his startup engineering background; a commenter discusses his ULID post, noting insert performance rather than ID generation is the slower part.

    Stats for nerds
    15HN people shared it
    37linked in comments
    778story points
    Dec 2024last shared
    2023people per year2024

    Top posts on HN

    1. 1
      Want to found a startup? Work at one first
      1 person · 318 points · first shared 2022 · 150 comments on HN
    2. 2
      On working too hard: finding balance, and lessons learned from others
      1 person · 174 points · first shared 2021 · 93 comments on HN
    3. 3
      Building a PostgreSQL load tester
      2 people · 98 points · first shared 2019 · 12 comments on HN
    4. 4
      We compress Pub/Sub messages and more, saving a load of money
      2 people · 55 points · first shared 2020 · 27 comments on HN
    5. 5
      Hacking sum types with Go generics
      1 person · 34 points · first shared 2022 · 43 comments on HN
    6. 6
      Why you need a service registry
      3 people · 16 points · first shared 2020 · 6 comments on HN
    7. 7
      Fixing flaky dbt tests with a sync cutoff
      1 person · 15 points · first shared 2022 · 4 comments on HN
    8. 8
      You don't need Python to build AI products
      3 people · 6 points · first shared 2025 · 3 comments on HN
    9. 9
      Uptime, status pages, and transparency calculus
      2 people · 5 points · first shared 2023 · 1 comments on HN
    10. 10
      What developers find surprising about Postgres transactions
      1 person · 5 points · first shared 2021 · 2 comments on HN

    What HN people wrote when they linked it

    • atombenderDec 2024

      I don't think that's right. They show in the section titled "Generating" that the performance of calling the ULID function from SQL is only very slightly slower. It's the INSERT that performs worse.

      Generally, inserting sorted values (like sequential integers or in this case, ULIDs) into a B-tree index is much faster than inserting random values. This is because inserted values go into the same, highly packed B-tree nodes, whereas random inserts will need to create a lot of scattered B-tree nodes, resulting in more pages written. Random values are generally faster to query, but slower to insert.

      In this case I think the insert speed differences may come down to the sizes of the keys. Postgres's native UUID type is 128 bits, or 16 bytes, whereas the ULID is stored as the "text" type, encoded as base32, resulting in a string that is 26 bytes, plus a 32-bit string length header, so 240 bits in total, or 1.87x longer. In the benchmark, the ULID insert is about 3x that of the UUID. So the overhead may be not just the extra space but the overhead of string comparisons compared to just comparing 128-bit ints.

      Edit: The article doesn't actually say which ULID implementation they use. The one implemented in PL/PGSQL mentioned in one of the article's links [1] is very slow. The other [2] is quite fast, but doesn't use base32. However, this [3] native C extension is fast, about 15% faster than the UUID function on my machine.

      On my machine, using pg-ulid, inserting 1M rows was on…

    • lawrjoneJul 2023

      Mine is https://blog.lawrencejones.dev/

      I’ve been working as a software engineer for about a decade now, primarily at startups. Recently the first employee at incident.io, before then working at GoCardless.

      Tend to write about lessons I’ve learned that others find useful, or stories I think will be enjoyable. Helps me collect my thoughts and practice my writing!

      Examples would be;

      - Want to found a start-up? Work at one first (https://blog.lawrencejones.dev/learn-at-scale-up/)

      - Adding latency: one step, two step, oops (https://blog.lawrencejones.dev/latency/)

      - My most impactful code (https://blog.lawrencejones.dev/most-impactful/)

      - On working too hard: finding balance, and lessons learned from others (https://blog.lawrencejones.dev/working-too-hard/)

      Occasionally get a popular share on HN or people mentioning they read my blog in real life, which makes it feel worth it.

    Related

    incident.io Blogincident.io52 people

    Tracking developer build times to decide if the M3 MacBook is worth upgrading

    incident.io Blog
    Company · last shared 2026
    GoCardless Bloggocardless.com89 people

    PostgreSQL HA cluster failure: a post-mortem

    GoCardless Blog
    Company · last shared 2026
    Brave New Geekbravenewgeek.com85 people

    You Are Not Paid to Write Code

    Brave New Geek
    Personal · last shared 2026
    Dan Luudanluu.com1.2k people

    We only hire the trendiest

    Dan Luu
    Personal · last shared 2026
    Russ Coxresearch.swtch.com554 people

    Timeline of the xz open source attack

    Russ Cox
    Personal · last shared 2026
    Uber Engineering Blogeng.uber.com525 people

    Why Uber Engineering Switched from Postgres to MySQL

    Uber Engineering Blog
    Company · last shared 2025
    20bits20bits.com43 people

    Erlang: A Generalized TCP Server

    20bits
    Personal · last shared 2018
    Rachel Krollrachelbythebay.com493 people

    fork() can fail

    Rachel Kroll
    Personal · last shared 2026