Funny, marketing types see that as hopelessly boring nerdcore that doesn't have any appeal but they're wrong because that article appeals to:
* people who like pretty pictures
* people who like Depeche Mode
* people who know how to string a few logic gates to blink an LED (e.g. it's appealing to somebody who knows about digital electronics from the beginning levels to the most advanced)
as well as others. Ken stared out blogging about very ordinary Arduino projects but he did it consistently and with heart and then discovered chip decapping and became the legend we know. That's the kind of blogging that will put you on top.
My master narrative is that most of our ancestors were doing subsistence agriculture just a few lifetimes ago.
For instance my father-in-law was in fascist (no kidding!) Italy which got attacked by fascist (Nazis!) Germany and had their farm ruined, their wine barrels spilled. Many members of his family wound up in Binghamton NY where their social networks channeled them into certain occupations. (Splits pretty well based on unionized/self-employed and across gender: construction, Italian restaurants, K12 education, hairdressers; my French Canadian and Polish relatives in New England seem to all be in law enforcement or some other kind of "first response", even the girls, except for the pro hockey player who now coaches college hockey and lives with his husband; if any of them tried to break into teaching at college, newspaper reporting, or things that other ethnic groups specialize in, they'd discover the same baffling barriers that black people would encounter)
A friend of my son has mental health problems I can't DX (e.g. "pathological narcissism" is a sign, i see "body dysmorphia" is a symptom even if it is a DX in the DSM) but his mom who grew up in rural China (educated, got a medical certificate which doesn't let her practice here, thinks it was a mistake because she knows many people who got really rich thanks to economic expansion back home and is seriously committed to an evangelical church that should teach her better) believes the DX is "possessed by demons" which was a culturally universal and common DX almost everywhere throughout almost all of human history and prehistory.
I worked for a startup where there were two Indians (a Reddy and a Juggernaut, Hindus will get a clear understanding of their social position based on that) who grew up in a village about 30 miles from Bangalore, got educated in that city, got more education here, and wound up working together where they stuck up for each other like blood brothers. Like many Indians I've met working in the industry, the younger struggled in the US, not least with the immigration authorities, and I tried really hard to communicate my sympathy, admiration and respect but failed as so I often have with Indians in his position.
Various "BiPOC" histories are equally valid yet basically the same story (farm to city via severe trauma) if you separate them from the label which erases the reality: e.g. still on the farm in Africa, got torn away against their will, deliberate destruction of their culture in the past, present (and future so long as the idea that "the holocaust should never happen again" displaces the reality that genocide happens over and over again,) etc which is general but can't really be understood without the personal specifics.
"Cargo cult", "BiPOC" and many other terms ought to get phased out and replaced by better and more detailed stories.
My experience is sometimes it works amazingly well like you say, and sometimes it doesn't.
LLMs are great at translations, like "convert this SQL to JooQ" or "convert this Chinese text to English". If you were going from Haskell -> Rust it might have trouble fighting with the borrow checker, or it might not if your memory usage patterns were straightforward or you can "RC all the things". Haskell's a particularly good target because less state means less complexity thinking about state.
FWIW even with machine translations (on GPT-4o) I do get occasional hallucinations. Like, it'll add an additional sentence or relative clause that wasn't in the original. It'll still make sense in context, so the overall meaning is the same, but it's not what I'd expect from, say, a human translator. (For context, I know enough of both languages—English and Japanese—to be able to verify this myself.)
It doesn't happen very often—maybe 1 out of 50 times?—but it's definitely a somewhat regular occurrence. And ofc, it's not just a result of the fact that every language is different and so the same meaning will need to be expressed differently—it's actually hallucinating bona fide content.
Oh, and IME it doesn't ask clarifying questions that a human translator would know are necessary (at least without explicit prompting to do so, which I admittedly haven't tried). So when translating from a high-context language like Japanese, it'll come up with a translation that works in some contexts but is meaningless in others. I figure this is related to the overconfidence issue that's prevalent with (current) LLMs.
Just tried this using similar prompting to the original and it required several rounds of telling it about compiler errors before generating something that looked suspiciously like a _very_ basic version of "nom", without any of the state/position tracking or the nice error model in megaparsec. I suspect anyone talking about instances where doing something like this "just works" is a grifter/aspiring AI influencer.
I spent a lot of time thinking about no/low code and one conclusion I came to was that there was "the program" and then there was the way it displayed. Consider
the topology of the connection between the blocks is essential to execute the program; that doesn't require coordinates for the blocks, but the visual editor does. The ideal tool has a clean separation between these. People are dimly aware of the "hairball" graph problem and looking for a visualization algorithm that banishes them:
yet the real problem is that if your goal is to communicate you want to tell stories with visualizations and you need a visualization organized around a story -- and for each story you tell you need a different visualization.
I see the same thing with literate software. I can think of a number of interesting stories to tell about last month's chess program (e.g. "move generation", "alpha-beta search", for instance.) For a particular story I want to focus on certain things and completely eliminate other things. The same code might appear in more than one story. To make all this work there has to be a clean separation.
The fundamental question here is one which I don't think there is an agreed-upon answer for:
>What does an algorithm look like?
I am working on a rather visually-oriented tool, and while I did a fair bit of early development using BlockSCAD, and also have access to OpenSCAD Graph Editor, it hasn't made sense to show the algorithms visually because it's a lot of work making them suitably expressive.
One almost wishes that the specialized library used for:
a 'conspiracy theorist' who died mysteriously in 2000 at the age of 48. He would make large numbers of pencil sketches (50+) that started out as hairballs and gradually he'd try different layouts until they told a clear story. (At least some of the conspiracies, such as BCCI, were real, thus the quotes)
The same kind of work is necessary if you want to reveal some network of relationships that is essential to understanding some technological system, rule base, etc.
As a kid I felt algebra >> geometry (like I want to divide an angle by three and why waste my time with a system that can't! sure you can learn what a system can and can't do but that can be taught more directly with examples from computing) so as much as I read about Elements in math books by the likes of Martin Gardner it struck me as serious malpractice that "Great Books" advocates wanted kids to read it. (It's better than reading Newton's Principia if you want to learn physics or calculus though...)
I like what that site is trying to do but the upper levels don't communicate the affordances you would find if you drilled in. Also there is graph structure in Elements that I don't see visualized; also Elements uses a lot of weird vocabulary that would be a lot easier to deal with if it were hyperlinked to a glossary.
I've been interested in old Asian texts like the https://en.wikipedia.org/wiki/Kojiki and https://en.wikipedia.org/wiki/Romance_of_the_Three_Kingdoms where I have, charitably, 5% reading comprehension of the language but could get a lot with the graph structure materialized (like the chain of succession from Amaterasu to the Emperor) and also would like to see the original text, plus human-generated English translation if available, LLM-based translations, links to properly resolved characters and words in the dictionary, etc. (Right now I am digging into about 800,000 images with Chinese language metadata with some crude tools, really just getting out named entities makes me tickled pink.)
(1) it wants to be a bicycle for the mind, a simulation playground where you edit something things and the environment changes -- something a game engine could "excel" at
(2) it sucks in a whole bunch of ways, but it's hard to displace. People use it to do things with CSV files that somebody would use pandas for if they wanted to get the right answer. People use it to do things they'd be better off using Access or SQLlite. And then people use it to calculate things
(3) At this moment I'm making some simple models of businesses w/ Excel, one sheet is calculating the value of a comment on this site, roughly $600B evaluation, 7% equity stake, HN responsible for 5% of that value (brings in founders and employees) with a total of 50M comments, I get a eye-popping value of $50 per comment!
It's actually ugly in Excel, for instance I don't really want things on a grid, I want to make the calculation immediately clear as a graph, I just wish that this product
had a bunch of sequels. If anybody can make the next thing I'd love to see it. It's tough because Excel comes with Powerpoint, Word and other tools in Office 365 so it seems free to people. Then there's that inferior Google Sheets.
There's "censorship" and (1) you can only read so much so you have to be selective and (2) there is a lot written by people who have an NMA (negative mental attitude) and it's a burden I can only take on for people I really care out.
If somebody is writing every day about how some class of people is responsible for their problems I just can't take it, and if I can't effectively block this crap with the tools they give me (20 or so rules on Mastodon, as opposed to Bluesky making me a decent feed out of the box, better with a little "less like this") I will move on.
Deleting your account makes somebody's numbers look bad. It also marks a more serious commitment. (I deleted my Facebook in 2016. I did make a new one recently when I got my Meta Quest 3. I was hoping to get into Instagram recently because (i) I think the content I post on Mastodon/Bluesky would do great there and (ii) was thinking about doing a marketing project where that was the right venue. Meta won't let me create an Instagram account, probably because I deleted my Facebook account, I sure as hell haven't done anything else offensive with a Meta property)
... this was me in 2016. (Facebook had Cambridge Analytica, LinkedIn had taken on a demonic element to me in that I'd spent years prospecting and it had brought so many grifters and bullshitters into my life I felt like I was becoming a bullshitter... It would have been one thing if I was making money but I wasn't.)
I got back into social media about 1.5 years ago when Mastodon seemed to be coming on strong. I've lately gotten into Bluesky and all I can say is: (1) come on in, the water is fine, and (2) sure it will go bad someday when the money gets tight but back in the day we expected platforms to decay and for the cool kids to move on to the next one.
I can't see why anyone is using Conda in 2025. In 2018, yeah, pip (now uv) was hard and you could get a "just works" experience installing Tensorflow + NVIDIA on Conda. In 2023 it was the other way around and it still is.
Well, when you're building python packages that have non python dependencies and a big chunk of your users are on Windows, conda is the only option, even in 2025 :)
Examples include, quant libraries, in-house APIs/tools, etc.
Circa 2018, I figured out how to pack up the CUDA libraries inside conda for Windows so I could have different conda environments with different versions of CUDA which was essential back then because if you had a model that was written w/ a certain version of Tensorflow you had to have a matching CUDA and if you used NVIDIA's we-need-your-email-address installers you could only have one version of CUDA installed at a time.
Worked great except for conda making the terrible mistake of compressing package files with bzip2 which took forever to decompress for huge packages.
I see no reason you can't install any kind of non-Python thing that a Python system wants with uv because a wheel is just a ZIP file, so long as it doesn't need to be installed in a particular place you can just unpack it and go.
For that matter, you can install arbitrary content from a wheel with Pip.
The problem is all the things that do need to be installed in a particular place. Linux seems to have a lot of those, especially if they're build-time dependencies for something else. Hence the need for, and slow development of, https://peps.python.org/pep-0725/ (relevant background, though I'm sure you know this sort of stuff: https://pypackaging-native.github.io/ ).
Conda worked for me in the past, but at some point I was getting inexplicable segfaults from Python scripts. I switched back to just pip and everything worked fine again. And installation was much faster.
Python has been cleaning up a number of really lethal problems like:
(i) wrongly configured character encodings (suppose you incorporated somebody else's library that does a "print" and the input data contains some invalid characters that wind up getting printed; that "print" could crash a model trainer script that runs for three days if error handling is set wrong and you couldn't change it when the script was running, at most you could make the script start another python with different command line arguments)
(ii) site-packages; all your data scientist has to do is
pip install --user
the wrong package and they'd trashed all of their virtualenvs, all of their condas, etc. Over time the defaults have changed so pythons aren't looking into the site-packages directories but I wasted a long time figuring out why a team of data scientists couldn't get anything to work reliably
(iii) "python" built into Linux by default. People expected Python to "just work" but it doesn't "just work" when people start installing stuff with pip because you might be working on one thing that needs one package and another thing that needs another package and you could trash everything you're doing with python in the process of trying to fix it.
Unfortunately python has attracted a lot of sloppy programmers who think virtualenv is too much work and that it's totally normal for everything to be broken all the time. The average data scientist doesn't get excited when it crumbles and breaks, but you can't just call up some flakes to fix it. [1]
I don’t exactly remember the situation but a user created a python module named error.py.
Then in their main code they imported the said error.py but unfortunately numpy library also has an error.py. So the user was getting very funky behavior.
Yep, happens all the time with the standard library. Nowadays, third-party libraries have this issue much less because they can use relative imports except for their dependencies. But the Python standard library, for historical reasons, isn't organized into a package, so it can't do that.
Here's a fun one (this was improved in 3.11, but some other names like `traceback.py` can still reproduce a similar problem):
/tmp$ touch token.py
/tmp$ py3.10
Python 3.10.14 (main, Jun 24 2024, 03:37:47) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python/standard/lib/python3.10/_sitebuiltins.py", line 102, in __call__
import pydoc
File "/opt/python/standard/lib/python3.10/pydoc.py", line 62, in <module>
import inspect
File "/opt/python/standard/lib/python3.10/inspect.py", line 43, in <module>
import linecache
File "/opt/python/standard/lib/python3.10/linecache.py", line 11, in <module>
import tokenize
File "/opt/python/standard/lib/python3.10/tokenize.py", line 36, in <module>
from token import EXACT_TOKEN_TYPES
ImportError: cannot import name 'EXACT_TOKEN_TYPES' from 'token' (/tmp/token.py)
... it's tricky. In Java there's a cultural expectation that you name a package like
package organization.dns.name.this.and.that;
but real scalability in a module system requires that somebody else packages things up as
package this.and.that;
and you can make the system look at a particular wheel/jar/whatever and make it visible with a prefix you specify like
package their.this.and.that;
Programmers seem to hate rigorous namespace systems though. My first year programming Java (before JDK 1.0) the web site that properly documented how to use Java packages was at NASA and you still had people writing Java classes that were in the default package.
But let's all be real here: the ability of __init__.py to do FUCKING ANYTHING IT WANTS is insanity made manifest
I am kind of iffy on golang's import (. "some/packge/for/side-effects") but at least it cannot suddenly mutate GOPATH[0]="/home/jimmy/lol/u/fucked" as one seems to be able to do on the regular with python
I am acutely aware that is (programmer|package|organization|culture)-dependent but the very idea that one can do that drives us rigorous people stark-raving
It took me a while to realize that you do mean __init__.py running when a package imports.
But, you know, top-level code (which can do anything) runs when you import any Python module (the first time), and Python code doesn't have to be in a package to get imported. (The standard library depends on this.)
That. Forcing people to do it right from day one helps a lot. Also Rust attracts a programmer who is willing to accept some pain up front to save pain later, if your motto is "give me convenience or give me death" you might stick with C or Python.
If you give people an "easy way out" it is very hard to compel them to do it more rigorously. Look at the history of C++ namespaces as well as the non-acceptance of various "Modula" languages and Ada back in the 1980s.
> Python has been cleaning up a number of really lethal problems like
I wish they would stick to semantic versioning tho.
I have used two projects that got stuck in incompatible changes in the 3.x Python.
That is a fatal problem for Python. If a change in a minor version makes things stop working, it is very hard to recommend the system. A lot of work has gone down the drain, by this Python user, trying to work around that
I assume these breaking changes are in the stdlib and not in the python interpreter (the language), right?
There was previous discussions about uncoupling the stdlib (python libraries) from the release and have them being released independently, but I can’t remember why that died off
Well yes, but sometimes the features provided by stdlib can feel pretty 'core'. I remember that how dataclasses work for example changed and broke a lot of our code when we upgraded from 3.8 to 3.10,
There have also been breaking changes in the C API. We have one project at work that is stuck at 3.11 since a third party dependency won't build on 3.12 without a rewrite.
> There was previous discussions about uncoupling the stdlib (python libraries) from the release and have them being released independently, but I can’t remember why that died off
http://www.righto.com/2021/11/reverse-engineering-yamaha-dx7...
Funny, marketing types see that as hopelessly boring nerdcore that doesn't have any appeal but they're wrong because that article appeals to:
* people who like pretty pictures
* people who like Depeche Mode
* people who know how to string a few logic gates to blink an LED (e.g. it's appealing to somebody who knows about digital electronics from the beginning levels to the most advanced)
as well as others. Ken stared out blogging about very ordinary Arduino projects but he did it consistently and with heart and then discovered chip decapping and became the legend we know. That's the kind of blogging that will put you on top.
reply