<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: revetkn</title><link>https://news.ycombinator.com/user?id=revetkn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 20 Jun 2026 01:59:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=revetkn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by revetkn in "Project Valhalla, Explained: How a Decade of Work Arrives in JDK 28"]]></title><description><![CDATA[
<p>Regarding "What's wrong with what .NET did with threads?", see <a href="https://cr.openjdk.org/~rpressler/loom/Loom-Proposal.html" rel="nofollow">https://cr.openjdk.org/~rpressler/loom/Loom-Proposal.html</a> (relevant part below):<p><pre><code>  An alternative solution to that of fibers to concurrency's simplicity vs. performance issue is known as async/await, and has been adopted by C# and Node.js, and will likely be adopted by standard JavaScript. Continuations and fibers dominate async/await in the sense that async/await is easily implemented with continuations (in fact, it can be implemented with a weak form of delimited continuations known as stackless continuations, that don't capture an entire call-stack but only the local context of a single subroutine), but not vice-versa.

  While implementing async/await is easier than full-blown continuations and fibers, that solution falls far too short of addressing the problem. While async/await makes code simpler and gives it the appearance of normal, sequential code, like asynchronous code it still requires significant changes to existing code, explicit support in libraries, and does not interoperate well with synchronous code. In other words, it does not solve what's known as the "colored function" problem.
</code></pre>
Regarding Swing, virtual threads are "just" threads so no reason they (and structured concurrency) can't be used.</p>
]]></description><pubDate>Fri, 19 Jun 2026 15:58:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48600053</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=48600053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48600053</guid></item><item><title><![CDATA[New comment by revetkn in "The Abstraction Fallacy: Why AI can simulate but not instantiate consciousness"]]></title><description><![CDATA[
<p>I find papers like this strange for the same reason.  Maybe I'm missing something...</p>
]]></description><pubDate>Wed, 29 Apr 2026 18:14:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47952182</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=47952182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47952182</guid></item><item><title><![CDATA[New comment by revetkn in "MessageFormat: Unicode standard for localizable message strings"]]></title><description><![CDATA[
<p>My project Lokalized attempts to solve many of these complex plural/gender/ordinal/etc. rules with a tiny expression language:<p><a href="https://lokalized.com" rel="nofollow">https://lokalized.com</a></p>
]]></description><pubDate>Mon, 16 Feb 2026 11:50:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47033913</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=47033913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47033913</guid></item><item><title><![CDATA[New comment by revetkn in "Ask HN: Share your personal website"]]></title><description><![CDATA[
<p><a href="https://revetkn.com" rel="nofollow">https://revetkn.com</a></p>
]]></description><pubDate>Wed, 14 Jan 2026 20:27:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46622652</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=46622652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46622652</guid></item><item><title><![CDATA[Show HN: Soklet, a zero-dependency Java HTTP/1.1 and SSE virtual-threaded server]]></title><description><![CDATA[
<p>Hi, I built the first version of Soklet back in 2015 as a way to move away from what I saw as the complexity and "magic" of Spring (it had become the J2EE creature it sought to replace).  I have been refining it over the years and have just released version 2.0.0, which embraces modern Java development practices.<p>Check it out here: <a href="https://www.soklet.com" rel="nofollow">https://www.soklet.com</a><p>I was looking for something that captured the spirit of projects like Express (Node), Flask (Python), and Sinatra (Ruby) but had the power of a "real" framework and nothing else quite fit: Spark/Javalin are too bare-bones, Quarkus/Micronaut/Helidon/Spring Boot/etc. have lots of dependencies, moving parts, and/or programming styles I don't particularly like (e.g. reactive).<p>What I wanted to do was make building a web system almost as easy as a "hello world" app without compromising functionality and I feel I have accomplished this goal.<p>Other goals - support for Server-Sent Events, which are table-stakes now in 2026 and "native" integration testing (just run instances of your app in a Simulator) are best-in-class in my opinion.  Servlet integration is also available if you can't yet fully disentangle yourself from that world.<p>If you're interested in Soklet, you might like some of its zero-dependency sister projects:<p>Pyranid, a modern JDBC interface that embraces SQL: <a href="https://www.pyranid.com" rel="nofollow">https://www.pyranid.com</a>
Lokalized, which enables natural-sounding translations (i18n) via an expression language: <a href="https://www.lokalized.com" rel="nofollow">https://www.lokalized.com</a><p>I think Java is going to become a bigger player in the LLM space (virtual threads now, forthcoming Vector API/Project Panama/etc.) If you're building agentic systems (or just need a simple REST API), Soklet may be a good fit for you.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46604152">https://news.ycombinator.com/item?id=46604152</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 13 Jan 2026 17:18:05 +0000</pubDate><link>https://soklet.com/</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=46604152</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46604152</guid></item><item><title><![CDATA[New comment by revetkn in "Fluent: A Localization System for Natural-Sounding Translations"]]></title><description><![CDATA[
<p>I like the fluent API - this looks like a much better way to work with ResourceBundle types than Java's out-of-the-box support. Thanks for sharing.</p>
]]></description><pubDate>Thu, 18 Dec 2025 21:55:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46319359</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=46319359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46319359</guid></item><item><title><![CDATA[New comment by revetkn in "Fluent: A Localization System for Natural-Sounding Translations"]]></title><description><![CDATA[
<p>In my experience, LLMs are terrific for most translation tasks, but you still need a way to encode the data (rules for genders, cardinalities, ordinalities, ...) for storage on disk/database/etc. for 1. performance and 2. consistency/durability.  So LLMs are a big part of the solution, but not the whole picture.</p>
]]></description><pubDate>Thu, 18 Dec 2025 14:16:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46312943</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=46312943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46312943</guid></item><item><title><![CDATA[New comment by revetkn in "Fluent: A Localization System for Natural-Sounding Translations"]]></title><description><![CDATA[
<p>My project, Lokalized (from 2017, in Java), has the same goal but took a different approach to the "little language" design. I'm guessing I had the same inspiration as the Fluent authors - existing solutions were just not expressive enough for the real world. Mentioning here because I'm always super interested in seeing how others approach the problem of effective i18n (it's a bit complex). Making Fluent more of a spec was the right call imo; I did not do that with my work.<p><a href="https://lokalized.com" rel="nofollow">https://lokalized.com</a></p>
]]></description><pubDate>Thu, 18 Dec 2025 12:54:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46312066</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=46312066</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46312066</guid></item><item><title><![CDATA[New comment by revetkn in "GPT-4"]]></title><description><![CDATA[
<p>> Is cognition a set of weights on a gradient? Cognition involves conscious reasoning and understanding.<p>What is your definition of _conscious reasoning and understanding_?</p>
]]></description><pubDate>Tue, 14 Mar 2023 20:29:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=35157983</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=35157983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35157983</guid></item><item><title><![CDATA[New comment by revetkn in "JEP draft: No longer require super() and this() to appear first in a constructor"]]></title><description><![CDATA[
<p>That's how I view it as well, from an end user perspective this is removing an arbitrary rule that you're required to "just memorize" (or be surprised when your IDE complains).</p>
]]></description><pubDate>Sun, 22 Jan 2023 22:20:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=34482847</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=34482847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34482847</guid></item><item><title><![CDATA[New comment by revetkn in "JEP draft: No longer require super() and this() to appear first in a constructor"]]></title><description><![CDATA[
<p>Totally agree, and I also love that so much thought and consideration goes into how the platform gets improved over time.  Doing it "right" means taking so many things into account -- many of which are subtle -- and picking the right tradeoffs.  Hats off to the people quietly doing the deep work which makes everyone's lives better.</p>
]]></description><pubDate>Sun, 22 Jan 2023 22:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=34482691</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=34482691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34482691</guid></item><item><title><![CDATA[New comment by revetkn in "Twitter applies 7-day suspension to half a dozen journalists"]]></title><description><![CDATA[
<p>Maybe, but the last straw for me on that platform was preventing tweets from linking to arbitrary, non-doxxing Mastodon profiles (try it and see). I tested it to confirm and deactivated my account afterwards. Who would want to be on a social network like that?</p>
]]></description><pubDate>Fri, 16 Dec 2022 03:45:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=34009815</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=34009815</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34009815</guid></item><item><title><![CDATA[New comment by revetkn in "Ask HN: What are some tools / libraries you built yourself?"]]></title><description><![CDATA[
<p>Both Java.<p>Pyranid - <a href="https://www.pyranid.com" rel="nofollow">https://www.pyranid.com</a><p>I prefer SQL to ORMs and I don't like libraries with dependencies. Really simple mapping of resultsets to Java objects. Plays nicely with DI (I like Guice a lot).<p>Lokalized - <a href="https://www.lokalized.com" rel="nofollow">https://www.lokalized.com</a><p>Another no-dependencies lib. I don't think any other platform handles translations in a powerful enough way. The magic is a simple expression language that lets the translator specify rules (e.g special cases for certain languages to be more "natural sounding") instead of embedding all that logic in code.</p>
]]></description><pubDate>Mon, 17 May 2021 01:37:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=27179185</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=27179185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27179185</guid></item><item><title><![CDATA[New comment by revetkn in "Run Homebrew Natively on Apple Silicon Arm M1"]]></title><description><![CDATA[
<p>Thanks...I needed a laugh</p>
]]></description><pubDate>Mon, 23 Nov 2020 04:21:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=25183556</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=25183556</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25183556</guid></item><item><title><![CDATA[New comment by revetkn in "Fluent 1.0: a localization system for natural-sounding translations"]]></title><description><![CDATA[
<p>My take on how to solve the natural-sounding translation problem: <a href="https://www.lokalized.com/#a-more-complex-example" rel="nofollow">https://www.lokalized.com/#a-more-complex-example</a><p>The magic is a tiny expression language which understands plural cardinalities, ordinals, etc. so a translator can encode all required logic in a JSON file - the application code can be "dumb".</p>
]]></description><pubDate>Wed, 17 Apr 2019 14:19:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=19682771</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=19682771</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19682771</guid></item><item><title><![CDATA[Show HN: Lokalized – Expression-language-driven localization with CLDR support]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.lokalized.com">https://www.lokalized.com</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=14644706">https://news.ycombinator.com/item?id=14644706</a></p>
<p>Points: 13</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 27 Jun 2017 12:24:33 +0000</pubDate><link>https://www.lokalized.com</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=14644706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14644706</guid></item><item><title><![CDATA[New comment by revetkn in "Localizing “Papers, Please” (2014)"]]></title><description><![CDATA[
<p>Localizing well has a lot of complexity - gender, cardinal, ordinal, etc. rules, and then how to combine them with locale-specific special cases (e.g. in Spanish, a 15-year-old birthday girl is a quinceañera)<p>I am attempting to solve this with a small library that offers full CLDR coverage and a special expression language.<p>See <a href="https://www.lokalized.com" rel="nofollow">https://www.lokalized.com</a><p>Currently for Java 8 but am porting to JS and Python (probably Swift after those)</p>
]]></description><pubDate>Sun, 25 Jun 2017 12:45:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=14629750</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=14629750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14629750</guid></item><item><title><![CDATA[New comment by revetkn in "How Hibernate Almost Ruined My Career"]]></title><description><![CDATA[
<p>Shameless plug: if you're looking for a no-dependencies Java 8 JDBC wrapper, we have been using <a href="https://github.com/pyranid/pyranid" rel="nofollow">https://github.com/pyranid/pyranid</a> in production for a number of public-facing projects over a couple years and it has worked very well for us</p>
]]></description><pubDate>Fri, 17 Feb 2017 01:41:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=13665248</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=13665248</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13665248</guid></item><item><title><![CDATA[New comment by revetkn in "How to win the coding interview"]]></title><description><![CDATA[
<p>IMO in 2016 it is important to know the basics well enough to know if what you're doing is bad from an i18n perspective (at least for non-junior positions). Even a comment like "// TODO: localize" is OK<p>It is often a positive signal that a candidate has worked on software large enough to be used internationally or is thorough enough to worry about it. For most of us, day-to-day software work is about being thorough and careful with design and implementation, not heavy algorithmic lifting</p>
]]></description><pubDate>Tue, 31 May 2016 10:47:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=11805784</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=11805784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11805784</guid></item><item><title><![CDATA[New comment by revetkn in "How to win the coding interview"]]></title><description><![CDATA[
<p>1. "On this particular challenge, I am expecting many will use RegEx as a part of the solution"<p>Really?<p>2. "replace(/[^a-z0–9]/ig, '');"<p>If I were interviewing and a candidate did this I would ask if he/she knows what i18n is</p>
]]></description><pubDate>Tue, 31 May 2016 03:54:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=11804450</link><dc:creator>revetkn</dc:creator><comments>https://news.ycombinator.com/item?id=11804450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11804450</guid></item></channel></rss>