<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: sgbeal</title><link>https://news.ycombinator.com/user?id=sgbeal</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 03 Sep 2026 12:29:04 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=sgbeal" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by sgbeal in "How to compromise your system with a job interview"]]></title><description><![CDATA[
<p>> only interact with people using an official email address.<p>And then google whether the domain is associated with phishing attempts. i've been targeted several times recently by folks with "official" email addresses but whose domains are (per google) strongly associated with phishing.</p>
]]></description><pubDate>Thu, 20 Aug 2026 19:39:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=49379158</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=49379158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49379158</guid></item><item><title><![CDATA[Show HN: Word-finder/anagram solver web app for mobile browsers]]></title><description><![CDATA[
<p>This word-finder/anagram solver web app is a side-effect of my recent work on a web app for playing the Paperback word-spelling tabletop game[^1]. After proving its worth embedded in that client, the dictionary was refactored into something almost standalone and now lives at this URL.<p>Its UI is intended specifically for mobile devices, especially phones - it looks pretty wonky on a full-sized desktop window (and that's okay because that's not where it's intended to be used).<p>This app was specifically written for use with Paperback but it should be usable with just about any English-language word-spelling/solving game. It supports wildcards and Paperback's multi-letter-cards.<p>It's fast. Had i not seen with my own eyes that it can scan 150k English words in about 2ms in JS, i'd have been hesitant to believe it. Speaking of...<p>This app was hand-written. The underlying dictionary structures and algorithms (in both C and JS) were heavily LLM-assisted but have overwhelmingly more human-written code than LLM code. The underlying algorithms, well-documented anagram-solving solutions, were unknown to me until an LLM suggested them for this purpose. The LLM sketched them out and the human filled them in. A separate LLM context created the "typewriter button" CSS styling upon request. What remains was hand-coded in emacs.<p>The dictionary supports German[^2], but my current German dictionary is just so huge (685k words, 38MB) that i cannot in good conscience host it on my web server or feed it to a JS engine. Once i've got a better-curated list there will be an option to load it in German. (My German copy of Paperback arrived a few days ago, providing the motivation for that support.)<p>Happy Spelling!<p>[^1]: <<a href="https://wanderinghorse.net/gaming/paperback/" rel="nofollow">https://wanderinghorse.net/gaming/paperback/</a>><p>[^2]: In principle it supports any language which can fit into ISO-8859-1/Latin-1 encoding and which requires only 6 or fewer letters beyond A..Z, but i've no motivation to add any beyond English and German. The 26+6 limit comes from what makes this dictionary performant: it builds masks of which letters a word contains in order to very quickly rule out definite negatives, and we've only got 32 bits in that mask.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49272369">https://news.ycombinator.com/item?id=49272369</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 12 Aug 2026 13:46:48 +0000</pubDate><link>https://wanderinghorse.net/gaming/paperback/words.html</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=49272369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49272369</guid></item><item><title><![CDATA[Show HN: JavaScript/JSON and CSS minifier lib in minimal C89]]></title><description><![CDATA[
<p>For those 1.7 of you who may have need of a JavaScript or JSON minifier which (A) is not based on node.js and (B) is not "poisoned" by the "do no evil" license attached to Douglas Crockford's minifier[^1] (commonly seen in various projects over the years)...<p>My C89 CSS minifier was recently broken down into a separate JavaScript/JSON minifier. It's trivial to embed in C, "should" build fine in WASM (that's untested, though), and is pretty small: the whole combined library is about 67kb, or about 34kb for just the JS parts (much of which is docs).<p>It minifies only spaces, not symbols, and does not offer any options for _not_ minifying (e.g. adding newlines every so often for the sake of tools which treat extremely-long-lined files as binaries) except that by default it retains the first comment in the input if it's the first non-whitespace content (those are typically license/attribution blocks) but it can be told to optionally strip those too.<p>LLM disclaimer: the 100% hand-written CSS minifier was given to an LLM which, tasked with creating a JS minifier with the same interface, created the new variant in about 20 seconds. That code was later hand-refactored to consolidate parts common to the two minifiers (all of which were hand-written) but the JS-specific pieces are otherwise 100% LLM-generated.<p>Happy minifying!<p>[^1]: To clarify: at least a few projects' source code has been rejected by Linux package maintainers because the "do no evil" clause is considered antithetical to those distributions' ideals of freedom. Fair enough.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49067477">https://news.ycombinator.com/item?id=49067477</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 27 Jul 2026 10:22:01 +0000</pubDate><link>https://fossil.wanderinghorse.net/r/cssminc/doc/ckout/README.md</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=49067477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49067477</guid></item><item><title><![CDATA[Show HN: Rules-free solo-only client for the Paperback tabletop game]]></title><description><![CDATA[
<p>My past couple of weeks were spent writing an app with which to play the word-spelling tabletop game Paperback in the browser.<p>Tim Fowers, creator and publisher of the game, has given me permission to post my homemade electronic copy of the game (initially built so that i could print-and-play a copy with "US-Mini" size cards), and recently sent me (much to my surprise) the publisher's official graphical assets and an invitation to use them in this little side-project(!!!).<p>The version housed at that link has a known bug or two (there's one too many 7-cent W's, for one thing) but it's otherwise believed to be usable for its intended purpose: allowing an experienced Paperback player to sit and play solo mode without the app interfering rules- or dictionary-wise. (My only real fuss about their official app is the locked dictionary. It does not allow the word "pawn", nor a wide range of other perfectly viable words. Secondarily, i'd like to be able to customize the game more and remove all of those annoying "Q" cards (who buys "Q" cards?!?!?).)<p>Currently resetting the game requires reloading the page, which generates a ready-to-run game setup. See the top of that page for URL arguments which change various options (if you want huge "US Standard"-sized cards on a 32-inch 4k screen, pass the "big" URL option). UI widgets for doing that are on the near-term TODO list. It does not currently support saving/loading, but that's underway (and very closely tied to the game state reset).<p>It's in active development and i'm particularly interested in squeezing the UI down to fit more comfortably on a 10-inch table (where it's usable but a tiny bit fidgety due to scrolling). It's way, way too big for phones, though.<p>This is part of a larger project consolidating 6 or 8 years' worth of disparate card-generation tools for tabletop games, and this app is the first "end user" app (as opposed to maintainer apps) written for that toolkit. It may well be the only app i've written, in 30-odd years, which is not entirely dog-ugly.<p>Happy Spelling!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48878745">https://news.ycombinator.com/item?id=48878745</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 12 Jul 2026 06:04:21 +0000</pubDate><link>https://wanderinghorse.net/gaming/paperback/solo.html</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48878745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48878745</guid></item><item><title><![CDATA[New comment by sgbeal in "Pedestrian Killed by Frontier Airlines Plane Leaving Denver Airport"]]></title><description><![CDATA[
<p>"Pedestrian" generally implies some random person out walking around, but:<p>> "Late last night, a trespasser breached airport security at Denver Int’l Airport, deliberately scaled a perimeter fence, and ran out onto a runway," Transportation Secretary Sean Duffy said in a statement</p>
]]></description><pubDate>Sat, 09 May 2026 16:44:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48076290</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48076290</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48076290</guid></item><item><title><![CDATA[New comment by sgbeal in "A web page that shows you everything the browser told it without asking"]]></title><description><![CDATA[
<p>> How does it affect your mental health?<p>That it should in some way affect my mental health has never once occurred to me. If anything, i assume that living on one's body's own natural schedule would be optimal in terms of related effects on mental health.<p>> How do you deal with times day and night are flipped?<p>When there's not something pressing me into a schedule, e.g. a job, i kind of "circle around" to a conventional schedule every few weeks. All things considered, i prefer the "swapped" times because it's quieter at night. e.g. less traffic driving by, fewer neighbors making various noises, and no DHL/UPS/DPD deliveries for the neighbors being dropped off here because the neighbors aren't home (whereas i am almost always at home and both the neighbors and the local delivery folks know it).<p>i'm a retiree so, with the exception of shopping and rare appointments, the night/day or weekend/weekend[^1] are not generally distinctions which affect me, and it's never bothered me in the slightest to not have a fixed schedule. On the contrary, a fixed schedule somewhat bums me out long-term, presumably because it does not match my biological clock.<p>> How does it affect your social life?<p>My social life is (by preference and choice) comprised solely of (A) my FOSS work, and there's no clock associated with any of that, and (B) my wife. Both my and my wife's biological families are all on another continent, so we've no family obligations which require physical presence. When i'm not FOSS'ing, we play a lot of board games.<p>[^1]: stores are closed on Sundays and all public holidays in Germany. More than once i've gone to the store, only to discover it's closed due to a holiday i've overlooked (like, most recently, May 1st).</p>
]]></description><pubDate>Sat, 09 May 2026 06:32:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48072403</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48072403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48072403</guid></item><item><title><![CDATA[New comment by sgbeal in "A web page that shows you everything the browser told it without asking"]]></title><description><![CDATA[
<p>> Surely you can infer when you work and sleep from your experience living your life as you.<p>Not everybody has a schedule. Mine is essentially "eat when hungry, sleep when tired", and my sleep patterns more closely follow a 26-hour day than a 24-hour day.</p>
]]></description><pubDate>Fri, 08 May 2026 19:22:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48067543</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48067543</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48067543</guid></item><item><title><![CDATA[New comment by sgbeal in "Learning to Code, 1990s vs. 2026"]]></title><description><![CDATA[
<p>Two days ago: <<a href="https://news.ycombinator.com/item?id=48024401">https://news.ycombinator.com/item?id=48024401</a>></p>
]]></description><pubDate>Fri, 08 May 2026 11:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48061783</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48061783</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48061783</guid></item><item><title><![CDATA[New comment by sgbeal in "Ask HN: What is your go-to solution for a personal wiki in 2026?"]]></title><description><![CDATA[
<p>The Fossil SCM (<<a href="https://fossil-scm.org" rel="nofollow">https://fossil-scm.org</a>>) meets most of your requirements, noting that:<p>- "mobile app" means "its web interface"<p>- "backed up" means to wherever you upload/sync your backups to<p>- No automagic table calculation support.</p>
]]></description><pubDate>Thu, 07 May 2026 19:01:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48053393</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48053393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48053393</guid></item><item><title><![CDATA[New comment by sgbeal in "SQLite Is a Library of Congress Recommended Storage Format"]]></title><description><![CDATA[
<p>> Compare that to SQLite's 1.2mb of wasm and glue code<p>The current trunk is actually 1.7mb in its canonical unminified form (which includes very nearly as much docs as JS code), split almost evenly between the WASM and JS pieces :/. Edit: it is 1.2mb in minified form, though.<p>Disclosure: i'm its maintainer.<p>Edit: current trunk, for the sake of trivia:<p><pre><code>    sqlite3.wasm 896745
    sqlite3.mjs  816270 # unminified w/ docs
    sqlite3.mjs  431388 # unminified w/o docs
    sqlite3.mjs  310975 # minified</code></pre></p>
]]></description><pubDate>Thu, 07 May 2026 11:17:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48048033</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48048033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48048033</guid></item><item><title><![CDATA[New comment by sgbeal in "PHP's Biggest Problem"]]></title><description><![CDATA[
<p>FWIW, i'll disagree. i was a _huge_ PHP fan from around 1999 until 2010, but two things finally killed it for me:<p>1) It's apparently impossible to cleanly structure large projects with PHP. i've been a part of many such projects across a large handful of teams, and every one of them eventually became a complete mess, structurally speaking, no matter how conscientious the developers were. Java, for example, forces a directory structure onto developers. PHP is more C-like in that regard - "do whatever you want" - and i've yet to see that end well for older/larger projects.<p>2) Breaking age-old working features with new releases, like when they removed split or join or implode or explode (two of the four, but i don't recall which). When they did that, and my decade-old website suddenly stopped working, i lost all motivation to continue maintaining sites in PHP. Dropped it that very day (for my personal sites) and have not looked back. i still had to use it in commercial projects off and on through 2014, and each one only help cement point #1 for me.<p>i don't miss it.</p>
]]></description><pubDate>Thu, 07 May 2026 10:41:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48047800</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48047800</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48047800</guid></item><item><title><![CDATA[New comment by sgbeal in "How long does it take you to get back into a project after a few days away?"]]></title><description><![CDATA[
<p>> Nothing told me why I was changing it<p>That arguably belongs in the commit messages or, in some cases, in code comments.<p>> or what I was planning next.<p>That arguably belongs in ./TODO or, in some cases, code comments.<p>Edit: TODOs in code comments obviously don't have a natural ordering, but i frequently look at diffs to help figure that part out, as they clearly mark the new/recent TODOs.<p>> Is there anything that actually works, or do you just accept the tax?<p>There will always be a tax for context switching - even brief interruptions during concentrated work often require longer than the interruption to get back into the work (that's a well-studied phenomenon, actually). There is no avoiding that unless, perhaps, one has eidetic memory (in which case the cost is _presumably_ low enough to be considered negligible (but perhaps someone with eidetic memory can enlighten us on that)).<p>> How long does it realistically take you to resume a project after 3+ days?<p>That depends entirely on the project and its complexity/scope. It might be 5 minutes, it might be half a day. i'll admit that i sometimes (okay, okay: often!) avoid going back to something i'd _like_ to work on because i know in advance that this tax is likely to be paid by an inordinately large portion of my current energy levels, leaving little for the actual work. Frequently, though, when _finally_ getting back, i discover that the tax is less than anticipated. Maybe that's an age/experience thing, though - refamiliarizing myself with older code seems to come more easily to me with age, for reasons beyond my ken.</p>
]]></description><pubDate>Thu, 07 May 2026 10:09:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48047557</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48047557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48047557</guid></item><item><title><![CDATA[New comment by sgbeal in "Google Chrome silently installs a 4 GB AI model on your device without consent"]]></title><description><![CDATA[
<p>> Might be a good addition for <a href="https://superuser.com/questions/1937372/" rel="nofollow">https://superuser.com/questions/1937372/</a><p>Done! Edit: nevermind - i've deleted it. The community guidelines request/require that responses actually attempt to answer the question (how to block all AI usage), which this response does not address.</p>
]]></description><pubDate>Wed, 06 May 2026 16:09:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48037879</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48037879</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48037879</guid></item><item><title><![CDATA[New comment by sgbeal in "Google Chrome silently installs a 4 GB AI model on your device without consent"]]></title><description><![CDATA[
<p>The following seems to keep Chrome from re-downloading this beast:<p><pre><code>    # From one's $HOME dir:
    rm -fr ./.config/google-chrome/OptGuideOnDeviceModel
    mkdir -p ./.config/google-chrome/OptGuideOnDeviceModel
    touch ./.config/google-chrome/OptGuideOnDeviceModel/weights.bin
    chmod 0400 ./.config/google-chrome/OptGuideOnDeviceModel/weights.bin
    chmod 0500 ./.config/google-chrome/OptGuideOnDeviceModel
</code></pre>
Adapt as appropriate for your OS. For "Chrome Unstable" installs, the dir name is google-chrome-unstable.<p>This has, so far, kept Chrome from (re)installing that file on my system.<p>Hypothetically the parts involving weights.bin aren't needed so long as the containing directory is not writable.</p>
]]></description><pubDate>Wed, 06 May 2026 08:19:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48033657</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48033657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48033657</guid></item><item><title><![CDATA[New comment by sgbeal in "DNSSEC disruption affecting .de domains – Resolved"]]></title><description><![CDATA[
<p>> will result in the police kicking in your door the next morning<p>But not before 8am.</p>
]]></description><pubDate>Wed, 06 May 2026 06:21:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48032913</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48032913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48032913</guid></item><item><title><![CDATA[New comment by sgbeal in "Google Chrome silently installs a 4 GB AI model on your device without consent"]]></title><description><![CDATA[
<p>> You only download it when some JS requests it for the first time, most people will never have it.<p>i certainly never activated it willfully. i use Chrome only as a fallback testing platform for web dev - a handful of times per month - yet both Chrome Stable and Chrome Unstable had installed this 4GB monstrosity in my home dir. 8GB of junk i'd never used. Both have since been uninstalled and replaced with Chromium.</p>
]]></description><pubDate>Tue, 05 May 2026 09:53:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48020217</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48020217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48020217</guid></item><item><title><![CDATA[New comment by sgbeal in "From CVS to Git, thirty years of source control"]]></title><description><![CDATA[
<p>> ... there's a clear prompt in the bottom right corner.<p>Indeed, it does.<p>> (Didn't try mobile.)<p>And my eyes didn't make it that far down the screen. If i can't read the first paragraph, there's no point in scanning further down the page (and certainly not to look for something as esoteric as an option to disable what should not be there in the first place). Grumble, grumble.</p>
]]></description><pubDate>Mon, 04 May 2026 12:28:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48007850</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48007850</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48007850</guid></item><item><title><![CDATA[New comment by sgbeal in "From CVS to Git, thirty years of source control"]]></title><description><![CDATA[
<p>Web design tip: don't have animations within a short distance of text, as human eyes evolved to follow the flashiest/fastest-moving thing around, which makes such text literally illegible to many of us. This particular site takes the cake in that regard by animating the whole page background.</p>
]]></description><pubDate>Mon, 04 May 2026 09:19:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48006336</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48006336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48006336</guid></item><item><title><![CDATA[New comment by sgbeal in "Show HN: ReflowPDF – wrote a layout engine because every PDF library failed"]]></title><description><![CDATA[
<p>> iText — commercial with aggressive licensing<p>It seems somewhat ironic to call that out as a negative when your own tool is both commercial and (insofar as i can tell) closed source.</p>
]]></description><pubDate>Mon, 04 May 2026 08:01:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48005910</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=48005910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48005910</guid></item><item><title><![CDATA[New comment by sgbeal in "Lib0xc: A set of C standard library-adjacent APIs for safer systems programming"]]></title><description><![CDATA[
<p>> I have no idea why this idea is around,<p>To the best of my fallible knowledge, the notion was first popularized via <<a href="http://esr.ibiblio.org/?p=8764" rel="nofollow">http://esr.ibiblio.org/?p=8764</a>>.</p>
]]></description><pubDate>Sat, 02 May 2026 12:38:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47985891</link><dc:creator>sgbeal</dc:creator><comments>https://news.ycombinator.com/item?id=47985891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47985891</guid></item></channel></rss>