41554 blogs · [ { "id": "01a08791-f99b-7270-909a-8eddf1d05be3", "title": "Samsonite Oyster 2 Hard Case Main Latch Replacement", "url": "http://jsyang.ca/repairs/samsonite-oyster-2-replacement-latch/", "published_at": "2026-02-28T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf232677d", "title": "HandyBike 6-inch Folding Bike", "url": "http://jsyang.ca/cycling/handybike-6/", "published_at": "2024-05-10T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf2ef711a", "title": "Quadrillion Puzzle Replacement Piece", "url": "http://jsyang.ca/repairs/quadrillion-replacement-piece/", "published_at": "2024-01-26T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf2f8bfb8", "title": "LLM Lab 2 - Handling SSE Streaming AI Models", "url": "http://jsyang.ca/guides/handling-sse-streaming-ai-models/", "published_at": "2023-12-07T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf3f216c0", "title": "LLM Lab 1 - Honing Your Prompting with Google Sheets", "url": "http://jsyang.ca/guides/llm-lab-1-honing-your-prompting/", "published_at": "2023-10-25T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf470d0ee", "title": "Printing large posters and documents (correctly) in MacOS", "url": "http://jsyang.ca/guides/poster-printing-in-macos/", "published_at": "2023-10-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf5230916", "title": "A-Bici Folding Bike", "url": "http://jsyang.ca/cycling/a-bici-folding-bike/", "published_at": "2023-02-16T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf5fbbe60", "title": "Mapping Serial Ports in Wine", "url": "http://jsyang.ca/guides/mapping-serial-ports-in-wine/", "published_at": "2023-01-13T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf6cc1ee6", "title": "Parallel ROM dumper for an obsolete cartridge-based eBook reader", "url": "http://jsyang.ca/hacks/parallel-rom-dumper-for-an-obsolete-ebook-reader/", "published_at": "2022-12-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf7227c14", "title": "HP iPAQ Bluetooth Folding Keyboard", "url": "http://jsyang.ca/hardware/hp-ipaq-bluetooth-folding-keyboard/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf7a57688", "title": "Writing a CD-key generator for the Franklin Bookman Desktop Manager", "url": "http://jsyang.ca/hacks/franklin-bookman-desktop-manager-cd-key-scheme-reversed/", "published_at": "2022-02-18T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf855f328", "title": "Hello world in circuit board design: the most basic KiCad 6 tutorial", "url": "http://jsyang.ca/guides/kicad-basic-pcb-design/", "published_at": "2022-01-03T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf8b07b53", "title": "Franklin BOOKMAN Data Archive", "url": "http://jsyang.ca/franklin-electronics/", "published_at": "2021-03-13T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf96bf5ae", "title": "Casual System Admin from a Dell Axim X51v PDA", "url": "http://jsyang.ca/guides/casual-system-admin-from-dell-axim-x51v/", "published_at": "2021-02-18T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddf9fde56b", "title": "Dell NavTeq BT-332 Bluetooth GPS Receiver", "url": "http://jsyang.ca/hardware/navteq-bt332-bluetooth-gps-receiver/", "published_at": "2021-02-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfa5b9199", "title": "Think Outside Bluetooth Folding Keyboard", "url": "http://jsyang.ca/hardware/think-outside-bluetooth-folding-keyboard/", "published_at": "2021-01-23T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfa9d1d2d", "title": "Sierra AGI Adventure Game Interpreter", "url": "http://jsyang.ca/games/sierra-agi-js/", "published_at": "2021-01-18T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfb87f773", "title": "3D Terrain Sandbox and Game Engine", "url": "http://jsyang.ca/games/sandbox3d/", "published_at": "2021-01-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfbc4f7a4", "title": "How different languages sing Happy Birthday", "url": "http://jsyang.ca/culture/how-different-languages-sing-happy-birthday/", "published_at": "2020-12-24T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfc3c3f26", "title": "WormForm - a Typography Block Sandbox", "url": "http://jsyang.ca/art/wormform/", "published_at": "2020-12-16T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfd35f116", "title": "Halloween Pumpkin Carving 2020", "url": "http://jsyang.ca/art/halloween-pumpkin-carving-2020/", "published_at": "2020-10-27T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfd53a999", "title": "Sinclair Research A-Bike Mk1 6-inch", "url": "http://jsyang.ca/cycling/sinclair-research-a-bike/", "published_at": "2020-09-19T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfe3b009b", "title": "Dahon PrestoLite - The Lightest 16\" Wheeler Yet", "url": "http://jsyang.ca/cycling/dahon-prestolite/", "published_at": "2020-03-14T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddfe78db27", "title": "Tiny Palm PVG100 phone on Three UK", "url": "http://jsyang.ca/guides/tiny-palm-pvg100-phone-on-three-uk/", "published_at": "2020-02-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddff1fee86", "title": "Guitar Hero Live Bluetooth Controller Poll Rate Testing Jig", "url": "http://jsyang.ca/hardware/ghlive-controller-rate-testing/", "published_at": "2020-01-25T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddff54501c", "title": "Guitar Hero Live Bluetooth controller", "url": "http://jsyang.ca/hacks/ghliveble/", "published_at": "2020-01-10T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8eddff97cd89", "title": "Jersey on a Pacific CarryMe", "url": "http://jsyang.ca/cycling/jersey-on-a-pacific-carryme/", "published_at": "2019-09-21T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0018824e", "title": "Pacific CarryMe Shakedown Cruise", "url": "http://jsyang.ca/cycling/pacific-carryme-shakedown-cruise/", "published_at": "2019-08-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede00decf96", "title": "Ender 3 Configuration Notes", "url": "http://jsyang.ca/3dprinting/ender-3-mods/", "published_at": "2019-08-03T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede00f8a751", "title": "Pacific CarryMe Folding Bike", "url": "http://jsyang.ca/cycling/pacific-carryme/", "published_at": "2019-07-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede01ad78b8", "title": "Pho Recipe", "url": "http://jsyang.ca/guides/pho-recipe/", "published_at": "2019-04-07T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede02725057", "title": "3D printers", "url": "http://jsyang.ca/3dprinting/3d-printers/", "published_at": "2019-03-24T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede032ae011", "title": "Snapshot testing with Jest + Preact + Picostyle", "url": "http://jsyang.ca/guides/snapshot-testing-with-preact-and-picostyle/", "published_at": "2019-03-16T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0367d3ac", "title": "KeyDings", "url": "http://jsyang.ca/tools/keydings/", "published_at": "2019-02-18T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede03a70af7", "title": "Tabular / vertical code alignment in ES without IntelliJ", "url": "http://jsyang.ca/tools/tabular-vertical-alignment/", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0461a907", "title": "CelCom: Feature Toggles and Testing", "url": "http://jsyang.ca/celcom/feature-toggles-and-testing/", "published_at": "2019-01-20T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede04764cf4", "title": "CelCom: Simplifying development tooling", "url": "http://jsyang.ca/celcom/tooling/", "published_at": "2019-01-10T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede056c35bc", "title": "Finding nostalgic music from 1996 Microsoft Interactive CD Sampler", "url": "http://jsyang.ca/guides/microsoft-interactive-cd-sampler-music/", "published_at": "2019-01-03T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0646e6dd", "title": "CelCom: Improving HUD indicator designs", "url": "http://jsyang.ca/celcom/hud-indicators/", "published_at": "2019-01-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede066485c9", "title": "CelCom: Implementing saved games", "url": "http://jsyang.ca/celcom/saved-games/", "published_at": "2018-12-16T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede06c7c0d3", "title": "Brompton Wheel Veloplugs", "url": "http://jsyang.ca/hacks/brompton-veloplugs/", "published_at": "2018-07-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0743ecd7", "title": "Bike Light Phone Mount", "url": "http://jsyang.ca/hacks/bike-light-phone-mount/", "published_at": "2018-06-30T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede07dbae14", "title": "Random Sound Tin", "url": "http://jsyang.ca/hacks/random-sound-tin/", "published_at": "2018-05-19T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede07eb35e3", "title": "Isle of Wight Randonnee 2018", "url": "http://jsyang.ca/cycling/iow-2018/", "published_at": "2018-05-06T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede085c6326", "title": "Try before you buy fonts", "url": "http://jsyang.ca/guides/try-before-you-buy-fonts/", "published_at": "2018-04-27T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede08e74177", "title": "Samsung Gear 360 (SM-200) image and video workflow on MacOS", "url": "http://jsyang.ca/guides/gear-360-workflow/", "published_at": "2018-02-17T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede09afccff", "title": "Gear VR Controller Reverse Engineering", "url": "http://jsyang.ca/hacks/gear-vr-rev-eng/", "published_at": "2018-02-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede09d8ec37", "title": "Mocute Bluetooth Gamepads", "url": "http://jsyang.ca/guides/mocute-bluetooth-gamepad/", "published_at": "2018-01-20T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0a006b94", "title": "Faulty Raspberry Pi Zero W", "url": "http://jsyang.ca/guides/faulty-rpi0w/", "published_at": "2017-10-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0a22db9a", "title": "Modernizing a Moulton Automatic", "url": "http://jsyang.ca/cycling/moulton-automatic/", "published_at": "2017-05-15T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0aa19614", "title": "Shrimpy - the evolution of a tiny bike", "url": "http://jsyang.ca/cycling/shrimpy-bike/", "published_at": "2017-05-07T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0b64e52a", "title": "Isle of Wight Randonnee 2017", "url": "http://jsyang.ca/cycling/iow-2017/", "published_at": "2017-04-30T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0c48bea0", "title": "suoman commute machine", "url": "http://jsyang.ca/cycling/suoman-commute-machine/", "published_at": "2017-04-02T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0d1ba88d", "title": "Polymer clay sculpting", "url": "http://jsyang.ca/art/polymer-clay-2017/", "published_at": "2017-03-25T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0d7e6689", "title": "Norfolk Nobbler 2017", "url": "http://jsyang.ca/cycling/norfolk-nobbler/", "published_at": "2017-03-18T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0e294486", "title": "Cheap Bike Bell Modification", "url": "http://jsyang.ca/hacks/bike-bell-mod/", "published_at": "2017-03-05T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0f0ae778", "title": "Manchester Critical Mass February 2017", "url": "http://jsyang.ca/cycling/mcr-critmass/", "published_at": "2017-02-25T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede0fdfe31e", "title": "Celestial Combat", "url": "http://jsyang.ca/games/celcom/", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede102edd4a", "title": "Particle Tracks", "url": "http://jsyang.ca/art/particle-tracks/", "published_at": "2016-12-19T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede10625756", "title": "PewPew.js", "url": "http://jsyang.ca/art/pewpew/", "published_at": "2016-12-19T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1109cba6", "title": "Random Cellular Automata", "url": "http://jsyang.ca/art/cellular-automata/", "published_at": "2016-11-11T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede110fac96", "title": "Free Spirit Single-Speed Conversion", "url": "http://jsyang.ca/cycling/free-spirit-single-speed/", "published_at": "2016-07-31T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede116717cc", "title": "Dahon Classic V", "url": "http://jsyang.ca/cycling/dahon-classic-v/", "published_at": "2016-07-26T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1224c98d", "title": "GPXMapFactor", "url": "http://jsyang.ca/tools/gpx-mapfactor/", "published_at": "2016-07-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1277ff66", "title": "London-Cambridge-Leicester", "url": "http://jsyang.ca/cycling/london-cambridge-leicester/", "published_at": "2016-06-04T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede131b96ba", "title": "Equipment Upgrades", "url": "http://jsyang.ca/cycling/equipment-upgrades-2/", "published_at": "2016-06-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede137fee3e", "title": "Del's Red Minivelo", "url": "http://jsyang.ca/cycling/dels-red-minivelo/", "published_at": "2016-05-27T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede14767131", "title": "Slackson bot", "url": "http://jsyang.ca/tools/slackson/", "published_at": "2015-09-22T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede14dc598d", "title": "Cycling in 2015", "url": "http://jsyang.ca/cycling/cycling-2015/", "published_at": "2015-08-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1599dd15", "title": "Translucify", "url": "http://jsyang.ca/tools/translucify/", "published_at": "2015-05-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede162d43e6", "title": "Generative Mazes", "url": "http://jsyang.ca/art/maze/", "published_at": "2015-01-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede168b091c", "title": "ColorRun.pl bot", "url": "http://jsyang.ca/tools/colorrunbot/", "published_at": "2014-08-30T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede17073515", "title": "London to Brighton Ride", "url": "http://jsyang.ca/cycling/london-to-brighton/", "published_at": "2014-05-31T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1772d717", "title": "Foldable rowboat v1", "url": "http://jsyang.ca/hacks/foldable-boat/", "published_at": "2013-08-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede17a52ce8", "title": "Gamedev Weekend 3", "url": "http://jsyang.ca/games/gdw3/", "published_at": "2013-06-07T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede17b2f7f4", "title": "Gamedev Weekend 2", "url": "http://jsyang.ca/games/gdw2/", "published_at": "2013-05-30T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede17fed769", "title": "Gamedev Weekend 1", "url": "http://jsyang.ca/games/gdw1/", "published_at": "2013-04-21T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede185011f1", "title": "TechShop notes", "url": "http://jsyang.ca/repairs/notes/", "published_at": "2012-12-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede18e5580f", "title": "Raygun", "url": "http://jsyang.ca/art/raygun/", "published_at": "2012-11-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede190a3f17", "title": "Sculpting in 2012, 2013", "url": "http://jsyang.ca/art/sculpting-2013/", "published_at": "2012-01-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede19590402", "title": "TSP Solver", "url": "http://jsyang.ca/tools/traveling-salesman/", "published_at": "2011-08-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede19d0404a", "title": "Textured 3D tunnel", "url": "http://jsyang.ca/art/tunnel/", "published_at": "2011-03-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1a2a9374", "title": "Road signs", "url": "http://jsyang.ca/tools/road-signs/", "published_at": "2010-04-10T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1a4eb482", "title": "GMBrowser", "url": "http://jsyang.ca/tools/gmbrowser/", "published_at": "2009-10-20T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1b2cdf36", "title": "IBM M2 Clicky Keyboard Repair", "url": "http://jsyang.ca/repairs/m2kb/", "published_at": "2009-02-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1c1a5253", "title": "DOM-based RTS Engine", "url": "http://jsyang.ca/games/jscc/", "published_at": "2008-08-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1c36e306", "title": "Flash games", "url": "http://jsyang.ca/games/flash-games/", "published_at": "2004-02-01T00:00:00+00:00" }, { "id": "01a08791-f99b-7270-909a-8ede1d010d26", "title": null, "url": "http://jsyang.ca/about/", "published_at": null } ] posts Claim your blog
Back to jsyang.ca
Blog · corpus.blog/blogs/jsyang.ca/posts

jsyang.ca

jsyang.ca

2026

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009

2008

2004

Undated