<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: euank</title><link>https://news.ycombinator.com/user?id=euank</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 11 Jun 2026 08:08:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=euank" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by euank in "Intelligent Kubernetes Load Balancing at Databricks"]]></title><description><![CDATA[
<p>I can give an n=1 anecdote here: the dns resolver used to have hard-coded caching which meant that it would be unresponsive to pod updates, and cause mini 30s outages.<p>The code in question was: <a href="https://github.com/grpc/grpc-go/blob/b597a8e1d0ce3f63ef8a7b62a23ca1fcc3a60678/internal/resolver/dns/dns_resolver.go#L84-L86" rel="nofollow">https://github.com/grpc/grpc-go/blob/b597a8e1d0ce3f63ef8a7b6...</a><p>That meant that deploying a service which drained in less than 30s would have a little mini-outage for that service until the in-process DNS cache expired, with of course no way to configure it.<p>Kuberesolver streams updates, and thus lets clients talk to new pods almost immediately.<p>I think things are a little better now, but based on my reading of <a href="https://github.com/grpc/grpc/issues/12295" rel="nofollow">https://github.com/grpc/grpc/issues/12295</a>, it looks like the dns resolver still might not resolve new pod names quickly in some cases.</p>
]]></description><pubDate>Wed, 01 Oct 2025 09:04:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45435726</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=45435726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45435726</guid></item><item><title><![CDATA[New comment by euank in "How Google got to rolling Linux releases for Desktops"]]></title><description><![CDATA[
<p>Coincidentally, Google has sorta done that too!<p>ChromiumOS/ChromeOS is built using portage, and is certainly rolling release. It's not really a traditional linux distro, but it's something.</p>
]]></description><pubDate>Wed, 13 Jul 2022 04:43:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=32079108</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=32079108</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32079108</guid></item><item><title><![CDATA[New comment by euank in "splice() and the ghost of set_fs()"]]></title><description><![CDATA[
<p>> Does anyone know if and where I could file a bug report?<p>The linux kernel does take bug reports: <a href="https://docs.kernel.org/admin-guide/reporting-issues.html" rel="nofollow">https://docs.kernel.org/admin-guide/reporting-issues.html</a><p>However, that bug probably isn't specific enough as you've described it, unless you can find the commit causing it (such as via a git bisect <a href="https://docs.kernel.org/admin-guide/bug-bisect.html" rel="nofollow">https://docs.kernel.org/admin-guide/bug-bisect.html</a>), or come up with a clearer repro.<p>Alternatively, if you're seeing the issue on a distro-maintained kernel (such as on fedora/ubuntu/debian with their kernel package), reporting the issue to the distro maintainers may be more appropriate.</p>
]]></description><pubDate>Thu, 26 May 2022 19:00:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=31522145</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=31522145</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31522145</guid></item><item><title><![CDATA[New comment by euank in "Trademark Actions Against the PostgreSQL Community"]]></title><description><![CDATA[
<p>> Email has never had explicit threading<p>The "In-Reply-To" header is described in rfc2822. It is an explicit header in the RFC that is how you create threads.<p>Every mail client I've used correctly understands how to thread reply-chains using In-Reply-To.<p>The thing you're talking about, steam receipts grouping, is not a feature of email, but a specific feature of gmail's web view which is not mandated by any RFC and indeed is not explicit threading...<p>But there is a real way to thread which is defined in the RFC, and if you use a reasonable email client (aka not gmail), every mailing list's threading will work for you.</p>
]]></description><pubDate>Mon, 13 Sep 2021 16:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=28513709</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=28513709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28513709</guid></item><item><title><![CDATA[New comment by euank in "Kubernetes is deprecating Docker runtime support"]]></title><description><![CDATA[
<p>The kubelet can talk to containerd's cri endpoint, yes, but there's one additional bit of complexity.<p>If someone wants to use kubelet + docker so that they can, for example, ssh into a node and type 'docker ps' to see containers, or have something else using the docker api see the containers the kubelet started, that won't work after re-pointing the kubelet from docker to containerd.<p>The difference here is namespacing[0], but not the linux-kernel-container-namespace, rather the containerd concept by the same name to allow "multi-tenancy" of a single containerd daemon.<p>In addition, I don't think you could have docker + cri run in the same containerd namespace since they end up using different networking and storage containerd plugins. I think that terminology is right.<p>So yeah, repointing the kubelet to containerd directly works fine, but it won't be the same thing as running docker containers.<p>[0]: <a href="https://github.com/containerd/containerd/blob/9561d938/docs/namespaces.md#how-does-multi-tenancy-work" rel="nofollow">https://github.com/containerd/containerd/blob/9561d938/docs/...</a></p>
]]></description><pubDate>Thu, 03 Dec 2020 07:54:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=25286630</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=25286630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25286630</guid></item><item><title><![CDATA[New comment by euank in "Kubernetes is deprecating Docker runtime support"]]></title><description><![CDATA[
<p>For what it's worth, there are a few cases where docker vs some other runtime does make a difference.<p>One difference is that if you 'docker build' or 'docker load' an image on a node, with docker as a runtime a pod could be started using that image, but if containerd is the runtime it would have had to be 'ctr image import'ed instead.<p>I know that minikube, at some point, suggested people use 'DOCKER_HOST=..' + 'docker build' to make images available to that minikube node, which this would cause to not work.<p>It would be nice if k8s had its own container image store so you could 'kubectl image load' in a runtime agnostic way, but unfortunately managing the fetching of container images has ended up as something the runtime does, and k8s has no awareness of above the runtime.<p>Oh, and for production clusters, a distribution moving from dockerd to containerd could break a few things, like random gunk in the ecosystem that tries to find kubernetes pods by querying the docker api and checking labels. I think there's some monitoring and logging tools that do that.<p>If distributions move from docker to docker-via-a-cri-shim, that won't break either of those use cases of course.</p>
]]></description><pubDate>Thu, 03 Dec 2020 07:40:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=25286556</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=25286556</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25286556</guid></item><item><title><![CDATA[New comment by euank in "Kubernetes is deprecating Docker runtime support"]]></title><description><![CDATA[
<p>containerd can serve CRI requests itself. This has been the case since the containerd v1.1.0 release[0], which included the cri "plugin" as an in-process part of the containerd binary. For a while, to keep up the plugin idea, it was in a separate github repo too, but these days it's in the main containerd repo directly[1].<p>[0]: <a href="https://github.com/containerd/containerd/releases/tag/v1.1.0" rel="nofollow">https://github.com/containerd/containerd/releases/tag/v1.1.0</a><p>[1]: <a href="https://github.com/containerd/containerd/tree/9561d9389d/pkg/cri" rel="nofollow">https://github.com/containerd/containerd/tree/9561d9389d/pkg...</a></p>
]]></description><pubDate>Thu, 03 Dec 2020 07:31:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=25286500</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=25286500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25286500</guid></item><item><title><![CDATA[New comment by euank in "Kubernetes is deprecating Docker runtime support"]]></title><description><![CDATA[
<p>I think that the title of this is a bit misleading.<p>Kubernetes is removing the "dockershim", which is special in-process support the kubelet has for docker.<p>However, the kubelet still has the CRI (container runtime interface) to support arbitrary runtimes. containerd is currently supported via the CRI, as is every runtime except docker. Docker is being moved from having special-case support to being the same in terms of support as other runtimes.<p>Does that mean using docker as your runtime is deprecated? I don't think so. You just have to use docker via a CRI layer instead of via the in-process dockershim layer. Since there hasn't been a need until now for an out-of-process cri->docker-api translation layer, there isn't a well supported one I don't think, but now that they've announced the intent to remove dockershim, I have no doubt that there will be a supported cri -> docker layer before long.<p>Maybe the docker project will add  built-in support for exposing a CRI interface and save us an extra daemon (as containerd did).<p>In short, the title's misleading from my understanding. The Kubelet is removing the special-cased dockershim, but k8s distributions that ship with docker as the runtime should be able to run a cri->docker layer to retain docker support.<p>For more info on this, see the discussion on this pr: <a href="https://github.com/kubernetes/kubernetes/pull/94624" rel="nofollow">https://github.com/kubernetes/kubernetes/pull/94624</a></p>
]]></description><pubDate>Wed, 02 Dec 2020 20:06:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=25280888</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=25280888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25280888</guid></item><item><title><![CDATA[New comment by euank in "One pollster’s explanation for why the polls got it wrong"]]></title><description><![CDATA[
<p>> is there a name for this bias?<p>I think it's response bias. <a href="https://en.wikipedia.org/wiki/Response_bias" rel="nofollow">https://en.wikipedia.org/wiki/Response_bias</a></p>
]]></description><pubDate>Wed, 11 Nov 2020 00:53:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=25054276</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=25054276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25054276</guid></item><item><title><![CDATA[New comment by euank in "Docker update ToS: Image retention limits imposed on free accounts"]]></title><description><![CDATA[
<p>You're right that nixos / all nix packages isn't/aren't perfectly reproducible.<p>In practice, most of the packages in the nixos base system seem to be reproducible, as tested here: <a href="https://r13y.com/" rel="nofollow">https://r13y.com/</a><p>Naturally, that doesn't prove they are perfectly reproducible, merely that we don't observe unreproducibility.<p>Nix has tooling, like `nix-build --check`, the sandbox, etc which make it much easier to make things likely to be reproducible.<p>I'm actually fairly confident that the redis package is reproducible (having run `nix-build --check` on it, and seen it have identical outputs across machines), which is part of why I picked it as my example above.<p>However, I think my point stands. Dockerfiles make no real attempt to enforce reproducibility, and rarely are reproducible.<p>Nix packages push you in the right direction, and from practical observation, usually are reproducible.</p>
]]></description><pubDate>Thu, 13 Aug 2020 18:17:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=24146386</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=24146386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24146386</guid></item><item><title><![CDATA[New comment by euank in "Docker update ToS: Image retention limits imposed on free accounts"]]></title><description><![CDATA[
<p>A Dockerfile is not a reproducible set of build instructions in most cases. I'd guess that the vast majority of Dockerfiles are not reproducible.<p>Let's look at an example dockerfile for redis (based on [0])<p><pre><code>    FROM debian:buster-slim
    RUN apt-get update; apt-get install -y --no-install-recommends gcc
    RUN wget http://download.redis.io/releases/redis-6.0.6.tar.gz && tar xvf redis* && cd redis-6.0.6 && make install
</code></pre>
(Note, modified from upstream for this example; won't actually build)<p>The unreproducible bits are the following:<p>1. FROM debian:buster-slim -- unreproducible, the base image may change<p>2. apt-get update && apt-get install -- unreproducible, will give a different version of gcc and other apt packages at different times<p>Those two bits of unreprodicble-ness are so core to the image, that they result in every other step not being reproducible either.<p>As a result, when you 'docker build' that over time, it's very unlikely you'll get a bit-for-bit identical redis binary at the other end. Even a minor gcc version change will likely result in a different binary.<p>As a contrast to this, let's look at a reproducible build of redis using nix. In nixpkgs, it looks like so [1].<p>If I want a reproducible shell environment, I simply have to pin down its dependencies, which can be done by the following:<p><pre><code>    let
      pkgs = import (builtins.fetchTarball {
        url = "https://github.com/NixOS/nixpkgs/archive/48dfc9fa97d762bce28cc8372a2dd3805d14c633.tar.gz";
        sha256 = "0mqq9hchd8mi1qpd23lwnwa88s67ac257k60hsv795446y7dlld2";
      }) {};
    in pkgs.mkShell {
      buildInputs = [ pkgs.redis];
    }
</code></pre>
If I distribute that nix expression, and say "I ran it with nix version 2.3", that is sufficient for anyone to get a bit-for-bit identical redis binary. Even if the binary cache (which lets me not compile it) were to go away, that nixpkgs revision expresses the build instructions, including the exact version of gcc. Sure, if the binary cache were deleted, it would take multiple hours for everything to compile, but I'd still end up with a bit-for-bit identical copy of redis.<p>This is true of the majority of nix packages. All commands are run in a sandbox with no access to most of the filesystem or network, encouraging reproducibility. Network access is mediated by special functions (like fetchTarball and fetchGit) which require including a sha256.<p>All network access going through those specially denoted means of network IO means it's very easy to back up all dependencies (i.e. the redis source code referenced in [1]), and the sha256 means it's easy to use mirrors without having to trust them to be unmodified.<p>It's possible to make an unreproducible nix package, but it requires going out of your way to do so, and rarely happens in practice.
Conversely, it's possible to make a reproducible dockerfile, but it requires going out of your way to do so, and rarely happens in practice.<p>Oh, and for bonus points, you can build reproduible docker images using nix. This post has a good intro to how to play with that [2].<p>[0]: <a href="https://github.com/docker-library/redis/blob/bfd904a808cf68d4b5ecc267bb4d4a1a0ca5f921/6.0/Dockerfile" rel="nofollow">https://github.com/docker-library/redis/blob/bfd904a808cf68d...</a><p>[1]: <a href="https://github.com/NixOS/nixpkgs/blob/a7832c42da266857e985161c549e1a7213f11925/pkgs/servers/nosql/redis/default.nix#L1-L43" rel="nofollow">https://github.com/NixOS/nixpkgs/blob/a7832c42da266857e98516...</a><p>[2]: <a href="https://christine.website/blog/i-was-wrong-about-nix-2020-02-10" rel="nofollow">https://christine.website/blog/i-was-wrong-about-nix-2020-02...</a></p>
]]></description><pubDate>Thu, 13 Aug 2020 17:22:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=24145769</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=24145769</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24145769</guid></item><item><title><![CDATA[New comment by euank in "Go command support for embedded static assets (files)"]]></title><description><![CDATA[
<p>This proposal is more powerful than that one rust macro, but rust's abilities around embedding files are much more powerful than go's approach.<p>This proposal allows "go build" to embed things in a very specific way, but it's not meant to be extensible.<p>Rust's 'include_bytes!' macro on the other hand is a macro in the stdlib that can be emulated in an external library. I'm fairly sure every feature of go's embed proposal could be implemented via a rust macro outside the stdlib.<p>For a specific example, I had a project where I wanted to serve the project's source code as a tarball (to comply with the AGPL license of the project). I was able to write a rust macro that made this as easy as effectively "SOURCE_TARBALL = include_repo!()" [0] to embed the output of 'git archive' in my binary.<p>Of course, there's a very conscious tradeoff being made here. In rust, "cargo build" allows arbitrary execution of code for any dependency (trivially via build.rs), while in go, "go build" is meant to be a safe operation with minimal extensibility, side effects, or slowdowns.<p>[0]: <a href="https://github.com/euank/include-repo" rel="nofollow">https://github.com/euank/include-repo</a></p>
]]></description><pubDate>Fri, 24 Jul 2020 02:54:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=23935222</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=23935222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23935222</guid></item><item><title><![CDATA[New comment by euank in "Self_update: In-place updates for Rust executables"]]></title><description><![CDATA[
<p>Go's channels aren't exposed outside a specific go process's runtime. The runtime doesn't give you any convenient way to redirect them. They're not like erlang's mailboxes at all in that regard.<p>Furthermore, channels aren't the primitive used for multiplexing IO / handling connections on a socket in go. You typically have a goroutine (e.g. 'http.ListenAndServe' spins up goroutines), and the gorutines are managed not by channels, but by the internal go runtime's scheduler and IO implementation (which internally uses epoll).<p>Because of all those things, replacing a running go process that's listening on sockets is no different from that same problem in C. You end up using SO_REUSEPORT and then passing the file-descriptors to the new process and converting them back into listeners. Channels don't end up factoring into it meaningfully.<p>If you're interested in what this looks like, cloudflare wrote a library called tableflip [0] which does this. I also forked that library [1] to handle file-descriptor handoff in a more generic way, so I've ended up digging pretty deeply into the details of how this works in go.<p>[0]: <a href="https://github.com/cloudflare/tableflip" rel="nofollow">https://github.com/cloudflare/tableflip</a><p>[1]: <a href="https://github.com/ngrok/tableroll" rel="nofollow">https://github.com/ngrok/tableroll</a></p>
]]></description><pubDate>Thu, 30 Jan 2020 02:16:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=22188318</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=22188318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22188318</guid></item><item><title><![CDATA[New comment by euank in "Amazon S3 will no longer support path-style API requests"]]></title><description><![CDATA[
<p>One of the weird peculiarities of path-style API requests was that it meant CORS headers meant nothing for any bucket pretty much. I wrote a post about this a bit ago [0].<p>I guess after this change, the cors configuration will finally do something!<p>On the flip side, anyone who wants to list buckets entirely from the client-side javascript sdk won't be able to anymore unless Amazon also modifies cors headers on the API endpoint further after disabling path-style requests.<p>[0]: <a href="https://euank.com/2018/11/12/s3-cors-pfffff.html" rel="nofollow">https://euank.com/2018/11/12/s3-cors-pfffff.html</a></p>
]]></description><pubDate>Fri, 03 May 2019 22:38:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=19822886</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=19822886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19822886</guid></item><item><title><![CDATA[New comment by euank in "Z.lua – A new cd command that navigates faster by learning your habits"]]></title><description><![CDATA[
<p>It does not currently (only linux and macOS), but porting it over should be really easy!<p>The cross platform story for rust isn't as seamless as an interpreted language like lua, but it's still good enough that it's not a huge effort to support another platform or shell.<p>> cross platform/shell support<p>Shell support should be fairly similarly easy or hard between most autojump implementations.</p>
]]></description><pubDate>Mon, 04 Feb 2019 23:29:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=19081731</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=19081731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19081731</guid></item><item><title><![CDATA[New comment by euank in "Z.lua – A new cd command that navigates faster by learning your habits"]]></title><description><![CDATA[
<p>Fair question! I didn't know a rust rewrite of autojump existed!<p>I already benchmark pazi against autojump by itself, so adding in a benchmark against autojump-rs will basically be drop-in, and I do expect pazi will still be faster, but I'll see.<p>At a glance, the differences I see are the following:<p>* pazi has extensive integration tests and benchmark code<p>* pazi doesn't fork processes into the background like autojump's shell scripts do (and therefore autojump-rs does), which avoids a few races<p>* pazi's interactive selection (z -i) makes use of the terminal's alternate buffer to avoid blowing away your scrollback, which most jumpers don't bother with.<p>* pazi has a cooler name in my opinion :)<p>These differences are not all that major. pazi is definitely short on some features, and I don't blame you if you wish to use one of the others. I'll keep working on pazi because I like using it and I'm having fun working on it / optimizing it / testing it.</p>
]]></description><pubDate>Mon, 04 Feb 2019 19:11:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=19079597</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=19079597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19079597</guid></item><item><title><![CDATA[New comment by euank in "Z.lua – A new cd command that navigates faster by learning your habits"]]></title><description><![CDATA[
<p>This looks nice! I'm especially interested in the claims of performance.<p>I've also written an autojumper[0] (in rust) after being frustrated by performance issues in other autojumpers, among other reasons.<p>For mine, I've gone to the effort to write a test and benchmark harness, and I also ended up with about 10x faster than fasd/autojump[1].<p>I'm excited to benchmark pazi against z.lua, and if needed take some ideas to be even faster :)<p>[0]: <a href="https://github.com/euank/pazi" rel="nofollow">https://github.com/euank/pazi</a><p>[1]: <a href="https://github.com/euank/pazi/blob/v0.2.0/docs/Benchmarks.md#benchmarks" rel="nofollow">https://github.com/euank/pazi/blob/v0.2.0/docs/Benchmarks.md...</a></p>
]]></description><pubDate>Mon, 04 Feb 2019 18:50:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=19079360</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=19079360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19079360</guid></item><item><title><![CDATA[New comment by euank in "CLI: Improved"]]></title><description><![CDATA[
<p>I can recommend pazi as a convenient tool for zapping around <a href="https://github.com/euank/pazi" rel="nofollow">https://github.com/euank/pazi</a><p>The readme also lists several alternatives in the same space as pazi.</p>
]]></description><pubDate>Thu, 30 Aug 2018 21:52:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=17881125</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=17881125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17881125</guid></item><item><title><![CDATA[New comment by euank in "CLI: Improved"]]></title><description><![CDATA[
<p>I've found fasd (<a href="https://github.com/clvv/fasd" rel="nofollow">https://github.com/clvv/fasd</a>) to be the most featureful of the  directory jumping tools, and it's much faster than autojump as well.<p>I'd be remiss not to mention pazi however, which is the tool I wrote to replace fasd in my own workflow: <a href="https://github.com/euank/pazi" rel="nofollow">https://github.com/euank/pazi</a><p>It's similar to autojump, but <i>much</i> faster: <a href="https://github.com/euank/pazi/blob/master/docs/Benchmarks.md#benchmarks" rel="nofollow">https://github.com/euank/pazi/blob/master/docs/Benchmarks.md...</a><p>Oh, and it's written in rust :)</p>
]]></description><pubDate>Thu, 30 Aug 2018 21:44:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=17881068</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=17881068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17881068</guid></item><item><title><![CDATA[New comment by euank in "🌉"]]></title><description><![CDATA[
<p>This is an anomaly that your explanation doesn't apply to though.<p>Notice that it has 50 points and is half an hour old. I count 12 items on the front page currently that have 50 or fewer points and are 1 or more hours old and yet remain there. These items are generally quality content (such as the tinfoil security post -- <a href="https://news.ycombinator.com/item?id=8086834" rel="nofollow">https://news.ycombinator.com/item?id=8086834</a> -- which sits at 37 points / 3 hours).<p>Your explanation of "5 votes within the first 30 minutes" completely disregards that this has as many votes as many other items on the front page, but in a fraction of the time period.</p>
]]></description><pubDate>Fri, 25 Jul 2014 22:27:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=8088004</link><dc:creator>euank</dc:creator><comments>https://news.ycombinator.com/item?id=8088004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8088004</guid></item></channel></rss>