<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: ianhorn</title><link>https://news.ycombinator.com/user?id=ianhorn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 13:28:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ianhorn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ianhorn in "CQL: Categorical Databases"]]></title><description><![CDATA[
<p>Huh, I read the pitch differently. As "reduce risk of (failure through artificial intelligence)," not as "(reduce risk of failure) through artificial intelligence."<p>Maybe that's my bias since that's what I'm working on, but it's a big benefit to have stronger compiler guarantees of correctness so that an LLM can't screw things up as much. No BSing that it works when the compiler requires proof.</p>
]]></description><pubDate>Tue, 02 Jun 2026 15:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48371846</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=48371846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48371846</guid></item><item><title><![CDATA[New comment by ianhorn in "Formal Verification Gates for AI Coding Loops"]]></title><description><![CDATA[
<p>Not the author, but I've been doing this kind of thing with Lean. I'm still trying to figure out how to make this workflow play nicely with other systems. I have a bunch of rust code that I want these kinds of guarantees on, and that code has third party dependencies that would be terrible to give up. It's totally unclear right now how to get the best of both worlds.</p>
]]></description><pubDate>Thu, 21 May 2026 02:07:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48216948</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=48216948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48216948</guid></item><item><title><![CDATA[New comment by ianhorn in "Formal Verification Gates for AI Coding Loops"]]></title><description><![CDATA[
<p>I've been experimenting with this a lot lately in Lean because it's equally capable as a theorem prover and as a programming language. It's resolving a lot of the frustration I feel with LLM coding.<p>You write a type signature for a function that amounts to "take a Foo x and return a Bar y with a proof of does_what_i_wanted(x,y)." Voila, no more agents doing something else because it won't compile if they don't do what I wanted.<p>It's great to build faster without the frustration of having no confidence in what I build. But it sure makes the gap between toys in Lean and using this in a Real Project in some other language that much more frustrating.</p>
]]></description><pubDate>Thu, 21 May 2026 01:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48216696</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=48216696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48216696</guid></item><item><title><![CDATA[New comment by ianhorn in "“Why not just use Lean?”"]]></title><description><![CDATA[
<p>I remember trying to play around with Coq/Rocq and a few others about 15 years ago, and I couldn’t make heads or tails of them. Not the concepts, but the software. What’s weird about proof assistants/interactive provers is that the “interactive” part makes it a combo of IDE and language and they seem to get pretty tightly coupled in practice. You can’t talk about the language without talking about the environment you use it in.<p>I’m not the biggest VS code fan, but a battle honed extensible IDE used by zillions and maintained by $$$ has proved itself miles ahead of the environments for alternatives. As far as i can tell, the excellent onboarding path that is the Natural Numbers Game is possible because of VS code’s hackability and ecosystem.<p>My main concern as I’m learning lean is that the syntax extensibility seems to be a double edged sword. Once i’ve learned a language, i want to be able to read code written in it. If everything is in a project’s own DSL, that can get out of hand, but that comes down to community/ecosystem so i’m crossing my fingers.</p>
]]></description><pubDate>Tue, 28 Apr 2026 03:49:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47930265</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47930265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47930265</guid></item><item><title><![CDATA[New comment by ianhorn in "“Why not just use Lean?”"]]></title><description><![CDATA[
<p>Complex numbers and Schwartz distributions (the thing the dirac delta is) come immediately to mind. “Not all numbers have square roots, but what if they did?” It seems like a common pattern.</p>
]]></description><pubDate>Tue, 28 Apr 2026 03:31:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47930192</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47930192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47930192</guid></item><item><title><![CDATA[New comment by ianhorn in "Eight years of wanting, three months of building with AI"]]></title><description><![CDATA[
<p>That works until you make a plan/tests/etc, set the thing loose, and then when it has trouble it decides "actually the pragmatic thing would be [diverge from the plan/change the tests/etc]" and goes off the rails. I'm so frustrated by these things right now.</p>
]]></description><pubDate>Mon, 06 Apr 2026 01:53:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47656077</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47656077</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47656077</guid></item><item><title><![CDATA[New comment by ianhorn in "In math, rigor is vital, but are digitized proofs taking it too far?"]]></title><description><![CDATA[
<p>I like the Kronecker quote, "Natural numbers were created by god, everything else is the work of men" (translated). I figure that (like programming) it turns out that putting our problems and solutions into precise reusable generalizable language helps us use and reuse them better, and that (like programming language evolution) we're always finding new ways to express problems precisely. Reusability of ideas and solutions is great, but sometimes the "language" gets in the way, whether that's a programming language or a particular shape of the formal expression of something.</p>
]]></description><pubDate>Mon, 30 Mar 2026 16:55:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47576774</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47576774</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47576774</guid></item><item><title><![CDATA[New comment by ianhorn in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>I always mentally slotted prosemirror-collab/your recommended solution in the OT category. What’s the difference between the “rebase” step and the “transformation” step you’re saying it doesn’t need?</p>
]]></description><pubDate>Mon, 16 Mar 2026 09:25:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47396753</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47396753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47396753</guid></item><item><title><![CDATA[New comment by ianhorn in "What happens when US economic data becomes unreliable"]]></title><description><![CDATA[
<p>Two things come to mind:<p>- Whatever you measure gets optimized.<p>- When a measure becomes a target, it ceases to be a good measure.<p>I have no idea which is more relevant here. Looking at the first one, my whole life people have been complaining that the measures that get touted in political discourse don't reflect quality of life. So if we stop looking at those as measures because they cease to be reliable, maybe they stop getting myopically optimized and we can get less myopic about what we prioritize in aggregate.<p>But looking at the second one, I've also wondered whether those measures really <i>do</i> reflect typical quality of life, and it's just that the people doing worse than typical will always see the measure as the wrong measure. So then we'd be losing the ability to prioritize actually useful things.<p>In my heart though, I kinda lean towards the first one. I've been in enough orgs where "the dashboard goes up" is incentivized to the detriment of the unmeasurable things that actually matter to the org.</p>
]]></description><pubDate>Sat, 14 Mar 2026 18:05:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47379354</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=47379354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47379354</guid></item><item><title><![CDATA[New comment by ianhorn in "Multiplicative Infinitesimals"]]></title><description><![CDATA[
<p>On the topic, do you know any approaches to infitesimals/differentials that do cotangents and pullbacks as primitives?<p>In practice, I always end up needing to work in cotangents, but deriving them is always roundabout in terms of the limit definition of pushforwards. Never found a nice way to swap which is primary and which is secondary, but it <i>feels</i> like there should be a clean view of it that way somewhere.</p>
]]></description><pubDate>Thu, 09 Jan 2025 17:54:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=42648098</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=42648098</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42648098</guid></item><item><title><![CDATA[New comment by ianhorn in "Modelica"]]></title><description><![CDATA[
<p>Any chance you know of good DAE books/resources that go into combining symbolics and numerics or parametrized DAEs?</p>
]]></description><pubDate>Mon, 16 Dec 2024 20:36:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42435133</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=42435133</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42435133</guid></item><item><title><![CDATA[New comment by ianhorn in "AlphaProof's Greatest Hits"]]></title><description><![CDATA[
<p>This is a thing I'm working on, so I have some potentially useful thoughts. tl;dr, it doesn't have to be about encoding <i>arbitrary</i> real life statements to be super duper useful today.<p>> how might an arbitrary statement like "Scholars believe that professional competence of a teacher is a prerequisite for improving the quality of the educational process in preschools" be put in a lean-like language?<p>Totally out of scope in the any near future for me at least. But that doesn't prevent it from being super useful for a narrower scope. For example:<p>- How might we take a statement like "(x + 1) (x - 5) = 0" and encode it formally?<p>- Or "(X X^T)^-1 X Y = B"?<p>- Or "6 Fe_2 + 3 H_2 O -> ?"?<p>We can't really do this for a huge swath of pretty narrow applied problems. In the first, what kind of thing is X? Is it an element of an algebraically closed field? In the second, are those matrices of real numbers? In the third, is that 6 times F times e_2 or 6 2-element iron molecules?<p>We can't <i>formally</i> interpret those as written, but you and I can easily tell what's meant. Meanwhile, current ways of formally writing those things up is a massive pain in the ass. Anything with a decent amount of common sense can tell you what is <i>probably</i> meant formally. We know that we can't have an algorithm that's right 100% of the time for a lot of relevant things, but 99.99% is pretty useful. If clippy says 'these look like matrices, right?' and is almost always right, then it's almost always saving you lots of time and letting lots more people benefit from formal methods with a much lower barrier to entry.<p>From there, it's easy to imagine coverage and accuracy of formalizable statements going up and up and up until so much is automated that it looks kinda like 'chatting about real-life statements' again. I doubt that's the path, but from a 'make existing useful formal methods super accessible' lens it doesn't have to be.</p>
]]></description><pubDate>Mon, 18 Nov 2024 17:05:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=42174396</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=42174396</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42174396</guid></item><item><title><![CDATA[New comment by ianhorn in "Ask HN: Who wants to be hired? (December 2022)"]]></title><description><![CDATA[
<p>Location: San Francisco, California<p>Remote: Ideally hybrid<p>Willing to relocate: No<p>Technologies: Pytorch, JAX, spark, and the rest of the python data ecosystem; AWS; Python, C, R, SQL, Java<p>Resume/CV: CV link (<a href="https://imh.github.io/assets/cv.pdf" rel="nofollow">https://imh.github.io/assets/cv.pdf</a>) Machine Learning Engineer with over a decade of industry experience in ML, stats, and numerical optimization roles. Looking for companies where ML is critical path, especially in NLP.<p>Email: horn (dot) imh (at) gmail</p>
]]></description><pubDate>Thu, 01 Dec 2022 21:30:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=33823088</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=33823088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33823088</guid></item><item><title><![CDATA[New comment by ianhorn in "The good things in the current age in tech"]]></title><description><![CDATA[
<p>I’d expand “tech” beyond computers. I’ve recently gotten into mini painting and sculpting. I can get paints and brushes and magic epoxy putties and sculptable thermoplastics and precision tools for less than a nice dinner out, which is so cool. I’d bet it’s not too long ago that this would have to be something you’re seriously pursuing to make the costs worth it. [0]<p>Or if we’re sticking with tech = computers, I can sculpt for free in blender (the software) and print it with a 3d printer. Or paint in procreate/photoshop on my ipad with this fantastic not-really-a-pencil (and somehow procreate is only $10??). Or learn to draw from the internet.<p>Or the fact that nothing like D&D Beyond existed for a game I’m playing, so I was able to put up an app based on free software (react + yjs) on cloud servers god knows where for dirt cheap without knowing much of anything about any of those things.<p>Hobbies and leisure activities seem to be pretty accessible (in price). The downside for me is that all the accessible addictive stuff (like this site) makes it hard to actually dedicate time to the hobbies I <i>want</i> to spend time on.<p>[0] Unfortunately, I couldn’t find data on prices of various art supplies going very far back.</p>
]]></description><pubDate>Sat, 13 Nov 2021 02:28:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=29206848</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=29206848</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29206848</guid></item><item><title><![CDATA[New comment by ianhorn in "Excel as Code"]]></title><description><![CDATA[
<p>Excel is kind of WYSIWYG programming. I use it for quick stuff frequently and I’m amazed at what it makes easier than e.g. numpy. There’s a whole class of error you don’t make because you see the whole intermediate state all together (there are also whole classes of error you <i>do</i> make that you wouldn’t make in normal programming).<p>I have been using it for character sheets in tabletop RPGs I’m playing lately, and it’s great. With a line of js, you can add an arbitrary button to google sheets, and then it turns into a quick, dirty UI that’s transparent (click on the cell and see that AC=10 plus dexterity modifier) and on-the-fly editable by everyone together.</p>
]]></description><pubDate>Mon, 20 Sep 2021 16:42:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=28595762</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=28595762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28595762</guid></item><item><title><![CDATA[New comment by ianhorn in "Copilot regurgitating Quake code, including sweary comments"]]></title><description><![CDATA[
<p>Remember that unlicensed content is still licensed. Generally the implicit license of a work is <i>less</i> permissive. So however you feel about this using GPL code, the situation is even worse for most ML models that have no license at all to use their training data.</p>
]]></description><pubDate>Fri, 02 Jul 2021 23:28:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=27718088</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=27718088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27718088</guid></item><item><title><![CDATA[New comment by ianhorn in "Copilot regurgitating Quake code, including sweary comments"]]></title><description><![CDATA[
<p>Unlicensed code just means “all rights reserved.” You’d need to limit it to permissively licensed code and make sure you comply with their requirements.</p>
]]></description><pubDate>Fri, 02 Jul 2021 22:57:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=27717891</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=27717891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27717891</guid></item><item><title><![CDATA[New comment by ianhorn in "Folk wisdom on visual programming"]]></title><description><![CDATA[
<p>What a fantastic post.<p>> Is ‘folk wisdom from internet forums’ worth exploring as a genre of blog post?<p>I’d add another yes here, if they’re all as thorough as this post.<p>I’ll add something that I didn’t see directly addressed in here: input methods strongly affect the medium.<p>Last year I struggled intensely with RSI. I got to the point where I couldn’t type for months. I tried some voice coding tools (caster and talon). Some aspects of this were actually better than keyboard coding. Unfortunately speech recognition is still at a point where it drove me insane with inaccuracies.<p>It also made me realize that with a keyboard, text code is incredibly natural. With keyboard+mouse, some new modes open up. With voice alone, I wanted to code a very different way.<p>I won’t go into detail, because this is already a long comment, but I believe that when we get speech recognition as reliable as typing, we’ll see an explosion of new programming paradigms.</p>
]]></description><pubDate>Fri, 02 Jul 2021 15:56:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=27713148</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=27713148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27713148</guid></item><item><title><![CDATA[New comment by ianhorn in "What if an AI wins the Nobel Prize for medicine?"]]></title><description><![CDATA[
<p>We used to not understand how steam engines worked either, even once we got them working. At least not past the most macro level. Understanding at the micro level came later.</p>
]]></description><pubDate>Mon, 28 Jun 2021 14:54:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=27662777</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=27662777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27662777</guid></item><item><title><![CDATA[New comment by ianhorn in "Biases in AI Systems"]]></title><description><![CDATA[
<p>Rather than being a suppressed topic, in my experience, this is a case of people talking past each other. It's like correlation versus causation (versus plain old connected definitions). It can be true that A and B are correlated, while A doesn't cause B (or neither causes the other), and while their definitions have nothing to do with each other. Like nurse and gender. They're correlated in the US, but making someone a nurse doesn't change their gender, and the definitions have nothing to do with each other. Maybe in some countries the correlation is even flipped!<p>Recall all the times in stats where an estimator can be an unbiased estimator of a correlation while being a biased estimator of a causal effect.<p>So you get some people saying it (the correlation) is correct and other people saying it (the causal effect) is incorrect. Both are right! To stop talking past each other, they need to talk about bias <i>with respect to the correlation</i> or bias <i>with respect to the causal effect in this particular direction</i>.<p>But what frustrates me is when the correlation  side uses the (true) correlation to argue against a system being biased with regards to something else (w.r.t. a definition or w.r.t. a causal effect or w.r.t. a literal translation or w.r.t. some more complicated aspect of the system), and that harms are okay because the bias is a correct bias.<p>We need to work on our terminology so that we can stop talking past each other. It doesn't help that our models have weird biases in absurdly complex function spaces, but we have to progress beyond a first-stats-course one-size-fits-all definition of bias.</p>
]]></description><pubDate>Fri, 25 Jun 2021 15:37:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=27632117</link><dc:creator>ianhorn</dc:creator><comments>https://news.ycombinator.com/item?id=27632117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27632117</guid></item></channel></rss>