41554 blogs · [ { "id": "01a08c57-e5e3-70b5-9923-e08a1a76a6a9", "title": "FloatTube", "url": "https://torbensko.com/software/float-tube/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1aadbd60", "title": "Electron App Architecture", "url": "https://torbensko.com/patterns/electron-app-architecture/", "published_at": "2026-08-13T02:53:54+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1b45625d", "title": "Client ID Upsert", "url": "https://torbensko.com/patterns/client-id-upsert/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1bc035a9", "title": "Electron Release Pipeline", "url": "https://torbensko.com/patterns/electron-release-pipeline/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1c113362", "title": "Entity detail/edit uses a routed panel, not a dialog", "url": "https://torbensko.com/patterns/entity-detail-edit-uses-a-routed-panel-not-a-dialog/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1c405439", "title": "Lambda Error Handling and Response Management", "url": "https://torbensko.com/patterns/lambda-error-handling-and-response-management/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1c5798c9", "title": "Local-First Persistence", "url": "https://torbensko.com/patterns/local-first-persistence/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1c91f7f1", "title": "React-Query for decentralised state management", "url": "https://torbensko.com/patterns/react-query-for-decentralised-state-management/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1cd22e16", "title": "SceneKit Tips", "url": "https://torbensko.com/patterns/scenekit-tips/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1d9291be", "title": "SwiftUI Navigation on Path-Bound Stacks", "url": "https://torbensko.com/patterns/swiftui-navigation-on-path-bound-stacks/", "published_at": "2026-08-13T02:27:14+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1e81214e", "title": "Brainstorm", "url": "https://torbensko.com/software/brainstorm/", "published_at": "2026-04-19T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1e8ecd2d", "title": "AI-Managed Documentation That Lives in Your Codebase", "url": "https://torbensko.com/patterns/ai-managed-documentation-that-lives-in-your-codebase/", "published_at": "2026-02-27T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1ee0c1be", "title": "claude-conversation-cleanup", "url": "https://torbensko.com/software/claude-conversation-cleanup/", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1f6a293c", "title": "rokoko-ps5-controller-bridge", "url": "https://torbensko.com/software/rokoko-ps5-controller-bridge/", "published_at": "2026-02-20T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a1fd38a46", "title": "Managing the LocalStack Lifecycle", "url": "https://torbensko.com/patterns/managing-the-localstack-lifecycle/", "published_at": "2026-02-19T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a20a3a82b", "title": "A General-Purpose Async Loading Component for React Query", "url": "https://torbensko.com/patterns/a-general-purpose-async-loading-component-for-react-query/", "published_at": "2026-02-08T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a20d15f0e", "title": "convar-strict", "url": "https://torbensko.com/software/convar-strict/", "published_at": "2026-02-06T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a21b9de2d", "title": "Demo Driven Development", "url": "https://torbensko.com/patterns/demo-driven-development/", "published_at": "2026-02-03T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a21d81f75", "title": "Service Events: Rolling Your Own Event Logging", "url": "https://torbensko.com/patterns/service-events-rolling-your-own-event-logging/", "published_at": "2026-02-03T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a220ed990", "title": "E2E Testing with Playwright and Storybook", "url": "https://torbensko.com/patterns/e2e-testing-with-playwright-and-storybook/", "published_at": "2026-01-26T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a222624b5", "title": "A Playbook for Side Projects", "url": "https://torbensko.com/blog/playbook-for-side-projects/", "published_at": "2026-01-25T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2229a109", "title": "steal-port", "url": "https://torbensko.com/software/steal-port/", "published_at": "2026-01-24T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a222be90c", "title": "API Mocking Pattern for React and Storybook", "url": "https://torbensko.com/patterns/api-mocking-pattern-for-react-and-storybook/", "published_at": "2026-01-23T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2230ae43", "title": "Data Model handling in TypeScript", "url": "https://torbensko.com/patterns/data-model-handling-in-typescript/", "published_at": "2026-01-23T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2265468d", "title": "Environment Configuration Best Practices", "url": "https://torbensko.com/patterns/environment-configuration-best-practices/", "published_at": "2026-01-13T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a23335302", "title": "Organising Environment Files", "url": "https://torbensko.com/patterns/organising-environment-files/", "published_at": "2026-01-13T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a23957cab", "title": "Null vs Undefined", "url": "https://torbensko.com/blog/null-vs-undefined-stop-using-the-wrong-one/", "published_at": "2025-12-17T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a23d16a03", "title": "Lambda Tips", "url": "https://torbensko.com/patterns/lambda-tips/", "published_at": "2025-12-16T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a24af866b", "title": "Fixing Tailwind Culling in Monorepos", "url": "https://torbensko.com/blog/fixing-tailwind-culling-in-monorepos/", "published_at": "2025-12-13T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a24c733ae", "title": "Cancel Me", "url": "https://torbensko.com/software/cancel-me/", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a25b78973", "title": "SwiftUI: Tips and Tricks", "url": "https://torbensko.com/blog/swiftui-tips-and-tricks/", "published_at": "2024-11-18T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a26558d1b", "title": "Festive Photos", "url": "https://torbensko.com/software/festive-photos/", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a26da7fab", "title": "Blint", "url": "https://torbensko.com/software/blint/", "published_at": "2024-09-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2783e27b", "title": "NestJS: benefits, cheatsheet and tips", "url": "https://torbensko.com/blog/nestjs-benefits-cheatsheet-and-tips/", "published_at": "2024-07-12T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2824db5e", "title": "mktouch = make directory + make file", "url": "https://torbensko.com/blog/mktouch/", "published_at": "2024-06-28T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a283cdbf2", "title": "Importing Rokoko Character Animations into Xcode Using Blender", "url": "https://torbensko.com/blog/importing-rokoko-character-animations-into-xcode-using-blender/", "published_at": "2024-06-15T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2913e8eb", "title": "xcode-collada", "url": "https://torbensko.com/software/xcode-collada/", "published_at": "2024-06-14T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a292620df", "title": "Importing Collada Characters and Animations from Mixamo into Xcode", "url": "https://torbensko.com/blog/importing-collada-characters-and-animations-from-mixamo-into-xcode/", "published_at": "2024-06-13T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a298254e4", "title": "365 Health", "url": "https://torbensko.com/software/365-health/", "published_at": "2024-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a29a4107c", "title": "Nuki Door Bracket", "url": "https://torbensko.com/projects/nuki-bracket/", "published_at": "2023-06-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a29ce3f14", "title": "ai-prompt-coder", "url": "https://torbensko.com/software/ai-prompt-coder/", "published_at": "2023-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2a63fe40", "title": "Zambrero Food Ordering System", "url": "https://torbensko.com/projects/zambrero/", "published_at": "2020-05-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2ab60608", "title": "Next Practice Health Platform", "url": "https://torbensko.com/projects/next-practice/", "published_at": "2018-06-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2ac5b029", "title": "Non-parametric decision trees and online HCI", "url": "https://torbensko.com/publications/#non-parametric-decision-trees-and-online-hci/", "published_at": "2013-04-27T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2b7f67f5", "title": "Studying a head tracking technique for first-person-shooter games in a home setting", "url": "https://torbensko.com/publications/#studying-a-head-tracking-technique-for-first-person-shooter-games-in-a-home-setting/", "published_at": "2013-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2c1ecfb3", "title": "The exploration of webcam enabled head-tracking in first-person-shooter games", "url": "https://torbensko.com/publications/#the-exploration-of-webcam-enabled-head-tracking-in-first-person-shooter-games/", "published_at": "2013-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2cfb1c60", "title": "ANU in Half-Life 2", "url": "https://torbensko.com/projects/anu-in-hl2/", "published_at": "2012-10-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2d9f695b", "title": "Video mediated recruitment for online studies", "url": "https://torbensko.com/publications/#video-mediated-recruitment-for-online-studies/", "published_at": "2012-05-05T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2dee11a8", "title": "Kinect-Maya Mocap", "url": "https://torbensko.com/projects/kinect-maya-mocap/", "published_at": "2011-03-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2e396fcd", "title": "The Wiimote with multiple sensor bars: creating an affordable, virtual reality controller", "url": "https://torbensko.com/publications/#the-wiimote-with-multiple-sensor-bars-creating-an-affordable-virtual-reality-controller/", "published_at": "2009-07-06T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2f2a0121", "title": "Be careful how you point that thing: Wiimote aiming for large displays", "url": "https://torbensko.com/publications/#be-careful-how-you-point-that-thing-wiimote-aiming-for-large-displays/", "published_at": "2009-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a2fa6f38a", "title": "Head tracking in first-person games: Interaction using a web-camera", "url": "https://torbensko.com/publications/#head-tracking-in-first-person-games-interaction-using-a-web-camera/", "published_at": "2009-01-01T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a307d5708", "title": "A surround interface using the wii controller with multiple sensor bars", "url": "https://torbensko.com/publications/#a-surround-interface-using-the-wii-controller-with-multiple-sensor-bars/", "published_at": "2008-10-27T00:00:00+00:00" }, { "id": "01a08c57-e5e3-70b5-9923-e08a31332be7", "title": "A Wii remote, a game engine, five sensor bars and a virtual reality theatre", "url": "https://torbensko.com/publications/#a-wii-remote-a-game-engine-five-sensor-bars-and-a-virtual-reality-theatre/", "published_at": "2007-11-28T00:00:00+00:00" } ] posts Claim your blog
Back to torbensko.com
Blog · corpus.blog/blogs/torbensko.com/posts

torbensko.com

torbensko.com

2026

2025

2024

2023

2020

2018

2013

2012

2011

2009

2008

2007