frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Fantasy Football Is More Fun When You Accept What You Can't Control

https://freddiedeboer.substack.com/p/preseason-sunday-fantasy-football
1•paulpauper•1m ago•0 comments

AI's Big Leaps Are Slowing. That Could Be a Good Thing

https://www.wsj.com/tech/ai/ais-big-leaps-are-slowing-that-could-be-a-good-thing-34c87619
1•geox•4m ago•0 comments

Doge Targeted Him on Social Media. Then the Taliban Took His Family

https://www.propublica.org/article/doge-musk-mohammad-halimi-institute-peace-taliban
2•Jimmc414•4m ago•0 comments

Anne Applebaum: 'the West doesn't understand the extremism of Putinism' [video]

https://www.youtube.com/watch?v=jm_R1N9I8ZI
1•N19PEDL2•4m ago•0 comments

Bring Back the Blue-Book Exam

https://www.chronicle.com/article/bring-back-the-blue-book-exam
1•diodorus•7m ago•0 comments

Why the Rollei 35 AF is the most futuristic analog camera ever made

https://blog.mattbass.me/p/rollei-35-af
1•babblingfish•8m ago•0 comments

China's Guowang megaconstellation is more than another version of Starlink

https://arstechnica.com/space/2025/08/china-may-have-taken-an-early-lead-in-the-race-for-a-milita...
1•rbanffy•9m ago•0 comments

Tiangong Space station crew gains AI assistant

https://global.chinadaily.com.cn/a/202508/18/WS68a27b52a310b236346f217a.html
2•rbanffy•10m ago•1 comments

Unikernel Cronjobs on AWS

https://nanovms.com/dev/tutorials/unikernel-cronjobs-on-aws
1•eyberg•10m ago•0 comments

Pennsylvania school cuts costs by using 3D printers to create violins

https://www.cbsnews.com/news/pennsylvania-school-3d-printers-violins/
1•rbanffy•10m ago•0 comments

Ask HN: Does driving keep computer programmers grounded in the real world?

1•amichail•11m ago•0 comments

San Francisco's Ultrarich Are Blocking a Zohran-Style Agenda

https://jacobin.com/2025/08/san-francisco-zohran-democratic-socialism/
2•PaulHoule•16m ago•0 comments

The insanity of integrating AI into email clients

https://www.tramlines.io/blog/why-shortwave-ai-email-with-mcp-integration-is-a-phisher-s-white-whale
1•coderinsan•18m ago•0 comments

The Blue OS Museum

https://blueosmuseum.com/
1•xk3•18m ago•0 comments

GitID: Terminal-Based Git Identity Manager Now in AUR

https://github.com/nathabonfim59/gitid
1•nathabonfim59•22m ago•0 comments

Optimizing Ourselves to Death

https://ofdollarsanddata.com/optimizing-ourselves-to-death/
1•zeroonetwothree•24m ago•0 comments

Update on My Racket Exit

https://blog.winny.tech/posts/update-on-my-racket-exit/
5•todsacerdoti•25m ago•0 comments

Nathan Lambert's ATOM Project seeks American open source AI models

https://thenewstack.io/nathan-lamberts-atom-project-seeks-american-open-source-ai-models/
1•MilnerRoute•26m ago•0 comments

The great medieval water myth (2013)

https://leslefts.blogspot.com/2013/11/the-great-medieval-water-myth.html
4•apsec112•26m ago•1 comments

Tak (Game)

https://en.wikipedia.org/wiki/Tak_(game)
1•mrtimeman•27m ago•0 comments

Restoring the Toast-O-Lator (2020)

http://www.jitterbuzz.com/indtol.html
1•wolfgang42•28m ago•0 comments

Y Combinator says Apple's App Store has hindered startup growth

https://techcrunch.com/2025/08/22/y-combinator-says-apples-app-store-has-hindered-startup-growth/
3•fauigerzigerk•29m ago•0 comments

"Emacs for Goodness' Sake", a Guide

https://github.com/cloudstreet-dev/Emacs-for-Goodness-Sake
2•DavidCanHelp•30m ago•0 comments

The latest 10 hour podcast from Lex Summarized to 18 bullets

https://andrewarrow.dev/podpapyrus/summaries/jdCKiEJpwf4.html
2•fcpguru•30m ago•1 comments

People stuck using ancient Windows computers

https://www.bbc.com/future/article/20250516-the-people-stuck-using-ancient-windows-computers
8•erickhill•36m ago•0 comments

Why the Internet Is "Dangerous" (1995)

https://www.spectacle.org/1195/danger.html
4•sundarurfriend•40m ago•0 comments

Thinking Across Languages

https://hedgehogreview.com/issues/lessons-of-babel/articles/thinking-across-languages
1•rntn•41m ago•0 comments

Show HN: VoNote – AI Conversation Recorder for iOS

https://apps.apple.com/us/app/vonote-ai-speaker-identifier/id6748281933
1•zachperkel•44m ago•0 comments

Show HN: I built Mix – an opensource, local agent for multimodal tasks

https://github.com/recreate-run/mix
2•sarath_suresh•44m ago•1 comments

Unauthorized OpenAI Equity Transactions

https://openai.com/policies/unauthorized-openai-equity-transactions/
1•wslh•48m ago•0 comments
Open in hackernews

Dynamically patch a Python function's source code at runtime

https://ericmjl.github.io/blog/2025/8/23/wicked-python-trickery-dynamically-patch-a-python-functions-source-code-at-runtime/
79•apwheele•5h ago

Comments

tovej•5h ago
Ah, self-modifying code, the more things change the more they stay the same.

Wasn't SMC one of the LISP-associated AI fields a few decades ago? iirc it's been mostly abandoned due to security issues, but some of it survives in dynamic compilation.

thrown-0825•4h ago
this will be the next big breakthrough for agents lmao
rob_c•4h ago
Aka I just learned how to modify python code whilst it's running.

Next step, here's how to load modules, resolve a dependency. Handle capabilities and dynamically inject more functionality 'live'.

Patching running machine code in memory for compiled objects is the same but you just need to work around the abstraction that is introduced by languages trying to make the whole stack human parseable.

aeonik•4h ago
And wouldn't it be nice if that Python code, instead of a string, was just more python? Then you could use your existing Python code to append, or transform sections of your code!

That's what Lisp is!

Once you see how cool that is, then you can begin to appreciate why Lisp was the defacto standard for AI programing all the way back in the 1960s!

almostgotcaught•4h ago
https://docs.python.org/3/library/ast.html
diggan•3h ago
Ah, so in Python, you have "normal code" then you have AST code. Imagine that they were exactly the same, and whenever you're writing "normal code", you're at the same time writing AST code and vice-versa.

So whenever you want, you can start using "normal code" for manipulating the "normal code" itself, and hopefully now we have yet another perspective on the same thing, for why Lisps are so awesome :)

breuleux•3h ago
I think there is potential to do something like that with template strings [1] (upcoming feature in Python 3.14). The choice of {} for interpolation isn't ideal because any code with dict and set literals becomes super awkward, but besides that, it could be super interesting for codegen.

[1] https://peps.python.org/pep-0750/

diggan•2h ago
I think what I was getting at, is the power this homoiconicity gives you when combined with macros, and I'm not sure how template strings would help with either. Say you want to have a function that receives the code passed into it, instead of whatever the code evaluated to return, could I somehow achieve that with AST and/or template strings in Python?

Say I want `what-code(1 + 1)` to receive `1 + 1` as the argument, not `2`, would either of those things let me do that? At a glance, and without diving deeper, the Ast module could make it so `what-code("1 + 1")` would let the function parse the string and get an Ast, which we could do stuff with, but it pretty much ends at that and is non-ideal for many reasons.

breuleux•1h ago
Well... what are you trying to do with "1 + 1"? Lisps are "homoiconic" in the sense that everything is a list, but honestly? When I worked with Scheme in the past, I almost never manipulated code as actual lists. It's not robust. I used match and quote/unquote. What's where I see template strings.

So what you could do is something like this:

    addition = "1 + 1"
    multiplication = t"{addition} * 7"
    result = eval(multiplication)  # result is 14
Instead of inserting addition as an exact string, producing "1 + 1 * 7" which is 8, it would parse as an AST and insert the addition node as a unit, so that you get the intended result. You could also do an alpha conversion if the injected code declares variables to avoid name clashes.

It wouldn't let you do true macros, but it would make codegen easier and less error-prone.

diggan•16m ago
> Lisps are "homoiconic" in the sense that everything is a list, but honestly?

That's not how I understand homoiconicity, "everything is a list" or not has nothing to do with it. The point is that whatever structure the compiler uses to understand the code (slightly loose), is the same code you write, since code is represented as data. But if it's maps, lists, booleans or whatever isn't the important takeaway from that.

In your example, how would I, after the multiplication line but before the result line , manipulate "1 + 1" to read something else like "2 + 1"? In Clojure for example, it would be (+ 1 1) so if you wanna change 1 to 2, you use the typical "replace item in list by index" function, but with Python you're either stuck with AST or "code-as-strings". I think that's where a lot of the complexity and error-proneness gets in.

almostgotcaught•3h ago
Ok now do the part where lisp is actually used for any remotely useful project today...
reikonomusha•3h ago
https://github.com/azzamsa/awesome-lisp-companies
almostgotcaught•3h ago
Lololol

> ITA Software by Google Airfare search engine and airline scheduling software. Cambridge, MA. Common Lisp is used for the core flight search engine. The larger Flights project is roughly equal parts CL, C++, and Java.

Read the last sentence AND this company got acquired by Google like 15 years ago. So ya my question still stands.

meesles•3h ago
> Ok now do the part where lisp is actually used for any remotely useful project today...

> So ya my question still stands.

That list has 100 companies using lisp today. Were you actually asking if any new companies write in Lisp? Cuz those exist as well - in the same list...

Not sure you know what your own question is!

almostgotcaught•2h ago
> That list has 100 companies using lisp today

https://en.m.wikipedia.org/wiki/Wikipedia:Spot_checking_sour...

meesles•2h ago
Ah yes big lisp propaganda out there trying to convince you of the lie
almostgotcaught•2h ago
Don't understand what this has to do with my point - do you think you're supposed to only verify "propaganda" sources?
reikonomusha•2h ago
You asked where Lisp is useful, and I supplied a list of companies that find (or, in some cases of recent history, found) Lisp useful. Your Google example is pertinent, because Google had the resources to wholesale eliminate its use of Lisp any time within the last 15 years, but for some reason worth pondering, hasn't. Instead, they continue to develop the product in Lisp, and continue to contribute to the Common Lisp open-source ecosystem.

But that aside, if you want a fresh look at what people are thinking about with Lisp, maybe check out the talks that were given this year at the 2025 European Lisp Symposium [1,2]. Or perhaps look at how someone shipped a platformer game on Steam with Common Lisp [3,4], and is in the finishing lap porting it to the Nintendo Switch [5].

I realize, though, that this kind of "debate" (?) is never satisfying to the instigator. If it does satisfy though, I will agree with you that—despite all of the claims of alleged productivity and power the language offers—Common Lisp remains far less popular than Python, which I assume is your only real point here.

[1] A presentation about how adding a static type system to Common Lisp à la Haskell helps write mission critical programs in defense and quantum computing: https://youtu.be/of92m4XNgrM

[2] A talk from employees of Keepit, a company that supplies a SaaS backup service, discussed how they train people on Common Lisp when employing them: https://youtu.be/UCxy1tvsjMs?t=66m51s

[3] Discusses technical details of how Lisp was used to implement a game that was actually shipped: https://reader.tymoon.eu/article/413

[4] The actual game that you can buy: https://store.steampowered.com/app/1261430/Kandria/ (This is not intended to be an advertisement and I'm unaffiliated. It's just a demonstration of a recently "shipped" product written in Common Lisp where you might not expect it.)

[5] Technical discussion of the Nintendo Switch port: https://youtu.be/kiMmo0yWGKI?t=113m20s

diggan•3h ago
> remotely useful project

Such a wide net though, what exactly constitutes a "remotely useful project" in your mind? Maybe if we figure out what the exact requirements are, we'll be able to help you with your search :)

srcreigh•2h ago
This site is written in lisp
westurner•3h ago
Is there a good way to verify self-modifying code - in Lisp, or Combo (MOSES), or Python - at runtime against a trusted baseline at loader time?

Dynamic metaprogramming is flexible but dangerous. Python is also "dynamic", meaning that code can be changed at runtime instead of only being able to accidentally pass null function pointers.

Python's metaclasses function similarly to Lisp's macros but in a consistent way: most Python code uses the standard metaclasses so that the macros don't vary from codebase to codebase. The Django "magic removal" story was about eliminating surprise and non-normative metaclassery, for example.

Does this tool monkey patch all copies of a function or just the current reference? There are many existing monkey patching libraries with tests

heap_perms•3h ago
I get that it works, and it's actually pretty cool that you can do this. But honestly, it feels like it would good, readable code into a tangled mess pretty fast.
diggan•3h ago
> it feels like it would good, readable code into a tangled mess pretty fast

It definitively can, no doubt about it. But used sparingly and only when there is no other way, it can help you remove enormous amount of boilerplate and other things, in a relatively simple, fast and safe way. In my codebases, it does lead to a lot less code, even when most projects just have 2 or 3 macros at most.

Just as one basic example that comes to mind just because I had to do it today: imagine you have a testing suite. When some assertion fails, you'd like to display what value was expected, what value it actually got, and what the exact code was. In JavaScript, I think the most you'd be able to get without involving 3rd party compilers, reading source code from disk or whatnot, would be some functions name (`myfn.toString()`), while in Clojure your macro could capture the entire source code within it, and print it, trivially.

Basically, if you want a function that can take the arguments without evaluating them before executing it, you can do so with macros but without macros you cannot do that. Personally, being able to do so leads to me finding simpler solutions, and expressing them in better ways, compared to if I didn't have them available.

oefrha•2h ago
S-expressions are a nice gimmick, but it’s not the fundamental reason why some Lisps support dynamic patching of code at runtime. Indeed you can easily imagine Lisp written in M-expressions and still support that. Or you can imagine other dynamic languages with reflection gaining this capability with a bit of will, like… check notes… Python.
reikonomusha•2h ago
S-expressions make the user interface to code generation, a component to hot-reloading, more facile. It's not a triviality or gimmick in this context.

We can see from OP that it's actually quite annoying to specify code in a non-S-expression language (or really any language lacking a meta-syntax), usually requiring either

- stuffing and interpolating strings

- building ASTs with API functions provided by the implementation in a tiresome or verbose manner

But you're right that there are more aspects to hot-reloading than just the syntax and data structure.

Common Lisp gets away with it because it actually defines the semantics of redefinition of functions and classes. For instance, the standard says what will happen to all existing FOO object instances in memory if I change

    (defclass foo ()
      ((a :initarg :a)))
to

    (defclass foo ()
      ((a :initarg :a)
       (b :initarg :b)))
and even lets the programmer customize the behavior of such a redefinition.

Few if any languages go through the trouble of actually defining these semantics, especially in the context of a compiled language (like Common Lisp), making all but the simplest instances of reloading code well defined.

charcircuit•2h ago
There is not 2 different kinds of code. That's like saying Lisp has normal code and list code.
diggan•2h ago
> There is not 2 different kinds of code

In Python in relation to ast, it does seem so yeah.

If you add two numbers in Python code, it looks like `1 + 1`, but if you use the module from `Lib/ast.py` linked above, how would it look like? I think it would be something like `Expression(body=BinOp(left=Name(id='x',ctx=Load()),op=Add(),right=Name(id='y', ctx=Load())))` which at a glance, certainly looks different than `1 + 1` in my eyes :)

In lisps, `(+ 1 1)` is just `(+ 1 1)` regardless if it's source code or AST, they're just the same thing.

miohtama•4h ago
Also check the history of monkey patching

https://en.m.wikipedia.org/wiki/Monkey_patch

faangguyindia•4h ago
Imagine if you've lisp to make ide and in a closed loop integration with LLM which extends and tests this IDE to achieve the task at hand.
1bpp•35m ago
Would it be much different than a REPL?
dfee•4h ago
Different, but you may find interest in changing function signatures, too: https://github.com/dfee/forge
zzzeek•4h ago
I really couldn't follow the use case. it looked like, they have a chain of method calls with some kind of `mark_circle().encode().properties()`, OK, so, if you want to make those methods do something different, you reach into OOP wisdom from the 1980s and write an appropriate "impl" used by whatever `alt.Chart()` is.

Someone explain to me, an old, aging programmer old enough to know UML, why this isn't some we presume very young person who has no idea how to write OOP coming up with some horrible convoluted way to do something routine?

porridgeraisin•3h ago
> aging ... UML

Oh don't worry... they still cram that down our throats in CS undergrad in one of the courses.... Forget which one. I did my UG from 2020-24

;)

breuleux•3h ago
Yeah, I've been using this trick to implement a hot reload library, to only update the specific functions that are changed without re-executing modules: https://github.com/breuleux/jurigged

I also use it in a multiple dispatch library (https://github.com/breuleux/ovld) to replace the entry point by specialized dispatch code in order to cut some overhead.

It's fun.

Also, why is every damn post these days somehow framed in an AI context? It's exhausting.

diggan•3h ago
> Also, why is every damn post these days somehow framed in an AI context? It's exhausting.

Every 5/10-year segment of my life has somehow had one or two "This is the future"-hypes running concurrently with my life. Previously it was X, now it's Y. And most of the times, everything else is somehow connected to this currently hyped subject, no matter if it's related or not.

The only thing I've found to be helpful is thinking about and changing my perspective and framing about it. I read some article like this which is just tangentially related to AI, but the meat is about something else. So mentally I just ignore the other parts, and frame it in some other way in my head.

Suddenly people can write their articles with attachments to the hyped subject but I don't mind, I'm reading it for other purposes and get other takeaways that are still helpful. A tiny Jedi mind-trick for avoiding that exhaustion :)

Twirrim•3h ago
AI, block chain, rust, go, serverless, nosql, ruby on rails..... The list goes on and on :-)

Some of it gets really annoying on the business side, because companies like Gartner jump on the trends, and they have enough influence that businesses have to pay attention. When serverless was a thing, every cloud provider effectively had to add serverless things even if it made zero sense and no customers were asking for it, simply to satisfy Gartner (and their ilk) and be seen as innovating and ahead of the curve. Same thing happened with block chain, and is currently happening with AI.

quantum_state•2h ago
wheels get reinvented again again again and again … this is quite unique to info tech … imagine mathematicians do the same, the world would be in chaos …
dkdcio•3h ago
I also find it useful to keep in mind (often more junior) people are learning new things and expressing their joy, which is a good thing. and most (junior) people learning things in tech right now are doing so in the context of AI, for better or worse

(idk if this author is “junior” per se, mostly just agreeing the shift in perspective is helpful to not get burnt out by things like this)

modeless•3h ago
Jurigged is awesome. It works really well and saves me tons of time. Thank you for making it!

I do wish there were callbacks I could subscribe to that would notify me whenever my file changed or whenever any code changed, so I could re-run some init.

My other feature request would be a way to replace function implementations even when they are currently on the stack, as some other hot reload implementations can. But I certainly understand why this would be difficult.

gjvc•3h ago
I use jurigged in conjunction with cmd2 to make command line driven tools. The combination works well because I can issue a command, watch the output, make a change, hit up-return and see the change just like that.

Thank you a bazillion for making it. It works quietly in the background without fuss, and I'm grateful for it every time I use it.

zipy124•2h ago
jurigged is great, love using it for quick GUI prototyping with imgui!
johnfn•2h ago
Jurigged is really cool - thanks for the tool!
Esophagus4•1h ago
> why is every damn post these days somehow framed in an AI context? It's exhausting.

It’s even in the real world now - most of my conversations with people in tech end up at AI eventually.

It kind of reminds me of the 2010s when non-tech people would ask me about crypto at social events.

frou_dh•1h ago
In some respects that's even nicer to use than a typical editor-integrated live-coding REPL, because one doesn't have to think about what code needs (re)sending from the source to the REPL. Just save the file and it'll be figured out which parts meaningfully changed.
sczi•1h ago
Oh that is really interesting, I was just aware of IPython's autoreload extension, I hadn't found your library. I'm also working on hot reload for python as I'm working on a development environment for python that aims to give it a development experience closer to lisp: https://codeberg.org/sczi/swanky-python/

Some minor details. You currently aren't updating functions if their freevars have changed, you can actually do that by using c-api to update __closure__ which is a readonly attribute from python:

  ctypes.pythonapi.PyFunction_SetClosure.argtypes = [ctypes.py_object, ctypes.py_object]
  ctypes.pythonapi.PyFunction_SetClosure(old, new.__closure__)
Also I think you should update __annotations__, __type_params__, __doc__, and __dict__ attributes for the function.

Rather than using gc.get_referrers I just maintain a set for each function containing all the old versions (using weakref so they go away if that old version isn't still referenced by anything). Then when a function updates I don't need to find all references, all references will be to some old version of the function so I just update that set of old functions, and all references will be using the new code. I took this from IPython autoreload. I think it is both more efficient than gc.get_referrers, and more complete as it solves the issue of references "decorated or stashed in some data structure that Jurigged does not understand". The code for that is here: https://codeberg.org/sczi/swanky-python/src/commit/365702a6c...

hot reload for python is quite tricky to fully get right, I'm still missing plenty parts that I know about and plan on implementing, and surely plenty more that I don't even know. If you or anyone else that's worked on hot reload in python wants to talk about it, I'm happy to, just reach out, my email is visible on codeberg if you're signed in.

duttish•3h ago
I used live patching of the function byte code to enforce type safety in python as an experiment. It was quite fun, took about a weekend or so :) not something for production though, due to the performance hit.
robertclaus•2h ago
Concurrency?
ath3nd•2h ago
There is a reason similar approaches are called 'monkey patching'.

Just cause you can do something doesn't mean you should. I send thoughts and prayers for the people debugging programs where this is in place.

woadwarrior01•2h ago
Greenspun's tenth rule, restated for Python instead of C/Fortran.

https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule

syngrog66•1h ago
Python being riddled with security anti-patterns -- or at least security-unfriendly ergonomics -- is one reason I tried to stop working with it.
edem•53m ago
wait a sec ... i thought you could monkey patch python code. you can only do it by using this technique?
deneb150•2m ago
Exactly, just monkey patch if you’re going to monkey patch. No idea why they would do it this way.