bunnie your book "Hacking the XBox" taught me how to get started on reversing electronics, took the fear out of the process, and replaced it with fun. Thanks for the multi-decades long effort you've made to make these tools available and accessible and approachable, your contributions to the hacker community are immeasurable and I cannot say thank you enough.
I love the Vernier scales! But I honestly hadn't known about the sense in which slide rules have a Venier scale until your comment, which led me to [1]. In another class on laser-cutting I had students make a kerf-meter, which became more accurate with a Vernier scale.
It's the most high-influence, low-exposure essay I've ever read. As far as I'm concerned, this dude is a silent prescient genius working quietly for DARPA, and I had a sneak peak into future science when I read it. It's affected my thinking and trajectory for the past 8 years
R. G. Loeliger Threaded Interpretive Languages Their Design And Implementation[1] is an amazing book, since it was out of print, I printed it on a good 160gsm a4 paper, and I randomly open it every few weeks just to read through it. I strongly recommend it, even if you are not interested in Forth.
I have been programming in all kinds of languages, from assembly to clojure, but in 25 years I never programmed stack languages, I was kind of scared of them, it wasn't until I read the book and made my own Forth I understood what I was missing. Since then I made few interpreters, with jit, or with types, etc, it was super fun, but most of all it allowed me to see a completely new paradigm of programming, kind of the first time you understand eval/apply from 13th page of the LISP 1.5 Programmer's Manual. A language that writes itself and it is written in itself.
If you are making your own Forth, this Brad Rodriguez's article is also really good [2].
The LTXV model runs on consumer GPUs, and all ComfyUI flows should work reliably from these official resources. Some third-party sites (like ltxvideo.net or wanai.pro) are broken, misconfigured, or heavy on unnecessary assets—so stick to the official ones to avoid issues and missing content.
Interesting how the obfuscated code is explained by slowly unobfuscating it step by step. This is the reverse of how obfuscated code is normally created: by starting with understandable code, and then slowly obfuscating it bit by bit (as I explained for this IOCCC submission [1]).
I say normally because one could also have a superoptimizer search for a minimal program that achieves some desired behaviour, and then one has to understand it by slowly unraveling the generated code.
This is legit a text that goes the an x86 Forth implementation. Actually, it's just an implementation with really extensive comments. That said, including whitespace and comments, it's just 2000 lines and the pedagogy is excellent. Highly recommended for anyone who would rather see behind the curtain before picking up a larger text.
So, Smith decided to hand-write a Forth directly in x86-64 opcodes (well, the corresponding ascii hex bytes). It's incredibly slim and enlightening how you can bootstrap a language in just a couple hundred bytes or so.
This project actually inspired me to really learn the x86-64 architecture, so I ended up hand-decompiling the SmithForth binary instead of going through his commented implementation. Hand-decompilation is an absolutely fascinating exercise. You learn all about ELF structure, opcode encodings, and actually start to see the gaps where microarchitectural details shine through. Highly recommended for any hacker that really wants to grok low level details.
On the note of my sibling comment, a common book in this space for learning is "Designing Video Game Hardware in Verilog", which is specifically retrocomputing related.
You can't build a decentralized search because there's no way to trust whatever results you get until you actually build it. If you don't want to rely on a specific community, your best bet is to crawl yourself and search locally: you can do that with magnetico (https://github.com/boramalper/magnetico/). Don't be frightened by the fact that it is archived, it works.
The problem then will be, how do you make sure your content is legit? There's no magic way here, the best thing you can do is compare the number of seeders and aim for the highest. If a torrent is fake, people will delete it and it won't be seeded. I have a thingy for that: https://sr.ht/~rakoo/magneticos/
The problem then becomes, number of seeders naturally selects towards popular content. It doesn't ensure viability of content. But I don't think there's a technical answer to that.
So it's like a social network with every type of relationship imaginable built into a low level programming language?
That's wildly cool.
This and Val Town [0] feel like they were made for each other. If you added them together with a nice front-end like mmm.page [1] I bet a million devs would sign up.
I'm working on something in a similar space that I'm hoping mihht develop into that [2]
It makes sense that the next step for the web is a more low-level social platform that works more like an agnostic API than a walled garden.
I used some of your pages for my thesis so thanks for that :)! It is likely that a scanline rasterizer is more performant, but some of the triangles are really small on a 120x120px display, so just the sorting of up to 1500 triangles for each scanline may have its own drawbacks if many are tiny.
One of the other reasons (aside from needed implementation time) for the current approach is also the hope that future microcontrollers might simply have more cores to throw at the problem so rendering could be parallized a lot faster simply by splitting rendering areas.
Definitely plenty of room for improvement everywhere but time is sadly always a factor, hence why I hope others may be able to help ^^.
Oh I love FORTH. Good set of articles here called Moving FORTH by Brad Rodriguez discussing the implementation of FORTH on various legacy ISAs. Worth a read to understand the internals and beauty of the simplicity of it:
I built a small multitasking kernel with a friend with a 68000 (m68000) in college. We implemented it on breadboards, I think with 30 or so feet of jumpers [0]. I had very little prior embedded experience, so it was trial by fire.
It was a wonderful introduction to how kernels work (or at least concurrency and scheduling) at their most basic level, without having to deal with the complexity of virtual address spaces, memory protection, or the byzantine bring-up dance of register prodding that x86_64 needs. It prepared me well for my operating systems class the next year, and as far as I can tell, was the eye-catcher project that got me an internship on a team doing kernel development the following summer.
I'm a self-taught artist and count drawing as a skill of mine. I wouldn't say I'm a "natural" at it and would have definitely benefited from some structured learning.
Here are some of my recommendations/thoughts:
1. Bring a sketchbook with you everywhere and draw and observe what you see. There are shortcuts and techniques but like anything else it takes practice and time.
2. Humans are the most difficult because they are what we're experts at. We see and react to human faces from the day we are born so it's tricky to get right. Don't be discouraged.
3. Writing your name is drawing a picture. You've probably practiced it along with the alphabet numerous times. This is drawing in it's essence.
4. Learn what a core and cast shadow are if you don't already know. This will quickly improve your rendering.
5. Youtube. There is a higher level of skill in art then at any point in history and you have access to it. Just like any other field the knowledge passed down improves year after year.
6. Don't worry about the outcome. Drawing is intimate and doesn't need to be shown to anyone ever.
7. Drawing is a beautiful skill. You're creating something out of nothing.
Yes, the Minecraft Farlands are caused by precision issues of floating point numbers. The game becomes jittery as it tries snapping to fewer and fewer precise digits. This is most obvious at first in the selection box around blocks, but the terrain also becomes unstable after a certain point.
Note that one Youtuber KurtJMac has been walking to the Farlands since 2011. He's been raising money for charity as part of those videos/streams. He's roughly 40% of the way there.
See also the “One Square Inch of Silence” project, which identified and placed a marker signifying what it calls “very possibly the quietest place in the United States”:
There are even audio recordings on the website which indicate the area is actually far from “silent”, but perhaps as close as possible to being absent if any sounds of human civilization.
Eli Bendersky has another great, even simpler introduction (from 2013) to JIT compiling but with hardcoded instructions [0]. And a more recent post on JIT compiling Brainfuck [1].
That song went viral during lockdowns, as it was a part of the deepfake video with the Minister of Health of that time, who had eyes with dark rings around them at the tv conferences (probably makeup), indicating he is working day and night to fight the pandemic. The healthcare quality decreased and the successes were only visible in state-controlled media, while multiple accusations of corruption in buying the medical equipment. Before he resigned, he complained that he can't stop himself reading multiple jokes and memes about him appearing online every day.
The lyrics translation:
"It's the only thing in my mind, 5g of cocaine..."
It's a bit dated (covers DAGISel rather than GlobalISel) but it gives a thorough introduction.
2. LLVM Developer Meeting tutorials
These are really good although you'll have to put them in order yourself. They will be out of date, a little. LLVM is a moving target. Also, you don't have to go through every tutorial. For example, MLIR is not for me.
3. LLVM documentation
I spent less time reading this than going through the Developer Meeting tutorials. I generally use it as a reference.
If you're doing a backend, you will need a place to start. The LLVM documentation points you to the horribly out of date SPARC backend. Don't even touch that. AArch64 and x86 are very full featured and thus very complex (100 kloc+). Don't use those either. RISC-V is ok but concerns itself mostly with supporting new RISC-V features rather than keeping up to date with LLVM compiler services. Don't use that either although definitely work through Alex Bradbury's RISC-V backend tutorials. Read the Mips backend. It is actively maintained. It has good GlobalISel support almost on par with the flagship AArch64 and x86 backends.
Any time the spiral rule comes up, I like to point out that it's wrong. It is instructive in a way because one learns more about C declaration syntax, but it is even more instructive to recognize why it is wrong.
The spiral rule works only if there is no pointer to pointer or array of array in the type. But take this for example:
The type of xxx is a [1-element] array of [2-element] array of [3-element] array of pointer to pointer to ints. I drew a spiral that passes through each specifier in the correct order.
Notice that to make the spiral correct it has to skip the pointer specifiers in the first three loops. This is marked by ¦. This is not mentioned in the original spiral rules and one could be forgiven to parse the expression as xxx -> [1] -> pointer -> [2] -> etc. following a spiral that doesn't skip the pointers.
The spiral rule can be modified to process all array specifiers before all pointer specifiers, but then you'd have to specify that the order to do so is right and then left. At that point it's just the Right-Left Rule.
This, along with the WWVB station[0] that makes most of your "atomic" wall clocks work, is an underappreciated national (and international) resource that was almost shut down recently[1] due to budget cuts.
I'm not going to link directly to any of them because of the Hacker News hug of death, but do a web search for "websdr", find a US based or nearby location, and try tuning to either 5000 kHz, 10000 kHz, or 15000 kHz (depending on the time of day - lower frequencies are usually better at night), AM mode, to listen in.
There was a time, maybe 2008, when this way okay. 2016 was a little iffy, but understandable the way things went.
But after 2020? There's no plausible deniability left. That the loser of the last election used imagined fraud as a basis to launch a coup attempt, and the subsequent attempted memory-holing and normalization of that event by the Republican party have changed everything. It's clear what they are doing now. Namely:
1) take away independent control of state election processes and install a partisan election process that will "determine" whether any particular election result is "fraudulent". The result of the Arizona audit by the "Cyber Ninjas" reveals the playbook:
- use the audit to kick up a cloud of dust (we are investigating reports of paper ballots from china containing Bamboo!)
- muddy the waters (we are definitely going to find fraud, it's astounding)
- find no fraud (The results show Biden won, but we have a list of concerns we will focus on instead of the actual count)
- declare there was fraud anyway (Trump's statement on the result: "We won on the Arizona forensic audit yesterday at a level that you wouldn’t believe. They had headlines that Biden wins in Arizona when they know it’s not true. He didn’t win in Arizona. He lost in Arizona based on the forensic audit.")
2) Use these fabricated claims of fraud to send your own choice of electors to the Congress to select the next President.
3) The Democrats will object, because of the obvious fraud
4) The process, being contested, will follow the Constitution and eventually a vote will go before the House, where each state delegation has 1 vote
5) Because Republicans control more state houses than Democrats, they can just choose whoever they want as President
6) Any court challenges will end up at a court stacked with Republicans, 3 of whom were appointed by Trump, 5 of whom were appointed to the court by Republican Presidents who lost the popular vote their first term in office.
That's how Democracy ends in America, and Republicans are setting up that exact scenario in 2024. If you wake up in November of that year and the person elected (read: appointed) lost both the popular vote AND the electoral college, well don't be surprised. That's the literal end of elections in America, and it's not hyperbolic at all. That's their stated plan: see the Eastman memo.
If you are voting for Republicans post 2020, you are voting against democracy. I'm sorry, there's no other way to put it. This whole effort is anti-democratic and against the rule of law. I mean, it's fine if you don't believe in democracy and want an American dictator in the style of Putin (complete with the associated corruption of the rule of law and the neutering of elections as a method of self governance), but just be honest about it.
I wrote this in an email turning down a chance explore opportunities at Coinbase.
> To me, diversity and social justice are critically important. I have the luxury of being selective in where I put my time and energy and it is important those values align with my career. I appreciate aspects of being "mission focused" but I think that there is a gulf between my personal values and Coinbase's values such that I would not be comfortable in the environment.
I can't speak for anyone else but I think I'm not a terrible engineer and I definitely ruled them completely out of the realm of places I'd be willing to work.
Thanks man!