<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: codeismath</title><link>https://news.ycombinator.com/user?id=codeismath</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Jul 2026 08:21:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=codeismath" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by codeismath in "Why is it worth spending time on type theory? (2013)"]]></title><description><![CDATA[
<p>Books.  Some books on my shelf covering these topics:<p>"Type Theory and Functional Programming" by Simon Thompson (PDF available via quick search)<p>First 120 pages of "Type Theory and Formal Proof" by Rob Nederpelt / Herman Geuvers<p>For some early stuff on dependent types (also covered in the above), check out "Intuitionistic Type Theory" by Per Martin-Lof<p>"Computation and Reasoning: A Type Theory for Computer Science" by Zhaouhui Luo<p>"Type-Driven Development with Idris" by Edwin Brady<p>"Gentle Introduction to Dependent Types with Idris" by Boro Sitnikovski<p>"Types and Programming Languages" by Pierce<p>"Practical Foundations for Programming Languages" by Robert Harper (or any of his YouTube videos re/Type Theory)<p>"The Little Typer" by Friedman and Christiansen<p>"Modal Homotopy Type Theory: The Prospect of a New Logic for Philosophy" by David Corfield (just took this one to OBX North Carolina to enjoy on my beach vacation last week! Got some salt water in those pages.  Also speaks to Category Theory.)<p>For Category Theory:<p>"The Joy of Abstraction" (2023) by Euginia Cheng<p>"Basic Category Theory for Computer Scientists" by Benjamin C. Pierce<p>"Conceptual Mathematics: A first introduction to categories" by Lawvere and Schanuel<p>"Categories for the Working Philosopher" by Landry</p>
]]></description><pubDate>Thu, 07 Aug 2025 00:17:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=44819331</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=44819331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44819331</guid></item><item><title><![CDATA[New comment by codeismath in "Imaginary numbers are real"]]></title><description><![CDATA[
<p>Okay, but then you'd show that 1/-1=-1, 1/-0.5=-2, 1/-0.25=-4, etc. The closer you get to 0, the more negative the number.  Then you just wouldn't accept that if you actually got to 0 in your progression, it is anything besides negative infinity.  And then you've shown that negative infinity is equal to infinity.</p>
]]></description><pubDate>Sun, 24 Jul 2022 02:36:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=32209746</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=32209746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32209746</guid></item><item><title><![CDATA[New comment by codeismath in "Structurally-Typed Condition Handling"]]></title><description><![CDATA[
<p>As well as several hours of video lectures that go along with it:<p><a href="https://youtu.be/atYp386EGo8" rel="nofollow">https://youtu.be/atYp386EGo8</a></p>
]]></description><pubDate>Tue, 15 Feb 2022 00:59:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=30341099</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=30341099</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30341099</guid></item><item><title><![CDATA[Ask HN: Upgrade from Windows 10 to Linux instead of Windows 11?]]></title><description><![CDATA[
<p>Hi HN,<p>Should I upgrade my development and business workstation from Windows 10 to Linux (instead of upgrading to Windows 11)?<p>I'm extremely intimidated in taking the leap.  I'm very familiar with Linux without a UI, and feel very comfortable with managing linux servers.  I setup and run a cluster of RHEL servers for a private-cloud OpenStack deployment (kvm hypervisor).  Familiar with apache web servers, and I run my own Asterisk PBX phone system, and have in the past done my own email server.  Networking, iptables, etc.<p>But I've never used Linux in a desktop UI environment.  Ever.  Always been an MS Windows guy.  But Windows 11?<p>I think my biggest fear are driver issues and having to convert a ton of files over to new formats for things I use to run my business.  (Lots of MS Excel files for example).  I use Microsoft Office (Word, Outlook, Excel) and Microsoft Visual Studio (F# Development) heavily.  Excel is my biggest worry.  And fighting with driver issues.<p>I'm familiar mostly with RHEL (CentOS, and I guess now "Rocky Linux").<p>Anyone here convert from Windows to Linux?  What kind of issues did you run into?  Should I do it?<p>Perhaps most importantly:  Which Linux distro should I choose, and which desktop environment?<p>-AMD Ryzen Threadripper 2950X 16-Core 3.50 GHz<p>-Aorus X399 XTreme EATX TR4<p>-128GB RAM<p>-NVIDEO GeForce RTX 2080 (Gigabyte)<p>-(Two) 1TB NVMe Samsung SSD 970</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=29582490">https://news.ycombinator.com/item?id=29582490</a></p>
<p>Points: 9</p>
<p># Comments: 10</p>
]]></description><pubDate>Thu, 16 Dec 2021 19:15:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=29582490</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=29582490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29582490</guid></item><item><title><![CDATA[New comment by codeismath in "Ask HN: Accessible resources on making a modern static type system?"]]></title><description><![CDATA[
<p><a href="https://news.ycombinator.com/item?id=15583515" rel="nofollow">https://news.ycombinator.com/item?id=15583515</a></p>
]]></description><pubDate>Wed, 29 Sep 2021 22:20:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=28700731</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28700731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28700731</guid></item><item><title><![CDATA[New comment by codeismath in "Ask HN: Accessible resources on making a modern static type system?"]]></title><description><![CDATA[
<p><a href="https://boxbase.org/entries/2018/mar/5/hindley-milner/" rel="nofollow">https://boxbase.org/entries/2018/mar/5/hindley-milner/</a></p>
]]></description><pubDate>Wed, 29 Sep 2021 22:16:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=28700701</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28700701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28700701</guid></item><item><title><![CDATA[New comment by codeismath in "Squirrel stores thousands of nuts inside man's parked truck"]]></title><description><![CDATA[
<p>Phenological event known as "masting":  <a href="https://en.m.wikipedia.org/wiki/Mast_(botany)" rel="nofollow">https://en.m.wikipedia.org/wiki/Mast_(botany)</a></p>
]]></description><pubDate>Wed, 29 Sep 2021 00:45:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=28689135</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28689135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28689135</guid></item><item><title><![CDATA[New comment by codeismath in "A Pure Types-Driven real-world apps development approach"]]></title><description><![CDATA[
<p>I do this too in some apps.  Very near exactly how you show it.<p>How do you enforce required fields in the data model?  By eliminating the possibility of null values, you eliminate the possibility of not-null constraints in the data model.  I end up having to enforce these types of (non-complex) constraints outside the relational model.  A missing row is not detectable in the same way as a null column value.</p>
]]></description><pubDate>Sun, 12 Sep 2021 12:10:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=28500450</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28500450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28500450</guid></item><item><title><![CDATA[New comment by codeismath in "Defunctionalization: Everybody does it, nobody talks about it (2019)"]]></title><description><![CDATA[
<p>It's been on my list of things to explore for a while... the relationship between defunctionalization, continuations, and "Algebraic Effects".<p>The reason... I like seeing how different languages handle asynchronous code vs synchronous code. F# has their way, C# has theirs, JavaScript async/await, colored functions, Project Loom, co-routines, React Fibers, etc.  I'm intrigued that a language that has built-in algebraic effects can do async wihtout any other changes to the language (as if async and sync were the same).<p>Is there any relation to defunctionalization for this kind of stuff?</p>
]]></description><pubDate>Sat, 07 Aug 2021 01:11:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=28094732</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28094732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28094732</guid></item><item><title><![CDATA[New comment by codeismath in "Defunctionalization: Everybody does it, nobody talks about it (2019)"]]></title><description><![CDATA[
<p>The Reynolds paper is one of my favorites.  It was re-typeset in 1998 making it a lot easier to follow the math [0].  It's fun to compare it to a copy of the original from 1972 [1].<p>Philip Wadler had this to say about the paper:  "Certain papers change your life. McCarthy's 'Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I)' (1960) changed mine, and so did Landin's 'The Next 700 Programming Languages' (1966). And I remember the moment, halfway through my graduate career, when Guy Steele handed me Reynolds's 'Definitional Interpreters for Higher-Order Programming Languages' (1972)."[2]  This is how I discovered it I believe.<p>The paper is exceedingly approachable.  It was so well written that I immediately purchased a used copy of Reynolds' book on programming languages (which I did not have as easy time with compared to the paper - and still remains unfinished on my bookshelf).<p>When they republished the paper in 1998, Reynolds wrote about how the paper came to be [3], and I believe about the discoveries of continuations [4].<p>I recently implemented Reynold's meta-circular interpreter in TypeScript and serialized the abstract syntax into JSON.  Coincidentally, a few days later I saw a post on HN something about "executable JSON" or some such "programming language" that the creator was very proud of making it into a product of sorts.  (found it... JSON Logic: <a href="https://news.ycombinator.com/item?id=27306263" rel="nofollow">https://news.ycombinator.com/item?id=27306263</a>).  Queue Greenspun's tenth rule.  I chuckled as I looked at the JSON Logic syntax knowing that a little Reynold's interpreter with its AST serialized to JSON is infinitely more powerful and extensible (allowing higher-order functions and such).  I highly recommend anyone reading this to write the 50 or so lines of TypeScript necessary to implement Reynold's meta-circular interpreter (EXTREMELY EASY and nearly identical line-for-line to the 1998 paper, only in TypeScript instead of lambda calculus).<p>Good stuff.<p>[0] [PDF] <a href="https://surface.syr.edu/cgi/viewcontent.cgi?article=1012&context=lcsmith_other" rel="nofollow">https://surface.syr.edu/cgi/viewcontent.cgi?article=1012&con...</a><p>[1] [PDF] <a href="https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-definitional-interpreters-1972.pdf" rel="nofollow">https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/...</a><p>[2] <a href="https://homepages.inf.ed.ac.uk/wadler/topics/history.html#definitional-interpreters" rel="nofollow">https://homepages.inf.ed.ac.uk/wadler/topics/history.html#de...</a><p>[3] [PDF] <a href="https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-definitional-interpreters-revisited.pdf" rel="nofollow">https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/...</a><p>[4] [PDF] <a href="https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-discoveries.pdf" rel="nofollow">https://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/...</a></p>
]]></description><pubDate>Sat, 07 Aug 2021 00:45:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=28094538</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28094538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28094538</guid></item><item><title><![CDATA[A theory of changes for higher-order languages (2013)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.researchgate.net/publication/269126515_A_theory_of_changes_for_higher-order_languages">https://www.researchgate.net/publication/269126515_A_theory_of_changes_for_higher-order_languages</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=28078181">https://news.ycombinator.com/item?id=28078181</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 05 Aug 2021 19:14:22 +0000</pubDate><link>https://www.researchgate.net/publication/269126515_A_theory_of_changes_for_higher-order_languages</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28078181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28078181</guid></item><item><title><![CDATA[New comment by codeismath in "How PostgreSQL aggregation works and how it inspired our hyperfunctions’ design"]]></title><description><![CDATA[
<p>The continuous aggregates portion of this blog (along with the breakdown of Transition, Combine, and Final Functions) reminded me of "A Theory of Changes for Higher-Order Languages: Incrementalizing Lambda-Calculi by Static Differentiation" (Giarrusso et. al.) [0].<p>Particularly the part of getting logically-consistent results via different routes of computation.  David Kohn says this in the blog post:  "But, you have to have in-depth (and sometimes rather arcane) knowledge about each aggregate’s internals to know which ones meet the above criteria – and therefore, which ones you can re-aggregate."<p>I think Giarrusso addresses the internal requirements in a precise mathematical manner (though I may be wrong).  Giarrusso Section 2.1 is the specific area I'm thinking, particularly Definition 2.1 and then later the discussion of the abelian group where certain binary operations must be commutative and associative.  Giarrusso Equation 1 in the introducton defines externally what it means to be logically consistent.<p>Also, Giarrusso talks about "Self-Maintainability" where updating the continuous result only needs to look at the changes to the input.  What was obvious to me from reading Giarrusso was that something simple like "AVG" is not self-maintainable unless you keep the intermediate state (sum and count) seperately.  Kohn's distinction of Transition Function, Combine Function, and Final Function - together with Giarrusso's abelian group and change structure - is kind of a big deal in making arbitrary functions "continuous"-capable while being "self-maintainable".<p>I can see designing a [data] structure that adheres to the specific algabraic laws defined by Giarrusso's abelian group along with the 3 functions from Kohn (missing from Giarrusso).  You can then feed this structure to a function that spits out two new functions for you:  a normal function that can be used to calculate a result, and it's "continuous" version which only needs change to the inputs.  For example, "avg()" and "avg_continuous()" can be automatically derived from a data structure of algebraically well-behaved operations.<p>Plus this would have a really cool Category Theory diagram for it!<p>David:  absolutely love the animated gifs and pictures.  Very well written indeed.<p>[0] Giarrusso et. al. <a href="https://www.researchgate.net/publication/269126515_A_theory_of_changes_for_higher-order_languages" rel="nofollow">https://www.researchgate.net/publication/269126515_A_theory_...</a></p>
]]></description><pubDate>Thu, 05 Aug 2021 19:00:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=28078010</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=28078010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28078010</guid></item><item><title><![CDATA[New comment by codeismath in "Towing a Tesla at 70 MPH replenishes battery at fast charger rates"]]></title><description><![CDATA[
<p>I just measured on Google Maps:<p>Apple HQ - around 1,600ft diameter<p>Seneca Pumped Storage Lake: around 2,400ft diameter</p>
]]></description><pubDate>Mon, 21 Jun 2021 23:52:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=27586111</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27586111</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27586111</guid></item><item><title><![CDATA[New comment by codeismath in "Towing a Tesla at 70 MPH replenishes battery at fast charger rates"]]></title><description><![CDATA[
<p>> I was always in awe of the lake size battery they created.<p>This is exactly the feeling I had when visiting the Seneca Pumped Storage Generating Station that I mentioned in one of my other comments that I just posted before seeing your post.  Truly awe inspiring. (Links provided in my other comment).  Do go visit one of these!</p>
]]></description><pubDate>Mon, 21 Jun 2021 23:44:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=27586038</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27586038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27586038</guid></item><item><title><![CDATA[New comment by codeismath in "Towing a Tesla at 70 MPH replenishes battery at fast charger rates"]]></title><description><![CDATA[
<p>Years ago I visited the Seneca Pumped Storage Generating Station [0] reservoir in person.  It's a massive man-made lake on the top of a small mountain in Pennsylvania, USA.<p>They pump water up to it at night (when there is excess energy in the power grid), and let the water out in the day when the demand for energy is high (turning some turbines on its way down).<p>Prior to visiting I had an intellectual understanding of the concept of pumped storage [1], but I have to admit that it's one heck of an experience when you see it up close and personal.  My thoughts standing at the edge of this massively perfect-circle deep lake full of water:  "somebody built that... and it's one BIG BATTERY".<p>If you get a chance to visit one of these, I highly recommend it!<p>[0] <a href="https://en.wikipedia.org/wiki/Seneca_Pumped_Storage_Generating_Station" rel="nofollow">https://en.wikipedia.org/wiki/Seneca_Pumped_Storage_Generati...</a><p>[1] <a href="https://en.wikipedia.org/wiki/Pumped-storage_hydroelectricity" rel="nofollow">https://en.wikipedia.org/wiki/Pumped-storage_hydroelectricit...</a></p>
]]></description><pubDate>Mon, 21 Jun 2021 23:36:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=27585981</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27585981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27585981</guid></item><item><title><![CDATA[New comment by codeismath in "Making invisible glue code first-class"]]></title><description><![CDATA[
<p>I recently watched a video [0] that contrasted all of the OO Design Patterns with Functional Programming equivalents.  After reading about how this author wants to make "glue" code "first class" and how the Unix pipe operator is an example of single-character-glue-code, my thoughts immediately went to the aforementioned video presentation.  Perhaps my "glue code" is simply gold-old "function composition"?<p>[0] Scott Wlaschin "Functional programming design patterns" <a href="https://vimeo.com/113588389" rel="nofollow">https://vimeo.com/113588389</a><p>[Edit] Spoiler alert:  each of the design patterns reviewed and contrasted in the video I mentioned seemed to "disappear" in FP since the equivalent is simply to use functions and/or function composition.  Recently transitioning from C# to F# for my .NET Core projects, I felt the "glue code" the author mentions disappear in a similar manner with greatly-reduced code bloat.</p>
]]></description><pubDate>Sat, 12 Jun 2021 23:42:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=27488408</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27488408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27488408</guid></item><item><title><![CDATA[New comment by codeismath in "How inevitable is the concept of numbers?"]]></title><description><![CDATA[
<p>I think numbers are wonderful and cool abstract thingies.  We grow up being taught them (in my case Arabic numerals in base 10) and they become such part of our being that we start to think that we know what “5” is.  Then I was introduced to Roman Numerals.  Didn’t like those much.  That one taught me that 4 is more related to 5 than it is 3.  Then some of us learn a base 2 number system or base 16 number system and for a brief moment we question whether we actually knew what “5” was.  And then we may learn about Peano and the successor(s…) of zero.  Did we really know what “5” was then?  What is five-ness really?  Perhaps fiveness is a set within a set within a set…<p>Every interaction our human minds have with fiveness is with a representation or encoding of 5.  With each new representation, I’ve experienced fiveness slightly differently.<p>But I like computers and math.  For me, the best to experience oneness with the fiveness is through computation with Lambda Calculus and Church Numerals.  Very fond of that encoding.</p>
]]></description><pubDate>Tue, 25 May 2021 23:24:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=27284088</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27284088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27284088</guid></item><item><title><![CDATA[New comment by codeismath in "Parsing in JavaScript: all the tools and libraries you can use"]]></title><description><![CDATA[
<p>I recently used "Arcsecond" JavaScript Parser Combinator library to output some abstract syntax based on John Reynold's "Definitional interpreters for higher-order programming languages".<p>It's based on Haskell's Parsec parser combinator library, and is zero-dependency.<p>I was convinced to give it a try based on watching the author's YouTube videos "Parser Combinators From Scratch" on "Low Level JavaScript".  Enjoyable series - recommended.</p>
]]></description><pubDate>Mon, 24 May 2021 16:29:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=27266353</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27266353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27266353</guid></item><item><title><![CDATA[New comment by codeismath in "Counterexamples in Type Systems"]]></title><description><![CDATA[
<p>I found the first 6 chapters of "Type Theory and Formal Proof" to be amazing for covering the beginning math behind Type Theory.  The authors (Nederpelt and Geuvers) don't gloss over assumptions and they build things up step by step.  I didn't study this in university but have picked up many books along the way.  I'm usually quite lost within the first 10 or 20 pages until picking up Type Theory and Formal Proof.  This one took me somewhere between 100 to 200 pages before getting lost.  They cover the entire lambda cube.<p>But then I was able to re-start Thompson's "Type Theory and Functional Programming" and it was clear that I started to understand a lot of it.<p>If you enjoy the nostalgia of older books like me, then pick up an original copy of "Intuitionistic Type Theory" edited by Per Martin-Löf.</p>
]]></description><pubDate>Mon, 24 May 2021 15:12:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=27265271</link><dc:creator>codeismath</dc:creator><comments>https://news.ycombinator.com/item?id=27265271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27265271</guid></item></channel></rss>