<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: srparish</title><link>https://news.ycombinator.com/user?id=srparish</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 29 Jul 2026 02:55:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=srparish" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by srparish in "Steel Bank Common Lisp version 2.6.7"]]></title><description><![CDATA[
<p>An extensible LLM agent (such as <a href="https://pi.dev/" rel="nofollow">https://pi.dev/</a> or maybe hermes) written in common lisp could be interesting. Conditions and restarts and general debugging and repair of the live system, fast startup, native execution speeds, ability to add or replace or modify core functionality on the fly, solid multi-threading support, dynamic introspection including documentation, CLOS and multiple dispatch, saved images.</p>
]]></description><pubDate>Tue, 28 Jul 2026 23:11:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49091256</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=49091256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49091256</guid></item><item><title><![CDATA[New comment by srparish in "Passkeys were invented by engineers with zero understanding of consumer brain"]]></title><description><![CDATA[
<p>If you have it enabled, and you're in custody or at a border or similar, and have biometric auth enabled on your phone/computer, they can hold it up to your face or force you to put your finger on it to unlock it. Search warrant be damned.</p>
]]></description><pubDate>Wed, 22 Jul 2026 20:23:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=49012890</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=49012890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49012890</guid></item><item><title><![CDATA[New comment by srparish in "JDK 20 G1/Parallel/Serial GC Changes"]]></title><description><![CDATA[
<p>Any word on when some of project amber features will come out of preview? I get excited each JVM release for some of those features, but it seems like most of the releases the preview count just gets bumped, and a few more get added to the preview holding pattern.</p>
]]></description><pubDate>Fri, 17 Mar 2023 20:22:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=35202386</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=35202386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35202386</guid></item><item><title><![CDATA[New comment by srparish in "How to replace estimations and guesses with a Monte Carlo simulation"]]></title><description><![CDATA[
<p>The book "How to Measure Anything" by Douglas W. Hubbard has a chapter on using Monte Carlo simulations to do project planning and gather estimates. It's successfully been used for project planning large complex projects like building nuclear power plants, or projects that NASA or the Navy or similar have done.<p>The approach is slightly different then the article above describes. Instead it has each engineer go through calibration exercises until they can fairly accurately produce 5th and 95th confidence interval estimates. Then each engineer provides 5th and 95th confidence interval estimates for each item that needs to be worked on. Those confidence intervals are kept separate. You can then run a Monte Carlo simulation where each piece of work is weighted randomly assigned to each engineer that provided estimates for that particular item, and randomly picks a number based off their provided confidence interval estimate on how long it ends up taking them to complete the item for this particular simulation.<p>I was on a small team that used the above technique. We were in a large company trying to launch a new product, and given manufacturing lead time, and seasonality of the market demand, it was very important that we could provide a good estimate to the business when we could have the software portion of the MVP completed. The business provided us with what they thought the MVP features were, we further added in engineering tasks that weren't business facing, but needed to be completed. We confidence interval estimated those, and then also confidence interval estimated our personal vacation days, sick days, as well as a bucket of "unidentified work". The 80th percentile Monte Carlo simulation put us out a little more then a year. Our actual delivery was off by only a week from the Monte Carlo tp80; I don't remember in which direction, but it wasn't consequential to the business.</p>
]]></description><pubDate>Wed, 06 Oct 2021 14:56:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=28773907</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=28773907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28773907</guid></item><item><title><![CDATA[New comment by srparish in "Green vs. Brown Programming Languages"]]></title><description><![CDATA[
<p>> it's hard to find a project from years ago which doesn't "just work" with `go run`<p>That's not been my experience. On a team I was on, even code from six months prior would sometimes be difficult to compile. They keep changing how GOPRIVATE works, or how modules work, or how vendoring works with modules.</p>
]]></description><pubDate>Thu, 22 Apr 2021 20:00:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=26907459</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=26907459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26907459</guid></item><item><title><![CDATA[New comment by srparish in "Green vs. Brown Programming Languages"]]></title><description><![CDATA[
<p>They had the limbo language in plan9, which has similar features and quirks. It seems most probable that the outcome of the 45 minute conversation wasn't "let's build a language from scratch", but rather "let's iterate on limbo".</p>
]]></description><pubDate>Thu, 22 Apr 2021 19:54:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=26907398</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=26907398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26907398</guid></item><item><title><![CDATA[New comment by srparish in "A categorized list of all Java and JVM features since JDK 8 to 16"]]></title><description><![CDATA[
<p>Verbosity of code is more of a go thing these days:<p><pre><code>  hasThing := false
  for _, v := range stuff {
    if checkForThing(v) {
      hasThing = true
      break
    }
  }
  if !hasThing {
    return false
  }
</code></pre>
Java:<p><pre><code>  if !stuff.stream().anyMatch(v -> checkForThing(v)) {
    return false;
  }
</code></pre>
In the 2020s, loops are the new "goto", too much boiler-plate and ways to subtly be incorrect, much safer to use higher-level collection methods.</p>
]]></description><pubDate>Thu, 01 Apr 2021 22:04:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=26666759</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=26666759</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26666759</guid></item><item><title><![CDATA[New comment by srparish in "Go Turns 10"]]></title><description><![CDATA[
<p>+ By declaring a field/variable []Thing vs []*Thing you get different for loop semantics. Way to easy to think your mutating the array item, but only mutating a local copy or vice versa. If you change the field/variable you need to audit all your code to make sure you haven't broken things.<p>+ gofmt feels way out of date. These days clang-format (c++), prettier (typescript), black (python), scalafmt (scala) take care of wrapping/unwrapping lines such as function definitions or function calls. They basically cover all formatting needs so you never have to manually format anything.<p>+ Scope of element in for-range loop isn't right, so capturing that scope in a lambda does the wrong thing with no warning.<p>+ Encourages use of indexes; which is error prone, most modern languages allow writing most code without needing indexes using map/filter/reduce or comprehensions.<p>+ No help from type-system for use of pointer without nil check.<p>+ Very easy to get nils in places one would hope to be able to prohibit them in. EG Using pointer as a poor man's unique_ptr<> means that I also get optional<> symantics (without the type checking) when I don't want or expect such. Also allows for aliasing when I don't want or expect such.<p>+ Difference between '=' and ':=' is silly, especially since ':=' can be used to reassign values. Even more frustrating that ':=' creates shadowing in nested scopes, so doesn't always do what one would expect it would do, such as accidentally creating a shadowed 'err' that doesn't get checked.<p>+ if/switch should be allowed to be expressions, allowing much safer single-expression initialization of variables, rather then requiring default initialization and mutation, which is much easier to get wrong.</p>
]]></description><pubDate>Fri, 08 Nov 2019 20:46:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=21486535</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=21486535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21486535</guid></item><item><title><![CDATA[New comment by srparish in "Go Turns 10"]]></title><description><![CDATA[
<p>By productive you mean having developers repeatedly manually create loops that are the poor and verbose equivalents of map(), filter(), and reduce()? Out of go, scala, c++, java, python, typescript; go is the least productive language I've used in the last decade.</p>
]]></description><pubDate>Fri, 08 Nov 2019 20:32:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=21486420</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=21486420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21486420</guid></item><item><title><![CDATA[New comment by srparish in "AWS Fargate Deep Dive"]]></title><description><![CDATA[
<p>My understanding is with EKS or similar you still have to manually size your kubernetes cluster, that is you have to make sure there's enough hardware instances in your kubernetes cluster for whatever scaling you'll need. With fargate you're effectively using AWS's own cluster. Your service can scale up and down, and you only pay for the resources that your service actually uses.</p>
]]></description><pubDate>Sun, 15 Sep 2019 03:38:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=20975437</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=20975437</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20975437</guid></item><item><title><![CDATA[New comment by srparish in "Ask HN: Why Isn't Functional Programming Taking Over?"]]></title><description><![CDATA[
<p>Kotlin, java has been adding functional features</p>
]]></description><pubDate>Tue, 02 Apr 2019 05:24:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=19551306</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=19551306</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19551306</guid></item><item><title><![CDATA[New comment by srparish in "Security Through Transparency"]]></title><description><![CDATA[
<p><a href="https://eprint.iacr.org/2014/1004.pdf" rel="nofollow">https://eprint.iacr.org/2014/1004.pdf</a></p>
]]></description><pubDate>Fri, 13 Jan 2017 06:01:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=13388761</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=13388761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13388761</guid></item><item><title><![CDATA[New comment by srparish in "Ask HN: As a developer, how can I take advantage of time spent driving to work?"]]></title><description><![CDATA[
<p>- Software Engineering Daily: <a href="https://softwareengineeringdaily.com/category/podcast/" rel="nofollow">https://softwareengineeringdaily.com/category/podcast/</a><p>- Changelog: <a href="https://changelog.com/podcast" rel="nofollow">https://changelog.com/podcast</a><p>- Functional Geekery: <a href="https://www.functionalgeekery.com/" rel="nofollow">https://www.functionalgeekery.com/</a><p>- CppCast: <a href="http://cppcast.com/" rel="nofollow">http://cppcast.com/</a></p>
]]></description><pubDate>Sun, 20 Nov 2016 21:23:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=13001316</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=13001316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13001316</guid></item><item><title><![CDATA[New comment by srparish in "Elm is Wrong"]]></title><description><![CDATA[
<p>Language wise scala.js[1] with cats[2] or scalaz[3]. The FRP story there is unfortunately more complicated.<p>1| <a href="https://www.scala-js.org/" rel="nofollow">https://www.scala-js.org/</a>
2| <a href="http://typelevel.org/cats/" rel="nofollow">http://typelevel.org/cats/</a>
3| <a href="http://scalaz.github.io/scalaz/" rel="nofollow">http://scalaz.github.io/scalaz/</a></p>
]]></description><pubDate>Wed, 09 Nov 2016 07:38:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=12907221</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=12907221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12907221</guid></item><item><title><![CDATA[New comment by srparish in "Typelevel Scala"]]></title><description><![CDATA[
<p>Are future versions of cats going to require the typelevel scala?</p>
]]></description><pubDate>Fri, 26 Aug 2016 20:38:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=12369142</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=12369142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12369142</guid></item><item><title><![CDATA[New comment by srparish in "Bi-Directional Replication for PostgreSQL v1.0"]]></title><description><![CDATA[
<p><a href="http://bdr-project.org/docs/stable/index.html" rel="nofollow">http://bdr-project.org/docs/stable/index.html</a></p>
]]></description><pubDate>Sat, 13 Aug 2016 05:50:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=12280443</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=12280443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12280443</guid></item><item><title><![CDATA[New comment by srparish in "Julia by Example"]]></title><description><![CDATA[
<p>I also don't have a lot of need for scientific computing; Julia has the potential to be a really compelling replacement for Python for general purpose scripting.</p>
]]></description><pubDate>Thu, 25 Dec 2014 18:37:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=8796832</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=8796832</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8796832</guid></item><item><title><![CDATA[New comment by srparish in "Julia Package Ecosystem Pulse"]]></title><description><![CDATA[
<p>Not a book, but scipy had a two-part introduction to Julia talk that's worth watching:<p>part 1: <a href="https://www.youtube.com/watch?v=vWkgEddb4-A" rel="nofollow">https://www.youtube.com/watch?v=vWkgEddb4-A</a><p>part 2: <a href="https://www.youtube.com/watch?v=I3JH5Bg46yU" rel="nofollow">https://www.youtube.com/watch?v=I3JH5Bg46yU</a></p>
]]></description><pubDate>Fri, 21 Nov 2014 20:32:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=8643239</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=8643239</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8643239</guid></item><item><title><![CDATA[New comment by srparish in "Julia: A fresh approach to numerical computing"]]></title><description><![CDATA[
<p>That's great to see. It's sometimes hard to keep up with everything that's going on. Incidentally I really got a kick out of the recent s/Uint/UInt/ rename (<a href="https://github.com/JuliaLang/julia/issues/8905" rel="nofollow">https://github.com/JuliaLang/julia/issues/8905</a>). It took a day or so to propose and do it. To compare, java will probably never fix it's spelling oddities (for example int and Integer). Very refreshing to see fundamental things like that be fixed and so quickly!</p>
]]></description><pubDate>Sat, 08 Nov 2014 15:44:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=8577158</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=8577158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8577158</guid></item><item><title><![CDATA[New comment by srparish in "Julia: A fresh approach to numerical computing"]]></title><description><![CDATA[
<p>* lack of threads: they do support multiple processes which can be useful for splitting up work for large computation, but not a substitute for threads<p>* module compilation is not cached, so if you use very many modules your start-up times can be slow<p>* error messages sometimes require some head scratching. For example, it's not uncommon to get an error that there's no available function convert(::SomeType, (Some, Args)) when there's no obvious convert() to be seen in the code in question. Occasionally the stack trace will be missing from errors, or there won't be a line number. Obviously this is improving quickly, but can be frustrating.</p>
]]></description><pubDate>Sat, 08 Nov 2014 15:21:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=8577073</link><dc:creator>srparish</dc:creator><comments>https://news.ycombinator.com/item?id=8577073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8577073</guid></item></channel></rss>