<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: typical182</title><link>https://news.ycombinator.com/user?id=typical182</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 01 Aug 2026 02:33:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=typical182" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by typical182 in "Golang proposal: container/: generic collection types"]]></title><description><![CDATA[
<p>From what I've seen, I don't think the core Go team was ignoring the lessons of Java or C#.<p>Here's a sample quote from Russ Cox from 11 years ago on this site: [1]<p><i>We have spoken to a few true experts in Java generics and each of them has said roughly the same thing: be very careful, it's not as easy as it looks, and you're stuck with all the mistakes you make. As a demonstration, skim through most of <a href="http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html" rel="nofollow">http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.ht...</a> and see how long before you start to think "was this really the best way to do this?"</i><p>And of course, they asked other experts for help, including Philip Wadler (of Featherweight Java and Haskell fame): [2] [3]<p><i>We’ve been thinking about generics since work on Go began, and we wrote and rejected our first concrete design in 2010. We wrote and rejected three more designs by the end of 2013. Four abandoned experiments, but not failed experiments, We learned from them, [...]</i><p><i>Last year [2018] we started exploring and experimenting again, and we presented a new design [...] and we’ve been working with programming language theory experts to understand the design better.</i><p>[1] <a href="https://news.ycombinator.com/item?id=9622417">https://news.ycombinator.com/item?id=9622417</a><p>[2] <a href="https://go.dev/blog/experiment" rel="nofollow">https://go.dev/blog/experiment</a><p>[3] <a href="https://go.dev/blog/generics-next-step#acknowledgements" rel="nofollow">https://go.dev/blog/generics-next-step#acknowledgements</a></p>
]]></description><pubDate>Fri, 31 Jul 2026 22:58:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49129462</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=49129462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49129462</guid></item><item><title><![CDATA[ATProto for Distributed Systems Engineers]]></title><description><![CDATA[
<p>Article URL: <a href="https://atproto.com/articles/atproto-for-distsys-engineers">https://atproto.com/articles/atproto-for-distsys-engineers</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48905287">https://news.ycombinator.com/item?id=48905287</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 14 Jul 2026 11:49:27 +0000</pubDate><link>https://atproto.com/articles/atproto-for-distsys-engineers</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=48905287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48905287</guid></item><item><title><![CDATA[New comment by typical182 in "Go.sum is not a lockfile"]]></title><description><![CDATA[
<p>Go modules did not get rid of vendoring. You can do 'go mod vendor' and have been able to do so since Go modules were first introduced.<p>How long the google-run module cache (aka, module proxy or module mirror) at <a href="https://proxy.golang.org" rel="nofollow">https://proxy.golang.org</a> caches the contents of modules is I think slightly nuanced.<p>That page includes:<p>> Whenever possible, the mirror aims to cache content in order to avoid breaking builds for people that depend on your package<p>But that page also discusses how modules might need to be removed for legal reasons or if a module does not have a known Open Source license:<p>> proxy.golang.org does not save all modules forever. There are a number of reasons for this, but one reason is if proxy.golang.org is not able to detect a suitable license. In this case, only a temporarily cached copy of the module will be made available, and may become unavailable if it is removed from the original source and becomes outdated.<p>If interested, there's a good overview of how it all works in one of the older official announcement blog posts (in particular, the "Module Index", "Module Authentication", "Module Mirrors" sections there):<p><a href="https://go.dev/blog/modules2019#module-index" rel="nofollow">https://go.dev/blog/modules2019#module-index</a></p>
]]></description><pubDate>Thu, 08 Jan 2026 20:28:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46546010</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46546010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46546010</guid></item><item><title><![CDATA[New comment by typical182 in "Go.sum is not a lockfile"]]></title><description><![CDATA[
<p>> <i>They may be an expert in Go, but from their writing they appear to be misunderstanding (or at least misrepresenting) how things work in other languages</i><p>Thanks for that link.<p>Based on reading through that whole discussion there just now and my understanding of the different ecosystems, my conclusion is that certainly people there are <i>telling</i> Filippo Valsorda that he is misunderstanding how things work in other languages, but then AFAICT Filippo or others chime in to explain how he is in fact not misunderstanding.<p>This subthread to me was a seemingly prototypical exchange there:<p><a href="https://lobste.rs/s/exv2eq/go_sum_is_not_lockfile#c_d26oq4" rel="nofollow">https://lobste.rs/s/exv2eq/go_sum_is_not_lockfile#c_d26oq4</a><p>Someone in that subthread tells Filippo (FiloSottile) that he is misunderstanding cargo behavior, but Filippo then reiterates which behavior he is talking about (add vs. install), Filippo does a simple test to illustrate his point, and some others seem to agree that he is correct in what he originally said.<p>That said, YMMV, and that overall discussion does certainly seem to have some confusion and people seemingly talking past each other (e.g., some people mixing up "dependents" vs. "dependencies", etc.).</p>
]]></description><pubDate>Thu, 08 Jan 2026 19:54:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46545615</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46545615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46545615</guid></item><item><title><![CDATA[New comment by typical182 in "Go-boot: bare metal Go UEFI boot manager"]]></title><description><![CDATA[
<p>There’s some more context in a proposal from the folks behind this project to upstream the needed Go runtime hooks into Go proper.<p>From what I can tell, the core Go team seems generally favorable to it, so seems like a decent chance it will happen.<p>From:<p>#73608 proposal: all: add bare metal support<p><a href="https://github.com/golang/go/issues/73608" rel="nofollow">https://github.com/golang/go/issues/73608</a><p>> Go applications built with GOOS=none would run on bare metal, without any underlying OS. All required support is provided by the Go runtime and external driver packages, also written in Go.<p>And:<p>> These hooks act as a "Rosetta Stone" for integration of a freestanding Go runtime within an arbitrary environment, whether bare metal or OS supported.</p>
]]></description><pubDate>Tue, 23 Dec 2025 23:02:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46370510</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46370510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46370510</guid></item><item><title><![CDATA[Go 1.26 Release Candidate 1 is released]]></title><description><![CDATA[
<p>Article URL: <a href="https://go.dev/doc/go1.26">https://go.dev/doc/go1.26</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46303164">https://news.ycombinator.com/item?id=46303164</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 17 Dec 2025 18:07:18 +0000</pubDate><link>https://go.dev/doc/go1.26</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46303164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46303164</guid></item><item><title><![CDATA[New comment by typical182 in "Go 1.26 Release Candidate 1 is released"]]></title><description><![CDATA[
<p>Draft 1.26 release notes:<p><a href="https://tip.golang.org/doc/go1.26" rel="nofollow">https://tip.golang.org/doc/go1.26</a></p>
]]></description><pubDate>Tue, 16 Dec 2025 20:50:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46294258</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46294258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46294258</guid></item><item><title><![CDATA[Go 1.26 Release Candidate 1 is released]]></title><description><![CDATA[
<p>Article URL: <a href="https://groups.google.com/g/golang-nuts/c/LcB-3xh5o68">https://groups.google.com/g/golang-nuts/c/LcB-3xh5o68</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46294257">https://news.ycombinator.com/item?id=46294257</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 16 Dec 2025 20:50:25 +0000</pubDate><link>https://groups.google.com/g/golang-nuts/c/LcB-3xh5o68</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=46294257</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46294257</guid></item><item><title><![CDATA[New comment by typical182 in "Go 1.25 Release Notes"]]></title><description><![CDATA[
<p>The arena experiment was essentially placed on indefinite hold:<p>> <i>The proposal to add arenas to the standard library is on indefinite hold due to concerns about API pollution.</i><p>I think the parent comment was using arenas as an example that GOEXPERIMENTs don't always move forward (like arenas), or can change while still GOEXPERIMENTs in a way that would normally not be allowed due to backward compatibility (like synctest).<p>The arena GOEXPERIMENT has not yet been dropped as of Go 1.25, but as I understand it, the plan is to remove arenas from the runtime when 'regions' are introduced, which have similar performance benefits but a much lower API impact:<p><a href="https://github.com/golang/go/discussions/70257" rel="nofollow">https://github.com/golang/go/discussions/70257</a><p>As discussed there, seeing how people actually used the arena GOEXPERIMENT influenced the 'regions' design.</p>
]]></description><pubDate>Wed, 13 Aug 2025 14:21:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=44888823</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=44888823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44888823</guid></item><item><title><![CDATA[New comment by typical182 in "Go allocation probe"]]></title><description><![CDATA[
<p>> <i>The biggest problem is any string you pass as an argument to the fmt functions is moved onto the heap</i><p>FWIW, that's not quite correct. For example, a string literal passed as a fmt argument won't be moved to the heap.<p>The upcoming Go 1.25 release has some related improvements that help strings in more cases. See for example <a href="https://go.dev/cl/649079" rel="nofollow">https://go.dev/cl/649079</a>.</p>
]]></description><pubDate>Tue, 22 Jul 2025 18:06:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44650890</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=44650890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44650890</guid></item><item><title><![CDATA[Green Tea Garbage Collector]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/golang/go/issues/73581">https://github.com/golang/go/issues/73581</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43995665">https://news.ycombinator.com/item?id=43995665</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 15 May 2025 14:48:31 +0000</pubDate><link>https://github.com/golang/go/issues/73581</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=43995665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43995665</guid></item><item><title><![CDATA[New comment by typical182 in "Visualizing 13M Bluesky users"]]></title><description><![CDATA[
<p>Bluesky and atproto seem to be built to be hackable.<p>Someone in the community recently built a searchable directory of Bluesky "Starter Packs" (which are a way for a user to publish a set of interesting people & feeds to follow, primarily to help newcomers bootstrap their experience):<p><a href="https://blueskydirectory.com/starter-packs/all" rel="nofollow">https://blueskydirectory.com/starter-packs/all</a><p>Dan Abramov posted about it earlier today, saying he liked it and:<p>"the fact that it can be done in the ecosystem is awesome. let the ecosystem cook" [1]<p>And maybe more poignantly:<p>"seeing random projects pop up in the atproto ecosystem reminds me just how much public web common were stifled by social companies closing down their APIs. an entire landscape of tools given up on and abandoned" [2]<p>[1] <a href="https://bsky.app/profile/danabra.mov/post/3lar3sdna222d" rel="nofollow">https://bsky.app/profile/danabra.mov/post/3lar3sdna222d</a><p>[2] <a href="https://bsky.app/profile/danabra.mov/post/3lar3xpuu4c2d" rel="nofollow">https://bsky.app/profile/danabra.mov/post/3lar3xpuu4c2d</a></p>
]]></description><pubDate>Tue, 12 Nov 2024 19:42:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=42118901</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=42118901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42118901</guid></item><item><title><![CDATA[New comment by typical182 in "Go: What we got right, what we got wrong"]]></title><description><![CDATA[
<p>> you can simply forbid pointers into the stack. This means that your GC doesn't need to be moving. I believe that's what Go does<p>I might have misunderstood your comment, but FWIW, Go does allow pointers into the stack from the stack.<p>When resizing/moving/copying a stack, the Go runtime does indeed find those pointers (via a stack map) and adjust them to point to the new stack locations. For example:<p><a href="https://github.com/golang/go/blob/b25f5558c69140deb652337afaab5c1186cd0ff1/src/runtime/stack.go#L678-L684">https://github.com/golang/go/blob/b25f5558c69140deb652337afa...</a><p>(The growable stacks I think replaced the segmented stacks circa Go 1.3 or so; I can't speak to whether they were contemplating growable stacks in the early days whilst considering whether to start their project with the Plan 9 toolchain, LLVM, or GCC, but to your broader point, they were likely considering multiple factors, including how quickly they could adapt the Plan 9 toolchain).</p>
]]></description><pubDate>Fri, 05 Jan 2024 04:20:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=38875648</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=38875648</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38875648</guid></item><item><title><![CDATA[Timoni – Next-Gen Package Manager for Kubernetes]]></title><description><![CDATA[
<p>Article URL: <a href="https://stefanprodan.com/blog/2023/introducing-timoni-next-gen-package-manager-for-kubernetes/">https://stefanprodan.com/blog/2023/introducing-timoni-next-gen-package-manager-for-kubernetes/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38472777">https://news.ycombinator.com/item?id=38472777</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 30 Nov 2023 12:42:52 +0000</pubDate><link>https://stefanprodan.com/blog/2023/introducing-timoni-next-gen-package-manager-for-kubernetes/</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=38472777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38472777</guid></item><item><title><![CDATA[New comment by typical182 in "Bluesky migrates to single-tenant SQLite"]]></title><description><![CDATA[
<p>The “Personal” in PDS doesn’t mean it is only for self-hosting.<p>Bluesky has a main PDS instance at <a href="https://bsky.social" rel="nofollow noreferrer">https://bsky.social</a> that serves almost all of the Bluesky user base.<p>There is a good overview of the architecture here:<p><a href="https://blueskyweb.xyz/blog/5-5-2023-federation-architecture" rel="nofollow noreferrer">https://blueskyweb.xyz/blog/5-5-2023-federation-architecture</a><p>Here’s a snippet from the protocol roadmap they published 3-4 weeks ago [1]:<p><i>Multiple PDS instances</i><p><i>The Bluesky PDS (bsky.social) is currently a monolithic PostgreSQL database with over a million hosted repositories. We will be splitting accounts across multiple instances, using the protocol itself to help with scaling.</i><p>[1] <a href="https://atproto.com/blog/2023-protocol-roadmap" rel="nofollow noreferrer">https://atproto.com/blog/2023-protocol-roadmap</a></p>
]]></description><pubDate>Tue, 07 Nov 2023 01:32:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=38171970</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=38171970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38171970</guid></item><item><title><![CDATA[New comment by typical182 in "Old Unix programs running on modern computers"]]></title><description><![CDATA[
<p>If I understand the question, I think that is rsc.io/unix/v6unix, which is at <a href="https://github.com/rsc/unix/tree/main/v6unix">https://github.com/rsc/unix/tree/main/v6unix</a>:<p><pre><code>  "Research Unix Sixth Edition (v6) kernel written in Go and using rsc.io/unix/pdp11 to run user-mode code"
</code></pre>
For example, you can see the process struct definition starting here:<p><a href="https://github.com/rsc/unix/blob/main/v6unix/proc.go#L25-L67">https://github.com/rsc/unix/blob/main/v6unix/proc.go#L25-L67</a></p>
]]></description><pubDate>Mon, 30 Oct 2023 14:07:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=38069633</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=38069633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38069633</guid></item><item><title><![CDATA[New comment by typical182 in "How to start a Go project in 2023"]]></title><description><![CDATA[
<p>Effectively yes.<p>A fix for the loop variable closure problem is now in the official proposal process, which is how language changes happen in Go.<p>It’s a concrete proposal from the core Go team and seems to be on track for acceptance:<p><a href="https://github.com/golang/go/issues/60078">https://github.com/golang/go/issues/60078</a><p>An implementation is already available on tip and in the upcoming Go 1.21 release behind a GOEXPERIMENT flag.<p>The community reaction has been extremely positive. As one approximate measure, an earlier draft of the proposal had 671 upvotes and with 0 downvotes:<p><a href="https://github.com/golang/go/discussions/56010">https://github.com/golang/go/discussions/56010</a></p>
]]></description><pubDate>Wed, 24 May 2023 01:23:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=36052896</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=36052896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36052896</guid></item><item><title><![CDATA[New comment by typical182 in "How to start a Go project in 2023"]]></title><description><![CDATA[
<p>People should essentially never set GOROOT. It's mostly a holdover. For example, Ian Lance Taylor on the core Go team wrote [0] somewhat recently:<p>"It's a special purpose hook that is almost never needed".<p>[0] <a href="https://groups.google.com/g/golang-nuts/c/qDhJbkE1QeY/m/JoV2bxWtBwAJ" rel="nofollow">https://groups.google.com/g/golang-nuts/c/qDhJbkE1QeY/m/JoV2...</a></p>
]]></description><pubDate>Tue, 23 May 2023 19:52:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=36049958</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=36049958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36049958</guid></item><item><title><![CDATA[New comment by typical182 in "How to start a Go project in 2023"]]></title><description><![CDATA[
<p>> Generics seemingly split the community. May be some libraries won’t get used because they picked the wrong side.<p>I haven't really observed that at all.<p>One thing that is going on is there hasn't been a massive disruption while everyone stops to rewrite the world in generics, and generics are not suddenly everywhere, which is what some people had predicted would happen. I think part of the reason is that in some cases another solution (closures or interfaces or whatever) can be a better fit, and the evolutionary approach to generics that Go took means you can use generics in conjunction with non-generic libraries or other pre-existing approaches without suffering from an ecosystem split.</p>
]]></description><pubDate>Tue, 23 May 2023 19:39:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=36049764</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=36049764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36049764</guid></item><item><title><![CDATA[New comment by typical182 in "How to start a Go project in 2023"]]></title><description><![CDATA[
<p>goda[0] is <i>excellent</i>. You do do things like:<p><pre><code>  # show the impact of cutting any package
  goda cut ./...:all   
</code></pre>
which prints a sorted ASCII table with stats like 'size:4.4MB loc:134171' for each package, which is an estimate the savings you'd get if you eliminated that package from your binary. That is a great way to see what is unexpectedly large compared to its value.<p>goda has a bunch of other capabilities around dependency analysis, and was written by long-time Go contributor Egon Elbre. The examples in the README are the best way to get started after 'go install github.com/loov/goda@latest'.<p>[0] <a href="https://github.com/loov/goda">https://github.com/loov/goda</a></p>
]]></description><pubDate>Tue, 23 May 2023 19:12:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=36049283</link><dc:creator>typical182</dc:creator><comments>https://news.ycombinator.com/item?id=36049283</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36049283</guid></item></channel></rss>