41554 blogs · [ { "id": "01a08784-8e51-7181-bd0c-04d95758200b", "title": "Declarative WebGPU with S-expressions", "url": "https://hugodaniel.com/posts/declarative-webgpu-with-s-expressions/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95767b4fe", "title": "wgslender: My WGSL Toolchain", "url": "https://hugodaniel.com/posts/wgslender-my-wgsl-toolchain/", "published_at": "2026-08-09T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d957bcf8e2", "title": "The end of creativity", "url": "https://hugodaniel.com/posts/the-end-of-creativity/", "published_at": "2026-07-15T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d957ed8adb", "title": "Color picking Oklch for mortals", "url": "https://hugodaniel.com/posts/color-picking-oklch/", "published_at": "2026-06-14T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d957f45b56", "title": "S-expressions the wrong way", "url": "https://hugodaniel.com/posts/sjon/", "published_at": "2026-06-02T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d958cb90ec", "title": "S-Rausch", "url": "https://hugodaniel.com/posts/s-rausch/", "published_at": "2026-05-25T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95943030b", "title": "Lost in the middle", "url": "https://hugodaniel.com/posts/lost-in-the-middle/", "published_at": "2026-05-24T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d959d830a7", "title": "Colophon", "url": "https://hugodaniel.com/colophon/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95a8d3fbd", "title": "PGP", "url": "https://hugodaniel.com/pgp/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95add1188", "title": "The LLM experience of boreDOM", "url": "https://hugodaniel.com/posts/redesigning-boredom-for-lx/", "published_at": "2026-02-17T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95b72391d", "title": "R.I.P. Rest In Prompt", "url": "https://hugodaniel.com/posts/rip-rest-in-prompt/", "published_at": "2026-02-16T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95c531022", "title": "I was banned from Claude for scaffolding a CLAUDE.md file", "url": "https://hugodaniel.com/posts/claude-code-banned-me/", "published_at": "2026-01-22T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95d315d5b", "title": "PNGine: a WebGPU shader portability engine", "url": "https://hugodaniel.com/posts/introducing-pngine/", "published_at": "2025-12-31T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95e08086a", "title": "Introducing miniray — a WGSL minifier", "url": "https://hugodaniel.com/posts/miniray/", "published_at": "2025-12-30T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95eee9232", "title": "WebGPU and the price of compiling WGSL", "url": "https://hugodaniel.com/posts/webgpu-diagnostics/", "published_at": "2025-10-06T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95f3f1cb5", "title": "WGSL limits you won't find in the spec", "url": "https://hugodaniel.com/posts/webgpu-shader-unknown-limits/", "published_at": "2025-09-21T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d95f64b20e", "title": "WebGPU shader limits", "url": "https://hugodaniel.com/posts/webgpu-shader-limits/", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96017f3d5", "title": "boreDOM another boring JS framework", "url": "https://hugodaniel.com/posts/boredom-another-js-framework/", "published_at": "2025-01-12T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d960c2c59d", "title": "Shader Language ECS, Part 1 - Idea", "url": "https://hugodaniel.com/posts/ecs-wgsl/", "published_at": "2024-09-01T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d960fae9f8", "title": "Color picker", "url": "https://hugodaniel.com/posts/color-picker/", "published_at": "2024-07-21T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d961a5392c", "title": "The art of the (sub-)pixel", "url": "https://hugodaniel.com/posts/sub-problems-sub-pixels/", "published_at": "2023-08-15T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96269afc7", "title": "Minimal Color Swatches", "url": "https://hugodaniel.com/posts/minimal-color-swatches/", "published_at": "2022-02-03T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9628ff1da", "title": "Infinite grid with just one square", "url": "https://hugodaniel.com/posts/infinite-grid-with-just-one-square/", "published_at": "2021-03-24T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d962f63661", "title": "High-level WebGL. Low-level tags.", "url": "https://hugodaniel.com/posts/high-level-webgl-low-level-tags/", "published_at": "2021-03-03T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9634b93da", "title": "The life of a Web Component", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component-series/", "published_at": "2021-03-02T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d963b9fcdc", "title": "The life of a Web Component - Getting Tested", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component-tests/", "published_at": "2021-01-31T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96468d460", "title": "The life of a Web Component - Declarative State", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component-state-in-shadow/", "published_at": "2021-01-30T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d965487355", "title": "The life of a Web Component - Reversing the Shadow DOM visibility", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component-reverse-shadow-dom/", "published_at": "2021-01-29T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9654ffee9", "title": "The life of a Web Component - as a variable bucket", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component-as-var/", "published_at": "2021-01-28T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96573e527", "title": "Thank you!", "url": "https://hugodaniel.com/thank-you/", "published_at": "2021-01-27T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9665adc42", "title": "The life of a Web Component - Initialization", "url": "https://hugodaniel.com/posts/the-life-of-a-web-component/", "published_at": "2021-01-26T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d966fba174", "title": "Introducing the tag", "url": "https://hugodaniel.com/posts/introducing-deno-tag/", "published_at": "2021-01-06T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d967e7da8e", "title": "Meet Evil Cliddy", "url": "https://hugodaniel.com/posts/meet-evil-cliddy/", "published_at": "2020-12-21T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9687a342b", "title": "The Zen of index.html", "url": "https://hugodaniel.com/posts/using-just-an-index-to-develop-a-web-app/", "published_at": "2020-12-15T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d9696feeea", "title": "Cleaning up for Shape The Pixel", "url": "https://hugodaniel.com/posts/cleaning-up-for-shape-the-pixel/", "published_at": "2020-12-11T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d969cda5c1", "title": "From Grid Generator to Shape The Pixel", "url": "https://hugodaniel.com/posts/from-gridgenerator-to-shape-the-pixel/", "published_at": "2020-12-04T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96aa64156", "title": "From Rust to Svelte, what tech stack will I use", "url": "https://hugodaniel.com/posts/browser-tech-stack-2020/", "published_at": "2020-06-07T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96b61b07b", "title": "Introducing Grid Generator Version 0", "url": "https://hugodaniel.com/posts/grid-generator-v0/", "published_at": "2018-07-05T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96c2f8ca2", "title": "Eviction and Debt", "url": "https://hugodaniel.com/posts/eviction-and-debt/", "published_at": "2018-07-04T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96c3d2bc8", "title": "WebSummit opening night. Sharing the stage with Paddy Cosgrave", "url": "https://hugodaniel.com/posts/websummit-opening-night/", "published_at": "2017-11-06T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96c947d94", "title": "Grid Generator First Stand", "url": "https://hugodaniel.com/posts/gridgenerator-first-stand/", "published_at": "2017-11-03T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96ca068c2", "title": "Meeting the President", "url": "https://hugodaniel.com/posts/meeting-the-president/", "published_at": "2017-11-02T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96d7abc9b", "title": "Where do local hackers eat in Lisbon", "url": "https://hugodaniel.com/posts/where-do-local-hackers-eat-in-lisbon/", "published_at": "2017-11-01T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96db82248", "title": "My first funding as a bootstrapper in Portugal", "url": "https://hugodaniel.com/posts/first-funding-as-a-bootstrapper-in-portugal/", "published_at": "2017-10-31T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96dd73df4", "title": "How useful is the JavaScript Set", "url": "https://hugodaniel.com/posts/how-useful-is-the-javascript-set/", "published_at": "2017-10-25T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96e3aa16d", "title": "Lisbon as an inspiration for my project", "url": "https://hugodaniel.com/posts/lisbon-as-an-inspiration-for-my-project/", "published_at": "2017-10-25T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96e739b66", "title": "Why I decided to go to the WebSummit?", "url": "https://hugodaniel.com/posts/why-i-decided-to-go-to-the-websummit/", "published_at": "2017-10-24T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96ec58b48", "title": "In loving memory of Immutable.js", "url": "https://hugodaniel.com/posts/in-loving-memory-of-immutable/", "published_at": "2017-10-03T00:00:00+00:00" }, { "id": "01a08784-8e51-7181-bd0c-04d96f9930d1", "title": "vi is not vim", "url": "https://hugodaniel.com/posts/vi-is-not-vim/", "published_at": "2017-08-12T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e2806637cd", "title": "Mastering console.log()", "url": "https://hugodaniel.com/posts/mastering-console-log/", "published_at": "2017-08-11T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e280d04faf", "title": "Bootstrapping rain", "url": "https://hugodaniel.com/posts/bootstrapping-rain/", "published_at": "2017-08-08T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e280f67df6", "title": "Palettes 0xF Fun", "url": "https://hugodaniel.com/posts/16-palettes-of-fun/", "published_at": "2017-03-01T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e2814b5e01", "title": "A new name to surf 2017", "url": "https://hugodaniel.com/posts/surfing-2017/", "published_at": "2017-01-18T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e2823cdede", "title": "How fast is nothing at all ?", "url": "https://hugodaniel.com/posts/how-fast-is-nothing/", "published_at": "2016-09-23T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e2830ebf1a", "title": "Bootstrapping - getting some boots to strap", "url": "https://hugodaniel.com/posts/bootstrapping4/", "published_at": "2016-08-11T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e28342e16c", "title": "Bootstrapping - week 3", "url": "https://hugodaniel.com/posts/bootstrapping3/", "published_at": "2016-06-24T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e28428d11b", "title": "React - Redux - Canvas", "url": "https://hugodaniel.com/posts/react-redux-canvas/", "published_at": "2016-06-17T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e284c2c9d7", "title": "Bootstrapping - week 2", "url": "https://hugodaniel.com/posts/bootstrapping2/", "published_at": "2016-06-16T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e2853ee92f", "title": "Bootstrapping - week 1", "url": "https://hugodaniel.com/posts/bootstrapping1/", "published_at": "2016-06-06T00:00:00+00:00" }, { "id": "01a08784-8e52-7175-b547-18e286349597", "title": "about me", "url": "https://hugodaniel.com/posts/about/", "published_at": "2016-04-09T00:00:00+00:00" } ] posts Claim your blog
Back to hugodaniel.com
Blog · corpus.blog/blogs/hugodaniel.com/posts

hugodaniel.com

hugodaniel.com

2026

22 May 2026

2025

2024

2023

2022

2021

2020

2018

2017

2016