<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: mickeyp</title><link>https://news.ycombinator.com/user?id=mickeyp</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 28 Sep 2026 05:10:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mickeyp" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mickeyp in "Modern Object Pascal Introduction for Programmers"]]></title><description><![CDATA[
<p>Delphi would compile & link 2 MLOC of code on a crappy work laptop in 30 seconds to a minute. Incremental compiles were instant. So fast most developers never bothered learning the "go to next error" hotkey and just spammed F9 (compile & run) whenever they fixed a syntax error. It was that fast.<p>Trivial C interop - yes. Both pascal and cdecl style calling conventions.<p>Toolchain? Back then - yes. Today? Probably not; depends what you mean by it. It had perfect COM interop which mattered back then, and you could trivially link stuff if you wanted to. And people did.</p>
]]></description><pubDate>Sat, 26 Sep 2026 16:42:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49858225</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49858225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49858225</guid></item><item><title><![CDATA[New comment by mickeyp in "JetKVM Mini"]]></title><description><![CDATA[
<p>Meh. The challenge is 4k+ at high display frequency that doesn't cost the same as a small boat. There are gazillions of KVM switches that do 1080. That's easy.</p>
]]></description><pubDate>Sun, 13 Sep 2026 09:10:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49681740</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49681740</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49681740</guid></item><item><title><![CDATA[New comment by mickeyp in "ChatGPT Images 2.5"]]></title><description><![CDATA[
<p>It's not like a lot of these small-time outfits used their own photography to begin with.<p>They'd pick a kebab from a menu of professionally made kebab pictures the printer has in stock. Or worse, they'd take pics of their own plated food with a dead-centre point flash in a dark cupboard or something and you end up with awful-looking food, no matter how good.</p>
]]></description><pubDate>Tue, 08 Sep 2026 18:57:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49615030</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49615030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49615030</guid></item><item><title><![CDATA[New comment by mickeyp in "Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly"]]></title><description><![CDATA[
<p>You don't have to apologise for anything. Your blog post, post-mortem, and detailed walked through is fantastic. This is a great use for AI.<p>I miss my Amiga 500 and all those days spent playing wonderful games so much. Thank you for the hit of nostalgia.</p>
]]></description><pubDate>Fri, 04 Sep 2026 06:25:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49561177</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49561177</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49561177</guid></item><item><title><![CDATA[New comment by mickeyp in "Why OOP Exists"]]></title><description><![CDATA[
<p>You're probably right. But they most likely know more about functional programming, logic programming (if they studied CS), and have some awareness of advanced concepts that generally weren't widely known when we were young.<p>I think it's just a shift in how development works: epicycles and all that. Luckily most OOP stuff they need to know can be taught quite quickly. And perhaps not knowing about GoF is a minor win for cyclomatic complexity in your codebase :-)<p>If you're a Typescript developer doing React you're probably not going to reach for classes, for example, as it's just not a common paradigm in most modern React/TS codebases.</p>
]]></description><pubDate>Mon, 31 Aug 2026 07:12:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49506574</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49506574</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49506574</guid></item><item><title><![CDATA[New comment by mickeyp in "Why OOP Exists"]]></title><description><![CDATA[
<p>But functional programming and OOP are intrinsically the same, but expressed using different primitives.<p>The thing that empowers first-class functions and closures (lexical binding) is the exact same method by which encapsulation works, even if the latter opts for heap vs stack. The fundamentals are the same.<p>Here's a simple one in Emacs Lisp:<p><pre><code>    (defmacro send (object method &rest args)
      "Sends a METHOD to an OBJECT with ARGS."
      `(funcall ,object ',method ,@args))

    (defun make-animal (name)
      ;; 'hunger' is entirely private (encapsulated)
      (let ((hunger 5))
        ;; here's our lambda using lexical binding
        (lambda (method &rest args)
          (cond
           ((eq method 'get-name) name)
           ((eq method 'feed) 
            (setq hunger (max 0 (1- hunger)))
            "Yum!")
           (t (error "Animal does not understand: %s" method))))))

    (let ((good-boy (make-animal "Rex")))
      ;; "call" (via our macro) the "get-name" method; then feed. hunger does down 1.
      (send good-boy get-name)
      (send good-boy feed)
      ;; pretty-print the "object" good-boy
      (pp good-boy))

    ;; this is the state of it after the two calls.
    #[(method &rest args)
      ((cond ((eq method 'get-name) name)
             ((eq method 'feed) (setq hunger (max 0 (1- hunger))) "Yum!")
             (t (error "Animal does not understand: %s" method))))
      ((hunger . 4) (name . "Rex"))]</code></pre></p>
]]></description><pubDate>Mon, 31 Aug 2026 07:03:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49506530</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49506530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49506530</guid></item><item><title><![CDATA[New comment by mickeyp in "Why OOP Exists"]]></title><description><![CDATA[
<p>Oh, I agree. But there's value in people who set out to do things a certain way, even if that approach ends up not working well in the long term.<p>We're collectively shaking a lot of trees when we build frameworks, languages and tools. What works? What does not? What is the right level of abstraction? How much developer ergonomy do we want to sacrifice?<p>Sadly we only seem to know in hindsight what works well. But that is also how we learn and grow; it was just meant to be this way.</p>
]]></description><pubDate>Mon, 31 Aug 2026 06:54:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49506468</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49506468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49506468</guid></item><item><title><![CDATA[New comment by mickeyp in "Why OOP Exists"]]></title><description><![CDATA[
<p>OOP is fine. Not using OOP is fine too if your architecture / design demands it.<p>What people forget -- much like the design patterns in the gang of four book -- is that languages and frameworks evolve.<p>A decorator pattern was a niche but useful abstraction in the 1990s. In Python today you can @decorate stuff just like that. It's evolution.<p>The same holds for OOP. Encapsulation and co-located methods with the encapsulating slots was an incredibly powerful upgrade over basic structs. Now most languages have first-class functions and lexical scoping so you can build your own encapsulation that way.<p>It's all good. Just use whatever fits best.</p>
]]></description><pubDate>Mon, 31 Aug 2026 06:34:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49506314</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49506314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49506314</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>Happy to supply you with a beta key; give me a ping via email.</p>
]]></description><pubDate>Tue, 25 Aug 2026 17:57:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49437980</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49437980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49437980</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>I'll happily hook you up with a key for you to play around with - feel free to drop me an e-mail.</p>
]]></description><pubDate>Tue, 25 Aug 2026 17:56:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=49437972</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49437972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49437972</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>Yeah I'll be working on it. Been busy on another product (see bio) which has taken up a year-plus of my time. Hence the lack of regular postings!</p>
]]></description><pubDate>Tue, 25 Aug 2026 15:00:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49435360</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49435360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49435360</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>You typically won't see it installed at all because it's considered an intermediate artefact. You'll have to compile Emacs yourself from source to get it.</p>
]]></description><pubDate>Tue, 25 Aug 2026 13:49:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49434082</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49434082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49434082</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>Thank you so much for the kind words :) I'm glad I could help you switch!</p>
]]></description><pubDate>Tue, 25 Aug 2026 13:48:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49434057</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49434057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49434057</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>I recommend the tutorial (Help -> Tutorial) from the menu bar inside Emacs to get you started. Don't listen to people telling you to disable this or that. Use your mouse and arrow keys to get started. Don't worry about what other people are doing with their Emacs too much. Pick one thing you want to do with Emacs and focus purely on that (writing Go, taking notes in Org, etc.) and avoid a wholesale move unless you have infinite time and patience.<p>See also my reading guide: <a href="https://www.masteringemacs.org/reading-guide" rel="nofollow">https://www.masteringemacs.org/reading-guide</a><p>My book is of course an option also, but it costs money.</p>
]]></description><pubDate>Tue, 25 Aug 2026 07:01:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49430050</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49430050</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49430050</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>My Combobulate page has suggested package versions but note I have not yet confirmed 100% compatibility with every single Emacs 31.1 major mode yet, though all tests for Combobulate do pass in 31<p>github.com/mickeynp/combobulate</p>
]]></description><pubDate>Tue, 25 Aug 2026 06:34:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=49429841</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49429841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49429841</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>AI is very good at Emacs Lisp - esp GPT. So you'll have an easier time around today!</p>
]]></description><pubDate>Tue, 25 Aug 2026 06:33:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49429834</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49429834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49429834</guid></item><item><title><![CDATA[New comment by mickeyp in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>But I do test things out, by virtue of often running the tip of master branch and submitting bug reports. But I cannot test every mention in the NEWS, so on that part you are right.<p>Deprecating :vc + :load-path without expressing why is a curious oversight. And "portability issues" is all fine and good, but why embed custom git clone + build grammar code in the treesit.el file if VC checkout portability is a concern? Surely VC is better at it than a bunch of brittle string concat code in treesit.el I do not understand why one part works and another supposedly does not.<p>The change is especially infuriating as for most of us it actually worked fine, and user-lisp directory does not solve the retrieval and setup problem, which `use-package` for all its flaws at least standardises.<p>Most users probably do care about discoverability of related packages, existing user or not. But that's in the eye of the beholder.<p>`package-review-policy` is security kabuki theatre. Someone who wants to harm an Emacs user can find many other ways of doing so with or without this flag.</p>
]]></description><pubDate>Tue, 25 Aug 2026 06:24:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49429784</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49429784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49429784</guid></item><item><title><![CDATA[New comment by mickeyp in "I were 17, I'd learn how to build LLMs from scratch"]]></title><description><![CDATA[
<p>Writing, supervising and training LLMs are now the purview of... even larger LLMs. Optimising CUDA kernels; hand-writing SIMD assembly to speed up data loading; tinkering with your particular brand of DRAM to see if there's anything to gain from optimising for its memory topology and NUMA --- these are now the job of AI.<p>There is very little reason for humans to get all too engrossed in this type of work now, today, with the hope of being good enough at it to command a high salary in 3-5 years. AI can already do it incredibly well, and they can do it persistently and doggedly 24 hours a day.</p>
]]></description><pubDate>Mon, 24 Aug 2026 07:21:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49416234</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49416234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49416234</guid></item><item><title><![CDATA[New comment by mickeyp in "Teaching my kid to code with a modern MUD"]]></title><description><![CDATA[
<p>MUDs are such a wonderful way to introduce kids to "slow gaming", if one can call it that. I grew up with MUDs; they are a cherished memory of mine.<p>There's a lot of fun "lego-style" creativity to be had in designing rooms, mobs and coming up with grand area designs.<p>Cool idea.</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:50:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49346470</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49346470</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346470</guid></item><item><title><![CDATA[New comment by mickeyp in "Deus Ex creator Warren Spector is retiring from game development"]]></title><description><![CDATA[
<p>Meier's about as connected to most of these things as Tony the tiger is to the actual production of cornflakes.</p>
]]></description><pubDate>Tue, 18 Aug 2026 14:35:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49346235</link><dc:creator>mickeyp</dc:creator><comments>https://news.ycombinator.com/item?id=49346235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49346235</guid></item></channel></rss>