<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: joostdevries</title><link>https://news.ycombinator.com/user?id=joostdevries</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 13:26:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=joostdevries" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by joostdevries in "We've raised $17M to build what comes after Git"]]></title><description><![CDATA[
<p>Maybe the pitch is:<p>git is distributed. Decentralised improvement. 
Local computers and their users make changes. 
These steps of local added value are then centrally combined into a shared timeline. A single product.
During the improvement the locus of control is local. 
Which means it is hard to harvest the knowledge of this local knowledge and replace it. 
And it's hard to make local users serve the central AI.<p>Not something you put in the public mission statement.
Because you might get boycotts.</p>
]]></description><pubDate>Fri, 10 Apr 2026 16:06:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47720195</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=47720195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47720195</guid></item><item><title><![CDATA[New comment by joostdevries in "Show HN: Claude Reflect – Auto-turn Claude corrections into project config"]]></title><description><![CDATA[
<p>I keep the context concise by linking from claude.md to markdown files with the hardware architecture, the network architecture, the processing tech stack. Concise and specific. And a current project md.
I mix in the parts that are relevant.
I don't have a roadmap and session log though. Good idea.</p>
]]></description><pubDate>Sun, 04 Jan 2026 08:33:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46486119</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=46486119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46486119</guid></item><item><title><![CDATA[New comment by joostdevries in "Mistral releases Devstral2 and Mistral Vibe CLI"]]></title><description><![CDATA[
<p>Very nice that there's a coding cli finally. I have a Mistral Pro account. I hope that it will be included. It's the main reason to have a Pro account tbh.</p>
]]></description><pubDate>Tue, 09 Dec 2025 17:18:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46207609</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=46207609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46207609</guid></item><item><title><![CDATA[New comment by joostdevries in "Control structures in programming languages: from goto to algebraic effects"]]></title><description><![CDATA[
<p>This 2003 interview with Anders Hejlsberg gives considerations why he didn't add checked exceptions to C#. <a href="https://www.artima.com/articles/the-trouble-with-checked-exceptions" rel="nofollow">https://www.artima.com/articles/the-trouble-with-checked-exc...</a></p>
]]></description><pubDate>Sun, 09 Nov 2025 13:47:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45865590</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=45865590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45865590</guid></item><item><title><![CDATA[New comment by joostdevries in "APL at Volvo"]]></title><description><![CDATA[
<p>I was excited at the idea of ShapeRank. A modern APL successor aimed at tensors, vectors, arrays of unbounded length.<p>Unfortunately work on it seems to have stopped two years ago. <a href="https://github.com/f5devcentral/shapeRank">https://github.com/f5devcentral/shapeRank</a></p>
]]></description><pubDate>Fri, 23 Feb 2024 08:11:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=39478126</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=39478126</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39478126</guid></item><item><title><![CDATA[New comment by joostdevries in "Dool-Hoff: A Dutch Maze with New Jerusalem at Its Centre (1705)"]]></title><description><![CDATA[
<p>For those who speak Dutch: here's a higher, more readable, resolution at the Rijksmuseum. <a href="https://www.rijksmuseum.nl/en/collection/RP-P-OB-76.978" rel="nofollow">https://www.rijksmuseum.nl/en/collection/RP-P-OB-76.978</a></p>
]]></description><pubDate>Mon, 27 Feb 2023 17:19:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=34959135</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=34959135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34959135</guid></item><item><title><![CDATA[New comment by joostdevries in "GitHub staff are required to use Teams by Sep 1, 2023"]]></title><description><![CDATA[
<p>I wonder if MS is aiming to use the conversations about software that employees are having in Teams meetings as training data for AI. To automate them away.</p>
]]></description><pubDate>Mon, 13 Feb 2023 18:38:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=34778034</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=34778034</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34778034</guid></item><item><title><![CDATA[New comment by joostdevries in "Volkswagen Originalteil"]]></title><description><![CDATA[
<p>I think Americans pronounce names like Weinstein as 'winesteen'. So perhaps the pronunciation of the latter syllable makes German origin diphthongs confusing.</p>
]]></description><pubDate>Fri, 25 Nov 2022 17:04:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=33744422</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=33744422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33744422</guid></item><item><title><![CDATA[New comment by joostdevries in "The Central Social Institution in Prague, Czechoslovakia, 1937"]]></title><description><![CDATA[
<p>Or the Steven Soderbergh movie 'Kafka'</p>
]]></description><pubDate>Tue, 31 May 2022 20:00:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=31574195</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=31574195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31574195</guid></item><item><title><![CDATA[New comment by joostdevries in "Actor system for the JVM developed by Electronic Arts"]]></title><description><![CDATA[
<p>It's an interesting idea; not having to stash messages in the actor implementation when doing an async call. I did a little experiment what that could look like using Akka and kotlin suspend functions <a href="https://github.com/joost-de-vries/akka-kotlin" rel="nofollow">https://github.com/joost-de-vries/akka-kotlin</a></p>
]]></description><pubDate>Thu, 28 Apr 2022 15:22:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=31193619</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=31193619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31193619</guid></item><item><title><![CDATA[New comment by joostdevries in "A Formal Theory of Spaghetti Code"]]></title><description><![CDATA[
<p>The need for flags in itself may be a sign of the wrong approach.
You create a shared module. 
But for some cases the handling should be different. Let's pass in a flag or configuration. So somewhere in the shared component it will handle things differently. Oh wait, there's another case. Another flag. 
Which combinations of flags are meaningful and which aren't? The nearest improvement is to put all the cases in an enumeration. But wait it's not one 'dimension'. Let's have two enumerations. And the extreme end point is that your shared module has a full blown DSL for the parameters it receives. Or even an interpreter.
The other solution that is often more understandable and debuggable in the long run is to not have the shared module call specific code for cases. But to have specific code pull in shared commonalities. No need for flags.</p>
]]></description><pubDate>Sat, 12 Mar 2022 21:02:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=30654853</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=30654853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30654853</guid></item><item><title><![CDATA[New comment by joostdevries in "APL in its modern state (2020)"]]></title><description><![CDATA[
<p>Obviously this is relevant to machine learning and data analytics. On github: <a href="https://github.com/f5devcentral/shapeRank" rel="nofollow">https://github.com/f5devcentral/shapeRank</a></p>
]]></description><pubDate>Wed, 20 Oct 2021 15:59:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=28932316</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=28932316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28932316</guid></item><item><title><![CDATA[New comment by joostdevries in "APL in its modern state (2020)"]]></title><description><![CDATA[
<p>Gilad Bracha is working on Shaperank. An APL inspired language for reactively calculating with multi dimensional arrays. Ie vectors and matrices. <a href="https://twitter.com/Gilad_Bracha/status/1450149734325256193" rel="nofollow">https://twitter.com/Gilad_Bracha/status/1450149734325256193</a></p>
]]></description><pubDate>Wed, 20 Oct 2021 13:01:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=28930128</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=28930128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28930128</guid></item><item><title><![CDATA[New comment by joostdevries in "UK to depart from GDPR"]]></title><description><![CDATA[
<p>Are you in the EU? I'm a developer in the EU and that is patently not true. Developers have to have mechanisms in place to delete gdpr data when required and not store data that's not required for you goals. 
In my experience gdpr puts a real and meaningful curb on the strong impetus to gather everything and sell it.</p>
]]></description><pubDate>Fri, 12 Mar 2021 16:47:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=26437735</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=26437735</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26437735</guid></item><item><title><![CDATA[New comment by joostdevries in "TV detector vans once prowled the streets of England"]]></title><description><![CDATA[
<p>In 1969 the national TV news broadcast in the Netherlands reported that inspectors would be driving through the streets to catch people who hadn't paid their license fee. "Surely people won't be wrapping their tvs in aluminium foil. So we'll catch them!" Aluminium foil was sold out the next day. The date was april 1st.<p><a href="https://nl.wikipedia.org/wiki/1_aprilgrap#Jaren_60" rel="nofollow">https://nl.wikipedia.org/wiki/1_aprilgrap#Jaren_60</a></p>
]]></description><pubDate>Tue, 19 Jan 2021 16:51:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=25835391</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=25835391</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25835391</guid></item><item><title><![CDATA[New comment by joostdevries in "Event Sourcing (2017)"]]></title><description><![CDATA[
<p>Your word of caution is important. For some projects it's not initially clear what the right data model and bounded contexts are. And for some projects it's just overhead.
But the converse is also true: for some projects/systems it turns out that it being events first is the _only_ way for it to work. I've encountered that the last few years with systems in logistics that show an integral view across parties.<p>The way we approached that is that we started with a standard system and refactored to event processing approach when the decomposition into bounded contexts was clear.<p>So in that sense it's similar to the right way of approaching microservices: start out with a 'monolith' that you split up.</p>
]]></description><pubDate>Thu, 02 Jan 2020 15:41:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=21936261</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=21936261</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21936261</guid></item><item><title><![CDATA[New comment by joostdevries in "Typesafe Error Handling in Kotlin"]]></title><description><![CDATA[
<p>When designing C# Anders Heljsberg decided against following Java's checked exceptions. You can find his argument against in the interview from 2003 <a href="https://www.artima.com/intv/handcuffs.html" rel="nofollow">https://www.artima.com/intv/handcuffs.html</a></p>
]]></description><pubDate>Wed, 18 Dec 2019 13:21:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=21824494</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=21824494</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21824494</guid></item><item><title><![CDATA[New comment by joostdevries in "Typesafe Error Handling in Kotlin"]]></title><description><![CDATA[
<p>The monadic approach to exceptions like it's done here has the downside of having to encode all your business logic in maps and flatmaps. All the intermediary functions will have to return Try. And all the Try values have to combined into one. That type fidding code feels like cruft that doesn't add much value.<p>And I say that having developed in Scala for years and years.<p>Of course there's still sometimes when you want processing of other items to proceed, even though this one has failed. And that's where Try is really essential. So that's where we use it only: at the topmost level.<p>It's only at that top level that we wrap the call in a Try. And that works rather well.<p>One reason to do it like this is that we want to leverage the design philosophy of Kotlin. And not be writing Scala or Haskell in Kotlin <i>). And Kotlins philosophy when it comes to exceptions turns out to be: exceptions. Which is apparent in Kotlin coroutines, channels and flows.<p></i>) that's also why we try to stay away from Arrow</p>
]]></description><pubDate>Tue, 17 Dec 2019 11:43:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=21812610</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=21812610</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21812610</guid></item><item><title><![CDATA[New comment by joostdevries in "Kotlin vs. Java"]]></title><description><![CDATA[
<p>I've developed in Scala for 5 yrs, last yr in Kotlin.
Scala spearheaded from 2007 a lot of features that nowadays are the norm for statically typed programming languages. Odersky is a visionary imo.
For a while I experienced Kotlin as Scala--. (No pattern matching?!? ) 
A bit later I discerned where Kotlin is treading its own path. The biggest things for me are: non monadic approach to  async. Which works really well. And simpler extension functions. 
I'm looking forward to trying out union types that are coming to Scala.</p>
]]></description><pubDate>Tue, 17 Dec 2019 07:08:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=21811362</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=21811362</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21811362</guid></item><item><title><![CDATA[New comment by joostdevries in "Verb-Noun vs. Noun-Verb"]]></title><description><![CDATA[
<p>I agree. Naming parts of your code is important. 
An alternative to named local vals is to either use named functions instead of lambdas: people.filter(olderThan50) or (I use Kotlin) use named extension functions: people.countOlderThan50()</p>
]]></description><pubDate>Thu, 17 Oct 2019 06:18:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=21279400</link><dc:creator>joostdevries</dc:creator><comments>https://news.ycombinator.com/item?id=21279400</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21279400</guid></item></channel></rss>