<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: age123456gpg</title><link>https://news.ycombinator.com/user?id=age123456gpg</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 08 May 2026 13:50:56 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=age123456gpg" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by age123456gpg in "Cloudflare to cut about 20% workforce"]]></title><description><![CDATA[
<p>20%</p>
]]></description><pubDate>Thu, 07 May 2026 20:46:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48054724</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=48054724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48054724</guid></item><item><title><![CDATA[New comment by age123456gpg in "Show HN: I built a sub-500ms latency voice agent from scratch"]]></title><description><![CDATA[
<p>Hi all!
Check out this Handy app <a href="https://github.com/cjpais/Handy" rel="nofollow">https://github.com/cjpais/Handy</a> - a free, open source, and extensible speech-to-text application that works completely offline.<p>I am using it daily to drive Claude and it works really-well for me (much better than macOS dictation mode).</p>
]]></description><pubDate>Mon, 02 Mar 2026 22:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47225335</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=47225335</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47225335</guid></item><item><title><![CDATA[New comment by age123456gpg in "Jetbrains released skills for Claude Code to write modern Go code"]]></title><description><![CDATA[
<p>Related, Using go fix to modernize Go code <a href="https://go.dev/blog/gofix" rel="nofollow">https://go.dev/blog/gofix</a></p>
]]></description><pubDate>Sat, 21 Feb 2026 11:20:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47099738</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=47099738</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47099738</guid></item><item><title><![CDATA[New comment by age123456gpg in "Understanding the bin, sbin, usr/bin, usr/sbin split (2010)"]]></title><description><![CDATA[
<p>Here [1] is a related trick in the old Unix to run either `foo`, `/bin/foo` or `/usr/bin/foo` (apparently before `PATH` convention existed):<p><pre><code>    char string[10000];
    strp = string;
    for (i=0; i<9; i++)
        *strp++ = "/usr/bin/"[i];
    p = *argv++;
    while(*strp++ = *p++);

    // string == "/usr/bin/foo"
    execv(string+9, args); // foo (execv returns only in case of error, i.e. when foo does not exist)
    execv(string+4, args); // /bin/foo
    execv(string, args);   // /usr/bin/foo
</code></pre>
[1] <a href="https://github.com/dspinellis/unix-history-repo/blob/Research-V4-Snapshot-Development/usr/source/s2/nohup.c" rel="nofollow">https://github.com/dspinellis/unix-history-repo/blob/Researc...</a></p>
]]></description><pubDate>Sun, 04 Jan 2026 17:08:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46489880</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=46489880</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46489880</guid></item><item><title><![CDATA[New comment by age123456gpg in "FreeBSD Home NAS, part 3: WireGuard VPN, routing, and Linux peers"]]></title><description><![CDATA[
<p>You can get yourself a vanity key using <a href="https://github.com/AlexanderYastrebov/wireguard-vanity-key" rel="nofollow">https://github.com/AlexanderYastrebov/wireguard-vanity-key</a> tool:<p><pre><code>   % wireguard-vanity-key -prefix=NAS/
   private                                      public                                       attempts   duration   attempts/s
   EiBsDB8zt/G4+VWGvxW2ZznNXYmcslcIyJimNR2PpF4= NAS/aex8+IFzLePBYVNGMsSo/1/XeUZcam+Hn8wbNB4= 22619537   0s         112587360</code></pre></p>
]]></description><pubDate>Sun, 04 Jan 2026 15:24:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46488823</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=46488823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46488823</guid></item><item><title><![CDATA[New comment by age123456gpg in "Go away Python"]]></title><description><![CDATA[
<p>Official stance about supporting interpreter mode for the reference <a href="https://github.com/golang/go/issues/24118" rel="nofollow">https://github.com/golang/go/issues/24118</a></p>
]]></description><pubDate>Tue, 30 Dec 2025 10:48:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46431888</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=46431888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46431888</guid></item><item><title><![CDATA[New comment by age123456gpg in "Spinning Up an Onion Mirror Is Stupid Easy"]]></title><description><![CDATA[
<p>Indeed, be careful with anything that involves secret bits.<p>This tool uses proper crypto/rand initialisation of the starting key <a href="https://github.com/AlexanderYastrebov/onion-vanity-address/blob/314bd6641e546fd66613a823ba550cd0a4e46841/main.go#L225" rel="nofollow">https://github.com/AlexanderYastrebov/onion-vanity-address/b...</a><p>Check out my other vanity generators (they all use crypto/rand):<p><a href="https://github.com/AlexanderYastrebov/wireguard-vanity-key" rel="nofollow">https://github.com/AlexanderYastrebov/wireguard-vanity-key</a><p><a href="https://github.com/AlexanderYastrebov/age-vanity-keygen" rel="nofollow">https://github.com/AlexanderYastrebov/age-vanity-keygen</a><p><a href="https://github.com/AlexanderYastrebov/ethereum-vanity-address" rel="nofollow">https://github.com/AlexanderYastrebov/ethereum-vanity-addres...</a></p>
]]></description><pubDate>Thu, 30 Oct 2025 17:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45762930</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45762930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45762930</guid></item><item><title><![CDATA[New comment by age123456gpg in "Spinning Up an Onion Mirror Is Stupid Easy"]]></title><description><![CDATA[
<p>You can generate yourself a vanity .onion address using <a href="https://github.com/AlexanderYastrebov/onion-vanity-address" rel="nofollow">https://github.com/AlexanderYastrebov/onion-vanity-address</a> tool.
It can also generate vanity client authorization keypair.</p>
]]></description><pubDate>Thu, 30 Oct 2025 15:03:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45760829</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45760829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45760829</guid></item><item><title><![CDATA[New comment by age123456gpg in "WireGuard topologies for self-hosting at home"]]></title><description><![CDATA[
<p>WireGuard over WireGuard (WireGuard end-to-end encrypted hub and spoke) example <a href="https://www.procustodibus.com/blog/2021/12/wireguard-e2ee-hub-and-spoke/" rel="nofollow">https://www.procustodibus.com/blog/2021/12/wireguard-e2ee-hu...</a></p>
]]></description><pubDate>Sat, 04 Oct 2025 15:41:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45474118</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45474118</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45474118</guid></item><item><title><![CDATA[New comment by age123456gpg in "Consistent Hashing"]]></title><description><![CDATA[
<p><p><pre><code>  // hashItem computes the slot an item hashes to, given a total number of slots.
  func hashItem(item string, nslots uint64) uint64 {
    digest := md5.Sum([]byte(item))
    digestHigh := binary.BigEndian.Uint64(digest[8:16])
    digestLow := binary.BigEndian.Uint64(digest[:8])
    return (digestHigh | digestLow) % nslots
  }
</code></pre>
Should be using XOR: (digestHigh ^ digestLow) % nslots</p>
]]></description><pubDate>Sun, 28 Sep 2025 10:04:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45403152</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45403152</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45403152</guid></item><item><title><![CDATA[New comment by age123456gpg in "Show HN: Fast Tor Onion Service vanity address generator"]]></title><description><![CDATA[
<p>Prefix check is a fast operation compared to candidate key generation so checking several prefixes adds a small overhead compared to checking just one.<p>Wildcard support has low value for the use case in my opinion, compare:<p><pre><code>    helloyebjctfjivalxn343gppksrzdpm33qzmeeq4qnqwgrgqy75zoqd.onion
    qbtlzwabvvkvmogjy2wdvnn6gq55463jhellobwtnjsinvtxsur67oad.onion</code></pre></p>
]]></description><pubDate>Sat, 20 Sep 2025 10:27:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45312051</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45312051</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45312051</guid></item><item><title><![CDATA[New comment by age123456gpg in "Show HN: Fast Tor Onion Service vanity address generator"]]></title><description><![CDATA[
<p>It also supports distributed search, e.g. you can run it in Kubernetes without exposing the secret key to the cluster, see <a href="https://github.com/AlexanderYastrebov/onion-vanity-address?tab=readme-ov-file#kubernetes" rel="nofollow">https://github.com/AlexanderYastrebov/onion-vanity-address?t...</a></p>
]]></description><pubDate>Fri, 12 Sep 2025 19:45:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45225928</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45225928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45225928</guid></item><item><title><![CDATA[New comment by age123456gpg in "Show HN: Fast Tor Onion Service vanity address generator"]]></title><description><![CDATA[
<p>Thanks, great question!<p>In short: I got obsessed by making it as fast as possible and read a ton of elliptic curve cryptography papers.<p>It was a journey that started from reading WireGuard kernel sources,
then I was thinking about deriving IPv6 address from peer key, 
left a random comment on a dated gist <a href="https://gist.github.com/artizirk/c91e4f8c237dec07e3ad1b286f1855a7" rel="nofollow">https://gist.github.com/artizirk/c91e4f8c237dec07e3ad1b286f1...</a> 
from which I learned about vanity key concept.<p>I naturally enjoy doing performance optimization work so when I discovered incremental approach idea here
<a href="https://github.com/warner/wireguard-vanity-address/pull/15" rel="nofollow">https://github.com/warner/wireguard-vanity-address/pull/15</a> I decided to create my own tool.<p>I've implemented first version of <a href="https://github.com/AlexanderYastrebov/wireguard-vanity-key" rel="nofollow">https://github.com/AlexanderYastrebov/wireguard-vanity-key</a> and then continuously profiled it to improve performance.
From profiling I saw that field inversion and multiplication are the main operations.<p>I realized I need to reduce unnecessary computation to make it faster and for that I need to understand the underlying math which is actually quite simple.<p>I read RFCs for Curve25519 and papers from D. J. Bernstein who invented it.<p>You can see how my understanding evolved from the commit history <a href="https://github.com/AlexanderYastrebov/wireguard-vanity-key/commits/main/" rel="nofollow">https://github.com/AlexanderYastrebov/wireguard-vanity-key/c...</a><p>Once I have the fastest algorithm to generate vanity Curve25519 keypairs I can apply it to other things that use Curve25519 (<a href="https://ianix.com/pub/curve25519-deployment.html" rel="nofollow">https://ianix.com/pub/curve25519-deployment.html</a>) or Ed25519 (<a href="https://ianix.com/pub/ed25519-deployment.html" rel="nofollow">https://ianix.com/pub/ed25519-deployment.html</a>) which is an equivalent curve.<p>See also my other related projects:
* [age-vanity-keygen](<a href="https://github.com/AlexanderYastrebov/age-vanity-keygen" rel="nofollow">https://github.com/AlexanderYastrebov/age-vanity-keygen</a>) — Fast vanity age X25519 identity generator.
* [vanity25519](<a href="https://github.com/AlexanderYastrebov/vanity25519" rel="nofollow">https://github.com/AlexanderYastrebov/vanity25519</a>) — Efficient Curve25519 vanity key generator.</p>
]]></description><pubDate>Fri, 12 Sep 2025 11:51:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45221136</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45221136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45221136</guid></item><item><title><![CDATA[Show HN: Fast Tor Onion Service vanity address generator]]></title><description><![CDATA[
<p>Hello,<p>I've built the tool to generate vanity Tor Onion Service addresses:<p><pre><code>    $ onion-vanity-address allium
    Found allium... in 12s after 558986486 attempts (48529996 attempts/s)
    ---
    hostname: alliumdye3it7ko4cuftoni4rlrupuobvio24ypz55qpzjzpvuetzhyd.onion
    hs_ed25519_public_key: PT0gZWQyNTUxOXYxLXB1YmxpYzogdHlwZTAgPT0AAAAC1ooweCbRP6ncFQs3NRyK40fRwaodrmH572D8py+tCQ==
    hs_ed25519_secret_key: PT0gZWQyNTUxOXYxLXNlY3JldDogdHlwZTAgPT0AAAAQEW4Rhot7oroPaETlAEG3GPAntvJ1agF2c7A2AXmBW3WqAH0oUZ1hySvvZl3hc9dSAIc49h1UuCPZacOWp4vQ
</code></pre>
The tool checks ~45'000'000 keys per second on a laptop which is ~2x faster than widely-used mkp224o <a href="https://github.com/cathugger/mkp224o" rel="nofollow">https://github.com/cathugger/mkp224o</a><p>I've explained key performance difference here <a href="https://github.com/AlexanderYastrebov/onion-vanity-address?tab=readme-ov-file#the-fastest-search-algorithm" rel="nofollow">https://github.com/AlexanderYastrebov/onion-vanity-address?t...</a><p>Would love your feedback, thanks!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45216630">https://news.ycombinator.com/item?id=45216630</a></p>
<p>Points: 16</p>
<p># Comments: 6</p>
]]></description><pubDate>Thu, 11 Sep 2025 22:10:39 +0000</pubDate><link>https://github.com/AlexanderYastrebov/onion-vanity-address</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45216630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45216630</guid></item><item><title><![CDATA[New comment by age123456gpg in "Setting up a home VPN server with WireGuard (2019)"]]></title><description><![CDATA[
<p>You can create prefixed keys (aka vanity key) for each peer using <a href="https://github.com/AlexanderYastrebov/wireguard-vanity-key" rel="nofollow">https://github.com/AlexanderYastrebov/wireguard-vanity-key</a><p><pre><code>    $ wireguard-vanity-key --prefix=mac/
    private                                      public                                       attempts   duration   attempts/s
    Mtvsq5urRK/HRE1EfqTkZ9dtBNNBjSVPbqYBZ/BL4Qw= mac/t3wcAUhyZUti7OM4KsGQ7/V00HPRmzI3agaSplM= 37258118   1s         70119328

    $ wireguard-vanity-key --prefix=ipad/
    private                                      public                                       attempts   duration   attempts/s
    hJXdv5FKyem2WqWzduSaEhEw1H4b+6BGTIqJeYu9H1c= ipad/s6w2nBEDhmuEl/xyLeohEbfc5MWUy5D8dJHgAs= 158299886  2s         69564916</code></pre></p>
]]></description><pubDate>Mon, 08 Sep 2025 19:20:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45172654</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=45172654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45172654</guid></item><item><title><![CDATA[Show HN: Generate age encryption keys with custom prefixes]]></title><description><![CDATA[
<p>Hello,<p>I built a tool that generates age (modern file encryption <a href="https://github.com/FiloSottile/age" rel="nofollow">https://github.com/FiloSottile/age</a>) keys with vanity prefixes.<p>The key innovation is using the fastest search algorithm available – it can check ~40'000'000 keys per second on a laptop, finding 6-character prefixes within a minute.<p>For example, running `age-vanity-keygen hacker` will find a key like:<p><pre><code>  $ age-vanity-keygen hacker
  Found age1hacker... in 23s after 973647953 attempts (42686172 attempts/s)
  # created: 2025-08-18T22:22:22+02:00
  # public key: age1hackerxf9wukrzxfjt56xmq7c3y5ua5ylgrk0pmhlmdsg3773q8qh3ym6v
  AGE-SECRET-KEY-1K9G5Y6DRJPSXUFE2ELZULCG6SET7YC0676KR33WXSULW2CDHLGGS0EMJA2
</code></pre>
The output is identical to the standard `age-keygen` tool, so it's a drop-in replacement when you want memorable or branded public keys.<p>I've packaged it as both a Go binary and Docker image. The core algorithm is in a separate library (<a href="https://github.com/AlexanderYastrebov/vanity25519" rel="nofollow">https://github.com/AlexanderYastrebov/vanity25519</a>) if anyone wants to use it for other X25519-based systems.<p>Would love your feedback, thanks!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44945227">https://news.ycombinator.com/item?id=44945227</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 18 Aug 2025 20:54:23 +0000</pubDate><link>https://github.com/AlexanderYastrebov/age-vanity-keygen</link><dc:creator>age123456gpg</dc:creator><comments>https://news.ycombinator.com/item?id=44945227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44945227</guid></item></channel></rss>