<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: rikroots</title><link>https://news.ycombinator.com/user?id=rikroots</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 14 Aug 2026 16:05:51 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rikroots" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rikroots in "Return of the Nigerian Prince Redux: Beware Book Club and Book Review Scams (2025)"]]></title><description><![CDATA[
<p>Oh, excellent! I thought I was the only author (idiotic enough) to give away my books for free. I choose to call it altruism, but the truth is that I got sick of the whole marketing-and-promotion meat grinder a long while back and decided I wanted to write books I wanted to read, rather than writing what someone else thought they could sell. I am now proud to call myself a Hobbyist Indie Author. Perhaps we could start an insurgency together?</p>
]]></description><pubDate>Sun, 05 Jul 2026 11:37:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48793347</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48793347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48793347</guid></item><item><title><![CDATA[New comment by rikroots in "Getting Creative with Perlin Noise Fields"]]></title><description><![CDATA[
<p>It turns out that adding noise to gradients is a really useful thing to do - so many new effects can be created with just a few additional parameters. Sadly, CSS and Canvas API gradients (linear, radial, conic) are very basic implementations (and SVG is not much more advanced).<p>Recently I did some work to add software gradient enhancements to my canvas library. Because these run on the CPU rather than GPU they're computationally intense, but still worth the effort just to see what can be done with different spreads (pad, repeat, reflect, transparent) and noise engine operations inserted while calculating stuff like gradient color selection, and pixel positioning.<p>Linear gradient demo test - <a href="https://scrawl-v8.rikweb.org.uk/demo/canvas-003.html" rel="nofollow">https://scrawl-v8.rikweb.org.uk/demo/canvas-003.html</a></p>
]]></description><pubDate>Tue, 16 Jun 2026 11:14:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48553448</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48553448</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48553448</guid></item><item><title><![CDATA[New comment by rikroots in ""Don't You Just Upload It to ChatGPT?""]]></title><description><![CDATA[
<p>I learned last year that "translation" can be a very tricky thing. Because there's never a one-to-one correlation between one language's words, phrases, structures and metaphors, and another language's equivalent stuff. And LLM translations may not be the actual translation you want, or need.<p>I wrote up my experiences of translating Lorca and Cavafy poems here[1]. tl;dr: I have developed a massive new respect for translators; however much they're being paid, they probably need to be paid more!<p>[1] - <a href="https://rikverse2020.rikweb.org.uk/blog/adventures-in-poetry-translation" rel="nofollow">https://rikverse2020.rikweb.org.uk/blog/adventures-in-poetry...</a></p>
]]></description><pubDate>Sat, 13 Jun 2026 11:52:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48516342</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48516342</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48516342</guid></item><item><title><![CDATA[Show HN: A local-only image filter editor and batch processor in the browser]]></title><description><![CDATA[
<p>Article URL: <a href="https://kaliedarik.github.io/sc-filter-builder/">https://kaliedarik.github.io/sc-filter-builder/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48053166">https://news.ycombinator.com/item?id=48053166</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 07 May 2026 18:43:22 +0000</pubDate><link>https://kaliedarik.github.io/sc-filter-builder/</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48053166</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48053166</guid></item><item><title><![CDATA[New comment by rikroots in "Write some software, give it away for free"]]></title><description><![CDATA[
<p>I give my side projects away for free because I have a $job to pay for the roof over my head, food, etc. and don't feel the need to make more money from my hobby work.<p>I create my side projects in the first place because I like to prove to myself that it is possible to do mad stuff in the browser - like a screen recorder with canvas composition, teleprompter, live annotations and talking-head overlay[1]. Or an SVG-inspired image filter builder for local batch application to images (still a WIP but almost there)[2].<p>It doesn't cost me any money to host the results, so: why not?<p>[1] - <a href="https://kaliedarik.github.io/sc-screen-recorder/" rel="nofollow">https://kaliedarik.github.io/sc-screen-recorder/</a><p>[2] - <a href="https://kaliedarik.github.io/sc-filter-builder/" rel="nofollow">https://kaliedarik.github.io/sc-filter-builder/</a></p>
]]></description><pubDate>Wed, 06 May 2026 11:54:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48035178</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48035178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48035178</guid></item><item><title><![CDATA[New comment by rikroots in "Stitch together lots of little HTML pages with navigations for interactions"]]></title><description><![CDATA[
<p>> when it's much easier to just build a nice website using JavaScript<p>I'm currently building a web-based tool that uses dynamic forms for UI, without the help of of a framework (yeah I know; I have reasons). This is the result: <a href="https://github.com/KaliedaRik/sc-filter-builder/blob/main/js-modules/form-builder.js" rel="nofollow">https://github.com/KaliedaRik/sc-filter-builder/blob/main/js...</a><p>It's not "easier" using Javascript; raw Javascript websites are a nightmare to build, maintain and reason about. It <i>is</i> "easier" with Javascript + current-favourite-framework-of-the-day.<p>Also: accessibility, SEO, the all-new Generative Engine Optimization (GEO) thing, etc.</p>
]]></description><pubDate>Mon, 04 May 2026 10:31:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48006847</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=48006847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48006847</guid></item><item><title><![CDATA[New comment by rikroots in "What can we gain by losing infinity?"]]></title><description><![CDATA[
<p>Last year I made the mistake of asking ChatGPT what the world would look like if `∞ === -∞` and it took me seriously (I think) and led me on an hours-long dance where in the end it had me trying to prove, mathematically, that `2 > 1` ... and it was at that point I realised that I'm not cut out to think in numbers and maybe it was for the best that I failed my end-of-school Maths exam</p>
]]></description><pubDate>Thu, 30 Apr 2026 16:59:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47965303</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47965303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47965303</guid></item><item><title><![CDATA[New comment by rikroots in "Ask HN: What Are You Working On? (April 2026)"]]></title><description><![CDATA[
<p>I'm building a client-side-only web page that will (eventually) allow users to build their own image filter and batch-apply it to a bunch of images.<p><a href="https://kaliedarik.github.io/sc-filter-builder/" rel="nofollow">https://kaliedarik.github.io/sc-filter-builder/</a><p>No idea if anyone will be interested in using such a (free, MIT) web tool, but I'm having lots of fun putting my canvas library's filter engine (which is inspired by SVG chainable filters) through its paces.</p>
]]></description><pubDate>Mon, 13 Apr 2026 16:49:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47754763</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47754763</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47754763</guid></item><item><title><![CDATA[New comment by rikroots in "Generative art over the years"]]></title><description><![CDATA[
<p>> I spent a fair amount of time with p5 etc, but the results always felt limited and brittle.<p>I wrote a JS canvas library[1] partly because existing libraries of the time (2013) didn't do what I wanted a canvas library to do. Things like animated gradients and patterns, etc. I'm still working on the library today - so thats 12+ years of my spare time gone!<p>Generative art - such as challenges like Genuary[2] - is a key tool for giving me ideas on how to develop the library further. I keep CodePens of some of my better efforts[3] around as a set of extra tests to check for breaking changes as I fiddle with the library.<p>[1] - <a href="https://github.com/KaliedaRik/Scrawl-canvas" rel="nofollow">https://github.com/KaliedaRik/Scrawl-canvas</a><p>[2] - <a href="https://genuary.art/" rel="nofollow">https://genuary.art/</a><p>[3] - <a href="https://codepen.io/collection/RzzMjw" rel="nofollow">https://codepen.io/collection/RzzMjw</a></p>
]]></description><pubDate>Fri, 10 Apr 2026 18:55:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47722161</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47722161</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47722161</guid></item><item><title><![CDATA[New comment by rikroots in "Record demo videos in the browser: multi-screen, camera, annotations, subtitles"]]></title><description><![CDATA[
<p>No install, no backend, no fees. MIT licensed for hacking and local use.<p>Link to tool: <a href="https://kaliedarik.github.io/sc-screen-recorder/" rel="nofollow">https://kaliedarik.github.io/sc-screen-recorder/</a></p>
]]></description><pubDate>Sun, 05 Apr 2026 09:14:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47647549</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47647549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47647549</guid></item><item><title><![CDATA[Record demo videos in the browser: multi-screen, camera, annotations, subtitles]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/KaliedaRik/sc-screen-recorder/blob/main/README.md">https://github.com/KaliedaRik/sc-screen-recorder/blob/main/README.md</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47647548">https://news.ycombinator.com/item?id=47647548</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 05 Apr 2026 09:14:29 +0000</pubDate><link>https://github.com/KaliedaRik/sc-screen-recorder/blob/main/README.md</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47647548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47647548</guid></item><item><title><![CDATA[New comment by rikroots in "Pretext: TypeScript library for multiline text measurement and layout"]]></title><description><![CDATA[
<p>> the wheel template can have some letter parts like the top of L or d extend beyond the wheel<p>Yeah - I use the template (in that case, a circle) to calculate line lengths, then I run 2d text along the 1d lines. Even if I tried to keep all of the glyphs inside the wheel I'd fail - because some fonts lie about how tall they are. Fonts are, basically, criminals.</p>
]]></description><pubDate>Mon, 30 Mar 2026 07:12:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47571338</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47571338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47571338</guid></item><item><title><![CDATA[New comment by rikroots in "Pretext: TypeScript library for multiline text measurement and layout"]]></title><description><![CDATA[
<p>> This thing is very impressive.<p>Agreed! Text layout engines are stupidly hard. You start out thinking "It's a hard task, but I can do it" and then 3 months later you find yourself in a corner screaming "Why, Chinese? Why do you need to rotate your punctuation differently when you render in columns??"<p>This effort feeds back to the DOM, making it far more useful than my efforts which are confined to rendering multiline text on a canvas - for example: <a href="https://scrawl-v8.rikweb.org.uk/demo/canvas-206.html" rel="nofollow">https://scrawl-v8.rikweb.org.uk/demo/canvas-206.html</a></p>
]]></description><pubDate>Sun, 29 Mar 2026 19:33:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47566413</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47566413</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47566413</guid></item><item><title><![CDATA[New comment by rikroots in "Professional video editing, right in the browser with WebGPU and WASM"]]></title><description><![CDATA[
<p>My tool uses the browser's built in encoders (which vary by browser, but whatever). I did use wasm though, for the MediaPipe background removal stuff.<p><a href="https://kaliedarik.github.io/sc-screen-recorder/" rel="nofollow">https://kaliedarik.github.io/sc-screen-recorder/</a></p>
]]></description><pubDate>Sun, 22 Mar 2026 13:30:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47477359</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47477359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47477359</guid></item><item><title><![CDATA[New comment by rikroots in "Scrawl-Canvas Screen Recorder"]]></title><description><![CDATA[
<p>Browser screen recorder with canvas composition, teleprompter, live annotations and talking-head overlay.</p>
]]></description><pubDate>Mon, 16 Mar 2026 17:19:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47401900</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47401900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47401900</guid></item><item><title><![CDATA[Scrawl-Canvas Screen Recorder]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/KaliedaRik/sc-screen-recorder">https://github.com/KaliedaRik/sc-screen-recorder</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47401899">https://news.ycombinator.com/item?id=47401899</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 16 Mar 2026 17:19:12 +0000</pubDate><link>https://github.com/KaliedaRik/sc-screen-recorder</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47401899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47401899</guid></item><item><title><![CDATA[New comment by rikroots in "It's time to move your docs in the repo"]]></title><description><![CDATA[
<p>For me it's a case of, I have to expose my canvas library documentation for the training data bots to find and (hopefully) include in the LLM training data because it's the only way I'll ever get LLMs to:<p>A) accept that my library exists, and has its uses (it's a tough world out there for canvas-focussed JS libraries that aren't Fabric.js, Konva.js or Pixi.js)<p>B) learn how to write code using my library in the best way possible (because the vibes ain't going away, so may as well teach the Agents how to do the work correctly)<p>Plus, writing the documentation[1] for a library I've been developing for over 10 years has turned into a useful brain-dumping activity to help justify all the decisions I've made along the way (such as my approach to the scene graph). I'm not going to be here forever, so might as well document as much as I can remember now.<p>[1] - <a href="https://scrawl-v8.rikweb.org.uk/docs/reference/index.html" rel="nofollow">https://scrawl-v8.rikweb.org.uk/docs/reference/index.html</a></p>
]]></description><pubDate>Sat, 14 Mar 2026 20:52:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47381044</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47381044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47381044</guid></item><item><title><![CDATA[New comment by rikroots in "You gotta think outside the hypercube"]]></title><description><![CDATA[
<p>I've got a rotating tesseract demo up on CodePen[1]. At least, I <i>think</i> its a rotating tesseract - I have no idea if it's an accurate representation because tesseracts lead me into thinking about quaternions and then my brain shuts down.<p>[1] - <a href="https://codepen.io/kaliedarik/pen/yLbQpKq" rel="nofollow">https://codepen.io/kaliedarik/pen/yLbQpKq</a></p>
]]></description><pubDate>Sat, 14 Mar 2026 12:23:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47375951</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47375951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47375951</guid></item><item><title><![CDATA[New comment by rikroots in "Coding after coders: The end of computer programming as we know it?"]]></title><description><![CDATA[
<p>Well I do seem to spent a fair amount of my developer time swearing at my laptop screen. And then there's that time I spend just prior to writing code just staring at the wall while I figure out what sort of code I want to write - if I can repackage that wall-staring time into "time spent consulting with AI about approaches and architecture decisions" I'm sure my engineering manager will think more kindly of me ...</p>
]]></description><pubDate>Sat, 14 Mar 2026 12:03:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47375792</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47375792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47375792</guid></item><item><title><![CDATA[Show HN: SC Screen Recorder: a browser-based screen recorder with added layers]]></title><description><![CDATA[
<p>I’ve been working on a small proof-of-concept screen-recording tool that runs entirely in the browser. It lets you capture screens or windows, add a talking-head camera feed, layer multiple targets, drag and scale them, draw annotations directly on the canvas, and record everything to a local MP4/WebM file. There’s no backend, no build step, and no external dependencies apart from MediaPipe and Scrawl-canvas.<p>The project is intended to be hackable rather than polished, and includes a keyboard-accessible UI and a step-by-step walkthrough. Code and demo are here:<p>GitHub: <a href="https://github.com/KaliedaRik/sc-screen-recorder" rel="nofollow">https://github.com/KaliedaRik/sc-screen-recorder</a><p>Feedback very welcome.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47140556">https://news.ycombinator.com/item?id=47140556</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 24 Feb 2026 18:16:51 +0000</pubDate><link>https://kaliedarik.github.io/sc-screen-recorder/</link><dc:creator>rikroots</dc:creator><comments>https://news.ycombinator.com/item?id=47140556</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47140556</guid></item></channel></rss>