News for hackers. Stuff that matters.

az09mugen

Thanks ! I've been looking into a simple solution for blocking aws ips.
Re:Topcoat: The full full-stack framework for Rust on Saturday July 18, 2026 @08:55AM (#48957730)
The simple fact that there is the use of "full fullstack" means that word "fullstack" lost its meaning over time. So what does fullstack mean now ?
Re:A grumpy screed about AI in software engineering on Friday July 17, 2026 @10:04PM (#48954436)
Yup, just a problem of a misplaced comma I think.Let me rephrase it : "AI is used for work, but my website, and all the content in it, is entirely written by hand." I wonder why your comment gets upvotes until getting to the top.
It seems it's not enough for them.
Re:Astronomers Discover Third Galaxy Without Dark Matter on Wednesday June 24, 2026 @01:33PM (#48663153)
My 2 cents : I have also a simple idea about time dilation explaining the dark matter, but I did not look out for numbers to check if it's plausible. Simply put : the center of a galaxy is the most massive part, often hosting a blackhole, and it's so massive that time runs slower than the outer part which is lighter, giving the impression on the outside (us looking from far away) that the galaxy rotates at the same speed in the center and in the outer part.
I like the idea, especially the amendments you can visualize almost like a commit tree. They should add something to search like the oldest laws which often are deprecated and useless, in order to help get rid of them.

Last but not least, it is to maintain this website, last updates seem to be from 2022. But I can't manage to imagine if it's a lot of work or not.

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.
Unrelated, but 69KB is how much RAM Voyager 1 has.
Re:I decompiled the White House's new app on Saturday March 28, 2026 @01:41PM (#47556750)
Please don't give them ideas.
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.

https://www.azom.com/article.aspx?ArticleID=21871

https://www.uniladtech.com/news/tech-news/world-largest-sand...

Re:Some uncomfortable truths about AI coding agents on Saturday March 28, 2026 @02:56AM (#47552260)
That's exactly the feeling in this quotation :

"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."

-- Joanna Maciejewska, author and videogame enthusiast

Re:Shell Tricks That Make Life Easier (and Save Your Sanity) on Thursday March 26, 2026 @05:45PM (#47536209)
Thank you !
Thanks for your work. Just how is it possible for non-EU lobby to make vote a law in EU, and push for it ?
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.
Re:The Two Worlds of Programming on Saturday March 21, 2026 @01:09AM (#47464151)
Apparently Bjarne Stroustrup, the creator of C++ : https://bits-chips.com/article/challenging-c/
Re:The Two Worlds of Programming on Friday March 20, 2026 @03:43AM (#47451659)
"There are 2 kinds of programming languages : the ones that everyone complains about and the ones that no one uses"
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 ?
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.
Re:Zed new terms required to be 18 years old on Thursday March 05, 2026 @06:10AM (#47260267)
Thanks for the link of this unbloated version of Zed.
Re:No one wants to read your AI slop on Monday March 02, 2026 @02:30PM (#47222908)
Exactly, something along the lines of ToS;DR would be very nice : https://tosdr.org/en
Re:Typed Assembly Language on Tuesday February 24, 2026 @02:49PM (#47141899)
Here is the code edited from my laptop ;)

  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)
Re:Typed Assembly Language on Tuesday February 24, 2026 @02:44PM (#47141812)
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.
Re:Hello Worg, the Org-Mode Community on Sunday February 22, 2026 @07:56PM (#47116665)
Re:Keybee: A Keyboard Designed for Smartphones on Sunday February 22, 2026 @07:53PM (#47116645)
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".

I must ask, what could the reason(s) for a keyboard have access to a location ?

Re:Typed Assembly Language on Sunday February 22, 2026 @03:39AM (#47109409)
Same here, partial code from stackcodegen.ml in the said archive :

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)

Re:SwiftForth IDE for Windows, Linux, macOS on Saturday February 21, 2026 @08:29AM (#47100655)
I had the same feeling, so I began to read https://www.forth.com/starting-forth/1-forth-stacks-dictiona... with gforth installed with apt. And made few exercises to manipulate the stack with some words and get a grasp on it. Now I saw how it works, I came back to my imperative languages and won't come back to it. IMO my skills in forth are not really enough to see the distinction between any implementation of forth, so the first one I stumbled upon was ok.
I tried Emacs a bit after using Sublime Text for a while. I'm still using Sublime Text to this day because muscle memory, but the experience got me a deeper understanding of the capabilities of Sublime. While Emacs is profoundly hackable it feels a little bit "rough" on the edges. Sublime feels less hackable but more "clean".

I did not get IDEmacs ( https://codeberg.org/IDEmacs/IDEmacs ) to work but it basically it's an editor I would use.

For now fresh ( https://github.com/sinelaw/fresh/tree/master ) seems to be very promising.

Anyway I traded very happily the command palette Ctrl-Shift-P in Sublime for M-x and few other cool things.

Emacs will always have all my respect because of the concepts it introduced.

Yes there are python files. "View all files" will show them.
Will try that micro got which seems interesting. But what a strange way to show 243 lines of python in 5 columns : https://karpathy.ai/microgpt.html

Older »