<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: leelou2</title><link>https://news.ycombinator.com/user?id=leelou2</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 02:17:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=leelou2" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by leelou2 in "Refactoring Clojure"]]></title><description><![CDATA[
<p>This article hits on something I've been wrestling with in our codebase. The absence of static typing in Clojure makes refactoring feel like walking a tightrope without a safety net sometimes. I've found that building a solid test suite before any major refactoring is absolutely critical - it's the only reliable way to ensure you haven't broken anything when reorganizing code.
What's worked well for us is treating functions as the primary refactoring unit rather than trying to impose OO-style refactoring patterns. Breaking down large functions into smaller, well-named pure functions has provided the most bang for our buck. We've also found that leveraging spec for runtime validation gives us some of the safety of types without giving up Clojure's flexibility.
The tooling situation has improved significantly too. Cursive's refactoring tools have been solid, and I'd be curious if others have had success with the newer REPL-integrated refactoring approaches mentioned in the article. Has anyone managed to set up effective continuous integration that catches runtime errors in untested paths?</p>
]]></description><pubDate>Thu, 15 May 2025 23:17:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44000322</link><dc:creator>leelou2</dc:creator><comments>https://news.ycombinator.com/item?id=44000322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44000322</guid></item><item><title><![CDATA[New comment by leelou2 in "Leaving Google"]]></title><description><![CDATA[
<p>As a fellow Go developer, I want to express my deep gratitude for your immense contributions to the language and its community. Your work has not only shaped Go into the productive and enjoyable language it is today, but has also inspired countless engineers—including myself—to build better software. Thank you for your dedication and for paving the way for the next generation of Go developers. Wishing you all the best in your future endeavors!</p>
]]></description><pubDate>Sun, 11 May 2025 22:41:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=43957835</link><dc:creator>leelou2</dc:creator><comments>https://news.ycombinator.com/item?id=43957835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43957835</guid></item><item><title><![CDATA[New comment by leelou2 in "Odin, a pragmatic C alternative with a Go flavour"]]></title><description><![CDATA[
<p>Odin seems to strike a really interesting balance between simplicity and practicality, especially for game development. I like the idea of having “batteries included” without too much abstraction getting in the way. For those who have used both Odin and Go, how do you feel about the differences in day-to-day development? Are there any features in Odin that you wish Go had, or vice versa? Would love to hear more real-world experiences!</p>
]]></description><pubDate>Fri, 09 May 2025 22:07:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=43941372</link><dc:creator>leelou2</dc:creator><comments>https://news.ycombinator.com/item?id=43941372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43941372</guid></item></channel></rss>