<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: tangus</title><link>https://news.ycombinator.com/user?id=tangus</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 01 Sep 2026 12:08:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tangus" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Reviving the IBM Selectric Composer Fonts (2023)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.kutilek.de/selectric/">https://www.kutilek.de/selectric/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48040412">https://news.ycombinator.com/item?id=48040412</a></p>
<p>Points: 79</p>
<p># Comments: 9</p>
]]></description><pubDate>Wed, 06 May 2026 19:16:49 +0000</pubDate><link>https://www.kutilek.de/selectric/</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=48040412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48040412</guid></item><item><title><![CDATA[New comment by tangus in "Archive of Byte magazine, starting with issue #1 in 1975"]]></title><description><![CDATA[
<p>Here's an index of sorts. I couldn't find anything better.<p><a href="https://archive.org/details/byte-magazine?sort=date" rel="nofollow">https://archive.org/details/byte-magazine?sort=date</a></p>
]]></description><pubDate>Sun, 19 Apr 2026 12:28:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47823811</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=47823811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47823811</guid></item><item><title><![CDATA[New comment by tangus in "Fixing a 20-year-old bug in Enlightenment E16"]]></title><description><![CDATA[
<p>I guess they wanted to keep working on their slides (at least for the moment) and not be forced to go debugging. Sadly, the hang was deterministic, so they didn't have another option.</p>
]]></description><pubDate>Wed, 15 Apr 2026 16:55:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47781836</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=47781836</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47781836</guid></item><item><title><![CDATA[New comment by tangus in "Rob Pike’s Rules of Programming (1989)"]]></title><description><![CDATA[
<p>Aren't they basically saying opposite things? Perlis is saying "don't choose the right data structure, shoehorn your data into the most popular one". This advice might have made sense before generic programming was widespread; I think it's obsolete.</p>
]]></description><pubDate>Wed, 18 Mar 2026 12:26:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47424861</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=47424861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47424861</guid></item><item><title><![CDATA[New comment by tangus in "Cistercian Numbers"]]></title><description><![CDATA[
<p>My minuscule pet peeve is that having only one source where the number 5 is depicted with a triangle (all others show it as a separated segment, like the number 6 but shorter), that's how every article or library draws it. It's all because the guy who wrote a book about them saw that source first so he based his figures on it.<p>Here's a small summary about the numbers with many examples: <a href="https://www.unicode.org/L2/L2020/20290-cistercian-digits.pdf" rel="nofollow">https://www.unicode.org/L2/L2020/20290-cistercian-digits.pdf</a></p>
]]></description><pubDate>Wed, 18 Feb 2026 18:07:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47064081</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=47064081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47064081</guid></item><item><title><![CDATA[New comment by tangus in "ISBN Visualization"]]></title><description><![CDATA[
<p>Everything they have is downloadable. Go to their home page and follow the links.</p>
]]></description><pubDate>Sun, 21 Dec 2025 11:48:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46344139</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=46344139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46344139</guid></item><item><title><![CDATA[New comment by tangus in "Paris had a moving sidewalk in 1900, and a Thomas Edison film captured it (2020)"]]></title><description><![CDATA[
<p>Everybody carries a gun in Heinlein stories, so those terrorists will be quickly dealt with by armed citizens, thus confirming the superiority of Libertarianism.</p>
]]></description><pubDate>Mon, 03 Nov 2025 06:13:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45796317</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45796317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45796317</guid></item><item><title><![CDATA[New comment by tangus in "Some Smalltalk about Ruby Loops"]]></title><description><![CDATA[
<p>For the record, if you want to avoid the creation of intermediate arrays, you can:<p><pre><code>    lst.lazy.grep(Array).flat_map(&:itself).sum
</code></pre>
Not as clear, because the standard library doesn't have a `#flatten` method for lazy enumerators.<p>But the point is the interface, not the implementation. Efficiency doesn't mandate assembly-like DSLs. Your interface could be as clear and clean as Ruby's and produce fast, inlined code by the power of macros. Ruby doesn't have macros, so chaining lambdas is the best it can do.<p>Ruby also has call/cc. None of the iterating methods has any provision to make them "safe" from it. They aren't safe from modifications to the iterated collection either. I think it makes sense; being forced to accumulate using only linked lists and having to be constantly on guard to support a rarely used quirky feature is a bad tradeoff IMO.</p>
]]></description><pubDate>Fri, 31 Oct 2025 19:15:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=45775635</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45775635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45775635</guid></item><item><title><![CDATA[New comment by tangus in "Argentine peso hits fresh lows despite U.S. support – and it could get worse"]]></title><description><![CDATA[
<p>Careful. Seeing how I was downvoted for asking, it looks people here don't want that information to spread.</p>
]]></description><pubDate>Thu, 30 Oct 2025 21:55:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45765860</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45765860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45765860</guid></item><item><title><![CDATA[New comment by tangus in "Some Smalltalk about Ruby Loops"]]></title><description><![CDATA[
<p>It may be somewhat awkward; zipping collections to iterate over them in unison makes the first one (the sender) seem special, while it not necessarily is. And accumulating more than one value isn't always straightforward; you usually have to reduce explicitly. But it's so much better in the general case!<p>Like the example you showcase your macro with. In Ruby it would be:<p><pre><code>    lst = [[1, 2], :dud, [3, 4], [5, 6]]
    lst.grep(Array).flatten.sum
    => 21
</code></pre>
You can see what it does at a glance, you don't have to immerse yourself inside the directives to follow the logic. And when you can't do that, declaring iterators and accumulators outside a loop and then iterating and accumulating "by hand" yields code not so different than your more complex examples.<p><pre><code>  def partition (arr)
    yes = []
    no = []
    arr.each do |elt|
      if yield elt
        yes << elt
      else
        no << elt
      end
    end
    [yes, no]
  end</code></pre></p>
]]></description><pubDate>Thu, 30 Oct 2025 21:35:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45765667</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45765667</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45765667</guid></item><item><title><![CDATA[New comment by tangus in "Some Smalltalk about Ruby Loops"]]></title><description><![CDATA[
<p>Looping in Ruby is the opposite of awful. You only have to define an `#each` method in your class and include the `Enumerable` module, and you get a plethora of composable methods to iterate and accumulate in every which way. I find it nothing short of brilliant.</p>
]]></description><pubDate>Thu, 30 Oct 2025 19:17:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45764104</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45764104</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45764104</guid></item><item><title><![CDATA[New comment by tangus in "Argentine peso hits fresh lows despite U.S. support – and it could get worse"]]></title><description><![CDATA[
<p>It's paywalled, please provide a workaround.</p>
]]></description><pubDate>Wed, 22 Oct 2025 15:40:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45670803</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45670803</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45670803</guid></item><item><title><![CDATA[New comment by tangus in "Webbol: A minimal static web server written in COBOL"]]></title><description><![CDATA[
<p>In the late 90's I had a girlfriend who worked for a shop that made web pages in COBOL. I thought those were COBOL's death throes, but apparently I was mistaken...</p>
]]></description><pubDate>Fri, 03 Oct 2025 17:43:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=45465582</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=45465582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45465582</guid></item><item><title><![CDATA[New comment by tangus in "Katharine Graham: The Washington Post"]]></title><description><![CDATA[
<p>They provoked the strike on purpose by giving the workers an unacceptable contract. The aim was to wreck the union (they succeeded). They prepared in secret for two years for this.<p>Here's an account: <a href="https://www.huffpost.com/entry/wash-post-busted-pressmens-union-in-1975-strike-why_b_599eed71e4b0cb7715bfd3b2" rel="nofollow">https://www.huffpost.com/entry/wash-post-busted-pressmens-un...</a></p>
]]></description><pubDate>Sun, 27 Jul 2025 19:38:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=44703966</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44703966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44703966</guid></item><item><title><![CDATA[New comment by tangus in "Simon Tatham's Portable Puzzle Collection"]]></title><description><![CDATA[
<p>Also related: <a href="https://puzz.link/db/" rel="nofollow">https://puzz.link/db/</a></p>
]]></description><pubDate>Sat, 26 Jul 2025 13:11:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=44693829</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44693829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44693829</guid></item><item><title><![CDATA[New comment by tangus in "Ruby 3.4 frozen string literals: What Rails developers need to know"]]></title><description><![CDATA[
<p>Even if it didn't dedupe strings, mutable string literals means that it has to create a new string every time it encounters a literal in run time. If you have a literal string in a method, every time you call the method a new string is created. If you have one inside a loop, every iteration a new string is created. You get the idea.<p>With immutable strings literals, string literals can be reused.</p>
]]></description><pubDate>Wed, 09 Jul 2025 14:19:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44510375</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44510375</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44510375</guid></item><item><title><![CDATA[New comment by tangus in "Ruby 3.4 frozen string literals: What Rails developers need to know"]]></title><description><![CDATA[
<p>Strings are going to keep being mutable by default. Only strings created by string literals won't be.</p>
]]></description><pubDate>Wed, 09 Jul 2025 11:56:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44508910</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44508910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44508910</guid></item><item><title><![CDATA[New comment by tangus in "End of an Era"]]></title><description><![CDATA[
<p>>I do not understand how you can even begin coming to the conclusion of ...<p>Obviously he's not serious, he's playing the part of the out of touch old man.</p>
]]></description><pubDate>Tue, 01 Jul 2025 02:10:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=44429936</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44429936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44429936</guid></item><item><title><![CDATA[New comment by tangus in "Alternative Layout System"]]></title><description><![CDATA[
<p>Related to "Last is first", old Spanish books sometimes put at the end of the page the first syllable of the next page. (It was quite disconcerting when I first saw it.)</p>
]]></description><pubDate>Fri, 27 Jun 2025 19:12:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=44399426</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44399426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44399426</guid></item><item><title><![CDATA[New comment by tangus in "Show HN: I wrote a Java decompiler in pure C language"]]></title><description><![CDATA[
<p>They say it right in the next sentence.</p>
]]></description><pubDate>Wed, 04 Jun 2025 18:50:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44184129</link><dc:creator>tangus</dc:creator><comments>https://news.ycombinator.com/item?id=44184129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44184129</guid></item></channel></rss>