<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: gobwas</title><link>https://news.ycombinator.com/user?id=gobwas</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 28 Oct 2026 19:32:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gobwas" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gobwas in "GPT-6.1 Terra"]]></title><description><![CDATA[
<p>I am wondering if there is a site with a perf/efficiency chart of the models over time? I am wondering is the pace still speeding up?</p>
]]></description><pubDate>Mon, 26 Oct 2026 19:57:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=50250009</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=50250009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50250009</guid></item><item><title><![CDATA[New comment by gobwas in "Show HN: TitleArt – Make text like it's 1997"]]></title><description><![CDATA[
<p>Thanks! Got my old-skulls cramped.</p>
]]></description><pubDate>Mon, 26 Oct 2026 14:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=50244044</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=50244044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50244044</guid></item><item><title><![CDATA[Gobwas/glob: a complete engine rewrite and v1.0.0 is finally here]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/gobwas/glob">https://github.com/gobwas/glob</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49481431">https://news.ycombinator.com/item?id=49481431</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 28 Aug 2026 17:00:25 +0000</pubDate><link>https://github.com/gobwas/glob</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=49481431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49481431</guid></item><item><title><![CDATA[Generic Concurrency in Go]]></title><description><![CDATA[
<p>Article URL: <a href="https://sergey.kamardin.org/articles/generic-concurrency-in-go/">https://sergey.kamardin.org/articles/generic-concurrency-in-go/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40392419">https://news.ycombinator.com/item?id=40392419</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 17 May 2024 17:44:29 +0000</pubDate><link>https://sergey.kamardin.org/articles/generic-concurrency-in-go/</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=40392419</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40392419</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>I see your point that recording must be much cheaper than exporting, and I completely agree with it.<p>Anyway how will you collect that counters inside your component (to be observed later on demand)?</p>
]]></description><pubDate>Tue, 26 May 2020 17:35:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=23314057</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23314057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23314057</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>I think all mentioned issues are related to the implementation of the user probes, not the pattern.<p>You mentioned an observation methods, but essentially they are absolutely the same as hooks, just inverted (with a bit less overhead on branching and hook call). E.g. your example with bytesReceived counter can be implemented with atomic operation and further export on demand by some other goroutine.</p>
]]></description><pubDate>Tue, 26 May 2020 16:26:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=23313117</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23313117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23313117</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>Thats true that such approach also exists.<p>But it doesn't work well in Go by several reasons.<p>For example, you usually define interface not in the package where its implemented, but where its needed. Thus you must provide such wrappers in every place where some (subset) of the `Client`'s methods are used.<p>Another reason is that such thing rejects an ability to use your struct as is, without interfaces (and thus sometimes without heap allocation for your struct).<p>And, finally, if you want to adopt such approach in proprietary/internal software, where interfaces usually change more often than in libraries, you will change code in N places instead of 1 (in best case); where N is number of instrumentation methods you want to provide "as feature".</p>
]]></description><pubDate>Tue, 26 May 2020 14:08:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=23311282</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23311282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23311282</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>Ah, cool! Thank you so much, didn't know about this parameter :D Will try it definitely.</p>
]]></description><pubDate>Tue, 26 May 2020 13:11:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=23310669</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23310669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23310669</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>I have read this article before and I really like the idea of doing so. I would love to read more about how you guys modified the compiler!</p>
]]></description><pubDate>Tue, 26 May 2020 12:21:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=23310201</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23310201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23310201</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>> <i>Yes, because then the library developer can define all of the things that COULD be interesting, and leave it to the user of the library to decide WHAT to record (filters), and WHERE to record it (exporters).</i><p>I agree that this uppercase words can be called as somewhat purposes of the tracing API. I believe also that I was talking exactly about the same approach in the article.
But I can't get how sticking to one particular library will help here? In other words, I think it will just greatly reduce the usage options.<p>What Im saying is that you can leave the generic hooks in the library (as it described in the article and gtrace) and then let the user choose which library to use inside what hooks.</p>
]]></description><pubDate>Tue, 26 May 2020 11:30:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=23309768</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23309768</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23309768</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>As a library developer, don't you need to define exactly the same trace points (hooks) in your code?<p>Am I understand it right, that you suggest instead of doing it in a generic way (any tracing method could be plugged in this way), to stick to one particular library?</p>
]]></description><pubDate>Tue, 26 May 2020 10:40:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=23309416</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23309416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23309416</guid></item><item><title><![CDATA[New comment by gobwas in "Instrumentation in Go"]]></title><description><![CDATA[
<p>Tracing term is kind of overloaded. In this article its used not as _distributed tracing_, but as _instrumenting_. E.g., Linux's trace points, or any other tools such dtrace, strace and so on. So it doesn't relate to systems design decisions.</p>
]]></description><pubDate>Tue, 26 May 2020 09:44:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=23309024</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23309024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23309024</guid></item><item><title><![CDATA[Instrumentation in Go]]></title><description><![CDATA[
<p>Article URL: <a href="https://gbws.io/articles/instrumentation-in-go/">https://gbws.io/articles/instrumentation-in-go/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=23308357">https://news.ycombinator.com/item?id=23308357</a></p>
<p>Points: 109</p>
<p># Comments: 46</p>
]]></description><pubDate>Tue, 26 May 2020 07:30:07 +0000</pubDate><link>https://gbws.io/articles/instrumentation-in-go/</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=23308357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23308357</guid></item><item><title><![CDATA[New comment by gobwas in "C Is Not a Low-level Language (2018)"]]></title><description><![CDATA[
<p><joke>Why has no one mention Go yet?</joke></p>
]]></description><pubDate>Fri, 27 Dec 2019 09:56:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=21890297</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=21890297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21890297</guid></item><item><title><![CDATA[Configuration in Go]]></title><description><![CDATA[
<p>Article URL: <a href="https://gbws.io/articles/configuration-in-go/">https://gbws.io/articles/configuration-in-go/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=21752367">https://news.ycombinator.com/item?id=21752367</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 10 Dec 2019 13:49:18 +0000</pubDate><link>https://gbws.io/articles/configuration-in-go/</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=21752367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21752367</guid></item><item><title><![CDATA[Million WebSockets and Go]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@gobwas/million-websockets-and-go-cc58418460bb">https://medium.com/@gobwas/million-websockets-and-go-cc58418460bb</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=14914409">https://news.ycombinator.com/item?id=14914409</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 02 Aug 2017 20:42:02 +0000</pubDate><link>https://medium.com/@gobwas/million-websockets-and-go-cc58418460bb</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=14914409</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14914409</guid></item><item><title><![CDATA[Golang WebSocket implementation]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/gobwas/ws">https://github.com/gobwas/ws</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=14739524">https://news.ycombinator.com/item?id=14739524</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 10 Jul 2017 20:49:27 +0000</pubDate><link>https://github.com/gobwas/ws</link><dc:creator>gobwas</dc:creator><comments>https://news.ycombinator.com/item?id=14739524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14739524</guid></item></channel></rss>