<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: philo23</title><link>https://news.ycombinator.com/user?id=philo23</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 16:41:10 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=philo23" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by philo23 in "The woes of sanitizing SVGs"]]></title><description><![CDATA[
<p>The main use case I was thinking of is being able to use an inline SVG, but with external resources inside of it (like say a CSS background image using url(...)) in such a way that it ends up loading that embedded content in a cross-origin anonymous way and blocking all embedded scripts. That way someone can't make requests to CSRF exploitable URLs by setting an embedded images to something like example.com/my-submission/favourite<p>But also so that setting up a CSS transform: scale(10000) can't take over the entire viewport, it'd be constrained to an iframe-like boundary (exactly like an <img>) but still remain as an inline SVG, sort of like an <iframe srcdoc>. So scripts on the parent/host HTML document can still manipulate it like the rest of the DOM, but the inner <svg> elements are all "inert" for want of a better word.<p>Actually I don't know off the top of my head what happens with an SVG file inside of a <img> when it references external images (either cross-domain or not.) I know scripts and animations get disabled, so I'd take a guess and say some CSS gets blocked too.<p>Again I've not really thought terribly hard about it, or if it's actually useful at all, and I'm betting it'd be filled with even more foot-guns than there are right now. I'm just thinking out loud.</p>
]]></description><pubDate>Mon, 27 Apr 2026 22:07:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47928039</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47928039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47928039</guid></item><item><title><![CDATA[New comment by philo23 in "The woes of sanitizing SVGs"]]></title><description><![CDATA[
<p>> How can you prevent it from accessing a parent doc when its not a separate document.<p>By turning it into a document boundary when you use the sandbox attribute, kinda similar to loading an svg file inside of an <img> tag.<p>and yeah you could get 90% of the way there with an iframe srcdoc, but I was imagining some kind of cross between an <iframe> sandboxed into its own origin, and an <img> where it still has its own intrinsic size.<p>but it was mainly just a throw away thought, I've not really thought it through much deeper than that.</p>
]]></description><pubDate>Mon, 27 Apr 2026 19:36:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47926277</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47926277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47926277</guid></item><item><title><![CDATA[New comment by philo23 in "The woes of sanitizing SVGs"]]></title><description><![CDATA[
<p>It'd be nice if there was a sandbox attribute you could add to inline <svg> tags, like the <iframe sandbox> attribute that'd let you opt out of all the potentially "dynamic" stuff inside of an SVG like scripts and event handlers, or even just literally sandbox the entire thing from accessing the "parent" HTML page's context/cookies/etc just like an iframe.<p>I'm sure it'd just open up a whole other can of worms though... not to mention having to wait for browsers to actually support it.<p>The real solution here is definitely CSP + basic sanitisation though.</p>
]]></description><pubDate>Mon, 27 Apr 2026 16:33:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47923802</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47923802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47923802</guid></item><item><title><![CDATA[New comment by philo23 in "PHP 8.6 Closure Optimizations"]]></title><description><![CDATA[
<p>Little bit of extra detail about static closures in PHP for anyone interested: <a href="https://www.php.net/manual/en/functions.anonymous.php#functions.anonymous-functions.static" rel="nofollow">https://www.php.net/manual/en/functions.anonymous.php#functi...</a></p>
]]></description><pubDate>Thu, 16 Apr 2026 18:05:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47797233</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47797233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47797233</guid></item><item><title><![CDATA[New comment by philo23 in "macOS 26 breaks custom DNS settings including .internal"]]></title><description><![CDATA[
<p>Just tried it on my Mac and sadly it doesn’t seem like it. I’m still on Sequoia, so possibly it does it on Tahoe, but probably unlikely. That’s a shame.<p>It’d be nice if someone on the Safari team added this though to match Chrome and Firefox!</p>
]]></description><pubDate>Thu, 19 Mar 2026 17:21:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47442764</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47442764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47442764</guid></item><item><title><![CDATA[New comment by philo23 in "macOS 26 breaks custom DNS settings including .internal"]]></title><description><![CDATA[
<p>It's not quite the same, but I've moved to using *.localhost for all my local web dev work. All modern browsers will resolve *.localhost to 127.0.0.1 internally. No need to setup any DNS resolvers or edit your hosts file.<p>But that only really helps you when you're dealing with websites in a browser, and when you want the address to resolve back to your local machine. So it wont help you with other programs like python/wget/etc or any calls you make to getaddrinfo()</p>
]]></description><pubDate>Thu, 19 Mar 2026 17:00:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47442500</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47442500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47442500</guid></item><item><title><![CDATA[New comment by philo23 in "Node.js needs a virtual file system"]]></title><description><![CDATA[
<p>Little bit saddened the sqlite provider doesn't use the SQLite archive format under the hood. Seems like it'd be a good fit for what they're trying to achieve + give you an easy way to create/extract the files out of the virtual file system.<p>The sqlar schema is missing some of the info thats being stored atm, but there's nothing stopping you from adding your own fields/tables on top of the format, if anything the docs encourage it. It is just a sqlite database at the end of the day.<p><a href="https://www.sqlite.org/sqlar.html" rel="nofollow">https://www.sqlite.org/sqlar.html</a></p>
]]></description><pubDate>Wed, 18 Mar 2026 03:10:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47421215</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=47421215</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47421215</guid></item><item><title><![CDATA[New comment by philo23 in "The Falkirk Wheel"]]></title><description><![CDATA[
<p>I'm not sure why the Falkirk Wheel keeps getting posted to HN, but hey I'm not gonna complain!<p>I'll repost what I shared last time though, there's another much older boat lift on the canal network that solves a similar problem of transporting boats from the canal up and down to a river, but built with Victorian engineering instead (though it's been retrofitted a few times) called the Anderton Boat Lift, and it's worth a visit!<p><a href="https://canalrivertrust.org.uk/things-to-do/museums-and-attractions/anderton-boat-lift-and-visitor-centre-cheshire" rel="nofollow">https://canalrivertrust.org.uk/things-to-do/museums-and-attr...</a><p>The UK's canal network as a whole is fantastic, and definitely worth a day out on if you've got the time.</p>
]]></description><pubDate>Wed, 11 Feb 2026 16:30:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46977047</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46977047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46977047</guid></item><item><title><![CDATA[New comment by philo23 in "Microsoft mishandling example.com"]]></title><description><![CDATA[
<p>Just a guess but why do I get the feeling it’s because someone who setup sei.co.jp in Azure Entra (aka Azure AD) some how managed to add/claim the domain “example.com” against their companies tenant.<p>It’s clearly not using the DNS records for discovery because they don’t exist, the only other option I can see is some weird fall through or hard coded value and it seems like an odd one to pick.</p>
]]></description><pubDate>Fri, 23 Jan 2026 16:54:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46734739</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46734739</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46734739</guid></item><item><title><![CDATA[New comment by philo23 in "Ask HN: What did you find out or explore today?"]]></title><description><![CDATA[
<p>The relative date formats are super useful. It can get a bit confusing when there's timezones involved though.<p><a href="https://www.php.net/manual/en/datetime.formats.php#datetime.formats.relative" rel="nofollow">https://www.php.net/manual/en/datetime.formats.php#datetime....</a></p>
]]></description><pubDate>Thu, 15 Jan 2026 14:24:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46632947</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46632947</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46632947</guid></item><item><title><![CDATA[New comment by philo23 in "Find a pub that needs you"]]></title><description><![CDATA[
<p>Yep, locally where I am there’s one postcode for all the houses on one side of the street (all the even numbered houses) and another for the opposite side (all the odd numbers.)<p>Presumably it helps a lot with validating the address is correct, kinda like a checksum, and also probably helps with how deliveries are organised by the local office before the postie is sent out with them all.</p>
]]></description><pubDate>Thu, 15 Jan 2026 09:46:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46630316</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46630316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46630316</guid></item><item><title><![CDATA[New comment by philo23 in "Find a pub that needs you"]]></title><description><![CDATA[
<p>Kinda meta, but this is the first time in a long time where I've put only the first half of my postcode in expecting it not to work and been surprised. Most of these "find your nearest XYZ" site require the full postcode which is just unnecessary unless you're looking for a fairly precise location. A full postcode can narrow your location down to an individual street, so its nice not to give too much away if you can.<p>For anyone not in the know, UK postcodes are made up of two parts: a general area (the outward code) and then a more specific one (the inward code.) Generally speaking a postcode + house number will be good enough to get a letter delivered to the right place, though the sorting office might not be too happy with you...<p>The format [0] is roughly: AB12 3CD, though the number of letters/numbers on the left side can vary a bit. As far as I know the second set of numbers is always 1 digit though, so that's how you can easily split the two sides of it to format it nicely. There's a couple of special ones that break the rules though.<p>[0] <a href="https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom#Structure,_Formatting_and_Validation" rel="nofollow">https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdo...</a></p>
]]></description><pubDate>Wed, 14 Jan 2026 22:32:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46624775</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46624775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46624775</guid></item><item><title><![CDATA[New comment by philo23 in "GBC Boot Animation 88×31 Web Button"]]></title><description><![CDATA[
<p>My favourite thing about these is that nearly everyone just kind of agreed on using that same pixel font for the text on the right side.</p>
]]></description><pubDate>Tue, 06 Jan 2026 17:20:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46515300</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46515300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46515300</guid></item><item><title><![CDATA[New comment by philo23 in "Jeffgeerling.com has been migrated to Hugo"]]></title><description><![CDATA[
<p>A long while ago I wrote a very simple static site generator for personal site, mainly just to play around with using GitHub/Cloudflare pages to host my personal site.<p>Then a couple of months ago I started comparing the big SSG tools after wanting something a bit less held together with duct tape... after a lot of experimenting I settled on 11ty at the time, but I really don't enjoy writing Liquid templates, and writing reusable components using Liquid felt very clumsy. I just wish it was much easier to use the JSX based templates with 11ty, but every step of the way feels like I'm working against the "proper" way to do things.<p>So over Christmas holiday I been playing around with NextJS SSG, and while it does basically everything I want (with some complicated caveats) I also can't help feel like I'm trying to use a oil rig to make a pilot hole when a drill would do just fine...<p>Anyone got any recommendations on something somewhere in between 11ty and NextJS? I'd love something that's structured similar to 11ty, but using JSX with SSG that then gets hydrated into full blown client side components.<p>The other thing I've been meaning to try is going back to something custom again, but built on top of something like Tempest [1] to do most the heavy lifting of generating static pages, but obviously that wouldn't help at all with client side components.<p>[1]: <a href="https://tempestphp.com" rel="nofollow">https://tempestphp.com</a></p>
]]></description><pubDate>Sun, 04 Jan 2026 16:33:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46489535</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46489535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46489535</guid></item><item><title><![CDATA[New comment by philo23 in "Using Git add -p for fun (and profit)"]]></title><description><![CDATA[
<p>My two favourite bits of git add -p that aren't mentioned here:<p>the / (search) command to search unstaged hunks for a specific keyword rather than having to jump through all the individual changes you've made when there's lots.<p>and the e (edit) command to manually split out two changes that end up in one hunk that I'd rather have in individual commits.</p>
]]></description><pubDate>Sun, 14 Dec 2025 15:36:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46263792</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46263792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46263792</guid></item><item><title><![CDATA[New comment by philo23 in "Microsoft increases Office 365 and Microsoft 365 license prices"]]></title><description><![CDATA[
<p>It's not exactly the same, but I definitely remember Microsoft releasing some kind of conversion tool around the start of Office 2007's life that could convert the newer XML based files into the older '03 compatible files. Or maybe it was the other way around... No idea if that tools still kicking around somewhere.</p>
]]></description><pubDate>Tue, 09 Dec 2025 13:50:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46204909</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=46204909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46204909</guid></item><item><title><![CDATA[New comment by philo23 in "Firefox 147 Will Support the XDG Base Directory Specification"]]></title><description><![CDATA[
<p>From that diff it looks to me that if ~/.mozilla exists OR if MOZ_LEGACY_HOME is set it uses ~/.mozilla, otherwise it uses the $XDG_CONFIG_HOME/.mozilla directory instead.<p>So no migration to the XDG directory, but also no throwing away your existing data either.</p>
]]></description><pubDate>Thu, 20 Nov 2025 14:56:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45993217</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=45993217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45993217</guid></item><item><title><![CDATA[New comment by philo23 in "Steam Machine"]]></title><description><![CDATA[
<p>I believe that was part of the original plan for Proton, but with the success of the Steam Deck that got shelved and it moved to a focus purely on Linux.<p>I don't think it's ever likely to return any time soon, but it'd be cool if it did. Valve seemingly have very little interest in macOS at the moment.<p>CodeWeavers work closely with Valve and the Wine project to improve compatibility with games, and Apple's own Game Porting Toolkit is based on CodeWeavers work on Wine too. So all the pieces are there in theory.</p>
]]></description><pubDate>Thu, 13 Nov 2025 02:25:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45909736</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=45909736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45909736</guid></item><item><title><![CDATA[New comment by philo23 in "A stateful browser agent using self-healing DOM maps"]]></title><description><![CDATA[
<p>Good to hear, that’s what I was hoping that it was doing.</p>
]]></description><pubDate>Thu, 16 Oct 2025 13:02:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45604806</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=45604806</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45604806</guid></item><item><title><![CDATA[New comment by philo23 in "A stateful browser agent using self-healing DOM maps"]]></title><description><![CDATA[
<p>Maybe this is a lack of understanding on my part, but this bit of the explanation sets off alarm bells for me:<p>> Under the hood, we're building a client-sourced RAG for the DOM. An agent's first move on a page is to check a vector DB for a known "map." ... This creates a wild side-effect: the system is self-healing for everyone. One person's failed automation accidentally fixes it for the next hundred users.<p>I think I'd like to know exactly what kind of data is extracted from the DOM to build that shared map.</p>
]]></description><pubDate>Thu, 16 Oct 2025 12:50:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45604701</link><dc:creator>philo23</dc:creator><comments>https://news.ycombinator.com/item?id=45604701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45604701</guid></item></channel></rss>