<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: shoo</title><link>https://news.ycombinator.com/user?id=shoo</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 19 Jun 2026 14:47:26 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=shoo" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by shoo in "Ask HN: How do you model temporarily invalid data structures"]]></title><description><![CDATA[
<p>Like you say, there's a fair bit of nuance.  Data representations that prevent invalid states being represented are extremely helpful in many domains. I'd strongly recommend making invalid states impossible to represent for schemas at external interface boundaries - although that could also create problems if the definition of what's valid changes over time!<p>A niche example of this kind of thing is when solving commercial/industrial combinatorial optimisation problems. Maybe the goal is to maximise profit or minimise capex subject to a large number of constraints. Sometimes it is intractable to solve the true problem, but there's some approximation of the problem by relaxing one or more constraints that's much easier to solve. In some of these business contexts its completely OK if the optimiser ran overnight before spitting out a solution, provided it found a 5% better one. In that setting it'd be natural to decouple the internal representation(s) of a black box optimiser from the high-level way you represent the true problem & its solutions elsewhere in the system.<p>Some of these systems might end up feeling a little like a compiler toolchain - high level descriptions of problems & solutions that get transformed into / recovered from lower level implementation-specific representations.<p>If your context has high performance needs, e.g. needing to solve the problem 30 times per second in a real-time game or control system, or react as quickly as possible in a low-latency trading system, maybe it could be less of a good tradeoff to introduce avoidable copying of data between a strict correct representation & a relaxed representation.  Could write the clean thing first & then profile and see if the overhead of copying is relevant.   If the representation of your solution is small, there probably isn't that much overhead in copying it, unless your performance needs are extreme or your hardware is severely limited.</p>
]]></description><pubDate>Wed, 27 May 2026 01:34:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48288352</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=48288352</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48288352</guid></item><item><title><![CDATA[New comment by shoo in "The worst job interview I ever had"]]></title><description><![CDATA[
<p>I conducted a few hundred software engineering interviews while working for a non-tech corp. Aside from technical problem solving & programming interviews we'd also ask a few behavioural questions -- including asking about times where the candidate had made a mistake at work, or a time at work where they were very frustrated.<p>What we were looking for<p>- people unwilling to admit they'd ever made a mistake -- red flag<p>- people who could reflect on the situation and say what they'd do differently in the future<p>- ideally, people who could use their mistake / failure / bad situation as an example of how they then took initiative to improve things by doing blah blah blah<p>People who were able to give an ideal response had clearly practised for this kind of question & knew how to play this part of the interview game.<p>Behaviours valued by one type of potential employer may not be valued by another.  Small businesses & startups might value folks who take initiative and have a bias for action. In contrast, regulated megacorps might value folks who are great at consulting stakeholders and getting buy in before making changes, and steer clear of people they believe will go off and do stuff unilaterally.<p>One rule of thumb for handling these kinds of behavioural questions is "STAR" -- situation, task, action, result.  Use the prompt for the question as a way to pick an example, then figure out how to frame an answer that shows you doing something to improve the situation.  There's a fair chance that your interviewers are trying to mash your response into a STAR format in their own notes, even if they don't hint for you to respond in this way.</p>
]]></description><pubDate>Wed, 27 May 2026 00:20:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48287824</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=48287824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48287824</guid></item><item><title><![CDATA[New comment by shoo in "Linux gaming is faster because Windows APIs are becoming Linux kernel features"]]></title><description><![CDATA[
<p>Doubt it. No linux-native application would be designed to use a Windows API.</p>
]]></description><pubDate>Wed, 13 May 2026 23:18:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48128951</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=48128951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48128951</guid></item><item><title><![CDATA[New comment by shoo in "All means are fair except solving the problem"]]></title><description><![CDATA[
<p>> I am a fan of the HARD FAIL.<p>It reads as if the change was made to some library code that was depended upon by someone else's program that would "yay, done", which was in turn depended on by some workflow.<p>It's probably a non-starter to change library code so it hard fails if it detects its being used incorrectly, in situations where it previously ran and did something. That's a severe breaking change in behaviour.<p>Easing it in by printing a warning message sounds like a reasonable step toward hard failing. But then we get the situation yosefk relates.</p>
]]></description><pubDate>Sat, 09 May 2026 06:04:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48072256</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=48072256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48072256</guid></item><item><title><![CDATA[New comment by shoo in "An AI agent deleted our production database. The agent's confession is below"]]></title><description><![CDATA[
<p>creating isolated staging & prod environments -- good idea<p>allowing an AI agent to get hold of creds that let it execute destructive changes against production -- not a great idea<p>allowing prod database changes from the machine where the AI agent is running at all -- not a great idea<p>choosing a backup approach that fails completely if there's an accidental volume wipe API call -- not a great idea<p>choosing to outsource key dependencies to a vendor, where you want a recovery SLA, without negotiating & paying for a recovery SLA -- you get what you get, and you dont get upset</p>
]]></description><pubDate>Mon, 27 Apr 2026 01:17:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47916693</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47916693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47916693</guid></item><item><title><![CDATA[New comment by shoo in "Tell HN: Medvi (telehealth) hardcodes 999 patient emails in public JavaScript"]]></title><description><![CDATA[
<p>Are the patient emails real patients or could they be test accounts?</p>
]]></description><pubDate>Sun, 26 Apr 2026 10:03:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908981</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47908981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908981</guid></item><item><title><![CDATA[New comment by shoo in "Ex-CEO, ex-CFO of iLearningEngines charged with fraud"]]></title><description><![CDATA[
<p>Hindenburg Research is great. They also did the Nikola expose (that bunch of shysters who claimed to have electric truck technology where their truck couldn't even move under its own power so they filmed it rolling down a gentle slope).<p>For anyone wanting to get into the weeds about detecting accounting fraud, the book "Financial Shenanigans" has lots of historical examples of ways company executives have cooked the books to make their public company financial statements appear more appealing to investors than they actually are.</p>
]]></description><pubDate>Mon, 20 Apr 2026 01:00:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47829202</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47829202</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47829202</guid></item><item><title><![CDATA[New comment by shoo in "Ohm's Peg-to-WASM Compiler"]]></title><description><![CDATA[
<p>Josh Haberman has a good 2013 blog post discussing LL & LR parsers, theory vs practice, context-free grammars & Parsing Expression Grammars (PEGs):   <a href="https://blog.reverberate.org/2013/09/ll-and-lr-in-context-why-parsing-tools.html" rel="nofollow">https://blog.reverberate.org/2013/09/ll-and-lr-in-context-wh...</a></p>
]]></description><pubDate>Mon, 30 Mar 2026 01:06:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47569267</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47569267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47569267</guid></item><item><title><![CDATA[New comment by shoo in "//go:fix inline and the source-level inliner"]]></title><description><![CDATA[
<p>it could be better than a nudge -- if you could get a mandatory `go fix` call into internal teams' CI pipelines that either fixes in place (perhaps risky) or fails the build if code isn't already identical to fixed code.</p>
]]></description><pubDate>Sun, 15 Mar 2026 22:23:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47392615</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47392615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47392615</guid></item><item><title><![CDATA[New comment by shoo in "//go:fix inline and the source-level inliner"]]></title><description><![CDATA[
<p>Great example, illustrating go1.26.1 go fix source inline transformation breaking program semantics.  Raise it as a bug against go fix?</p>
]]></description><pubDate>Sun, 15 Mar 2026 21:26:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47392125</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47392125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47392125</guid></item><item><title><![CDATA[New comment by shoo in "//go:fix inline and the source-level inliner"]]></title><description><![CDATA[
<p>If I follow, this isn't a compile time inline directive, it's a `go fix` time source transformation of client code calling the annotated function.<p>Per the post, it sounds like this is most effective in closed-ecosystem internal monorepo-like contexts where an organisation has control over every instance of client code & can `go fix` all of the call sites to completely eradicate all usage of a deprecated APIs:<p>> For many years now, our Google colleagues on the teams supporting Java, Kotlin, and C++ have been using source-level inliner tools like this. To date, these tools have eliminated millions of calls to deprecated functions in Google’s code base. Users simply add the directives, and wait. During the night, robots quietly prepare, test, and submit batches of code changes across a monorepo of billions of lines of code. If all goes well, by the morning the old code is no longer in use and can be safely deleted. Go’s inliner is a relative newcomer, but it has already been used to prepare more than 18,000 changelists to Google’s monorepo.<p>It could still have some incremental benefit for public APIs where client code is not under centralised control, but would not allow deprecated APIs to be removed without breakage.</p>
]]></description><pubDate>Sun, 15 Mar 2026 21:12:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47391984</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47391984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47391984</guid></item><item><title><![CDATA[New comment by shoo in "I replaced my freelance SaaS stack with 5 single-file HTML tools"]]></title><description><![CDATA[
<p>you can get pretty far without programming at all, using spreadsheet templates</p>
]]></description><pubDate>Mon, 09 Mar 2026 21:21:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47315710</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47315710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47315710</guid></item><item><title><![CDATA[New comment by shoo in "Building a Procedural Hex Map with Wave Function Collapse"]]></title><description><![CDATA[
<p>it's a classic. 2001 Spiel des Jahres Winner.<p>see <a href="https://boardgamegeek.com/boardgame/822/carcassonne" rel="nofollow">https://boardgamegeek.com/boardgame/822/carcassonne</a></p>
]]></description><pubDate>Mon, 09 Mar 2026 21:05:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47315513</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47315513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47315513</guid></item><item><title><![CDATA[New comment by shoo in "Building a Procedural Hex Map with Wave Function Collapse"]]></title><description><![CDATA[
<p>there's also a bunch of dedicated constraint programming solvers / high level modelling languages for these kinds of constraint-y combinatorial optimisation problems<p>e.g. <a href="https://www.minizinc.org/" rel="nofollow">https://www.minizinc.org/</a>  offers a high level modelling language that can target a few different solver backends<p>might be pretty good results to completely ignore writing a custom algorithm and drop in an existing industrial-grade constraint programming solver, model your procgen problem using a high level language, and use the existing solver to find you random solutions (or exhaustively enumerate them).  then more time to iterate on changing the problem definition to produce more interesting maps rather than getting bogged down writing a solver.</p>
]]></description><pubDate>Mon, 09 Mar 2026 20:59:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47315437</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47315437</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47315437</guid></item><item><title><![CDATA[New comment by shoo in "Ask HN: Are you a SWE that lost job purely due to AI? Share your story"]]></title><description><![CDATA[
<p>prior ask HN thread from early feb 2026:  <a href="https://news.ycombinator.com/item?id=46867190">https://news.ycombinator.com/item?id=46867190</a></p>
]]></description><pubDate>Sat, 21 Feb 2026 00:43:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47096160</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47096160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47096160</guid></item><item><title><![CDATA[New comment by shoo in "Tesla 'Robotaxi' adds 5 more crashes in Austin in a month – 4x worse than humans"]]></title><description><![CDATA[
<p>> low air density environment. At normal air density near the surface of the Earth that ion thruster could only get a toddler up to ~10 km/h<p>agreed. this also provides an explanation for the otherwise surprising fact that prey animals in the savannah have never been observed to naturally evolve ion thrusters.</p>
]]></description><pubDate>Tue, 17 Feb 2026 23:03:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47054696</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47054696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47054696</guid></item><item><title><![CDATA[New comment by shoo in "Using go fix to modernize Go code"]]></title><description><![CDATA[
<p>middling code, delivered within a tolerable time frame, budget, without taking excessive risk, is good enough for many real-world commercial software projects. homogeneous middling code, written by humans or extruded by machines, is arguably even a positive for the organisation: lots of organisations are more interested in delivery of software projects being predictable, or having a high bus-factor due to the fungibility of the folks (or machines) building and maintaining the code, rather than depending upon excellence.</p>
]]></description><pubDate>Tue, 17 Feb 2026 21:30:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47053662</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47053662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47053662</guid></item><item><title><![CDATA[New comment by shoo in "Tesla 'Robotaxi' adds 5 more crashes in Austin in a month – 4x worse than humans"]]></title><description><![CDATA[
<p>in contrast, a toddler equipped with an ion thruster & a modest quantity of xeon propellant could achieve enough delta-v to attain cheetah-escape velocity, provided the initial trajectory during the first 31 hours of the mission was through a low-cheetah-density environment</p>
]]></description><pubDate>Tue, 17 Feb 2026 20:44:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47053055</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47053055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47053055</guid></item><item><title><![CDATA[New comment by shoo in "Building SQLite with a small swarm"]]></title><description><![CDATA[
<p>or jump off, and instead grab onto the (well-deserved) sqlite-test-suite hype train.</p>
]]></description><pubDate>Mon, 16 Feb 2026 07:49:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47032123</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47032123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47032123</guid></item><item><title><![CDATA[New comment by shoo in "I Love Board Games: A Personal Obsession Explained by Psychology"]]></title><description><![CDATA[
<p>> Brass Birmingham [...] there are often only 1-2 legal moves to play and figuring out what they are is quite a challenge for people playing the first time.<p>Also, some of those legal moves will set up a board state that the player taking a turn immediately after you can exploit for a lot more benefit than you got, so not only are the legal builds hard to identify for new players, half of those legal moves are also traps! If new players aren't comfortable learning the hard way, the player who is teaching the game can always call these out, explain what is going to happen & give people the opportunity to redo their move.<p>An alternative strategy game that is less complex than Brass is Friedemann Friese's classic Power Grid (2004) [1].  It has some of the same elements (network expansion, building stuff to make money) and parts of it are highly interactive (auctions!) but it is less complex and doesn't feature so many negative player interactions.  The main down side of Power Grid is that some of the "admin" rules are pretty fiddly, but provided there is an experienced player to teach the game & be responsible for the admin, players who are learning don't need to care about the details.<p>[1] <a href="https://boardgamegeek.com/boardgame/2651/power-grid" rel="nofollow">https://boardgamegeek.com/boardgame/2651/power-grid</a></p>
]]></description><pubDate>Mon, 16 Feb 2026 05:46:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47031303</link><dc:creator>shoo</dc:creator><comments>https://news.ycombinator.com/item?id=47031303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47031303</guid></item></channel></rss>