<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: az09mugen</title><link>https://news.ycombinator.com/user?id=az09mugen</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 09:14:13 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=az09mugen" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by az09mugen in "Verification Is the Next Bottleneck in AI-Assisted Development"]]></title><description><![CDATA[
<p>I don't want my developer job to become "specs refiner for AI" and "AI code tester". The coding part is the fun one, I prefer the other way around, let me code and let the AI do the IMHO boring parts of specs and testing.</p>
]]></description><pubDate>Fri, 10 Apr 2026 06:30:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47714343</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47714343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47714343</guid></item><item><title><![CDATA[New comment by az09mugen in "From 300KB to 69KB per Token: How LLM Architectures Solve the KV Cache Problem"]]></title><description><![CDATA[
<p>Unrelated, but 69KB is how much RAM Voyager 1 has.</p>
]]></description><pubDate>Tue, 31 Mar 2026 18:09:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591284</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47591284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591284</guid></item><item><title><![CDATA[New comment by az09mugen in "I decompiled the White House's new app"]]></title><description><![CDATA[
<p>Please don't give them ideas.</p>
]]></description><pubDate>Sat, 28 Mar 2026 17:41:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47556750</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47556750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47556750</guid></item><item><title><![CDATA[New comment by az09mugen in "European country to give free electricity instead of switching off wind turbines"]]></title><description><![CDATA[
<p>The only kind of battery capable of reliably doing what you describe is a sand battery, and there are currently only 2 in the world, and they are in Finland.<p><a href="https://www.azom.com/article.aspx?ArticleID=21871" rel="nofollow">https://www.azom.com/article.aspx?ArticleID=21871</a><p><a href="https://www.uniladtech.com/news/tech-news/world-largest-sand-battery-powers-entire-town-498137-20260327" rel="nofollow">https://www.uniladtech.com/news/tech-news/world-largest-sand...</a></p>
]]></description><pubDate>Sat, 28 Mar 2026 07:48:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47552478</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47552478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47552478</guid></item><item><title><![CDATA[New comment by az09mugen in "Some uncomfortable truths about AI coding agents"]]></title><description><![CDATA[
<p>That's exactly the feeling in this quotation :<p>"I want AI to do my laundry and dishes so that I can do art and writing, not for AI to do my art and writing so that I can do my laundry and dishes."<p>-- Joanna Maciejewska, author and videogame enthusiast</p>
]]></description><pubDate>Sat, 28 Mar 2026 06:56:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47552260</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47552260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47552260</guid></item><item><title><![CDATA[New comment by az09mugen in "Shell Tricks That Make Life Easier (and Save Your Sanity)"]]></title><description><![CDATA[
<p>Thank you !</p>
]]></description><pubDate>Thu, 26 Mar 2026 21:45:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47536209</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47536209</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47536209</guid></item><item><title><![CDATA[New comment by az09mugen in "The EU still wants to scan  your private messages and photos"]]></title><description><![CDATA[
<p>Thanks for your work. Just how is it possible for non-EU lobby to make vote a law in EU, and push for it ?</p>
]]></description><pubDate>Thu, 26 Mar 2026 05:11:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47526827</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47526827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47526827</guid></item><item><title><![CDATA[New comment by az09mugen in "I Reverse-Engineered the TiinyAI Pocket Lab from Marketing Photos"]]></title><description><![CDATA[
<p>That's why in this case I usually ask to another AI to make me a short summary with the main points. I wish the human behind the looong article idea chooses to publish a short summary directly instead.</p>
]]></description><pubDate>Mon, 23 Mar 2026 07:05:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47486281</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47486281</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47486281</guid></item><item><title><![CDATA[New comment by az09mugen in "The Two Worlds of Programming"]]></title><description><![CDATA[
<p>Apparently Bjarne Stroustrup, the creator of C++ : 
<a href="https://bits-chips.com/article/challenging-c/" rel="nofollow">https://bits-chips.com/article/challenging-c/</a></p>
]]></description><pubDate>Sat, 21 Mar 2026 05:09:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47464151</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47464151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47464151</guid></item><item><title><![CDATA[New comment by az09mugen in "The Two Worlds of Programming"]]></title><description><![CDATA[
<p>"There are 2 kinds of programming languages : the ones that everyone complains about and the ones that no one uses"</p>
]]></description><pubDate>Fri, 20 Mar 2026 07:43:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47451659</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47451659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47451659</guid></item><item><title><![CDATA[New comment by az09mugen in "Contextual commits – An open standard for capturing the why in Git history"]]></title><description><![CDATA[
<p>The WHY in the commit should just be a ticket ID or reference, at the beginning of the commit.
And IMHO in the first place the code is meant to be for humans, not machines/programs. Rhetorical question : If the LLMs are so great, why don't they just generate bytecode for binaries directly ?</p>
]]></description><pubDate>Sun, 15 Mar 2026 02:25:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47383660</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47383660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383660</guid></item><item><title><![CDATA[Gallo-Roman dodecahedron: twelve faces, zero answers?]]></title><description><![CDATA[
<p>Article URL: <a href="https://nunc.ch/en/gallo-roman-dodecahedron-twelve-faces-zero-answers/">https://nunc.ch/en/gallo-roman-dodecahedron-twelve-faces-zero-answers/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47371946">https://news.ycombinator.com/item?id=47371946</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 14 Mar 2026 00:31:54 +0000</pubDate><link>https://nunc.ch/en/gallo-roman-dodecahedron-twelve-faces-zero-answers/</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47371946</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47371946</guid></item><item><title><![CDATA[New comment by az09mugen in "Wired headphone sales are exploding. What's with the Bluetooth backlash?"]]></title><description><![CDATA[
<p>Same here. And also unlike airpods, you can't easily lose one that you can't replace. Which also renders the one left useless because you can't pair it with another orphan, what a waste.</p>
]]></description><pubDate>Thu, 12 Mar 2026 06:34:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47347227</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47347227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47347227</guid></item><item><title><![CDATA[New comment by az09mugen in "Zed new terms required to be 18 years old"]]></title><description><![CDATA[
<p>Thanks for the link of this unbloated version of Zed.</p>
]]></description><pubDate>Thu, 05 Mar 2026 11:10:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47260267</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47260267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47260267</guid></item><item><title><![CDATA[New comment by az09mugen in "No one wants to read your AI slop"]]></title><description><![CDATA[
<p>Exactly, something along the lines of ToS;DR would be very nice :
<a href="https://tosdr.org/en" rel="nofollow">https://tosdr.org/en</a></p>
]]></description><pubDate>Mon, 02 Mar 2026 19:30:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47222908</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47222908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47222908</guid></item><item><title><![CDATA[New comment by az09mugen in "Typed Assembly Language (2000)"]]></title><description><![CDATA[
<p>Here is the code edited from my laptop ;)<p><pre><code>  open Op;; open Var;; open Ctx;; open Ltal;; open Util;;

  let debug msg = ();;

  let rs = mkvar "rs";; let ra = mkvar "ra";; let rf = mkvar "rf";; let rt = mkvar "rt";; let rr = mkvar "rr";; let ru = mkvar "ru";;

  let retty stackty aty = (Code(Ctx.from_list[(rs,stackty); (ra,aty); (rt,toptp); (rf,listtp); (rr,toptp)]))

  let rec tt tctx ctx tp = match tp with Il.TVar a -> if bound tctx a then TVar a else lookup ctx a | Il.Int -> DTp Word | Il.Top -> DTp Top (* for now ) | Il.Tensor(t1,t2) -> Ref(Tcltal.mkpair (tt tctx ctx t1, tt tctx ctx t2)) | Il.Exists (alpha, tp) -> let beta = rename alpha in Exists (beta, W, tt tctx (extend ctx alpha (TVar beta)) tp) | Il.List t -> let tv = mkvar "list" in Mu(tv,NRef(Tcltal.mkpair(tt tctx ctx t, TVar tv))) | _ -> DTp(arrowtt tctx ctx tp)

  and arrowtt tctx ctx t = match t with Il.Forall(alpha,t) -> let beta = Var.rename alpha in Forall(beta, W, arrowtt tctx (extend ctx alpha (TVar beta)) t) | Il.Arrow(t1,t2) -> let t1' = tt tctx ctx t1 in let t2' = tt tctx ctx t2 in let stk = mkvar "s" in Forall (stk,M, Code(Ctx.from_list[(rs,Stack(Tensor(t1',MTVar stk))); (ra,toptp); (rt,toptp); (rf,listtp); (rr,DTp(retty (Stack(MTVar stk)) t2'))]))

    | _ -> tcfail "expected a function type in forall"

  let typetrans tctx tp = tt tctx Ctx.emp tp let arrowtypetrans tctx t1 t2 = arrowtt tctx Ctx.emp (Il.Arrow (t1,t2))

  ( Need to specify the type ty of "the rest of the stack", in most cases alpha )

  type code_env = {cctx : cctx; cs : code_section; fctx : Il.ctx; lctx : var Ctx.ctx; fp : int}

  let get_fctx cenv = cenv.fctx let get_lctx cenv = cenv.lctx

  type block_env = {cenv : code_env; ilist : instruction list; lab : clab; tctx : Ltal.tctx; rctx : Ltal.rctx}

  let get_from_cenv f benv = f benv.cenv

  exception CodeFail of string code_env exception BlockFail of string * block_env

  (* val begin_fn : code_env -> clab -> register_file -> block_env val end_fn : block_env -> code_env val emit_label : fn_env -> clab -> dtp -> block_env val emit : block_env -> instruction -> block_env -> block_env val emit_end : end_instruction -> block_env -> fn_env val drop : reg -> block_env -> block_env val free : reg -> block_env -> block_env val push : reg -> reg -> block_env -> block_env val pop : reg -> reg -> block_env -> block_env val malloc : reg -> block_env -> block_env )

  let do_print y x = (debug y; x)

  let (>>) f g x = g(f(x)) let (>>=) f h x = let y = f x in h y x

  let rec mkltp tctx rctx = Ctx.fold (fun t sk dtp -> let k = match sk with _,W -> W | _,M -> M in Forall(t,k,dtp)) tctx (Code (rctx))

  let current_ltp benv = debug ("Generalizing "^(Ctx.pp_ctx (fun _ -> "") benv.tctx)^"\n"); ( rt is caller-save *) let rctx = update benv.rctx rt toptp in (mkltp benv.tctx rctx)</code></pre></p>
]]></description><pubDate>Tue, 24 Feb 2026 19:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47141899</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47141899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47141899</guid></item><item><title><![CDATA[New comment by az09mugen in "Typed Assembly Language (2000)"]]></title><description><![CDATA[
<p>Thanks for the tip ! I'm very often on the phone for HN and I could not have done it easily. But I promise next time I'll post a big chunk of code I'll do it from my laptop, from where I can easily add 2 spaces at the beginning of each line.</p>
]]></description><pubDate>Tue, 24 Feb 2026 19:44:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47141812</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47141812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47141812</guid></item><item><title><![CDATA[New comment by az09mugen in "Hello Worg, the Org-Mode Community"]]></title><description><![CDATA[
<p>There is orgzly on Android :<p>- <a href="https://github.com/orgzly-revived/orgzly-android-revived" rel="nofollow">https://github.com/orgzly-revived/orgzly-android-revived</a></p>
]]></description><pubDate>Mon, 23 Feb 2026 00:56:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47116665</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47116665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47116665</guid></item><item><title><![CDATA[New comment by az09mugen in "Keybee: A Keyboard Designed for Smartphones"]]></title><description><![CDATA[
<p>I wanted to install it to give it a try, but in the playstore I saw the application roughly translated is "susceptible to share my approximative location with other enterprises or organization".<p>I must ask, what could the reason(s) for a keyboard have access to a location ?</p>
]]></description><pubDate>Mon, 23 Feb 2026 00:53:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47116645</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47116645</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47116645</guid></item><item><title><![CDATA[New comment by az09mugen in "Typed Assembly Language (2000)"]]></title><description><![CDATA[
<p>Same here, partial code from stackcodegen.ml in the said archive :<p>open Op;;
open Var;;
open Ctx;;
open Ltal;;
open Util;;<p>let debug msg = ();;<p>let rs = mkvar "rs";;
let ra = mkvar "ra";;
let rf = mkvar "rf";;
let rt = mkvar "rt";;
let rr = mkvar "rr";;
let ru = mkvar "ru";;<p>let retty stackty aty = (Code(Ctx.from_list[(rs,stackty);
        (ra,aty);
        (rt,toptp);
        (rf,listtp);
        (rr,toptp)]))<p>let rec tt tctx ctx tp = 
  match tp with
    Il.TVar a -> if bound tctx a then TVar a else lookup ctx a
  | Il.Int -> DTp Word
  | Il.Top -> DTp Top (* for now <i>)
  | Il.Tensor(t1,t2) -> Ref(Tcltal.mkpair (tt tctx ctx t1, tt tctx ctx t2))
  | Il.Exists (alpha, tp) -> 
      let beta = rename alpha in
      Exists (beta, W, tt tctx (extend ctx alpha (TVar beta)) tp)
  | Il.List t -> 
      let tv = mkvar "list" in
      Mu(tv,NRef(Tcltal.mkpair(tt tctx ctx t, TVar tv)))
  | _ -> DTp(arrowtt tctx ctx tp)<p>and arrowtt tctx ctx t = 
  match t with
    Il.Forall(alpha,t) -> 
      let beta = Var.rename alpha in
      Forall(beta, W, arrowtt tctx (extend ctx alpha (TVar beta)) t)
  | Il.Arrow(t1,t2) -> 
      let t1' = tt tctx ctx t1 in
      let t2' = tt tctx ctx t2 in
      let stk = mkvar "s" in
      Forall (stk,M,
       Code(Ctx.from_list[(rs,Stack(Tensor(t1',MTVar stk)));
     (ra,toptp);
     (rt,toptp);
     (rf,listtp);
     (rr,DTp(retty (Stack(MTVar stk)) t2'))]))<p><pre><code>  | _ -> tcfail "expected a function type in forall"
</code></pre>
let typetrans tctx tp = tt tctx Ctx.emp tp
let arrowtypetrans tctx t1 t2 = arrowtt tctx Ctx.emp (Il.Arrow (t1,t2))<p>(</i> Need to specify the type ty of "the rest of the stack", in most cases 
  alpha <i>)<p>type code_env = {cctx : cctx;
   cs : code_section;
   fctx : Il.ctx;
   lctx : var Ctx.ctx;
          fp : int}<p>let get_fctx cenv = cenv.fctx
let get_lctx cenv = cenv.lctx<p>type block_env = {cenv : code_env;
    ilist : instruction list;
    lab : clab;
    tctx : Ltal.tctx;
    rctx : Ltal.rctx}<p>let get_from_cenv f benv = f benv.cenv<p>exception CodeFail of string </i> code_env
exception BlockFail of string * block_env<p>(*
val begin_fn : code_env -> clab -> register_file -> block_env 
val end_fn : block_env -> code_env 
val emit_label : fn_env -> clab -> dtp -> block_env 
val emit       : block_env -> instruction -> block_env -> block_env 
val emit_end   : end_instruction -> block_env -> fn_env
val drop       : reg -> block_env -> block_env
val free       : reg -> block_env -> block_env
val push       : reg -> reg -> block_env -> block_env
val pop        : reg -> reg -> block_env -> block_env
val malloc     : reg -> block_env -> block_env
<i>)<p>let do_print y x = (debug y; x)<p>let (>>) f g x = g(f(x))
let (>>=) f h x = let y = f x  in h y x<p>let rec mkltp tctx rctx = 
    Ctx.fold (fun t sk dtp -> 
      let k = match sk with _,W -> W | _,M -> M in
      Forall(t,k,dtp)) 
    tctx (Code (rctx))<p>let current_ltp benv = 
  debug ("Generalizing "^(Ctx.pp_ctx (fun _ -> "") benv.tctx)^"\n");
  (</i> rt is caller-save *)
  let rctx = update benv.rctx rt toptp in
  (mkltp benv.tctx rctx)</p>
]]></description><pubDate>Sun, 22 Feb 2026 08:39:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47109409</link><dc:creator>az09mugen</dc:creator><comments>https://news.ycombinator.com/item?id=47109409</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47109409</guid></item></channel></rss>