56,966 blogs · [ { "id": "01a0b91e-446b-7089-934a-ecd5b0178e2c", "title": "Staying in Taiyuan, China", "url": "https://hookrace.net/blog/taiyuan/", "published_at": "2026-09-13T22:00:00+00:00" }, { "id": "01a0821c-9a5a-72f7-a6a1-9862ec58b04a", "title": "Finding Bugs using LLMs", "url": "https://hookrace.net/blog/finding-bugs-using-llms/", "published_at": "2026-05-21T16:00:00+00:00" }, { "id": "01a0821c-9a5a-72f7-a6a1-9862ed55acd8", "title": "Workload Capture & Replay", "url": "https://hookrace.net/blog/workload-capture-replay/", "published_at": "2026-02-09T16:00:00+00:00" }, { "id": "01a0821c-9a5a-72f7-a6a1-9862ede276b3", "title": "Speeding up Materialize CI", "url": "https://hookrace.net/blog/speeding-up-materialize-ci/", "published_at": "2025-08-07T16:00:00+00:00" }, { "id": "01a0821c-9a5a-72f7-a6a1-9862ee59676d", "title": "How to Use the Materialize Emulator", "url": "https://hookrace.net/blog/materialize-emulator/", "published_at": "2024-10-15T16:00:00+00:00" }, { "id": "01a0821c-9a5a-72f7-a6a1-9862eeff2e7f", "title": "The CI Flake", "url": "https://hookrace.net/blog/the-ci-flake/", "published_at": "2024-08-15T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491e9d0cfe", "title": "Testing Materialize", "url": "https://hookrace.net/blog/testing-materialize/", "published_at": "2024-05-13T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491ea02eda", "title": "Port Scan with Spoofed IP Addresses", "url": "https://hookrace.net/blog/port-scan-with-spoofed-ip-addresses/", "published_at": "2024-03-18T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491f42e9a1", "title": "Haskell: Game Programming with GIF Streams", "url": "https://hookrace.net/blog/haskell-game-programming-with-gif-streams/", "published_at": "2023-09-06T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491fb0aeea", "title": "God writes Haskell", "url": "https://hookrace.net/blog/god-writes-haskell/", "published_at": "2023-06-02T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491fb2fcaf", "title": "Database Testing at Yugabyte", "url": "https://hookrace.net/blog/database-testing-at-yugabyte/", "published_at": "2023-01-13T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4491fe929f8", "title": "€9 Ticket", "url": "https://hookrace.net/blog/euro9-ticket/", "published_at": "2022-08-19T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f449202e7751", "title": "Update on DoS Attacks against our Online Game", "url": "https://hookrace.net/blog/dos-attacks-update/", "published_at": "2022-05-15T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44920af15f3", "title": "macOS Setup after 15 Years of Linux", "url": "https://hookrace.net/blog/macos-setup/", "published_at": "2021-12-25T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44920b8c8bb", "title": "DoS Attacks against our Online Game", "url": "https://hookrace.net/blog/dos-attacks-against-online-game/", "published_at": "2021-09-26T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f449216c0c5e", "title": "Quest for the Lost Home Server", "url": "https://hookrace.net/blog/quest-for-the-lost-home-server/", "published_at": "2019-10-14T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44921b180de", "title": "Chinese Traffic to time.gif", "url": "https://hookrace.net/blog/chinese-traffic-time.gif/", "published_at": "2019-05-20T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492277ac15", "title": "Linux Desktop Setup", "url": "https://hookrace.net/blog/linux-desktop-setup/", "published_at": "2019-01-14T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44922b3deff", "title": "Theme Switcher in Nginx", "url": "https://hookrace.net/blog/theme-switcher-nginx/", "published_at": "2019-01-08T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44923617eba", "title": "One year of cycling to work", "url": "https://hookrace.net/blog/cycling-to-work/", "published_at": "2018-02-19T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44923da1942", "title": "Turning Down a Blockchain Job Offer", "url": "https://hookrace.net/blog/turning-down-blockchain/", "published_at": "2018-01-21T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f449248d094a", "title": "HANA C++ Development Environment and Processes", "url": "https://hookrace.net/blog/hana-cpp-development/", "published_at": "2017-12-07T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44924eb5264", "title": "C++ Quiz #1", "url": "https://hookrace.net/blog/cpp-quiz-1/", "published_at": "2017-11-30T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44925bd3dca", "title": "time.gif", "url": "https://hookrace.net/blog/time.gif/", "published_at": "2017-08-10T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44926654f1e", "title": "Nim Code Coverage", "url": "https://hookrace.net/blog/nim-code-coverage/", "published_at": "2016-10-31T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44926d13422", "title": "A Taste of Haskell", "url": "https://hookrace.net/blog/a-taste-of-haskell/", "published_at": "2016-10-20T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f449272b94da", "title": "New Hardware and Hacks", "url": "https://hookrace.net/blog/new-hardware-hacks/", "published_at": "2016-07-02T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44927c460fe", "title": "Broken Hardware, Fixes and Hacks over 8 Years", "url": "https://hookrace.net/blog/broken-hardware-fixes-hacks-8-years/", "published_at": "2016-06-20T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44927ddf34a", "title": "Writing a 2D Platform Game in Nim with SDL2", "url": "https://hookrace.net/blog/writing-a-2d-platform-game-in-nim-with-sdl2/", "published_at": "2016-06-13T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44928c9fe62", "title": "Experiences of Running an Online Game for 3 Years", "url": "https://hookrace.net/blog/ddnet-evolution-architecture-technology/", "published_at": "2016-06-08T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f449294b4c49", "title": "Introduction to Metaprogramming in Nim", "url": "https://hookrace.net/blog/introduction-to-metaprogramming-in-nim/", "published_at": "2016-06-05T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f44929d3a93e", "title": "DDNet Server Statistics with ServerStatus, RRDtool and Nim", "url": "https://hookrace.net/blog/server-statistics/", "published_at": "2016-05-13T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492a971193", "title": "Writing an Async Logger in Nim", "url": "https://hookrace.net/blog/writing-an-async-logger-in-nim/", "published_at": "2016-01-27T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492aefd16a", "title": "DDNet Live: Twitch spectates an online game", "url": "https://hookrace.net/blog/ddnet-live/", "published_at": "2016-01-09T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492b601fd4", "title": "Nim binary size from 160 KB to 150 Bytes", "url": "https://hookrace.net/blog/nim-binary-size/", "published_at": "2015-05-03T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492bcf42b6", "title": "Porting a NES emulator from Go to Nim", "url": "https://hookrace.net/blog/porting-nes-go-nim/", "published_at": "2015-04-30T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492c0e8eec", "title": "NimES: a NES emulator in Nim", "url": "https://hookrace.net/blog/nimes/", "published_at": "2015-04-29T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492cfc9bfc", "title": "Make a Lisp in Nim", "url": "https://hookrace.net/blog/make-a-lisp-in-nim/", "published_at": "2015-03-03T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492d5c12d6", "title": "How I Start: Nim", "url": "https://hookrace.net/blog/how-i-start-nim/", "published_at": "2015-02-08T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492e51a2ac", "title": "Conclusion on Nim", "url": "https://hookrace.net/blog/conclusion-on-nim/", "published_at": "2015-01-25T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492e5860c6", "title": "What makes Nim practical?", "url": "https://hookrace.net/blog/what-makes-nim-practical/", "published_at": "2015-01-22T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492e9547ed", "title": "What is special about Nim?", "url": "https://hookrace.net/blog/what-is-special-about-nim/", "published_at": "2014-12-31T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492eda4f50", "title": "Nim Adventures", "url": "https://hookrace.net/blog/nim-adventures/", "published_at": "2014-07-12T16:00:00+00:00" }, { "id": "01a0821c-9a5b-7370-9fbe-f4492fb3baf0", "title": "What is HookRace?", "url": "https://hookrace.net/blog/what-is-hookrace/", "published_at": "2014-07-06T16:00:00+00:00" } ] posts Claim your blog
Back to Dennis Felsing
Blog · corpus.blog/blogs/hookrace.net/posts

Dennis Felsing

hookrace.net

2026

2025

2024

2023

2022

2021

2019

2018

2017

2016

2015

2014