{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "eblog: software articles by efron licht",
  "home_page_url": "https://eblog.fly.dev",
  "description": "Software articles at a level of rigor somewhere between textbook and blog. mostly systems programming \u0026 backend but not limited to it.",
  "author": {
    "name": "Efron Amber Licht"
  },
  "authors": [
    {
      "name": "Efron Amber Licht"
    }
  ],
  "items": [
    {
      "id": "https://eblog.fly.dev/bytehacking.html",
      "url": "https://eblog.fly.dev/uuid.html",
      "title": "Simple Byte Hacking: A UUID Adventure",
      "summary": "Using the magic technique of \"just kind of looking at raw bytes\" to solve a problem with UUIDs.",
      "date_published": "2023-01-01T09:00:00.000000017-08:00"
    },
    {
      "id": "https://eblog.fly.dev/quirks.html",
      "url": "https://eblog.fly.dev/quirks.html",
      "title": "Go Quirks \u0026 Tricks 01: Declaration, Control Flow, Typesystem",
      "summary": "part 1 of a grab-bag of go quirks and tricks, covering declaration, control flow, and the typesystem.",
      "date_published": "2023-02-01T09:00:00.000000013-08:00"
    },
    {
      "id": "https://eblog.fly.dev/quirks2.html",
      "url": "https://eblog.fly.dev/quirks2.html",
      "title": "Go Quirks \u0026 Tricks 02: Concurrency, Unsafe, Reflect",
      "summary": "part 2 of a grab-bag of go quirks and tricks, covering concurrency, unsafe, and reflect.",
      "date_published": "2023-03-01T09:00:00.000000012-08:00"
    },
    {
      "id": "https://eblog.fly.dev/quirks3.html",
      "url": "https://eblog.fly.dev/quirks3.html",
      "title": "Go Quirks \u0026 Tricks 03: Arrays, Validation, Build Constraints",
      "summary": "part 3 of a grab-bag of go quirks and tricks, covering arrays, validation, and build constraints.",
      "date_published": "2023-04-01T09:00:00.000000011-07:00"
    },
    {
      "id": "https://eblog.fly.dev/startfast.html",
      "url": "https://eblog.fly.dev/startfast.html",
      "title": "Start Fast: Booting Go Programs Quickly with `inittrace` and `nonblocking[T]`",
      "summary": "The only thing your program does every time is start, so it should start as fast as possible.  Here's how.",
      "date_published": "2023-07-01T09:00:00.000000014-07:00"
    },
    {
      "id": "https://eblog.fly.dev/backendbasics3.html",
      "url": "https://eblog.fly.dev/backendbasics3.html",
      "title": "Backend Basics 03: Finishing Touches: Middleware, Dependencies, \u0026 Routing",
      "summary": "Third part of a guide to backend development in go, covering testing, middleware, dependencies, routing, and a little bit of databases",
      "date_published": "2023-09-01T09:00:00.000000006-07:00"
    },
    {
      "id": "https://eblog.fly.dev/backendbasics2.html",
      "url": "https://eblog.fly.dev/backendbasics2.html",
      "title": "Backend Basics 02: Practical Backend with `net/http`, `net/url`, `encoding/json`, and `context`",
      "summary": "Now that we know how to build it by hand, use the go stdlib to do it the practical way",
      "date_published": "2023-09-01T09:00:00.000000007-07:00"
    },
    {
      "id": "https://eblog.fly.dev/backendbasics.html",
      "url": "https://eblog.fly.dev/backendbasics.html",
      "title": "Backend Basics 01: Introduction, TCP, DNS, HTTP",
      "summary": "First part of a guide to backend development in go, covering the basics of TCP, DNS, and HTTP",
      "date_published": "2023-09-01T09:00:00.000000008-07:00"
    },
    {
      "id": "https://eblog.fly.dev/console.html",
      "url": "https://eblog.fly.dev/console.html",
      "title": "Advanced Go \u0026 Gamedev: Reflection-based Debug Console",
      "summary": "A very fancy way to make a realtime debug console like quake for your go programs",
      "date_published": "2023-09-01T09:00:00.000000009-07:00"
    },
    {
      "id": "https://eblog.fly.dev/console-autocomplete.html",
      "url": "https://eblog.fly.dev/console-autocomplete.html",
      "title": "Advanced Go \u0026 Gamedev: Reflection-based Debug Console: Autocomplete",
      "summary": "Adding autocomplete to our reflection-based debug console",
      "date_published": "2023-10-01T09:00:00.00000001-07:00"
    },
    {
      "id": "https://eblog.fly.dev/faststack.html",
      "url": "https://eblog.fly.dev/faststack.html",
      "title": "Faststack: Analyzing \u0026 Optimizing Gin's Panic Stack Traces",
      "summary": "An investigation into the mechanism and performance of Gin's fancy stack traces",
      "date_published": "2023-12-01T09:00:00.000000016-08:00"
    },
    {
      "id": "https://eblog.fly.dev/startingsystems1.html",
      "url": "https://eblog.fly.dev/startingsystems1.html",
      "title": "Starting Systems Programming 01: Programmers Write Programs: Building your Tools",
      "summary": "First part of a guide to systems programming, starting with building the basic tools to examine and manipulate files and binary data",
      "date_published": "2025-03-01T09:00:00.000000005-08:00"
    },
    {
      "id": "https://eblog.fly.dev/startingsystems2.html",
      "url": "https://eblog.fly.dev/startingsystems2.html",
      "title": "Starting Systems Programming 02: Your program and the outside world",
      "summary": "Second part of a guide to systems programming, covering how to interact with the outside world - syscalls, files, etc.",
      "date_published": "2025-12-01T09:00:00.000000004-08:00"
    },
    {
      "id": "https://eblog.fly.dev/ginbad.html",
      "url": "https://eblog.fly.dev/ginbad.html",
      "title": "Gin is a very bad software library",
      "summary": "Gin is a very bad software library. Way, way too much detail on why.",
      "date_published": "2025-12-01T09:00:00.000000015-08:00"
    },
    {
      "id": "",
      "url": "https://eblog.fly.dev/swtalmud.html",
      "title": "Software Talmud 00: Anatomy of Automation",
      "summary": "An attempt to communicate wisdom from the engineers and programmers of the past",
      "date_published": "2026-04-21T09:00:00.000000002-07:00"
    },
    {
      "id": "https://eblog.fly.dev/startingsystems3.html",
      "url": "https://eblog.fly.dev/startingsystems3.html",
      "title": "Starting Systems Programming 03: Execution Counts: Software Performance \u0026 Measurement",
      "summary": "ALPHA: Third part of a guide to systems programming, covering performance, including computer architecture, architectural design, profiling, benchmarking, and examples of micro-optimizations.",
      "date_published": "2026-04-23T09:00:00.000000003-07:00"
    },
    {
      "id": "https://eblog.fly.dev/githubbad.html",
      "url": "https://eblog.fly.dev/githubbad.html",
      "title": "Github and the Crime Against Software",
      "summary": "An investigation into collapse of Github and how the decay of our tech infrastructure is a crime against software. Detailed comparisons of Github, Gitlab, Codeberg, and more from a distributed systems and software performance expert",
      "date_published": "2026-05-29T09:00:00.000000001-07:00"
    }
  ]
}
