41554 blogs · [ { "id": "01a0871d-8bad-709a-9706-10325b4ad032", "title": "C2PA Content Credential Photo Forensics", "url": "https://29a.ch/2025/04/12/c2pa-content-authenticity-in-photo-forensics", "published_at": "2025-04-12T10:07:49+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bc019670", "title": "Impulse Response Creator", "url": "https://29a.ch/2025/03/23/impulse-response-creator", "published_at": "2025-03-23T16:51:19+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bc431fed", "title": "Tuning Songs Instead of My Guitar", "url": "https://29a.ch/2024/11/17/automatically-finding-and-fixing-song-tuning", "published_at": "2024-11-17T19:25:46+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bc8893b9", "title": "simplex-noise.js 4.0 & Synthwave Demo", "url": "https://29a.ch/2022/07/23/simplex-noise-js-4-synthwave-demo", "published_at": "2022-07-23T11:07:21+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bd44852e", "title": "Tool to apply wood textures to 3d prints", "url": "https://29a.ch/2021/10/23/3d-print-wood-texture-tool", "published_at": "2021-10-23T18:57:36+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bdbd29e9", "title": "Swirly Bokeh Lens Hood - 3D Printed", "url": "https://29a.ch/2021/09/19/swirly-bokeh-lens-hood-3d-printed", "published_at": "2021-09-19T12:42:57+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4be1624b5", "title": "Procedural Lamp Shades for 3D Printing", "url": "https://29a.ch/2021/08/22/procedural-lamp-shades-3d-printing", "published_at": "2021-08-22T08:53:02+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4be7d0cc9", "title": "I made myself a guitar tuner", "url": "https://29a.ch/2020/04/15/guitar-tuner", "published_at": "2020-04-20T23:58:11+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4beccc5d4", "title": "Lap Timer and Analyser for GoPro Videos", "url": "https://29a.ch/2019/12/31/lap-timer-analyser-for-gopro-videos", "published_at": "2019-12-31T17:56:53+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bf7a4e76", "title": "I made myself a noise generator", "url": "https://29a.ch/2019/08/25/noise-generator", "published_at": "2019-08-25T14:29:52+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4bfc8c93e", "title": "Urban Astrophotography", "url": "https://29a.ch/2017/06/22/urban-astrophotography", "published_at": "2017-06-25T19:14:39+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c013128c", "title": "JPEG Forensics in Forensically", "url": "https://29a.ch/2017/02/05/jpeg-forensics-in-forensically", "published_at": "2017-02-05T13:53:23+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c107439b", "title": "Principal Component Analysis for Photo Forensics", "url": "https://29a.ch/2016/08/11/principal-component-analysis-for-photo-forensics", "published_at": "2016-08-11T11:43:55+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c1f98090", "title": "Ditherlicious - 1 Bit Image Dithering", "url": "https://29a.ch/2016/08/04/ditherlicious-1-bit-image-dithering", "published_at": "2016-08-04T10:29:09+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c23d42a3", "title": "Black and White Conversion using PCA", "url": "https://29a.ch/2016/07/08/black-white-photo-pca", "published_at": "2016-07-08T11:55:33+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c2c87df9", "title": "Smartcrop.js 1.0", "url": "https://29a.ch/2016/06/25/smartcrop-1", "published_at": "2016-06-25T17:59:10+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c399ef1c", "title": "Normalmap.js Javascript Lighting Effects", "url": "https://29a.ch/2016/03/08/normalmap-javascript-lighting-effects", "published_at": "2016-03-13T21:45:16+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c487bff5", "title": "Let's encrypt 29a.ch", "url": "https://29a.ch/2015/12/28/lets-encrypt", "published_at": "2015-12-28T00:51:23+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c4be920b", "title": "Play it Slowly", "url": "https://29a.ch/playitslowly", "published_at": "2015-12-22T18:12:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c4d95e19", "title": "Time Stretching Audio in Javascript", "url": "https://29a.ch/2015/12/06/time-stretching-audio-javascript", "published_at": "2015-12-06T17:00:18+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c5413133", "title": "Noise Analysis for Image Forensics", "url": "https://29a.ch/2015/08/21/noise-analysis-for-image-forensics", "published_at": "2015-08-21T20:32:46+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c5bd42bf", "title": "Forensically, Photo Forensics for the Web", "url": "https://29a.ch/2015/08/16/forensically-photo-forensics-for-the-web", "published_at": "2015-08-16T20:21:38+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c645677d", "title": "Light Leaks in the Film Emulator", "url": "https://29a.ch/2015/07/29/light-leaks-in-the-film-emulator", "published_at": "2015-07-28T23:20:08+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c6cc7047", "title": "Javascript Film Emulation", "url": "https://29a.ch/2015/06/07/javascript-film-emulation", "published_at": "2015-06-07T20:36:08+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c6fb9d4a", "title": "Full-text search example using lunr.js", "url": "https://29a.ch/2014/12/03/full-text-search-example-lunrjs", "published_at": "2014-12-03T22:00:30+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c71c18a7", "title": "Source Maps with Grunt, Browserify and Mocha", "url": "https://29a.ch/2014/11/20/source-maps-with-grunt-browserify-mocha", "published_at": "2014-11-20T11:32:35+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c7f223fc", "title": "Desktop rdiff-backup Script", "url": "https://29a.ch/2014/11/13/desktop-rdiff-backupscript", "published_at": "2014-11-13T16:50:48+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c854a042", "title": "smartcrop.js ken burns effect", "url": "https://29a.ch/2014/05/09/smartcrop.js-ken-burns", "published_at": "2014-05-09T11:00:52+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c8ab45fd", "title": "Introducing smartcrop.js", "url": "https://29a.ch/2014/04/03/smartcrop-content-aware-image-cropping", "published_at": "2014-04-03T22:00:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c973f7b6", "title": "2D Wingsuit Game - first preview", "url": "https://29a.ch/2013/10/31/2d-wingsuit-game-firstlook", "published_at": "2013-10-31T22:00:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4c99495ce", "title": "Wild WebGL Raymarching", "url": "https://29a.ch/2013/9/25/wild-webgl-raymarching", "published_at": "2013-09-25T19:48:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ca3fec3c", "title": "New Website", "url": "https://29a.ch/2013/8/28/new-website", "published_at": "2013-08-28T22:48:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ca99b2ba", "title": "Fixing bash autocomplete on ubuntu 13.04", "url": "https://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04", "published_at": "2013-08-09T22:48:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cb12fb28", "title": "xbox360 wireless controller on Ubuntu/Steam with xboxdrv", "url": "https://29a.ch/2013/2/24/xbox-controller-with-ubuntu-steam-xboxdrv", "published_at": "2013-02-24T22:48:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cbaa17d2", "title": "WebGL Fluid Simulation", "url": "https://29a.ch/2012/12/16/webgl-fluid-simulation", "published_at": "2012-12-16T15:16:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cbe25842", "title": "WebGL Voxel Worlds", "url": "https://29a.ch/2012/12/9/webgl-voxel-worlds", "published_at": "2012-12-09T15:05:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cc5b9b86", "title": "HTML 5 Canvas Fluid Simulation", "url": "https://29a.ch/2012/11/5/html-5-canvas-fluid-simulation", "published_at": "2012-11-05T18:30:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ccb7bf89", "title": "Simplex Noise in Javascript", "url": "https://29a.ch/2012/8/7/simplex-noise-in-javascript", "published_at": "2012-08-07T20:59:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ccdb335a", "title": "WebGL Terrain, Ocean, Fog", "url": "https://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog", "published_at": "2012-07-19T14:11:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cdcc54ec", "title": "Using CSS Preprocessors Effectively", "url": "https://29a.ch/2012/6/17/using-css-preprocessors-effectively", "published_at": "2012-06-17T13:35:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ce3509f1", "title": "Image Error Level Analysis with HTML5", "url": "https://29a.ch/2012/4/15/image-error-level-analysis-with-html5", "published_at": "2012-04-15T14:40:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4ce72aaf1", "title": "rvm on ubuntu 11.10", "url": "https://29a.ch/2011/10/28/rvm-on-ubuntu-11-10", "published_at": "2011-10-28T07:54:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cf34831e", "title": "fuckNaN(), seriously", "url": "https://29a.ch/2011/10/20/javascript-fuck-nan-undefined", "published_at": "2011-10-20T15:44:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4cf729a08", "title": "Review: Ubuntu Linux 11.10 on Thinkpad X1", "url": "https://29a.ch/2011/10/14/review:-ubuntu-linux-on-thinkpad-x1", "published_at": "2011-10-14T18:07:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d050706e", "title": "Swiss Address Visualization with WebGL", "url": "https://29a.ch/2011/10/10/swiss-address-visualization-webgl", "published_at": "2011-10-10T18:16:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d06e60d3", "title": "High-performance Particles on a Canvas", "url": "https://29a.ch/2011/10/7/highperformance-particles-html5-canvas", "published_at": "2011-10-06T19:20:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d0a99fad", "title": "Neonflames generative art demo", "url": "https://29a.ch/2011/9/27/neonflames-generative-art-html5-canvas", "published_at": "2011-09-27T19:46:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d0b30862", "title": "Frontendconf 2011 talk on canvas and particles", "url": "https://29a.ch/2011/9/10/talk-on-html5-canvas-particles", "published_at": "2011-09-12T12:16:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d1339a81", "title": "Uploading directly from HTML5 canvas to imgur", "url": "https://29a.ch/2011/9/11/uploading-from-html5-canvas-to-imgur-data-uri", "published_at": "2011-09-11T14:28:00+00:00" }, { "id": "01a0871d-8bae-7179-ab4e-0be4d2039df5", "title": "WebGL Error Statistics for my Demo", "url": "https://29a.ch/2011/6/23/webgl-error-statistics", "published_at": "2011-06-23T09:52:00+00:00" } ] posts Claim your blog
Back to 29a.ch
Blog · corpus.blog/blogs/29a.ch/posts

29a.ch

29a.ch

2025

2024

2022

2021

2020

2019

2017

2016

2015

2014

2013

2012

2011