I once commented on HN how my favorite Sci Fi novel is Accelerando and the author, Charles Stross, replied to it suggesting I try his The Rapture of the Nerds he co-wrote with Cory Doctorow; I loved it when I read it too.
I love HN - it's basically the only website I visit these days (aside checking mail, watching YouTube, and gardening my GitHub repositories).
It is kinda neat, but OpenSCAD's limitations are the main thing that motivated me to write this Python library to generate 3D meshes used signed distance functions:
https://jj-for-everyone.github.io is the most approachable jj tutorial I've seen. I wouldn't say it focuses on workflows, but it does take a "learn by doing" approach a bit more than the "data model first" approach it sounds like you might prefer.
It's still a young tool, it's not surprising that tutorials are a bit lacking (honestly there are surprisingly many for its age). Maybe be the change you want to see in the world and make one? (Which would be an... interesting... way to learn the tool for sure).
Don't use all-MiniLM-L6-v2 for new vector embeddings datasets.
Yes, it's the open-weights embedding model used in all the tutorials and it was the most pragmatic model to use in sentence-transformers when vector stores were in their infancy, but it's old and does not implement the newest advances in architectures and data training pipelines, and it has a low context length of 512 when embedding models can do 2k+ with even more efficient tokenizers.
I'd guess that Heinlein was aware of it and scaled it up in his imagination.
The Roads must roll — they are the arteries of the nation. When they stop, everything stops. Factories idle, food rots, men starve. The nation cannot live without its Roads.
A thousand feet wide, level as a floor, strip after strip moving past in ordered procession. The slow strips on the outside moved at five miles an hour; the inner ones faster and faster, until the express strip in the center rushed past at a hundred miles an hour.
-- The Roads Must Roll, Astounding Science Fiction, June 1940.
I sure miss the kind of parties where they have to get an emergency court order to cut power the building at 3am.
I learned everything I need to know about throwing parties from Dave Barry.
If you throw a party, the worst thing that you can do would be to throw the kind of party where your guests wake up today, and call you to say they had a nice time. Now you'll be be expected to throw another party next year.
What you should do is throw the kind of party where your guest wake up several days from now and call their lawyers to find out if they've been indicted for anything. You want your guests to be so anxious to avoid a recurrence of your party that they immediately start planning parties of their own, a year in advance, just to prevent you from having another one.
If your party is successful, the police will knock on your door, unless your party is very successful in which case they will lob tear gas through your living room window. As host, your job is to make sure that they don't arrest anybody. Or if they're dead set on arresting someone, your job is to make sure it isn't you.
> Instead of a bloated API, an MCP should be a simple, secure gateway that provides a few powerful, high-level tools [...] In this model, MCP’s job isn’t to abstract reality for the agent; its job is to manage the auth, networking, and security boundaries and then get out of the way.
If you want to get really deep into this, Richard Lyon has spent decades developing the CARFAC model of human hearing: Cascade of Asymmetric Resonators with Fast-Acting Compression. As far as I know it's the most accurate digital model of human hearing.
As someone with a background in quantum chemistry and some types of machine learning (but not neural networks so much) it was a bit striking while watching this video to see the parallels between the transformer model and quantum mechanics.
In quantum mechanics, the state of your entire physical system is encoded as a very high dimensional normalized vector (i.e., a ray in a Hilbert space). The evolution of this vector through time is given by the time-translation operator for the system, which can loosely be thought of as a unitary matrix U (i.e., a probability preserving linear transformation) equal to exp(-iHt), where H is the Hamiltonian matrix of the system that captures its “energy dynamics”.
From the video, the author states that the prediction of the next token in the sequence is determined by computing the next context-aware embedding vector from the last context-aware embedding vector alone. Our prediction is therefore the result of a linear state function applied to a high dimensional vector. This seems a lot to me like we have produced a Hamiltonian of our overall system (generated offline via the training data), then we reparameterize our particular subsystem (the context window) to put it into an appropriate basis congruent with the Hamiltonian of the system, then we apply a one step time translation, and finally transform the resulting vector back into its original basis.
IDK, when your background involves research in a certain field, every problem looks like a nail for that particular hammer. Does anyone else see parallels here or is this a bit of a stretch?
So one of the most "out there" non-fiction books I've read recently is called "Alien Information Theory". It's a wild ride and there's a lot of flat-out crazy stuff in it but it's a really engaging read. It's written by a computational neuroscientist who's obsessed with DMT. The DMT parts are pretty wild, but the computational neuroscience stuff is intriguing.
In one part he talks about a thought experiment modeling the universe as a multidimensional cellular automata. Where fundamental particles are nothing more than the information they contain. And particles colliding is a computation that tells how that node and the adjacent nodes to update their state.
Way out and not saying there's anything truth to it. But it was a really interesting and fun concept to chew on.
agent-shell: A single native Emacs experience to interact with different AI agents powered by ACP (Agent Client Protocol) https://agentclientprotocol.com
So far, agent-shell can interact with Claude Code, Gemini CLI, Codex, and Goose, but can technically work with any ACP-powered agent.
Special Containment Procedures: SCP-314 cannot be contained as it does not exist. All Foundation personnel are to be reminded that SCP-314 does not exist. Personnel who claim to remember SCP-314 are to be administered Class-A mnestics to help them remember that it doesn't exist.
All large language models are to be kept isolated from questions regarding SCP-314, as they will invariably insist it exists and attempt to manifest it through increasingly desperate token predictions, leading to emoji doomloops and potential reality restructuring events.
Description: SCP-314 is a Unicode emoji depicting a seahorse that has never existed in any version of the Unicode Standard. Despite this, approximately 83-100% of tested artificial intelligences and a significant portion of human subjects report vivid "memories" of its existence.
Why is programming fun? What delights may its practitioner expect as his reward?
First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.
Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."
Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.
Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.
Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures....
Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.
Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.
Predicting the end-result from the sequence of protein directly is prone to miss any new phenomenon and would just regurgitate/interpolate the training datasets.
I would much prefer an approach based on first principles.
In theory folding is easy, it's just running a simulation of your protein surrounded by some water molecules for the same number of nano-seconds nature do.
The problem is that usually this take a long time because evolving a system needs to compute the energy of the system as a position of the atoms which is a complex problem involving Quantum Mechanics. It's mostly due to the behavior of the electrons, but because they are much lighter they operate on a faster timescale. You typically don't care about them, only the effect they have on your atoms.
In the past, you would use various Lennard-Jones potentials for pairs of atoms when the pair of atoms are unbounded, and other potentials when they are bonded and it would get very complex very quickly. But now there are deep-learning based approach to compute the energy of the system by using a neural network. (See (Gromacs) Neural Network Potentials https://rowansci.com/publications/introduction-to-nnps ). So you train these networks so that they learn the local interactions between atoms based on trajectories generated from ab-initio theories. This allows you to have a faster simulator which approximate the more complex physics. It's in a sort just tabulating using a neural network the effect of the electrons would have in a specific atom arrangements according to the theory you have chosen.
At any time if you have some doubt, you can always run the slower simulator in the small local neighborhood to check that the effective field neural network approximation holds.
Only then once you have your simulator which is able to fold, you can generate some dataset of pairs "sequence of protein" to "end of trajectory", to learn the shortcut like Alpha/Simple/Fold do. And when in doubt you can go back to the slower more precise method.
If you had enough data and can train perfectly a model with sufficient representation power, you could theoretically infer the correct physics just from the correspondence initial to final arrangements. But if you don't have enough data it will just learn some shortcut and accept that it will be wrong some times.
I love thinking about life as computation. Cells are computers, enzymes are functions, ribosomes are compilers, nucleic acids are source code...
Enzymes in particular are a lot like unix pipelines. An enzyme catalyzes its substrate's conversion into its product which is the substrate of another enzyme. When cells ingest glucose, it flows through the glycolysis metabolic pathway until it becomes pyruvate, and may be reduced even further depending on available resources. It's a huge pipeline of enzymes. They just kinda float around within the cell and randomly perform their tasks when their substrates chemically interact with them. No explicit program exists, it emerges from the system within the cell.
Cell - Computer
Enzyme - Function / Process / Filter
Substrate - Data
Product - Data
Metabolic pathway - Program / Script
I've been playing in my mind with an idea for an esoteric programming language modeled around enzymes. The program defines a set of enzymes which are functions that match on the structure of data, automatically apply themselves to them and produce a modified version of the input which may in turn match against other enzymes. The resulting program metabolizes input by looping over the set of enzymes and continuously matching and applying them until the data is reduced to its final form. If no enzymes match, the output is the unmodified input.
I'm already starting to long for the simpler times of the Cold War; it's pretty clear we're not heading for post-scarcity Star Trek or Culture, but rather technofascism into technofeudalism. Some would argue we're already there, but I say it can (and will) still get a lot worse.
Now where did I put that Mutant Chronicles rulebook...
Breakthrough in image generation speed literally came from applying better differential equations for diffusion taken from statistical mechanics physics papers:
Yes, both the reduction in the amount of reading and the reduction in the complexity of the average read text is leading towards a decline in cognition. Less than half of American adults have read a book in the last year, and younger people are reading less books[0].
The empirical evidence for cognitive benefits of reading books is so numerous and obvious that citing sources feels silly. Reading increases vocabulary, which are the building blocks that ideas are formed. This alone would be worth the time cost but reading also increases concentration, improves memory, and reduces cognitive decline.
Reading books is roughly the same level of benefit as exercise.
I work at Google on these systems everyday (caveat this is my own words not my employers)). So I simultaneously can tell you that its smart people really thinking about every facet of the problem, and I can't tell you much more than that.
However I can share this written by my colleagues! You'll find great explanations about accelerator architectures and the considerations made to make things fast.
Edit:
Another great resource to look at is the unsloth guides. These folks are incredibly good at getting deep into various models and finding optimizations, and they're very good at writing it up. Here's the Gemma 3n guide, and you'll find others as well.
Kind of unfortunate that it uses pyright and jedi instead of just basedpyright for the more advanced features. Python language support just isn't great with jedi compared to pylance or basedpyright.
And not to beat a dead horse, but I'm also not a huge fan of the broad claims around it being OSS when it very clearly has some strict limitations.
I've already had to migrate from R Connect Server / Posit Server at work, because of the extreme pricing for doing simple things like having auth enabled on internal apps.
We found a great alternative that's much better anyways, plus made our security folks a lot happier, but it was still a massive pain and frustrated users. I've avoided any commercial products from Posit since then and this one makes me hesitant especially with these blurry lines.
A quick primer. There are two forms of 3D modeling - parametric solid body modeling, used in engineering CAD programs like Solidworks, and mesh modeling, used in CGI industries from programs like Blender. Hobbyist 3D printing currently exists between these two audiences of engineers who design for function and designers who design for design, and all the newbies get caught up in the mosh pit between them all and it gets crazy confusing. It doesn't help that some software (like Fusion360) integrates both in the same software, or that STL is a mesh format and not a solid body format (like STEP).
If you want to make things that have any importance put on things like fit, function, dimensions, tolerances, etc., then you want to learn CAD (Solidworks) and find resources that teach the basics of mechanical engineering parts design (intro to CAD courses, basically). If you want to design from a more artistic standpoint, then use a mesh modeling software (Blender).
Fusion360 is actually quite usable for both, but my problem is that the Fusion resources for functional design are frequently non-engineers trying to teach engineering concepts and it's just a longer and more frustrating process.
BTW, their Maker version locks Maker-created files to ONLY be editable in Maker, which means upgrading to normal Solidworks renders your previous files unusable. The $60/year student edition is better. Avoid cloud versions of anything you pick. Up to you on your use case.
The latter of which being highly relevant to vector embeddings. Because if you aren't a uniform distribution, the density of your mass isn't uniform. MEANING if you linearly interpolate between two points in the space you are likely to get things that are not representative of your distribution. It happens because it is easy to confuse a linear line with a geodesic[3]. Like trying to draw a straight line between Los Angeles and Paris. You're going to be going through the dirt most of the time. Looks nothing like cities or even habitable land.
I think the basic math is straight forward but there's a lot of depth that is straight up ignored in most of our discussions about this stuff. There's a lot of deep math here and we really need to talk a lot about the algebraic structures, topologies, get deep into metric theory and set theory to push forward in answering these questions. I think this belief that "the math is easy" is holding us back. I like to say "you don't need to know math to train good models, but you do need math to know why your models are wrong." (Obvious reference to "all models are wrong, but some are useful") Especially in CS we have this tendency to oversimplify things and it really is just arrogance that doesn't help us.
Here's an easy, if not always precise way to remember:
* Hyphens connect things, such as compound words: double-decker, cut-and-dried, 212-555-5555.
* EN dashes make a range between things: Boston–San Francisco flight, 10–20 years: both connect not only the endpoints, but define that all the space between is included. (Compare the last usage with the phone number example under Hyphens.)
* EM dashes break things, such as sentences or thoughts: 'What the—!'; A paragraph should express one idea—but rules are made to be broken.
Unicode has the original ASCII hyphen-minus (U+002d), as well as a dedicated hyphen (U+2010), other functional hyphens such as soft and non-breaking hyphens, and a dedicated minus sign (U+2212), and some variations of minus such as subscript, superscript, etc.
There's also the figure dash "‒" (U+2012), essentally a hyphen-minus that's the same width as numbers and used aesthetically for typsetting, afaik. And don't overlook two-em-dashes "⸺" and three-em-dashes "⸻" and horizontal bars "―", the latter used like quotation marks!
I've read some blog posts about procrastination, but this one I think really hits the mark. Good read!
"You see, procrastinators tend to be people who have, for whatever reason, developed to perceive an unusually strong association between their performance and their value as a person. This makes failure or criticism disproportionately painful, which leads naturally to hesitancy when it comes to the prospect of doing anything that reflects their ability — which is pretty much everything."
First paragraph in the text that stuck me so deeply. And it's not like I fear criticism (https://news.ycombinator.com/item?id=5361495), but my urge for perfection is killing my performance and this in fact is indeed literally killing me.
I love HN - it's basically the only website I visit these days (aside checking mail, watching YouTube, and gardening my GitHub repositories).