56,966 blogs · [ { "id": "01a08c55-2b57-716a-afc8-2bd05d6798e4", "title": "Server-Side JavaScript Arc Part 2: Oden, a Server-First JavaScript Runtime", "url": "https://thomashunter.name/posts/2026-04-24-server-side-js-p2-server-first-js", "published_at": "2026-04-24T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd05e4a5d89", "title": "Server-Side JavaScript Arc Part 1: A Retrospective on the Golden Age of Node.js", "url": "https://thomashunter.name/posts/2026-04-24-server-side-js-p1-golden-age-of-nodejs", "published_at": "2026-04-24T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd05ec27301", "title": "Capturing and Culling a Photo Journalist Scene", "url": "https://thomashunter.name/posts/2026-04-02-capturing-and-culling-a-photo-journalist-scene", "published_at": "2026-04-02T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd05f847948", "title": "Alpaka Elements Tech Case as a Camera Bag", "url": "https://thomashunter.name/posts/2026-02-26-alpaka-elements-tech-case-camera-bag", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd05fd341e0", "title": "Fear and Loathing and LLMs", "url": "https://thomashunter.name/posts/2026-02-17-generating-a-node-native-module-with-an-llm", "published_at": "2026-02-17T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0609534a8", "title": "Repairing a Bose SoundDock iPod Speaker", "url": "https://thomashunter.name/posts/2026-01-12-repairing-bose-sounddock-ipod-speaker", "published_at": "2026-01-12T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd061365537", "title": "“Photographing Potrero Hill” is in local coffee shops", "url": "https://thomashunter.name/posts/2025-12-16-photographing-potrero-hill-zine", "published_at": "2025-12-16T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd061ff6899", "title": "Introducing RFC Hub", "url": "https://thomashunter.name/posts/2025-12-01-rfc-hub", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd062c75301", "title": "A few months with htmx", "url": "https://thomashunter.name/posts/2025-11-05-a-few-months-with-htmx", "published_at": "2025-11-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0637f5459", "title": "The scales are tipping in the Software Engineering industry", "url": "https://www.potreroview.net/2025-archives-may/", "published_at": "2025-05-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd063a783c3", "title": "Notes on installing Linux on a 2008 Apple Intel iMac", "url": "https://thomashunter.name/posts/2025-04-30-linux-apple-intel-imac-2008", "published_at": "2025-04-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd063b92e8f", "title": "Post Apocalyptic Computing", "url": "https://thomashunter.name/posts/2025-03-23-post-apocalyptic-computing", "published_at": "2025-03-23T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd064b00724", "title": "AI will change the world but not in the way you think", "url": "https://thomashunter.name/posts/2025-03-19-ai-llms-will-change-the-world", "published_at": "2025-03-19T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd064baabdf", "title": "Running Debian Bookworm on a 13\" AMD Framework Laptop", "url": "https://thomashunter.name/posts/2025-01-31-amd-framework-debian-bookworm", "published_at": "2025-01-31T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd065a46460", "title": "Writing Multithreaded Node.js Applications: Is it worth it? at NodeConf EU", "url": "https://thomashunter.name/posts/2024-11-05-nodeconfeu-speaker", "published_at": "2024-11-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd065b57a15", "title": "The Ultimate Fujifilm X-E1 Camera Guide", "url": "https://thomashunter.name/posts/2024-10-19-fujifilm-xe1-ttartisan-25-review", "published_at": "2024-10-19T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd065d06a29", "title": "Using an iPod Classic Monochrome 4th Gen in 2024", "url": "https://thomashunter.name/posts/2024-09-08-using-ipod-classic-4th-gen-in-2024", "published_at": "2024-09-08T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd065f33be7", "title": "Discreet, Cheap, Film-Like EDC Street Photography Camera in 2024", "url": "https://thomashunter.name/posts/2024-08-25-discreet-cheap-street-photography-camera", "published_at": "2024-08-25T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0665c14bd", "title": "Map Buddy Product Retrospective", "url": "https://thomashunter.name/posts/2024-08-19-map-buddy-product-retrospective-video", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0668bcc1f", "title": "My Photography is Featured at Philz Coffee in Potrero Hill", "url": "https://thomashunter.name/posts/2024-08-16-photography-featured-at-philz-potrero", "published_at": "2024-08-16T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06705ac45", "title": "Introducing GenAI in O’Reilly Answers", "url": "https://thomashunter.name/posts/2024-05-29-introducing-genai-in-oreilly-answers", "published_at": "2024-05-29T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0670866d8", "title": "My Photography is Featured at Ikon Coffee", "url": "https://thomashunter.name/posts/2024-04-25-photography-featured-at-ikon-coffee", "published_at": "2024-04-25T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd067459a52", "title": "Photography is a Loss of Dimension, Senses, and Fidelity", "url": "https://thomashunter.name/posts/2024-04-17-photography-is-a-loss-of-dimension-senses-and-fidelity", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0682c8ad8", "title": "A Cheap and Pocketable Camera in 2024", "url": "https://thomashunter.name/posts/2024-04-03-a-cheap-pocketable-camera-in-2024", "published_at": "2024-04-03T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd068d530f7", "title": "Enabling English on a Japanese Panasonic Lumix GX1", "url": "https://thomashunter.name/posts/2024-03-30-enable-english-on-a-japanese-panasonic-gx1", "published_at": "2024-03-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0698eab83", "title": "After your first 10,000 Photographs", "url": "https://thomashunter.name/posts/2024-02-04-after-your-first-10000-photographs", "published_at": "2024-02-04T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd069d285a7", "title": "Repairing a Minolta X-370 Light Leak", "url": "https://thomashunter.name/posts/2024-01-16-repairing-minolta-x-370-light-leak", "published_at": "2024-01-16T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06a1bc436", "title": "Getting into Photography on a Budget in 2023", "url": "https://thomashunter.name/posts/2023-10-07-photography-on-a-budget-in-2023", "published_at": "2023-10-07T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06a659803", "title": "PS2 RPI4 Part IV: Conclusion", "url": "https://thomashunter.name/posts/2023-08-06-ps2-rpi4-conclusion", "published_at": "2023-08-06T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06adbc7b7", "title": "How to file a CCPA complaint against Reddit", "url": "https://thomashunter.name/posts/2023-07-01-file-ccpa-complaint-against-reddit", "published_at": "2023-07-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06b17bb80", "title": "How to Delete your Reddit Account and All Data under GDPR/CCPA", "url": "https://thomashunter.name/posts/2023-06-19-how-to-delete-reddit-account-gdpr-ccpa", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06bb8e85f", "title": "Welcome to your Chat Bot", "url": "https://thomashunter.name/posts/2023-04-16-welcome-to-your-chat-bot", "published_at": "2023-04-16T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06c983321", "title": "Emulating Windows XP on Linux in 2023", "url": "https://thomashunter.name/posts/2023-04-09-emulating-windows-xp-on-linux-in-2023", "published_at": "2023-04-09T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06d3ab906", "title": "How NOT to Measure Latency by Gil Tene", "url": "https://thomashunter.name/posts/2023-03-11-how-not-to-measure-latency", "published_at": "2023-03-11T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06e08ab8c", "title": "mig: The Universal Database Migration Runner", "url": "https://thomashunter.name/posts/2023-01-01-mig-the-universal-database-migration-runner", "published_at": "2023-01-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06e819d71", "title": "Setting Open Graph Tags without Server Side Rendering", "url": "https://thomashunter.name/posts/2022-05-24-setting-open-graph-tags-without-ssr", "published_at": "2022-05-24T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06e891f20", "title": "Detecting if a PWA/TWA is Installed", "url": "https://thomashunter.name/posts/2021-12-11-detecting-if-pwa-twa-is-installed", "published_at": "2021-12-11T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06f3a2f75", "title": "Node.js Package Management at UtahJS", "url": "https://thomashunter.name/posts/2021-10-08-nodejs-package-management-utahjs", "published_at": "2021-10-08T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06f655bdb", "title": "Multithreaded JavaScript: Concurrency Beyond the Event Loop", "url": "https://thomashunter.name/posts/2021-06-05-multithreaded-javascript-early-release", "published_at": "2021-06-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd06f6d7c33", "title": "Distributed Systems with Node.js: Humble Books Bundle", "url": "https://thomashunter.name/posts/2021-06-01-distributed-systems-with-nodejs-humble-books-bundle", "published_at": "2021-06-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd070152a6b", "title": "GitHub Actions for Node.js Apps at DevOps.js", "url": "https://thomashunter.name/posts/2021-03-30-github-actions-node-devopsjs", "published_at": "2021-03-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0703bef4d", "title": "The Death of a Node.js Process", "url": "https://thomashunter.name/posts/2021-03-08-the-death-of-a-nodejs-process", "published_at": "2021-03-08T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0707d389b", "title": "Logging, Metrics, and Tracing with Node.js at Node Congress", "url": "https://thomashunter.name/posts/2021-02-19-logging-metrics-tracing-node-congress", "published_at": "2021-02-19T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07116cc80", "title": "Node.js Modules, Packages, and SemVer", "url": "https://thomashunter.name/posts/2021-02-08-nodejs-modules-packages-and-semver", "published_at": "2021-02-08T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd071a6dd39", "title": "Zero-downtime deploys with DigitalOcean, GitHub, and Docker", "url": "https://blog.logrocket.com/zero-downtime-deploys-with-digitalocean-github-and-docker/", "published_at": "2021-01-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07207c0f0", "title": "PS2 RPI4 Part III: Underway", "url": "https://thomashunter.name/posts/2020-07-11-ps2-rpi4-underway", "published_at": "2020-07-11T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0729f9a9a", "title": "PS2 RPI4 Part II: Internals", "url": "https://thomashunter.name/posts/2020-07-05-ps2-rpi4-internals", "published_at": "2020-07-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd073515c5c", "title": "PS2 RPI4 Part I: Restoration", "url": "https://thomashunter.name/posts/2020-07-04-playstation-2-raspberry-pi-restoration", "published_at": "2020-07-04T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0744141d9", "title": "Distributed Systems with Node.js: Building Enterprise-Ready Backend Services", "url": "https://thomashunter.name/posts/2020-04-30-distributed-nodejs-early-access", "published_at": "2020-04-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07096d753", "title": "Go v1.15.8 vs Node v14.15.5 Microbenchmark", "url": "https://thomashunter.name/posts/2021-02-10-go-v1-15-8-vs-node-v14-15-5-microbenchmark", "published_at": "2020-02-10T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0749f5682", "title": "Elpizia", "url": "https://thomashunter.name/posts/2020-01-26-elpizia", "published_at": "2020-01-26T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0758357ca", "title": "Installing the Node.js Binary Archive on Linux", "url": "https://thomashunter.name/posts/2019-12-24-installing-nodejs-binary-archive-linux", "published_at": "2019-12-24T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd076385378", "title": "The Apex Consumer", "url": "https://thomashunter.name/posts/2019-12-08-the-apex-consumer", "published_at": "2019-12-08T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd076d86c92", "title": "Go v1.13.3 vs Node v12.12.0 Microbenchmark", "url": "https://thomashunter.name/posts/2019-10-28-go-v1-13-3-vs-node-v12-12-0-microbenchmark", "published_at": "2019-10-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd076dba86d", "title": "Cheap and Portable Writing Device in 2019", "url": "https://thomashunter.name/posts/2019-06-30-portable-writing-device", "published_at": "2019-06-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07721c95a", "title": "Fixing the Massdrop AKG K7XX Squeak", "url": "https://thomashunter.name/posts/2019-05-28-fixing-the-massdrop-AKG-K7XX-squeak", "published_at": "2019-05-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0781c528e", "title": "On using Service Workers with Static Content", "url": "https://thomashunter.name/posts/2019-04-30-service-workers", "published_at": "2019-04-30T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd078fa22ac", "title": "Nine Volt Daisy Chain", "url": "https://thomashunter.name/posts/2019-04-17-nine-volt-daisy-chain", "published_at": "2019-04-17T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd079bdd525", "title": "Why should I use a Reverse Proxy if Node.js is Production-Ready?", "url": "https://medium.com/intrinsic/why-should-i-use-a-reverse-proxy-if-node-js-is-production-ready-5a079408b2ca", "published_at": "2019-03-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07a0d7f00", "title": "Cobalt Caliber", "url": "https://thomashunter.name/posts/2019-03-06-cobalt-caliber", "published_at": "2019-03-06T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07a331ec0", "title": "JavaScript Symbols: But Why?", "url": "https://medium.com/intrinsic/javascript-symbols-but-why-6b02768f4a5c", "published_at": "2019-03-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07a5a7f93", "title": "Node.js Task Runners: Are they right for you?", "url": "https://blog.logrocket.com/node-js-task-runners-are-they-right-for-you-bb29ea30b7fa", "published_at": "2019-02-26T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07aca03bd", "title": "Introducing Package Diff", "url": "https://medium.com/intrinsic/introducing-package-diff-for-npm-e6487cc9b434", "published_at": "2019-02-26T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07b2ea1ec", "title": "Protecting your JavaScript APIs", "url": "https://medium.com/intrinsic/protecting-your-javascript-apis-9ce5b8a0e3b5", "published_at": "2019-01-31T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07b67a12f", "title": "Treating OpenBox like a Tiling WindowManager", "url": "https://thomashunter.name/posts/2019-01-27-treating-openbox-like-a-tiling-windowmanager", "published_at": "2019-01-27T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07bf330a4", "title": "The Increasing Need for Regulation of the Software Industry", "url": "https://thomashunter.name/posts/2019-01-23-the-increasing-need-for-regulation-of-the-software-industry", "published_at": "2019-01-23T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07c426f2b", "title": "Removing gVim Right and Bottom Borders", "url": "https://thomashunter.name/posts/2019-01-20-removing-gvim-border", "published_at": "2019-01-20T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07d2c4b07", "title": "Common API mistakes and how to avoid them", "url": "https://blog.logrocket.com/common-api-mistakes-and-how-to-avoid-them-804fbcb9cc4b", "published_at": "2019-01-14T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07d42cbca", "title": "On Migrating from Google Analytics", "url": "https://thomashunter.name/posts/2018-12-28-migrating-from-google-analytics", "published_at": "2018-12-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07d5e1e46", "title": "Review of the iClever Foldable Bluetooth Keyboard", "url": "https://thomashunter.name/posts/2018-12-20-review-of-the-iclever-foldable-bluetooth-keyboard", "published_at": "2018-12-20T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07e1d3958", "title": "Books I'm Reading to Become a Better Writer", "url": "https://thomashunter.name/posts/2018-12-12-books-im-reading-to-become-a-better-writer", "published_at": "2018-12-12T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07e75c8d9", "title": "Compromised npm Package: event-stream", "url": "https://medium.com/intrinsic/compromised-npm-package-event-stream-d47d08605502", "published_at": "2018-11-27T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd07f6d6a37", "title": "17 Pounds in 44 Days: My Adventure with Keto", "url": "https://thomashunter.name/posts/2018-11-21-keto", "published_at": "2018-11-21T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0803f4862", "title": "On Migrating from Wordpress to Static Markdown", "url": "https://thomashunter.name/posts/2018-11-09-migrating-from-wordpress-to-static-markdown", "published_at": "2018-11-09T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd080fe525d", "title": "The Monster in the Basement", "url": "https://thomashunter.name/posts/2018-11-04-the-monster-in-the-basement", "published_at": "2018-11-04T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0810ed97a", "title": "Why you should avoid ORMs (with examples in Node.js)", "url": "https://blog.logrocket.com/why-you-should-avoid-orms-with-examples-in-node-js-e0baab73fa5", "published_at": "2018-10-31T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0815151bf", "title": "Essential Firefox Tweaks", "url": "https://thomashunter.name/posts/2018-10-28-essential-firefox-tweaks", "published_at": "2018-10-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08204fb2a", "title": "JavaScript Object Type Coercion", "url": "https://medium.com/intrinsic/javascript-object-type-coercion-b2ec176c02c4", "published_at": "2018-08-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd083048c91", "title": "JavaScript Object Property Descriptors, Proxies, and Preventing Extension", "url": "https://thomashunter.name/posts/2018-08-16-javascript-object-property-descriptors-proxies-and-preventing-extension", "published_at": "2018-08-16T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0837d8470", "title": "Advice for Technical Public Speaking: Part 3", "url": "https://thomashunter.name/posts/2018-07-27-advice-for-technical-public-speaking-part-3-3", "published_at": "2018-07-27T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0840c53c8", "title": "Advice for Technical Public Speaking: Part 2", "url": "https://thomashunter.name/posts/2018-07-25-advice-for-technical-public-speaking-part-2-3", "published_at": "2018-07-25T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd084f7b1d2", "title": "Advice for Technical Public Speaking: Part 1", "url": "https://thomashunter.name/posts/2018-07-23-advice-for-technical-public-speaking-part-1-3", "published_at": "2018-07-23T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0856cf72b", "title": "Go v1.10.3 vs Node v10.6.0 Microbenchmark", "url": "https://thomashunter.name/posts/2018-07-07-go-v1-10-3-vs-node-v10-6-0-microbenchmark", "published_at": "2018-07-07T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08654d413", "title": "Recent Concerns about Node.js Security", "url": "https://thomashunter.name/posts/2018-06-12-recent-concerns-about-node-js-security", "published_at": "2018-06-12T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd0872d47fd", "title": "Node.js and Lambda Three Part Series", "url": "https://thomashunter.name/posts/2018-04-02-creating-and-integrating-a-node-lambda-function-with-api-gateway", "published_at": "2018-04-02T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd088230c2a", "title": "Developing Cobalt Dungeon using Phaser and Cordova", "url": "https://thomashunter.name/posts/2018-03-27-developing-cobalt-dungeon-using-phaser-and-cordova", "published_at": "2018-03-27T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd088747768", "title": "Cobalt Dungeon Dev 01: Creating a New Room", "url": "https://thomashunter.name/posts/2018-03-15-crossover-dev-01-creating-a-new-room", "published_at": "2018-03-15T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd088f574a5", "title": "Cobalt Dungeon for iOS is now available", "url": "https://thomashunter.name/posts/2018-03-12-cobalt-dungeon-for-ios-is-now-available", "published_at": "2018-03-12T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08977d7ae", "title": "Cobalt Dungeon for Android is now available", "url": "https://thomashunter.name/posts/2018-03-06-crossover-for-android-is-now-available", "published_at": "2018-03-06T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08a718e4c", "title": "Cobalt Dungeon Dev 02: Creating a Bitmap Font for Phaser", "url": "https://thomashunter.name/posts/2018-03-05-crossover-dev-02-creating-a-bitmap-font-for-phaser", "published_at": "2018-03-05T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08aaabd78", "title": "Cobalt Dungeon Dev 03: FL Studio Overview", "url": "https://thomashunter.name/posts/2018-03-03-crossover-dev-03-fl-studio-overview", "published_at": "2018-03-03T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08afa4238", "title": "The Long Road to Async/Await in JavaScript at SF Node", "url": "https://thomashunter.name/posts/2018-03-01-async-await-javascript-sfnode", "published_at": "2018-03-01T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08b2ea20b", "title": "I'm working on a mobile game called Cobalt Dungeon", "url": "https://thomashunter.name/posts/2018-02-20-im-working-on-a-mobile-game-called-crossover", "published_at": "2018-02-20T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08b4c5c51", "title": "Support me on Patreon", "url": "https://thomashunter.name/posts/2018-02-12-support-me-on-patreon", "published_at": "2018-02-12T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08c28b7a8", "title": "Twitter Plays Zork: @DemocraticZork", "url": "https://thomashunter.name/posts/2017-11-26-twitter-plays-zork-democraticzork", "published_at": "2017-11-26T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08cba4d7d", "title": "Go v1.9.1 vs Node v8.9.0 Microbenchmark", "url": "https://thomashunter.name/posts/2017-11-09-go-v1-9-1-vs-node-v8-9-0-microbenchmark", "published_at": "2017-11-09T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08d3d284d", "title": "The Long Road to Async/Await in JavaScript at NodeConfAr17", "url": "https://thomashunter.name/posts/2017-10-28-async-await-javascript-nodeconfar17", "published_at": "2017-10-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08dcd52db", "title": "What have I been up to? Late 2017 Edition", "url": "https://thomashunter.name/posts/2017-09-28-what-have-i-been-up-to-late-2017-edition", "published_at": "2017-09-28T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08e273aa1", "title": "Is it time to replace REST with RPC?", "url": "https://thomashunter.name/posts/2017-09-27-is-it-time-to-replace-rest-with-rpc", "published_at": "2017-09-27T00:00:00+00:00" }, { "id": "01a08c55-2b57-716a-afc8-2bd08ee65b6e", "title": "Enterprise Conversation Episode 14: OpenTable with Thomas Hunter", "url": "https://thomashunter.name/posts/2017-09-14-node-foundation-enterprise-conversation", "published_at": "2017-09-14T00:00:00+00:00" } ] posts Claim your blog
Back to tlhunter
Blog · corpus.blog/blogs/thomashunter.name/posts

tlhunter

thomashunter.name

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017