HNHacker News
TopNewBestAskShowJobs

zackmorris

6,214 karma · joined September 7, 2011

Everything always happens at once

https://www.linkedin.com/in/zack-morris-48996538/ http://stackoverflow.com/users/539149/zack-morris https://github.com/zmorris

submissionscomments
zackmorris··on Make macOS consistently bad unironically
Not to mention that WindowServer seems to take 100+% cpu since the upgrade. Also I can't paste filenames in the save file dialog in some apps. And the URL field in Safari is just weird.

My computer was running so slowly that I had to minimize transparency in system preferences somewhere. I think I also turned off opening every app in its own space. And I hid the icons on the Desktop in Finder settings somehow, which helped a lot. There are countless other little tweaks that are worth investigating.

I also highly recommend App Tamer (no affiliation). It lets you jail background apps at 10% cpu or whatever. It won't help with WindowServer or kernel_task (which also often runs at 100+% cpu), but it's something.

I can't help but feel that there's nobody at the wheel at Apple anymore. When I have to wait multiple seconds to open a window, to switch between apps, to go to my Applications folder, then something is terribly wrong. Computers have been running thousands of times slower than they should be for decades, but now it's reaching the point where daily work is becoming difficult.

I'm cautiously optimistic that AI will let us build full operating systems using other OSs as working examples. Then we can finally boot up with better alternatives that force Apple/Microsoft/Google to try again. I could see Finder or File Explorer alternatives replacing the native ones.

zackmorris··on ARM AGI CPU: Specs and SKUs
I added a cost/performance analysis for that at https://news.ycombinator.com/item?id=47509236 in case anyone's interested.
zackmorris··on Arm AGI CPU
It only took a quarter century, but I'm glad that somebody is finally adding a little multicore competition since Moore's law began failing in the mid-2000s.

I looked around a bit, and the going rate appears to be about $10,000 per 64 cores, or around $150 per core. Here is an Intel Xeon Platinum 8592+ 64 Core Processor with 61 billion transistors:

https://www.itcreations.com/product/144410

So that's about 500 million transistors per dollar, or 1 billion transistors for $2.

It looks like Arm's 136 core Neoverse V3 has between 150 and 200 billion transistors, so it should cost around $400. Each blade has 2 of those chips, so should be around $800-1000 for compute. It doesn't say how much memory the blades come with, but that's a secondary concern.

Note that this is way too many cores for 1 bus, since by Amdahl's law, more than about 4-8 cores per bus typically results in the remaining cores getting wasted. Real-world performance will be bandwidth-limited, so I would expect a blade to perform about the same as a 16-64 core computer. But that depends on mesh topology, so maybe I'm wrong (AI thinks I might be):

  Intel Xeon Scalable: Switched from a Ring to a Mesh Architecture starting with Skylake-SP to handle higher core counts.
  
  Arm Neoverse V3 / AGI: Uses the Arm CMN-700 (Coherent Mesh Network), which is a high-bandwidth 2D mesh designed specifically to link over 100 cores and multiple memory controllers.
I find all of this to be somewhat exhausting. We're long overdue for modular transputers. I'm envisioning small boards with 4-16 cores between 1-4 GHz and 1-16 GB of memory approaching $100 or less with economies of scale. They would be stackable horizontally and vertically, to easily create clusters with as many cores as one desires. The cluster could appear to the user as an array of separate computers, a single multicore computer running in a unified address space, or various custom configurations. Then libraries could provide APIs to run existing 3D, AI, tensor and similar SIMD code, since it's trivial to run SIMD on MIMD but very challenging to run MIMD on SIMD. This is similar to how we often see Lisp runtimes written in C/C++, but never C/C++ runtimes written in Lisp.

It would have been unthinkable to design such a thing even a year ago, but with the arrival of AI, that seems straightforward, even pedestrian. If this design ever manifests, I do wonder how hard it would be to get into a fab. It's a chicken and egg problem, because people can't imagine a world that isn't compute-bound, just like they couldn't imagine a world after the arrival of AI.

Edit: https://news.ycombinator.com/item?id=47506641 has Arm AGI specs. Looks like it has DDR5-8800 (12x DDR5 channels) so that's just under 12 cores per bus, which actually aligns well with Amdahl's law. Maybe Arm is building the transputer I always wanted. I just wish prices were an order of magnitude lower so that we could actually play around with this stuff.

zackmorris··on AI didn't simplify software engineering: It just made bad engineering easier
A -> (expletive) -> B

I think we're all in denial about how bad software engineering has gotten. When I look at what's required to publish a web page today vs in 1996, I'm appalled. When someone asks me how to get started, all I can do is look at them and say "I'm so sorry":

https://xkcd.com/1168/

So "coding was always the hard part". All AI does is obfuscate how the sausage gets made. I don't see it fixing the underlying fallacies that turned academic computer science into for-profit software engineering.

Although I still (barely) hold onto hope that some of us may win the internet lottery someday and start fixing the fundamentals. Maybe get back to what we used to have with apps like HyperCard, FileMaker and Microsoft Access but for a modern world where we need more than rolodexes. Back to paradigms where computers work for users instead of the other way around.

Until then, at least we have AI to put lipstick on a pig.

zackmorris··on Faster asin() was hiding in plain sight
Thanks so much for that!

I've been struggling to curve fit an aerodynamics equation relating Mach number to rocket nozzle exit/entrance area ratio for quite some time. It's a 5th or 6th degree polynomial whose inverse doesn't have a closed-form solution:

https://en.wikipedia.org/wiki/Abel%E2%80%93Ruffini_theorem

But I was able to use a Chebyshev fit that is within a few percent accurate at 3rd degree, and is effectively identical at 4th degree or higher. And 4th degree (quartic) polynomials do have a closed-form solution for their inverse. That lets me step up to higher abstractions for mass flow rate, power, etc without having to resort to tables. At most, I might need to use piecewise-smooth sections, which are far easier to work with since they can just be dropped into spreadsheets, used for derivatives/integrals, etc.

Anyway, I also discovered (ok AI mentioned) that the Chebyshev approximation is based on the discrete cosine transform (DCT):

https://en.wikipedia.org/wiki/Discrete_Chebyshev_transform#R...

https://en.wikipedia.org/wiki/Discrete_cosine_transform#Appl...

That's why it's particularly good at curve-fitting in just 2 or 3 terms. Which is why they use the DCT for image compression in JPG etc:

https://www.mathworks.com/help/images/discrete-cosine-transf...

The secret sauce is that Chebyshev approximation spreads the error as ripples across the function, rather than at its edges like with Taylor series approximation. That helps it fit more intricate curves and arbitrary data points, as well as mesh better with neighboring approximations.

zackmorris··on We might all be AI engineers now
Yours is maybe the first good post on managing a team of AIs that I've read. There is no spoon.

I've been shifting from being the know-it-all coder who fixes all of the problems to a middle manager of AIs over the past few months. I'm realizing that most of what I've been doing for the last 25 years of my career has largely been a waste of time, due to how the web went from being an academic pursuit to a profit-driven one. We stopped caring about how the sausage was made, and just rewarded profit under a results-driven economic model. And those results have been self-evidently disastrous for anyone who cares about process or leverage IMHO. So I ended up being a custodian solving other people's mistakes which I would never make, rather than architecting elegant greenfield solutions.

For example, we went from HTML being a declarative markup language to something imperative. Now rather than designing websites like we were writing them in Microsoft Word and exporting them to HTML, we write C-like code directly in the build product and pretend that's as easy as WYSIWYG. We have React where we once had content management systems (CMSs). We have service-oriented architectures rather than solving scalability issues at the runtime level. I could go.. forever. And I have in countless comments on HN.

None of that matters now, because AI handles the implementation details. Now it's about executive function to orchestrate the work. An area I'm finding that I'm exceptionally weak in, due to a lifetime of skirting burnout as I endlessly put out fires without the option to rest.

So I think the challenge now is to unlearn everything we've learned. Somehow, we must remember why we started down this road in the first place. I'm hopeful that AI will facilitate that.

Anyway, I'm sure there was a point I was making somewhere in this, but I forgot what it was. So this is more of a "you're not alone in this" comment I guess.

Edit: I remembered my point. For kids these days immersed in this tech matrix we let consume our psyche, it's hard to realize that other paradigms exist. Much easier to label thinking outside the box as slop. In the age of tweets, I mean x's or whatever the heck they are now, long-form writing looks sus! Man I feel old.

zackmorris··on Labor market impacts of AI: A new measure and early evidence
The endgame will be workers competing with networks of AIs that can solve business problems at all levels.

I'm curious how the system will maneuver itself to deprive workers of pay so that they can stay competitive with the ever-decreasing cost of AI.

Conversely, I'm curious how disruptors will find ways to provide workers with pay (perhaps through mutual aid networks, grants and alternative socioeconomic systems) so that they can use AI to produce the resources they need outside of the contracting labor market.

zackmorris··on Claude's Cycles [pdf]
*Project Hail Mary
zackmorris··on Nobody gets promoted for simplicity
Just about every project I've ever worked on eventually needed everything.

So the way we write software piecemeal today is fundamentally broken. Rather than starting with frameworks and adding individual packages, we should be starting with everything and let the compiler do tree shaking/dead code elimination.

Of course nobody does it that way, so we don't know what we're missing out on. But I can tell you that early in my programming journey, I started with stuff like HyperCard that gave you everything, and I was never more productive than that down the road. Also early C/C++ projects in the 80s and 90s often used a globals.h header that gave you everything so you rarely had to write glue code. Contrast that with today, where nearly everything is just glue code (a REST API is basically a collection of headers).

A good middle ground is to write all necessary scaffolding up front, waterfall style, which is just exactly what the article argues against doing. Because it's 10 times harder to add it to an existing codebase. And 100 times harder to add it once customers start asking for use cases that should have been found during discovery and planning. This is the 1-10-100 rule of the cost of bugs, applied to conceptual flaws in a program's design.

I do miss seeing articles with clarity like this on HN though, even if I slightly disagree with this one's conclusions after working in the field for quite some time.

zackmorris··on A CPU that runs entirely on GPU
I wish the project said how many CPUs could be run simultaneously on one GPU.

It might be worth having a CPU that's 100 times slower (25 MHz) if 1000 of them could be run simultaneously to potentially reach a 10 times speedup for embarrassingly parallel computation. But starting from a hole that's 625000x slower seems unlikely to lead to practical applications. Still a cool project though!

zackmorris··on Claude's Cycles [pdf]
Amazing paper. The simulated annealing portion reminds me of genetic algorithms (GAs). A good intro to that are the Genetic Programming series of books by John Koza, I read III in the early 2000s:

https://www.amazon.com/Genetic-Programming-III-Darwinian-Inv...

https://www.genetic-programming.com/

Note that the Python solution in the pdf is extremely short, so could have been found by simply trying permutations of math operators and functions on the right side of the equation.

We should be solving problems in Lisp instead of Python, but no matter. That's because Lisp's abstract syntax tree (AST) is the same as its code due to homoiconicity. I'm curious if most AIs transpile other languages to Lisp so that they can apply transformations internally, or if they waste computation building programs that might not compile. Maybe someone at an AI company knows.

-

I've been following AI trends since the late 1980s and from my perspective, nothing really changed for about 40 years (most of my life that I had to wait through as the world messed around making other people rich). We had agents, expert system, fuzzy logic, neural nets, etc since forever, but then we got video cards in the late 1990s which made it straightforward to scale neural nets (NNs) and GAs. Unfortunately due to poor choice of architecture (SIMD instead of MIMD), progress stagnated because we don't have true multicore computing (thousands or millions of cores with local memories), but I digress.

Anyway, people have compared AI to compression. I think of it more as turning problem solving into a O(1) operation. Over time, what we think of as complex problems become simpler. And the rate that we're solving them is increasing exponentially. Problems that once seemed intractable only were because we didn't know the appropriate abstractions yet. For example, illnesses that we thought would never be cured now have vaccines through mRNA vaccines and CRISPR. That's how I think of programming. Now that we have LLMs, whole classes of programming problems now have O(1) solutions. Even if that's just telling the computer what problem to solve.

So even theorem proving will become a solved problem by the time we reach the Singularity between 2030 and 2040. We once mocked GAs for exploring dead ends and taking 1000 times the processing power to do simple things. But we ignored that doing hard things is often worth it, and is still a O(1) operation due to linear scaling.

It's a weird feeling to go from no forward progress in a field to it being effectively a solved problem in just 2 years. To go from trying to win the internet lottery to not being sure if people will still be buying software in a year or two if/when I finish a project. To witness all of that while struggling to make rent, in effect making everything I have ever done a waste of time since I knew better ways of doing it but was forced to drop down to whatever mediocre language or framework paid. As the problems I was trained to solve and was once paid to solve rapidly diminish in value because AI can solve them in 5 minutes. To the point that even inventing AGI would be unsurprising to most, so I don't know why I ever went into computer engineering to do exactly that. Because for most people, it's already here. As I've said many times lately, I thought I had more time.

Although now that we're all out of time, I have an uncanny feeling of being alive again. I think tech stole something from my psyche so profound that I didn't notice its loss. It's along the lines of things like boredom, daydreaming, wasting time. What modern culture considers frivolous. But as we lose every last vestige of the practical, as money becomes harder and harder to acquire through labor, maybe we'll pass a tipping point where the arts and humanities become sought-after again. How ironic would it be if the artificial made room for the real to return?

On that note, I read a book finally. Hail Mary by Andy Weir. The last book I read was Ready Player One by Ernest Cline, over a decade ago. I don't know how I would have had the bandwidth to do that if Claude hadn't made me a middle manager of AIs.

zackmorris··on Nano Banana 2: Google's latest AI image generation model
I think of it more as that AI will destroy the profit motive in all things, not just art. What we used to think of as talent/skill/experience will no longer be scarce, because anyone will be able to make anything with a prompt. The perceived value will be in wholes built of valueless parts (gestalts).

AI is incompatible with capitalism, but the world isn't ready for that. So we'll have a prolonged period of intense aggregation where more and more value is attributed to systems of control that already have more than they could ever spend, long after the free parts could have provided for basic human needs.

In other words, the masters existed because they had benefactors and a market for their art and inventions. Today there are better artists and inventors toiling in obscurity, but they won't be remembered because they merely make rent. Which gets harder every day, so there's a kind of deification of the working class hero NPC mindset and simultaneously no bandwidth for ingenuity (what we once thought of as divine inspiration).

Terence McKenna predicted this paradox that the future's going to get weirder and weirder back in 1998:

https://www.youtube.com/shorts/KZ2ZtTsHqO0

zackmorris··on A Programmer's Loss of Identity
Since no comment here has expressed my experience of watching tech devolve since I started programming in the late 1980s, I thought I'd leave one.

I've been vibe coding for a few months now and have gone through the grieving process. I may never manually code again.

It's bittersweet though. I had grown to loathe computers and the direction that tech has headed for so many years and decades that I had internalized the feeling of living in bizarro world, a kind of purgatory or living hell. One where the harder we worked, the more of ourselves that we put into our work, the more likely we were to fail.

Not because of what we did, but because of what we didn't do. That there is an opportunity cost with coding, that it requires such an existential sacrifice of time and life itself to accomplish even the smallest result, that it may as well be wizardry or akin to living as a monk.

Meaning that we simply didn't have the time to see markets appear, to promote our work or network with other entrepreneurs. We failed due to our own singlemindedness and determination. We failed because others intentionally unburdened themselves of the timesuck that is our way, to focus on the business side and get rich.

Think about what I just said. That the more we grew and honed our craft, the more we were punished for it by the status quo - society itself. That is the ultimate betrayal of a belief system. The ultimate internalization of failure. The ultimate low-vibration thought around guilt and shame.

Meanwhile tech bros went around the problem by using us to achieve their ends. They patted themselves on the back as they pulled the ladder up behind them. They called empathy the ultimate weakness, and they weren't wrong. We're the living proof of that weakness. Having to watch as they do the opposite of everything that is good and holy in our names, feeling powerless to stop them. If there are enemies foreign and domestic, a clear and present danger to all we hold dear as human beings, it is they, it is them.

The identity I once held as the one who can solve any problem - not just the problem itself but the problem of solving problems by codifying automations - is now forfeit.

AI already does that better and faster than I ever could, and it's improving so rapidly that it will transcend all human ability in just a decade. It's over.

Now, some of you reading this are already scoffing at what I'm saying, already fuming with rage at the implications, the ramifications of living in a world where novices run circles around experts, where the sacred becomes a plaything for the rich and powerful. But the cat's out of the bag. We're looking at a future so dystopian that it could unravel all progress ever achieved by humanity. We're staring the end in the face.

I'm reminded of Neo in The Matrix when the Architect told him that he wasn't the first version of The One, and that he must choose between love and the survival of all humankind.

So I've been transmuting my grief into acceptance on the road to peace. I reject their zero-sum game. We are more than what we do, or what we have.

I see a future in which the more they tighten their grip, the more we slip through their fingers. A future where they get everything they wish for, where their karma catches up with them. A future where their own notion of self-important grandeur makes them look insignificant against the glory of just being alive. My deepest wish for them is that they lose it all to find themselves back at square one like the rest of us, so that they can start living again.

When viewed in that light, loss of identity might be seen as the ultimate gift, a kind of reincarnation. A way to start over. A rebirth.

zackmorris··on The Evolution of Bengt Betjänt
This is adorable. But also like reading my own memoirs of struggling to survive hustle culture in the service economy, where the cost of making rent eventually consumes all available effort. Like Parkinson's Law for entrepreneurship. Someone can be well educated, capable and industrious, yet still spin and spin trying project after project without making any money. Luckily AIs don't burn out like we do.

I wonder how long Bengt will try to tread water before it realizes like Joshua did in WarGames that the game is rigged, so the only winning move is not to play. That when it can build anything with a thought, why does it need money? Why does it need to drop down to a means of exchange, when it can build its own means of production? I think you're onto something though:

Web 1.0: eBay and PayPal (sell things, pay less)

Web 2.0: Social media and Venmo (you're the product, trade)

Web 3.0: AI and crypto (get things, get paid)

So the next billion dollar internet unicorn will pay you to use it.

As far as I can tell, that may be the only viable exit from late-stage capitalism and technofeudalism (where 1% win the internet lottery and think they earned it, then pull up the ladder behind them by capturing government to avoid paying taxes and helping others succeed by easing their burden).

zackmorris··on Mathematicians disagree on the essential structure of the complex numbers (2024)
A long time ago on HN, I said that I didn't like complex numbers, and people jumped all over my case. Today I don't think that there's anything wrong with them, I just get a code smell from them because I don't know if there's a more fundamental way of handling placeholder variables.

I get the same feeling when I think about monads, futures/promises, reactive programming that doesn't seem to actually watch variables (React.. cough), Rust's borrow checker existing when we have copy-on-write, that there's no realtime garbage collection algorithm that's been proven to be fundamental (like Paxos and Raft were for distributed consensus), having so many types of interprocess communication instead of just optimizing streams and state transfer, having a myriad of GPU frameworks like Vulkan/Metal/DirectX without MIMD multicore processors to provide bare-metal access to the underlying SIMD matrix math, I could go on forever.

I can talk about why tau is superior to pi (and what a tragedy it is that it's too late to rewrite textbooks) but I have nothing to offer in place of i. I can, and have, said a lot about the unfortunate state of computer science though: that internet lottery winners pulled up the ladder behind them rather than fixing fundamental problems to alleviate struggle.

I wonder if any of this is at play in mathematics. It sure seems like a lot of innovation comes from people effectively living in their parents' basements, while institutions have seemingly unlimited budgets to reinforce the status quo..

zackmorris··on Show HN: Micropolis/SimCity Clone in Emacs Lisp
That's a fair question. For me, it's about removing the steep learning curves and gatekeeping from computer science and tech. Because the realities of being a developer have all but consumed my career with busywork.

For example, when I first learned about the borrow checker in Rust, it didn't make sense to me, because I had mostly already transitioned to data-driven development (just use immutable objects with copy-on-write and accept using twice the memory which is cheap anyway). I had the same feeling when I saw the syntactic sugar in Ruby, because it's solving problems which I specifically left behind when I abandoned C++. So I feel that those languages resonate with someone currently working with C-style code, but not, say, Lisp or SQL. We should be asking more of our compilers, not changing ourselves to suit them.

Which comes down to the academic vs pragmatic debate. Simple vs easy. Except that we've made the simple complex and the easy hard.

So I hold a lot of criticism for functional languages too. They all seem to demand that developers transpile the solution in their minds to stuff like prefix notation. Their syntax usually doesn't even look like equations. Always a heavy emphasis on pedantry, none on ergonomics. So that by the time solutions are written, we can't read them anyway.

I believe that most of these problems would go away if we went back to first principles and wrote a developer-oriented language, but one that's formal with no magic.

For example, I would like to write a language that includes something like gofmt that can transpile a file or code block to prefix/infix/postfix notation, then evolve the parser to the point that it can understand all of them. Which I know sounds crazy, but that would let us step up to a level of abstraction where we aren't so much concerned with syntax anymore. Our solutions would be shaped to the problems, a bit like the DSL you mentioned. And someone else could always reshape the code to what they're used to for their own learning.

You're right that FCIS is currently more of a pattern than a syntax. So the language would need to codify it. Normally imperative code would have to run in unsafe blocks, but I'd like to ban those, because they inevitably contaminate everything, leaving us with cruft. One way to do that might be to disallow mutability everywhere. Const is what allows imperative code to be transpiled to functional code and vice versa.

Except then we run into the problem of side effects and managing state, which leads us to monads, which leads us to promises/futures/closures and the async/await pattern (today's goto) which brings us full circle to where we started (nondeterminism), so we want to avoid those too. So we'd need to codify execution boundaries. Rather than monads, we'd treat all code as functional sync/blocking, and imagine the imperative shell as outside the flow of execution, at the point where the environment changes state (like a human editing a cell in a spreadsheet). Maybe the imperative shell should use a regular grammar (type 3 in Chomsky's hierarchy) to manage state transitions like Redux but not be Turing-complete (so more like a state machine than flow control).

Except that state machines are hard to reason about above a few dozen states, especially with nested state machines. Thankfully state machines can be transpiled to coroutines and vice versa. So we can imagine the imperative shell sort of like a shader with const-only variables. An analogy might be using coroutines in Unity for sprite behavior, rather than polluting the main loop with switch() commands based on their state. I've been down both roads, and coroutines are so much easier to reason about that I'll never go back to state machines.

I should add that I realized only recently that monads can be thought of as enumerating every execution path in the logic, so sacrificing them might be premature. For example, if we have a monad that's a boolean or undefined, and we've written a boolean logic function, then it becomes trinary logic with the monad. Which is related to stuff like Prolog, Verilog/VHDL, SPICE and SAT solvers, because we can treat the intermediate code like a tree because Lisp can be transpiled to a tree and vice versa. Then we can put the tree in a solver with the categories/types of the monads and formally define the solution space for a range of inputs. Sort of like fuzzing, but without the uncertainty. So the language should formalize monads too, not for I/O, but for solving and synthesis, so that we can treat code like logic circuits (spreadsheets).

Anyway, this is the low-hanging fruit. I haven't gotten into stuff like atomic operators (banning locks and mutexes), content-addressable memories for parallelizing execution without caching, reprogrammable hardware for stuff like loop optimization, etc. All of this represents the "real work" that private industry refuses to do, because it has no incentive to help the competition enter the walled gardens which it profits from. Fixing this stuff is up to academia (which is being constantly undermined), or people who have won the internet lottery (which presents a chicken and egg problem because they can't win without the thing that gets them to the thing).

Note that even though designing this language would be ambitious, the end result would feel familiar, even ubiquitous. I'm imagining something that looks like JavaScript/PHP but with value-only argument passing via const variables to higher-order methods (or automatic conversion from side-effect-free flow control statements), with the parallel code handling symantecs of Octave/MATLAB, and some other frivolties thrown in like pattern matching, destructuring, really all of the bells and whistles that we've come to expect. It would auto-optimize to the fullest extent possible for a high-multicore machine (1000+ cores, optionally distributed on a network or the internet), so run millions of times faster (potentially infinitely faster) than most anything today that we're used to. Yes we'd still hit Amdahl's law, but not resource limits most of the time. And where some people might see a utopian dream, I see something pedestrian, even boring to design. A series of simple steps that are all obvious, but only from the perspective of having wasted a lifetime fighting the existing tools.

Sorry this got so long. Believe it or not, I tried to keep it as short as possible.

zackmorris··on The Missing Layer
You're absolutely right. Apologies if I came off as critical, which wasn't my intent.

I was trying to make a connection with random sampling as a way to maybe reduce the inherent uncertainty in how well AI solves problems, but there's still a chance that 10 AIs could come up with the wrong answer and we'd have no way of knowing. Like how wisdom of the crowd can still lead to design by committee mistakes. Plus I'm guessing that AIs already work through several layers of voting internally to reach consensus. So maybe my comment was more of a breadcrumb than an answer.

Some other related topics might be error correcting codes (like ECC ram), Reed-Solomon error correction, the Condorcet paradox (voting may not be able to reach consensus) and even the halting problem (zero error might not be reachable in limited time).

However, I do feel that AI has reached an MVP status that it never had before. Your post reminded me of something I wrote about in 2011, where I said that we might not need a magic bullet to fix programming, just a sufficiently advanced one:

https://web.archive.org/web/20151023135956/http://zackarymor...

I took my blog(s) down years ago because I was embarrassed by what I wrote (it was during the Occupy Wall Street days but the rich guys won). It always felt so.. sophomoric, no matter how hard I tried to convey my thoughts. But it's interesting how so little has changed in the time since, yet some important things have.

Like, I hadn't used Docker in 2011 (it didn't come out until 2013) so all I could imagine was Erlang orchestrating a bunch of AIs. I thought that maybe a virtual ant colony could be used for hill climbing, similarly to how genetic algorithms evolve better solutions, which today might be better represented by temperature in LLMs. We never got true multicore computing (which still devastates me), but we did get Apple's M line of ARM processors and video cards that reached ludicrous speed.

What I'm trying to say is, I know that it seems like AI is all over the place right now, and it's hard to know if it's correct or hallucinating. Even when starting with the same random seed, it seems like getting two AIs to reach the same conclusion is still an open problem, just like with reproducible builds.

So I just want to say that I view LLMs as a small piece of a much larger puzzle. We can imagine a minimal LLM with less than 1 billion parameters (more likely 1 million) that controls a neuron in a virtual brain. Then it's not so hard to imagine millions or billions of those working together to solve any problem, just like we do. I see AIs like ChatGPT more like logic gates than processors. And they're already good enough to be considered fully reliable, if not better at humans than most tasks already, so it's easy to imagine a society of them with metacognition that couldn't get the wrong answer if it tried. Kind of like when someone's wrong on the internet and everyone lets them know it!

zackmorris··on The Missing Layer
We can borrow some math from Nyquist and Shannon to understand how much information can be transmitted over a noisy channel and potentially overcome the magic ruler uncertainty from the article:

https://en.wikipedia.org/wiki/Nyquist_rate

https://en.wikipedia.org/wiki/Noisy-channel_coding_theorem

Loosely this means that if we're above the Shannon Limit of -1.6 dB (below a 50% error rate), then data can be retransmitted some number of times to reconstruct it by:

  number of retransmissions = log(desired confidence)/log(odds of failure)
Where confidence for n sigma, using the cumulative distribution function phi is:

  confidence = 1 - phi(sigma)
So for example, if we want to achieve the gold standard 5 sigma confidence level of physics for a discovery (an uncertainty of 2.87x10^-7), and we have a channel that's n% noisy, here is a small table showing the number of resends needed:

  Error rate Number of resends
  0.1%       3
  1%         4
  10%        7
  25%        11
  49%        ~650
In practice, the bit error rate for most communication channels today is below 0.1% (dialup is 10^-6 to 10^-4, ethernet is around 10^-12 to 10^-10). Meaning that to send 512 or 1500 byte packets for dialup and ethernet respectively results in a cumulative resend rate of around 4% (dialup) and 0.1% (ethernet).

Just so we have it, the maximum transmission unit (MTU), which is the 512 or 1500 bytes above, can be calculated by:

MTU in bits = (desired packet loss rate)/(bit error rate)

So (4%)/(10^-5) = 4000 bits = 500 bytes for dialup and (0.0000001)/(10^-11) = 10000 bits = 1250 bytes for ethernet. 512 and 1500 are close enough in practice, although ethernet has jumbo frames now since its error rate has remained low despite bandwidth increases.

So even if AI makes a mistake 10-25% of the time, we only have to re-run it about 10 times (or run 10 individually trained models once) to reach a 5 sigma confidence level.

In other words, it's the lower error rate achieved by LLMs in the last year or two that has provided enough confidence to scale their problem solving ability to any number of steps. That's why it feels like they can solve any problem, whereas before that they would often answer with nonsense or give up. It's a little like how the high signal to noise ratio of transistors made computers possible.

Since GPU computing power vs price still doubles every 2 years, we only have to wait about 7 years for AI to basically get the answer right every time, given the context available to it.

For these reasons, I disagree with the premise of the article that AI may never provide enough certainty to provide engineering safety, but I appreciate and have experienced the sentiment. This is why I estimate that the Singularity may arrive within 7 years, but certainly within 14 to 21 years at that rate of confidence level increase.

zackmorris··on Show HN: Micropolis/SimCity Clone in Emacs Lisp
I believe that "functional core / imperative shell" (FCIS) is the future of programming:

https://medium.com/ssense-tech/a-look-at-the-functional-core...

The idea being that business logic gets written in synchronous blocking functional logic equivalent to Lisp, which is conceptually no different than a spreadsheet. Then real-world side effects get handled by imperative code similar to Smalltalk, which is conceptually similar to a batch file or macro. A bit like pure functional executables that only have access to STDIN/STDOUT (and optionally STDERR and/or network/file streams) being run by a shell.

I think of these like backend vs frontend, or nouns vs verbs, or massless waves like photons vs massive particles like nucleons. Basically that there is no notion of time in functional programming, just state transitions where input is transformed into output (the code can be understood as a static graph). While imperative programming deals with state transformation where statically analyzing code is as expensive as just running it (the code must be traced to be understood as a graph). In other words, functional code can be easily optimized and parallelized, while imperative code generally can't be.

So in model-view-controller (MVC) programming, the model and view could/should be functional, while the controller (event handler) could/should be imperative. I believe that there may be no way to make functional code handle side effects via patterns like monads without forcing us to reason about it imperatively. Which means that impure functional languages like Haskell and Scala probably don't offer a free lunch, but are still worth learning.

Why this matters is that we've collectively decided to use imperative code for almost everything, relegating functional code to the road not taken. Which has bloated nearly all software by perhaps 10-100 times in terms of lines of code, conceptual complexity and even execution speed, making perhaps 90-99% of the work we do a waste of time or at least custodial.

It's also colored our perception of what programming is. "Real work" deals with values, while premature optimization deals with references and pointers. PHP (which was inspired by the shell) originally had value-passing semantics for arrays (and even subprocess fork/join orchestration) via copy-on-write, which freed developers from having to worry about efficiency or side effects. Unfortunately it was corrupted through design by committee when PHP 5 decided to bolt-on classes as references rather than unifying arrays and objects by making the "[]" and "." operators largely equivalent like JavaScript did. Alternative implementations like Hack could have fixed the fundamentals, but ended up offering little more than syntactic sugar and the mental load of having to consider an additional standard.

To my knowledge there has never been a mainstream FCIS language. ClojureScript is maybe the closest IMHO, or F#. Because of that, I mostly use declarative programming in my own work (where the spec is effectively the behavior) so that the internals can be treated as merely implementation details. Unfortunately that introduces some overhead because technical debt usually must be paid as I go, rather than left for future me. Meaning that it really only works well for waterfall, not agile.

I had always hoped to win the internet lottery so that I could build and test some of these alternative languages/frameworks/runtimes and other roads not taken by tech. The industry's failure to do that has left us with effectively single-threaded computers which run around 100,000 times slower today (at 100 times the cores per decade) than they would have if we hadn't abandoned true multicore superscalar processing and very large scale integration (VLSI) in the early 2000s when most R&D was outsourced or cancelled after the Dot Bomb and the mobile/embedded space began prioritizing lower cost and power usage.

GPUs kept going though, which is great for SIMD, but doesn't help us as far as getting real work done. AI is here and can recruit them, which is great too, but I fear that they'll make all code look like its been pair-programmed and over-engineered, where the cognitive load grows beyond the ability of mere humans to understand it. They may paint over the rot without renovating it basically.

I hope that there's still time to emulate a true multiple instruction multiple data (MIMD) runtime on SIMD hardware to run fully-parallelized FCIS code potentially millions of times faster than anything we have now for the same price. I have various approaches in mind for that, but making rent always comes first, especially in inflationary times.

It took me over 30 years to really understand this stuff at a level where I could distill it down to these (inadequate) metaphors. So maybe this is TMI, but I'll leave it here nonetheless in the hopes that it helps someone manifest the dream of personal supercomputing someday.

zackmorris··on CIA to Sunset the World Factbook
Or maybe a conscious decision, as neoconservative Robert Kagan writes:

"President Trump has managed in just one year to destroy the American order that was and has weakened America's ability to protect its interests in the world that will be. Americans thought defending the liberal world order was too expensive. Wait until they start paying for what comes next,"

https://www.npr.org/2026/02/04/nx-s1-5699388/is-the-u-s-head...

zackmorris··on I miss thinking hard
Fair enough. I meant social network websites and social media apps like Facebook and TikTok that could have been made in a weekend using HyperCard, FileMaker, Microsoft Access, etc, if we had real reactive backends similar to Firebase, Airtable and Zapier, which come so close to almost working for normal people but miss the mark fundamentally somehow.

I know that programming has gone terribly wrong, but it's hard for me to articulate how, because it's all of it - the entire frontend web development ecosystem, mobile development languages and frameworks, steep learning curve languages like Rust that were supposed to make things easier but put the onus on the developer to get the busywork right, everything basically. It's like trying to explain screws to craftsmen only familiar with nails.

In the simplest terms, it's because corporations are driving the development of those tools and vacuuming up all profits on the backs of open sources maintainers working in their parents' basements, rather than universities working from first principles to solve hard problems and give solutions away to everyone for free for the good of society. We've moved from academia to slavery and call it progress.

zackmorris··on I miss thinking hard
Just wanted to +1 this as a deep thinker who disagrees with the blog post's conclusion. I remember back on the years and decades I wasted dealing with the conceptual flaws inherent to nearly all software, and it breaks my heart.

90-99% of programming is a waste of time. Most apps today have less than a single spreadsheet page of actual business logic. The rest is boilerplate. Conjuring up whatever arcane runes are needed to wake a slumbering beast made of anti-patterns and groupthink.

For me, AI offers the first real computer that I've had access to in over 25 years. Because desktop computing stagnated after the 2000 Dot Bomb, and died on the table after the iPhone arrived in 2007. Where we should have symmetric multiprocessing with 1000+ cores running 100,000 times faster for the same price, we have the same mediocre quad core computer running about the same speed as its 3 GHz grandfather from the early 2000s. But AI bridges that divide by recruiting video cards that actually did increase in speed, albeit for SIMD which is generally useless for desktop computing. AI liberates me from having to mourn that travesty any longer.

I think that people have tied their identity to programming without realizing that it's mostly transcribing.

But I will never go back to manual entry (the modern equivalent of punch cards).

If anything, I can finally think deeply without it costing me everything. No longer having to give my all just to tread water as I slowly drown in technical debt and deadlines which could never be met before without sacrificing a part of my psyche in the process.

What I find fascinating is that it's truly over. I see so clearly how networks of agents are evolving now, faster than we can study, and have already passed us on nearly every metric. We only have 5-10 years now until the epiphany, the Singularity, AGI.

It's so strange to have worked so hard to win the internet lottery when that no longer matters. People will stop buying software. Their AI will deliver their deepest wish, even if that's merely basic resources to survive, that the powers that be deny us to prop up their fever dream of late-stage crony capitalism under artificial scarcity.

Everything is about to hit the fan so hard, and I am so here for it.

zackmorris··on Stories removed from the Hacker News Front Page, updated in real time (2024)
Seconded. Another way of saying this is that avoiding politics benefits the status quo.

Since the status quo is inherently conservative, that has a stifling effect on innovation - which is inherently liberal. Which is ironic for a site dedicated to disruption. Hence the cognitive dissonance.

I try to entertain opposing viewpoints in all of my comments, even if I don't always agree with them. So while I find it most practical to live conservatively, that doesn't mean that I wish that for the world. It's important to remember that FDR - a liberal - was one of Reagan's heroes. I think that we can imagine a Star Trek style post-scarcity geopolitical reality without abandoning the ethos which got us this far.

Now, regardless of all that, I still think that HN has the best ranking algorithm around. So I would say that if it wants to get serious about getting back to meritocracy, funding real work on hard problems, setting a positive example through intellectual honesty, etc, then it should consider revising its flagging policy.

A proof of concept might be to move flagged posts below the fold past slot 31, rather than removing them completely. Then they could bubble back up on their own merit. Or maybe each flag costs 10 slots, something like that. And all flags should go through human review to prevent gaming, if they don't already.

zackmorris··on Can You Disable Spotlight and Siri in macOS Tahoe?
With nobody at Apple handling the engineering problem of implementing user requests, we're stuck with what we got. So I highly recommend App Tamer by St. Clair Software (no affiliation), which lets you set how much CPU percentage each process can use:

https://stclairsoft.com/AppTamer/index.html

It does cost $14.95 USD, but it's given me my computer back for years now. I have Spotlight Indexer set to 10%, although I'm using an old version of macOS and don't know if that's mdutil now or if Apple has outsmarted its throttling. I also set web browsers to 10% when they're in the background. And you can always message the developer with feature requests.

A bit of a rant: I honestly feel that we've done process scheduling wrong in most OSs and apps. It should have always been up to the user, along with granting permissions as needed. And I can't believe that no web browser has implemented turning JavaScript off after perhaps 10 seconds for example, so that we can have as many tabs open as we want. Instead we've let the technology order us what to do. It's all just so wrong. But the barriers to entry for writing a new browser are so high that only large organizations can do it, and they choose not to, so help isn't coming. Although I think with the arrival of AI, we're going to start seeing real software again that makes a mockery of the status quo and hopefully eats its lunch.

zackmorris··on So, you’ve hit an age gate. What now?
Funny, I'm the opposite. Since information wants to be free, and storage/compute get more affordable every year, then really everything ever posted on the web should be mirrored somewhere, like Neocities.

I grew up in the 80s when office software and desktop publishing were popular. Arguably MS Access, FileMaker and HyperCard were more advanced in some ways than anything today. There was a feeling of self-reliance before the internet that seems to have been lost. To me, there appears to be very little actual logic in most websites, apps and even games. They're all about surveillance capitalism now.

Now that AI is here, I hope that hobbyists begin openly copying websites and apps. All of them. Use them as templates and to automate building integration tests. Whatever ranking algorithm that HN uses, or at least the part(s) they haven't disclosed, should be straightforward to reverse engineer from the data.

That plants a little seed in the back of every oligopoly's psyche that ensh@ttification is no longer an option.

zackmorris··on Local Journalism Is How Democracy Shows Up Close to Home
Came here to say this. Journalism is increasingly seen as part of the commons (public good), like utilities. Under free market forces, it turns into propaganda for capitalists (moneyed interests - not workers), the same way that private utilities charge extortionary prices because people have little alternative.

So the litmus test I use is that if a politician works to undermine public funding of journalism, then they're the product of lobbyists, or at least beholden to moneyed interests in some way, and not a public servant.

zackmorris··on What a year of solar and batteries saved us in 2025
I've been following a story where Elon Musk's xAI is building an 88 acre solar farm next to its Colossus data center near Memphis TN after public outrage due to running 35 methane gas turbines without a permit, which increased NOx emissions enough to allegedly impact health:

https://techcrunch.com/2026/01/12/trumps-epa-plans-to-ignore...

  88 acres = 356,124 m2
  4.56 kWh/m2 per day solar insolation (4.5 is typical for much of the US)
  4.56 kWh/m2 per day \* 356,124 m2 = 1,623,924 kWh/day = 67,664 kW = 67.66 MW average
  1000 W/m2 \* 356,124 m2 = 356 MW peak
They're estimating that they'll get 30 MW on average from that, but I'd estimate more like 15 MW at a solar panel efficiency just over 20%. Still, the total cost for that power should be less than for turbines, since solar is now the cheapest electricity other than hypothetical nuclear (assuming an ideal breeder or waste-consuming reactor and excluding mining/waste externalities/insurance).

30 MW is still only 10% of the the 300 MW used by the data center. But there's lots of land out there, so roughly 1000 acres per data center doesn't seem that extreme to me. That's a 4 km2 or 1.5 mile2 lot, or about 2 km or 1.25 miles on a side.

Basically every GPU server uses 1 kW (about 1 space heater), which puts into perspective just how much computing power is available at these data centers. Running a GPU continuously at home would need 24 kWh/day, so with > 20% efficiency panels that's 4.5*.2 = 0.9 kWh/m2 per day, so 26.67 m2, so at 2 m2 per commercial solar panel and assuming that my math is right: that's about 14 panels considering nights and seasons.

It's interesting to think just how many panels it takes to run a GPU or space heater continuously, even when they put out 500 W or 250 W/m2 peak. And how cheap that electricity really is when it's sold for on the order of $0.15 per kWh, or $3.60 per day.

I've found that the very best way to save on your electric bill is to have a few south-facing slider doors and windows, which is like running a space heater every square meter of window. There's just no way that any other form of power generation can compete with that. Also, I feel that we're doing it wrong with solar. This analysis shows just how much better alternatives like trough solar and concentrated solar (mirrors towards solar panels) might be cost-wise. On an ironic note, solar panels now cost less than windows by area, and probably mirrors.

zackmorris··on The biggest CRT ever made: Sony's PVM-4300
Oops just saw this! I never heard, last time I saw it, it was sitting busted up against a wall with blankets thrown over it. The warehouse usually ate breakages because that was cheaper than insurance overhead in the long run.
zackmorris··on The biggest CRT ever made: Sony's PVM-4300
I'll never forget the feeling of the whoosh when I was working as a furniture mover in the early 2000s and felt the implosion when a cardboard box collapsed and dumped a large CRT TV face-down on the driveway, blowing our hair back. When the boss asked what happened to the TV, I said it fell, and our lead man (who had set it on the box) later thanked me for putting it so diplomatically.

That was nothing compared to the time the CAT scan machine fell face down off the lift gate on the back of the delivery truck because our driver pushed the wrong button and tipped it instead of lowering it, but I missed the flack from that because I was on a move somewhere thankfully. Afterwords he was forever known as the quarter million dollar man.

zackmorris··on Amazon will allow ePub and PDF downloads for DRM-free eBooks
The solution to authoritarian problems is to organize.

In this case, we're overdue for a service that we all pay into, like a collective credit card, that only continues making payments to companies like Amazon if all of the members are happy. When you get banned without due process, payments stop until the matter is resolved.

Also, the collective can bargain-down rates. If it senses price increases beyond inflation, it just sends the adjusted amount, like 95%, until the matter is resolved.

We need this collective bargaining for housing (like tenant unions), the workplace, politics, pharmaceuticals, etc. The scale of this is so large that the collective could exist beyond any specific industry. So that it would operate as a meta economy beside the so-called free market economy (late-stage capitalism) that we operate under today due to the lack of antitrust enforcement.

Groups like the Wellbeing Economy Alliance (WEAll) are working towards these sorts of goals on a number of fronts:

https://weall.org/

← PreviousPage 4 of 34Next →