<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: ajanuary</title><link>https://news.ycombinator.com/user?id=ajanuary</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 19 Jun 2026 13:19:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ajanuary" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ajanuary in "Alert-driven monitoring"]]></title><description><![CDATA[
<p>The number of times I've had to explain how the JVM heap works...</p>
]]></description><pubDate>Sun, 03 May 2026 20:03:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48000823</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=48000823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48000823</guid></item><item><title><![CDATA[New comment by ajanuary in "Everything as code: How we manage our company in one monorepo"]]></title><description><![CDATA[
<p>The point is that the realities of not being able to deploy in lockstep erode away at a lot of the claimed benefits the monorepo gives you in being able to make a change everywhere at once.<p>If my code has to be backwards compatible to survive the deployment, then having the code in two different repos isn’t such a big deal, because it’ll all keep working while I update the consumer code.</p>
]]></description><pubDate>Tue, 30 Dec 2025 21:33:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46438284</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=46438284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46438284</guid></item><item><title><![CDATA[New comment by ajanuary in "Duplication Isn't Always an Anti-Pattern"]]></title><description><![CDATA[
<p>> - There is a difference between things that are actually the same (or should be for consistency (such as domain facts, knowledge) versus ones that happen to be the same at the time of creation but are only that way by coincidence<p>For my money, this is the key point that people miss.<p>A test I like to use for whether two things are actually or just incidentally related is to think about “if I repeat this, and then change one but not the other, what breaks?”<p>Often the answer is that something will break. If I repeat how a compound id “<foo>-<bar>” is constructed when I insert the key and lookup, if I change the insert to “<foo>::<bar>” but not the lookup, then I’m not going to be able to find anything. If I have some complicated domain logic I duplicate, and fix a bug in one place but not the other, then I’ve still got a bug but now probably harder to track down. In these cases the duplication has introduced risk. And I need to weigh that risk against the cost of introducing an abstraction.<p>If I have a unit test `insert(id=1234); item = fetch(id=1234); assert item is not nil`, if I change one id but not the other, the test will fail.<p>But if I have two separate unit tests, and both happen to use the same id 1234, if I change one but not the other, absolutely nothing breaks. They aren’t actually related, they’re just incidentally the same.</p>
]]></description><pubDate>Sun, 07 Dec 2025 15:39:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46182462</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=46182462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46182462</guid></item><item><title><![CDATA[New comment by ajanuary in "Getting syntax highlighting wrong"]]></title><description><![CDATA[
<p>They’re not talking about the squiggly line. The word return/retunr gets highlighted in slightly different colors based on whether the highlighter is picking it up as a keyword or a variable name, but in the scheme the colors are similar.</p>
]]></description><pubDate>Wed, 15 Oct 2025 20:48:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=45598220</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=45598220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45598220</guid></item><item><title><![CDATA[New comment by ajanuary in "Show HN: Sculptor – A UI for Claude Code"]]></title><description><![CDATA[
<p>Unfortunately the page repeatedly crashed and reloads on my iPhone 13 mini until it gives up.</p>
]]></description><pubDate>Tue, 30 Sep 2025 17:00:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45428061</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=45428061</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45428061</guid></item><item><title><![CDATA[New comment by ajanuary in "Emailing a one-time code is worse than passwords"]]></title><description><![CDATA[
<p>Two problems I’ve encountered with magic links:<p>* Mobile email clients that open links in an embedded browser. This confuses some people. From their perspective they never stay logged in, because every time they open their regular browser they don’t have a session (because it was created in the embedded browser) and have to request a login link again.<p>* Some people don’t have their email on the device they want to log in on.<p>Sending codes solves both of these problems (but then has the issues described in the article, and both share all the problems with sending emails)</p>
]]></description><pubDate>Thu, 07 Aug 2025 06:58:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=44821416</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=44821416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44821416</guid></item><item><title><![CDATA[New comment by ajanuary in "Show HN: "Git who" – A new CLI tool for industrial-scale Git blaming"]]></title><description><![CDATA[
<p>I’m pretty sure it’s just using Ruby for rake, which is a task runner. So Ruby is only needed for the build process.</p>
]]></description><pubDate>Wed, 19 Mar 2025 06:31:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=43408805</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=43408805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43408805</guid></item><item><title><![CDATA[New comment by ajanuary in "Australia/Lord_Howe is the weirdest timezone"]]></title><description><![CDATA[
<p>You need to be careful with some circumstances. I recently had to fix up a case where someone had tried this with a recurring local date. Something needed to happen at 4am local time every day. They had converted 4am local time to UTC based on the timezone offset on the day the config was saved. This then restored incorrectly when the timezone offset changed because e.g. a DST transition.</p>
]]></description><pubDate>Wed, 30 Oct 2024 19:25:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=41999164</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=41999164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41999164</guid></item><item><title><![CDATA[New comment by ajanuary in "Battleships Logic Puzzle"]]></title><description><![CDATA[
<p>Having click and drag not be limited to a line is actually useful for ringing around a completed ship. You can tap a number clue on the outside to fill in the missing water, which can help avoid needing to draw long straight lines.<p>But having it only perform the same action would make things nicer.</p>
]]></description><pubDate>Fri, 25 Oct 2024 20:54:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=41949652</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=41949652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41949652</guid></item><item><title><![CDATA[New comment by ajanuary in "Gleam Is Pragmatic"]]></title><description><![CDATA[
<p><a href="https://tour.gleam.run/functions/function-captures/" rel="nofollow">https://tour.gleam.run/functions/function-captures/</a>
<a href="https://tour.gleam.run/functions/pipelines/" rel="nofollow">https://tour.gleam.run/functions/pipelines/</a><p>These took me basically no time at all to find. Are you looking for something else for partial application?</p>
]]></description><pubDate>Mon, 07 Oct 2024 13:21:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=41765724</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=41765724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41765724</guid></item><item><title><![CDATA[New comment by ajanuary in "Clojure 1.12.0 is now available"]]></title><description><![CDATA[
<p>repl as a name kind of describes the requirements for something to be a repl - it has a read-evaluate-print loop. It would be more confusing to say that something with a read-evaluate-print loop isn't a repl.</p>
]]></description><pubDate>Fri, 06 Sep 2024 16:40:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41467665</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=41467665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41467665</guid></item><item><title><![CDATA[New comment by ajanuary in "HTML Tags Memory Test"]]></title><description><![CDATA[
<p>Managed to get to 80 after about an hour while watching TV. Wish it would tell me which ones I’m missing, manually cross referencing seems like a bit of a pita. Fun though.</p>
]]></description><pubDate>Mon, 15 Jul 2024 20:13:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=40971092</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40971092</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40971092</guid></item><item><title><![CDATA[New comment by ajanuary in "Just Enough Software Architecture (2010)"]]></title><description><![CDATA[
<p>> Pro tip: use "win the lottery" instead to avoid the negative connotation of injury or death.<p>I very much appreciate the attempt to reframe it positively. But personally, if I win the lottery, I’m still doing a handover. The key thing with “hit by a bus” is, no matter what your personality, you don’t have any time to prepare. Thats why you’ve got to get the information out there today. Unfortunately I’ve yet to find a positive spin that has those same connotations.</p>
]]></description><pubDate>Sun, 16 Jun 2024 04:30:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=40694701</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40694701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40694701</guid></item><item><title><![CDATA[New comment by ajanuary in "Things to avoid in Ruby"]]></title><description><![CDATA[
<p>Ironically Rubocops style guide recommends against chaining the safe navigation operator.</p>
]]></description><pubDate>Fri, 24 May 2024 05:32:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=40463109</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40463109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40463109</guid></item><item><title><![CDATA[HTTP Message Signatures Sandbox]]></title><description><![CDATA[
<p>Article URL: <a href="https://httpsig.org/">https://httpsig.org/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40237654">https://news.ycombinator.com/item?id=40237654</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 02 May 2024 15:53:58 +0000</pubDate><link>https://httpsig.org/</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40237654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40237654</guid></item><item><title><![CDATA[New comment by ajanuary in "Changelog-Driven Releases"]]></title><description><![CDATA[
<p>The towncrier approach is similar to what we do at work. We have the addition that the individual changelog files say their scope (major, minor, or patch), and we use that to automatically compute the next version number.<p><pre><code>  version.txt
    1.0.0
  CHANGELOG
    # 1.0.0
    * Initial release
  changelogs/add-foobar-api.md
    minor: Add a new API call `foobar`
  changelogs/improve-baz-perf.md
    patch: Improve the performance of the `baz` API call
</code></pre>
In the changelog compilation step it works out that the largest scope is minor, so the version of the next release is bumped from 1.0.0 to 1.1.0, and you end up with:<p><pre><code>  version.txt
    1.1.0
  CHANGELOG
    # 1.1.0
    * Add a new API call `foobar`
    * Improve the performance of the `baz` API call

    # 1.0.0
    * Initial release
</code></pre>
It works great, especially for large teams. You don't end up with lots of merge conflicts on the CHANGELOG file. The people writing the change get to describe the scope of the change (and that can be reviewed in the PR), rather than the person doing the release having to guess from the descriptions. Developers never have to worry about whether someone else has already bumped the version number or not.</p>
]]></description><pubDate>Tue, 23 Apr 2024 14:14:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=40132252</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40132252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40132252</guid></item><item><title><![CDATA[New comment by ajanuary in "Only <SPAN>s"]]></title><description><![CDATA[
<p>It has role and aria attributes, so I think it actually isn't that bad. It's just `<span role="heading" aria-level="3">` is an awfully long way to spell out `<h3>`.</p>
]]></description><pubDate>Thu, 18 Apr 2024 09:06:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=40074288</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=40074288</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40074288</guid></item><item><title><![CDATA[New comment by ajanuary in "I am the fold (2015)"]]></title><description><![CDATA[
<p>For me this occurs when I put my phone on landscape.</p>
]]></description><pubDate>Thu, 28 Dec 2023 14:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=38793574</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=38793574</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38793574</guid></item><item><title><![CDATA[New comment by ajanuary in "Unveiling the big leap in Ruby 3.3's IRB"]]></title><description><![CDATA[
<p>Some symbols I can think of that Ruby uses that python doesn’t:
$ for global vars
@ for instance vars
:: for namespace stuff
=> for map key, value separator
{||} for blocks
.. and … for ranges
%w for special array construction
: for symbols
? and - in method names
?: for ternary expressions
#{} for string interpolation<p>And python that Ruby doesn’t have:
:: for slices
@ for decorators<p>And for the symbols that they both share, subjectively, a lot of them are used for often in Ruby.</p>
]]></description><pubDate>Sun, 24 Dec 2023 13:22:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=38753293</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=38753293</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38753293</guid></item><item><title><![CDATA[New comment by ajanuary in "Pope formally allows priests to bless same-sex couples"]]></title><description><![CDATA[
<p>I think your comment about how and why this is a problem specifically for the Catholic church is valid.<p>But to cover a couple of verses quoted in point 2, just in case it is helpful for people trying to combat people wielding these to attack them:<p>Ezekiel 16:50 - It's not clear that the toevah in Ezekiel is a sexual sin. Just because it is used in that way in some places is to ignore all the places it isn't. The point of Ezekiel 16:49-50 is that the sin of Sodom was inhospitality. If it should be interpreted as a sexual sin, there is nothing to say it is specifically sodomy [1]. It can easily be argued the sexual sin is the attempted rape of angels.<p>Jude 1:7 - Similarly, there isn't anything here that identifies it as sodomy rather than rape.<p>Countering the others, though, I think _does_ require letting go of univocality and infallibility.<p>[1] Homosexuality isn't really a concept at this time. Instead of attraction, they focus on acts and power.</p>
]]></description><pubDate>Mon, 18 Dec 2023 16:51:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=38684973</link><dc:creator>ajanuary</dc:creator><comments>https://news.ycombinator.com/item?id=38684973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38684973</guid></item></channel></rss>