<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: lobster_johnson</title><link>https://news.ycombinator.com/user?id=lobster_johnson</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 20 May 2026 11:29:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lobster_johnson" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by lobster_johnson in "Revive – Fast, configurable, extensible linter for Go"]]></title><description><![CDATA[
<p>Thanks for the clarification. I saw the readme, and I assumed (wrongly) that each rule just receive a file name.<p>I wonder where you draw the line between a "linter aggregator" and a "linter". golangci-lint incorporates all the rules themselves, though it imports the linter logic as libraries, so I'm not sure that it's fair to call it an aggregator. Gometalinter runs linters as child processes and I don't think it contains any linter code, so it's a pure aggregator.<p>My point is that while your project is admirable, the Go world isn't large enough for so many linter projects. Personally, I just want <i>one</i> good linter that is maintained and that incorporates all the rules I want.</p>
]]></description><pubDate>Sat, 02 Jun 2018 15:36:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=17214990</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17214990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17214990</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>I've not used Berkshelf, but I <i>suspect</i> your problems were related to Chef and the fact that they've built their own dependency system that also interacts with Bundler/RubyGems.<p>Anecdotally, my company has used Ruby since around 2004, and Bundler since its first release, and we never had any issues. That doesn't mean <i>nobody</i> has ever had any issues (clearly! [2]), but it generally seems like Ruby package management is a solved problem, and that it would be a good model for any dependency system to use.<p>Bundler does have one feature (or misfeature) that Russ Cox criticizes: "bundle install some_gem" can cause unrelated gems' minor (or maybe it's minor) versions to be upgraded even if you don't tell it to. I've never liked that, and would much prefer to use "bundler update" to perform explicit upgrades. But I don't think that behaviour is at all tied to its solver, or that MVS is needed to fix it.<p>[1] <a href="https://github.com/bundler/bundler/issues/5068" rel="nofollow">https://github.com/bundler/bundler/issues/5068</a><p>[2] <a href="https://github.com/bundler/bundler/issues" rel="nofollow">https://github.com/bundler/bundler/issues</a></p>
]]></description><pubDate>Wed, 30 May 2018 15:31:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=17188485</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17188485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17188485</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Thanks for the explanation!<p>The fact that dep parses import statements (as does Glide) is something I've never liked. It means that if you run "dep ensure --add" on something not yet imported, it will complain, and the next "ensure" will remove it. This is never in line with how I actually work. I need the dependencies before I can import them! There's no editor/IDE in existence that lets you autocomplete libraries that haven't been installed yet.<p>It also means that "dep ensure" parses my code to discover things not yet added to Gopkg.toml. That's upside down to me. I want it to parse its lockfile and nothing else; the lockfile is what should inform its decisions about what to install so that my code works, my code shouldn't be driving the lockfile! If I try to compile my code and it imports stuff that isn't in the lockfile, it should fail, and dep shouldn't try to "repair" itself with stuff that I didn't list as an explicit dependency.<p>I'm sure there are edge cases where the current behaviour can be considered rational, but I don't know what they are. As you point out, dep has to do a lot of work -- but why? Running "dep ensure" when the vendor directory is in perfect sync with the lockfile should take no time at all, and certainly shouldn't need to access the network. Yet it takes the same amount of time with or without a lockfile.</p>
]]></description><pubDate>Wed, 30 May 2018 05:51:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=17185389</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17185389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17185389</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>> Now Cox's solution might indeed be better (though I think it's an overkill ...<p>vgo is actually much, much <i>simpler</i> than dep. The sheer number of words in Russ Cox's series of blog posts belies its simplicity. vgo doesn't need a SAT solver. If you look at many of the issues dep is struggling with, they're related to solving N libraries with transitive dependencies up the wazoo.<p>Cox's long treatise reflects the complexity of the problem space. Developers tend to brush off package management as being simple. But once you include range-based version constraints and transitive dependencies, it gets a bit messier. Look at NPM and Yarn; they're <i>still</i> struggling to get all the details right. On the other hand, there's Ruby's Bundler. It came out in 2009, RubyGems in 2004, and I've never had a single issue with the toolchain (other than messing up my own constraints). I don't know what kind of magic elixir they were drinking, but somehow those guys managed to nail it from day one.</p>
]]></description><pubDate>Wed, 30 May 2018 03:15:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184780</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184780</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Testing and package management aren't mutually exclusive. If you're in a monorepo, all your code evolves in lockstep. A core tenet of versioned package management is to get <i>reproducible</i> builds that only need to break once you <i>choose</i> to evolve forward in time (i.e. upgrade).<p>Historically, <i>most</i> languages (C, C++, pre-Maven Java) haven't had package management at all, and so dependencies have typically been managed by vendoring the code (or JAR files). JAR files worked okay, but vendoring incurs maintenance overhead that isn't acceptable in today's environment. git submodules are theoretically a solution, but also high-maintenance.</p>
]]></description><pubDate>Wed, 30 May 2018 02:58:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184689</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184689</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184689</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Here [1] is the "dep ensure -v" output for a project of mine. It takes almost 12 seconds even when there are no changes to the actual file. I don't know why, or whether it's actually the solver (though the output seems to indicate it).<p>[1] <a href="https://gist.github.com/atombender/7c28f1d371fcb139e1e742a086501d8f" rel="nofollow">https://gist.github.com/atombender/7c28f1d371fcb139e1e742a08...</a></p>
]]></description><pubDate>Wed, 30 May 2018 02:53:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184663</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184663</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184663</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Every Go project I've used uses git tags prefixed with "v", e.g. v1.0.3.<p><a href="https://github.com/gogo/protobuf" rel="nofollow">https://github.com/gogo/protobuf</a><p><a href="https://github.com/olivere/elastic" rel="nofollow">https://github.com/olivere/elastic</a><p><a href="https://github.com/golang/protobuf" rel="nofollow">https://github.com/golang/protobuf</a><p><a href="https://github.com/sanity-io/litter" rel="nofollow">https://github.com/sanity-io/litter</a></p>
]]></description><pubDate>Wed, 30 May 2018 01:22:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184247</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184247</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Nothing yet. The new tools should land in 1.11, but will be an experimental opt-in, with the aim of full support in 1.12.</p>
]]></description><pubDate>Wed, 30 May 2018 01:18:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184222</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184222</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Cox discusses Cargo here, and why he doesn't like it: <a href="https://research.swtch.com/vgo-repro" rel="nofollow">https://research.swtch.com/vgo-repro</a></p>
]]></description><pubDate>Wed, 30 May 2018 01:13:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184192</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184192</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>The vgo proposal explicitly rejects the "Cargo way" [1]. There's no lock file, and the MVS algorithm requires, as far as I recall, that the go.mod file is modified whenever the developer wants to update to a new version.<p>[1] <a href="https://research.swtch.com/vgo-repro" rel="nofollow">https://research.swtch.com/vgo-repro</a></p>
]]></description><pubDate>Wed, 30 May 2018 01:13:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=17184187</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17184187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17184187</guid></item><item><title><![CDATA[New comment by lobster_johnson in "The vgo proposal is accepted. Now what?"]]></title><description><![CDATA[
<p>Rust/Cargo had the luxury of being a greenfield project that could adopt semver from the beginning, whereas Go made the mistake of starting out, and then going <i>years</i>, without any official package management solution. As a result, Go has  a swathe of applications and libraries that use specific workflows as well as a mélange of community-developed package management tools such as godep, Glide and dep. The semver standard, in particular, has been inconsistently adopted by the Go community.<p>In other words, any new Go tool either has to support/import existing code, or to wipe the slate clean and say that for a package to be importable it has to follow a new spec. dep decided on the former, and my impression is that this has had unfortunate consequences, because that inherits a lot of historical baggage.<p>We've been using dep for a while (having escaped the bugfest that is Glide, which used a very similar approach), and it's pretty evident that the solver is buggy and slow and also complicated enough that fixing issues like [1] can only be done by a select few that already understand the codebase. I'm not in a position to judge what the causes of all of these issues are, though I'd wager they're not entirely unrelated to the inherent complexity of SAT solving. The current dep issue tracker is full [2] of reports mentioning the solver, not to mention that dep currently has problems with known libraries such as the Kubernetes client [3] and Protobuf. (Google-related projects have historically used godep.) Again, possibly related to this specific implementation and not necessarily something that would apply to a hypothetical "Cargo for Go", but I don't know.<p>Any idea how Cargo compares to dep overall?<p>[1] <a href="https://github.com/golang/dep/issues/1306" rel="nofollow">https://github.com/golang/dep/issues/1306</a> — this one is a nightmare if you work anything related to Kubernetes.<p>[2] <a href="https://github.com/golang/dep/issues?q=is%3Aissue+is%3Aopen+solver" rel="nofollow">https://github.com/golang/dep/issues?q=is%3Aissue+is%3Aopen+...</a><p>[3] <a href="https://github.com/golang/dep/issues/1207" rel="nofollow">https://github.com/golang/dep/issues/1207</a></p>
]]></description><pubDate>Wed, 30 May 2018 00:11:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=17183835</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17183835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17183835</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Will Kubernetes Collapse Under the Weight of Its Complexity?"]]></title><description><![CDATA[
<p>You missed my point; I didn't say it's new, I said it was simpler than it might seem, and that thinking of it as a state machine makes it easier to understand what the core of Kubernetes really is.<p>And of course "nothing but a pattern" is nonsense. Pre-container systems like Puppet and Chef -- which are also, vaguely, based on converging real state towards desired state -- are firmly rooted in the traditional Unix model of mutable boxes. You can't implement a consistent reconciliation loop if your state can't be cleanly encapsulated (as with containers).</p>
]]></description><pubDate>Tue, 29 May 2018 02:32:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=17176047</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17176047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17176047</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Will Kubernetes Collapse Under the Weight of Its Complexity?"]]></title><description><![CDATA[
<p>Disagree. OpenShift and CNCF are arguably exactly that, but Kubernetes itself isn't. It came out of the engineering team at Google, and its technical merit shouldn't be confused with the considerable marketing effort being put behind it.<p>Docker Swarm is much more deserving of this kind of cynicism -- a weak, badly designed solution forced on users by a company that's realizing their invention has been commoditized and is no longer a platform they control. Swarm was redesigned at one point to work more like Kubernetes because they realized it was a much saner model.<p>Kubernetes has more complexity, but it does scale down to single-node clusters.</p>
]]></description><pubDate>Tue, 29 May 2018 00:51:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=17175658</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17175658</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17175658</guid></item><item><title><![CDATA[New comment by lobster_johnson in "An amateur investigator's hunt for the Zodiac killer"]]></title><description><![CDATA[
<p>Wonderful novel, though. The book is by the great Friedrich Dürrenmatt, and is basically a deconstruction, as well as a subversion, of the detective novel (in fact, its subtitle is "Requiem for the Detective Novel").</p>
]]></description><pubDate>Mon, 28 May 2018 21:51:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=17175088</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17175088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17175088</guid></item><item><title><![CDATA[New comment by lobster_johnson in "APL deserves its renaissance too"]]></title><description><![CDATA[
<p>J and K are extremely terse, though. They just chose other ASCII symbols that exist on everyone's keyboard.</p>
]]></description><pubDate>Mon, 28 May 2018 21:46:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=17175059</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17175059</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17175059</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Why “children,” not “childs”? (2016)"]]></title><description><![CDATA[
<p>I meant neuter! I studied German for three years in school, but my brain got its wires crossed there for a second.</p>
]]></description><pubDate>Mon, 28 May 2018 00:40:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=17169987</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17169987</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17169987</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Why “children,” not “childs”? (2016)"]]></title><description><![CDATA[
<p>At this point gender in most languages has almost nothing to do with the semantic meaning of the words themselves -- biological gender or whatever -- and we might as well call it something less culturally loaded like "noun class". A famous example is "das Mädchen" in German -- a masculine (edit: neuter, I mean!) noun for a biologically feminine person. Languages are littered with such inconsistencies, and as a language learner almost all of the genders are <i>not</i> discoverable from the semantic meaning of the word. Why is "ei bok" (Norwegian for "a book") feminine, when it's categorically an inanimate thing?</p>
]]></description><pubDate>Mon, 28 May 2018 00:00:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=17169848</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17169848</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17169848</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Ask HN: Why not create DOM Tree / CSSDOM in back end before sending to browser?"]]></title><description><![CDATA[
<p>Sure, it might work. A binary format still has to be <i>parsed</i>, of course, but it would likely be a little more efficient.<p>One question is whether that efficiency gain would be worth the hassle of a binary format. Binary formats have generally not been a good fit for the web; DNS and HTTP/2 are the only widespread protocols I can remember off the top of my head that are binary. gRPC is binary, and look at the lack of mature toolchains to work with it -- while there are some tools now, the selection is minuscule compared to those available for HTML and CSS.<p>Binary formats are also trickier to extend and keep backwards-compatible.</p>
]]></description><pubDate>Sun, 27 May 2018 03:51:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=17165367</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17165367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17165367</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Golangci-lint: next generation of Go linters runner, 5x faster than gometalinter"]]></title><description><![CDATA[
<p>I've been waiting for something like this! Gometalinter is notoriously inefficient, and it's always bothered me that it runs every linter separately as opposed to parsing the code once and then running analysis on it. There's really no need to spread lint logic around in dozens of little projects when a single, monolithic linter (with modular rules) would be much easier to make performant. This project looks exactly like what's needed.<p>The only negative is the name -- I understand the desire to market your hosted linting product, but "golangci-lint" is hard to remember and something of a mouthful.</p>
]]></description><pubDate>Sat, 26 May 2018 03:50:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17160096</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17160096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17160096</guid></item><item><title><![CDATA[New comment by lobster_johnson in "Kubernetes Containerd Integration Goes GA"]]></title><description><![CDATA[
<p>I don't see it mentioned in the GKE release notes, so I assume there's no option to enable it yet.</p>
]]></description><pubDate>Thu, 24 May 2018 21:29:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=17148591</link><dc:creator>lobster_johnson</dc:creator><comments>https://news.ycombinator.com/item?id=17148591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17148591</guid></item></channel></rss>