<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: ferd</title><link>https://news.ycombinator.com/user?id=ferd</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 19:32:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ferd" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ferd in "GitHub Monaspace Case Study"]]></title><description><![CDATA[
<p>Thanks. Tried, but doesn't look good :-(</p>
]]></description><pubDate>Wed, 01 Apr 2026 01:18:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47595617</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=47595617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47595617</guid></item><item><title><![CDATA[New comment by ferd in "GitHub Monaspace Case Study"]]></title><description><![CDATA[
<p>I really like Monaspace Argon, but even the narrower option looks too wide on my terminal (kitty on macos)</p>
]]></description><pubDate>Tue, 31 Mar 2026 18:03:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591210</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=47591210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591210</guid></item><item><title><![CDATA[New comment by ferd in "Ask HN: Remember Fidonet?"]]></title><description><![CDATA[
<p>yes! don't remember my number, Zone 4 for sure (Argentina).<p>Exchanging messages with people on the other side of the world felt like magic at the time (even though it took many hours/days for a msg to round-trip)<p>I also run "Sudaka's BBS" based on Maximus/2, with many interactive "apps" I'd developed using Maximus' proprietary C-like language. Great high-school times.<p>I can still hear my parents complaining about my monopolizing the phone line every night :-)</p>
]]></description><pubDate>Tue, 10 Mar 2026 12:54:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47322610</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=47322610</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47322610</guid></item><item><title><![CDATA[New comment by ferd in "Ask HN: Hearing aid wearers, what's hot?"]]></title><description><![CDATA[
<p>I've had tinnitus for about 12 years now. High-freqquencies hearing loss. I've been using hearing aids for about 4 years... They DO help me with both hearing (of course) and tinnitus.<p>For example, driving a car without the aids makes my tinnitus really bad (due to the background noise of the car/engine/wind/road). With aids it's a lot less of a problem.<p>One fear I have is if hearing aids cause even more hearing damage (after all, what they do it inject amplified sound into you ear... the exact same thing that most doctors tell you NOT to do to avoid hearing damage)...  Experts tell me they don't, but without any reasonable explanation.</p>
]]></description><pubDate>Mon, 24 Nov 2025 18:30:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46037317</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=46037317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46037317</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>How so? Not sure what you mean.<p>If object A calls a method of object B (composition), then B cannot call back on B, and neither A nor B can override any behavior of the other (And this is the original core tenet of OO: being all about "message-passing").<p>Of course they can accept and pass other objects/functions are arguments, but that would be explicit and specific, without having to expose the whole state/impl to each other.</p>
]]></description><pubDate>Sun, 16 Nov 2025 18:19:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45947167</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45947167</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45947167</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>> I'd argue some amount of "co-recursion" is to be expected: after all the point of the child class is to reuse logic of the parent<p>That's the point: You can reuse code without paying that price of inheritance. You DON'T have to expect co-recursion or shared state just for "code-reuse".<p>And, I think, is the key point:  Behavior inheritance is NOT a good technique for code-reuse... Type-inheritance, however, IS good for abstraction, for defining boundaries, to enable polymorphism.<p>> I'd say this is a fact of life for all pieces of code which are reused more than once<p>But you want to minimize that complexity. If you call a pure function, you know it only depends on its arguments... done. If you can a method on a mutable object, you have to read its implementation line-by-line, you have to navigate a web of possibly polymorphic calls which may even modify shared state.<p>> This is another reason why low coupling high cohesion is so important<p>exactly. Now, I would phrase it the other way around though:  "... low coupling high cohesion is so important..." that's the reason why using inheritance of implementation for code-reuse is often a bad idea.</p>
]]></description><pubDate>Sun, 16 Nov 2025 14:08:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45945259</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45945259</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45945259</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>You are always dealing with state and control-flow in software design. The challenge is to minimize state at much as possible, make it immutable as much as possible and simplify you control-flow as much as possible. OO-style inheritance of implementation (with mutable state dispersed all over the place and pinball-style control-flow) goes against those goals.<p>Closer to the "ideal": declarative approaches, pure functions, data-oriented pipelines, logic programming.</p>
]]></description><pubDate>Sun, 16 Nov 2025 13:29:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=45944993</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45944993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45944993</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>I've seen it a lot on Django projects. Maybe I was just unlucky on the Python projects I've joined.</p>
]]></description><pubDate>Sun, 16 Nov 2025 13:17:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45944920</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45944920</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45944920</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>Good point.  In Java and many other languages you can opt out instead... which might make a big difference. Is it more of a "cultural" thing?... again, many frameworks encourage it by design, and so do many courses/tutorials... so those devs would be happy to put "virtual" everywhere in C++</p>
]]></description><pubDate>Sun, 16 Nov 2025 02:42:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45942321</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45942321</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45942321</guid></item><item><title><![CDATA[New comment by ferd in "When did people favor composition over inheritance?"]]></title><description><![CDATA[
<p>An important point not mentioned by the article is that of "co-recursion" with inheritance (of implementation).<p>That is: an instance of a subclass calls a method defined on a parent class, which in turn may call a method that's been overridden by the subclass (or even another sub-subclass in the hierarchy) and that one in turn may call another parent method, and so on. It can easily become a pinball of calls around the hierarchy.<p>Add to that the fact that "objects" have state, and each class in the hierarchy may add more state, and modify state declared on parents. Perfect combinatory explosion of state and control-flow complexity.<p>I've seen this scenario way too many times in projects, and worse thing is: many developers think it's fine... and are even proud of navigating such a mess. Heck, many popular "frameworks" encourage this.<p>Basically: every time you modify a class, you must review the inner implementation of all other classes in the hierarchy, and call paths to ensure your change is safe. That's a horrendous way to write software, against the most basic principles of modularity and low coupling.</p>
]]></description><pubDate>Sun, 16 Nov 2025 02:15:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45942186</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45942186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45942186</guid></item><item><title><![CDATA[New comment by ferd in "Getting syntax highlighting wrong"]]></title><description><![CDATA[
<p>No... the best way is to use the same color for all occurrences of the same identifier. So, on the last example, all instances of say "audio" should be of the same color, and those of "filename" of another color.<p>Original idea from here:
  <a href="https://medium.com/@evnbr/coding-in-color-3a6db2743a1e" rel="nofollow">https://medium.com/@evnbr/coding-in-color-3a6db2743a1e</a><p>One impl for Emacs:
  <a href="https://github.com/ankurdave/color-identifiers-mode" rel="nofollow">https://github.com/ankurdave/color-identifiers-mode</a><p>I still admire you Niki.</p>
]]></description><pubDate>Wed, 15 Oct 2025 20:12:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=45597808</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45597808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45597808</guid></item><item><title><![CDATA[New comment by ferd in "Ask HN: What are you working on? (September 2025)"]]></title><description><![CDATA[
<p>Nice. Great work. Bookmarked</p>
]]></description><pubDate>Tue, 30 Sep 2025 01:46:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45421070</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45421070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45421070</guid></item><item><title><![CDATA[New comment by ferd in "Ask HN: What are you working on? (September 2025)"]]></title><description><![CDATA[
<p>Obsetico App (named after a friends' comment that "it's great for Obsessed people like my wife"<p>A mobile app to track tasks, events and any info about anything you care about: your car, home, tools, workshop, appliances, pets, lab equipment... anything really.<p>Lets you organize "resources" in a hierarchy (like "folders"). You can then define  tasks, add pictures, geolocation, contacts, notes, events, etc to them. Recently added the feature to "share" resources with others.<p>Google Play: <a href="https://play.google.com/store/apps/details?id=com.code54.quickfix">https://play.google.com/store/apps/details?id=com.code54.qui...</a>
App Store: <a href="https://apps.apple.com/us/app/obsetico/id6749025870">https://apps.apple.com/us/app/obsetico/id6749025870</a><p>It's so generic that it's hard to describe :-) I need a better elevator pitch.</p>
]]></description><pubDate>Tue, 30 Sep 2025 01:05:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45420825</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45420825</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45420825</guid></item><item><title><![CDATA[New comment by ferd in "Bring Your Own Agent to Zed – Featuring Gemini CLI"]]></title><description><![CDATA[
<p>similar to <a href="https://eca.dev/" rel="nofollow">https://eca.dev/</a> ?</p>
]]></description><pubDate>Thu, 28 Aug 2025 00:55:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45047078</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=45047078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45047078</guid></item><item><title><![CDATA[New comment by ferd in "Vagus Nerve Stimulation Erases PTSD: Study"]]></title><description><![CDATA[
<p>Any hope to treat tinnitus? :-\</p>
]]></description><pubDate>Wed, 07 May 2025 20:41:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43920360</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=43920360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43920360</guid></item><item><title><![CDATA[New comment by ferd in "Tldraw Computer"]]></title><description><![CDATA[
<p>search for XPDL and BPMN</p>
]]></description><pubDate>Sat, 21 Dec 2024 02:38:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=42477103</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=42477103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42477103</guid></item><item><title><![CDATA[New comment by ferd in "Boardgame.io: an engine for creating turn-based games using JavaScript"]]></title><description><![CDATA[
<p>Looks very interesting.<p>Somewhat related:  I've recently wrote a code-walkthrough (in Clojure) of modeling chess-like games.<p><a href="https://neuroning.com/boardgames-exercise/" rel="nofollow">https://neuroning.com/boardgames-exercise/</a><p>It's very basic and intended for teaching/learning functional programming, not a real library or engine like the OP.</p>
]]></description><pubDate>Fri, 20 Dec 2024 13:34:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42470928</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=42470928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42470928</guid></item><item><title><![CDATA[New comment by ferd in "The Liberating Experience of Common Lisp"]]></title><description><![CDATA[
<p>Similar experience here... python/typescript during the day, Clojure at night ;-)<p>Shameless plug: just yesterday I published a step-by-step code walkthrough hoping to convey my "Clojure way" of modeling:<p><a href="https://neuroning.com/boardgames-exercise/" rel="nofollow">https://neuroning.com/boardgames-exercise/</a></p>
]]></description><pubDate>Tue, 01 Oct 2024 17:02:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=41711127</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=41711127</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41711127</guid></item><item><title><![CDATA[New comment by ferd in "A code walkthrough modeling the rules of Chess in a functional (Clojure) way"]]></title><description><![CDATA[
<p>I'd need to really learn Haskell to make sense of it all. Might be a good excuse :-)</p>
]]></description><pubDate>Mon, 30 Sep 2024 17:33:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=41699806</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=41699806</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41699806</guid></item><item><title><![CDATA[New comment by ferd in "A code walkthrough modeling the rules of Chess in a functional (Clojure) way"]]></title><description><![CDATA[
<p>cool, thanks!</p>
]]></description><pubDate>Mon, 30 Sep 2024 16:36:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=41699140</link><dc:creator>ferd</dc:creator><comments>https://news.ycombinator.com/item?id=41699140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41699140</guid></item></channel></rss>