Comrade Ogilvy Nakamoto.

From the ‘Dear Idiots, ‘1984′ is Not a How-To Guide’ department:


He might turn the speech into the usual denunciation of traitors and thought-criminals, but that was a little too obvious, while to invent a victory at the front, or some triumph of over-production in the Ninth Three-Year Plan, might complicate the records too much. What was needed was a piece of pure fantasy. Suddenly there sprang into his mind, ready made as it were, the image of a certain Comrade Ogilvy, who had recently died in battle, in heroic circumstances. There were occasions when Big Brother devoted his Order for the Day to commemorating some humble, rank-and-file Party member whose life and death he held up as an example worthy to be followed. Today he should commemorate Comrade Ogilvy. It was true that there was no such person as Comrade Ogilvy, but a few lines of print and a couple of faked photographs would soon bring him into existence.

Winston thought for a moment, then pulled the speakwrite towards him and began dictating in Big Brother’s familiar style: a style at once military and pedantic, and, because of a trick of asking questions and then promptly answering them (‘What lessons do we learn from this fact, comrades? The lesson — which is also one of the fundamental principles of Ingsoc — that,’ etc., etc.), easy to imitate.

At the age of three Comrade Ogilvy had refused all toys except a drum, a sub-machine gun, and a model helicopter. At six — a year early, by a special relaxation of the rules — he had joined the Spies, at nine he had been a troop leader. At eleven he had denounced his uncle to the Thought Police after overhearing a conversation which appeared to him to have criminal tendencies. At seventeen he had been a district organizer of the Junior Anti-Sex League. At nineteen he had designed a hand-grenade which had been adopted by the Ministry of Peace and which, at its first trial, had killed thirty-one Eurasian prisoners in one burst. At twenty-three he had perished in action. Pursued by enemy jet planes while flying over the Indian Ocean with important despatches, he had weighted his body with his machine gun and leapt out of the helicopter into deep water, despatches and all — an end, said Big Brother, which it was impossible to contemplate without feelings of envy. Big Brother added a few remarks on the purity and single-mindedness of Comrade Ogilvy’s life. He was a total abstainer and a nonsmoker, had no recreations except a daily hour in the gymnasium, and had taken a vow of celibacy, believing marriage and the care of a family to be incompatible with a twenty-four-hour-a-day devotion to duty. He had no subjects of conversation except the principles of Ingsoc, and no aim in life except the defeat of the Eurasian enemy and the hunting-down of spies, saboteurs, thought-criminals, and traitors generally.

Winston debated with himself whether to award Comrade Ogilvy the Order of Conspicuous Merit: in the end he decided against it because of the unnecessary cross-referencing that it would entail.

… Comrade Ogilvy, unimagined an hour ago, was now a fact. It struck him as curious that you could create dead men but not living ones. Comrade Ogilvy, who had never existed in the present, now existed in the past, and when once the act of forgery was forgotten, he would exist just as authentically, and upon the same evidence, as Charlemagne or Julius Caesar.’

‘1984.’ George Orwell.


‘He’s wearing a rumpled T-shirt, old blue jeans and white gym socks, without shoes, like he has left the house in a hurry. His hair is unkempt, and he has the thousand-mile stare of someone who has gone weeks without sleep. …

Nakamoto did not get along with his stepfather, but his aptitude for math and science was evident from an early age, says Arthur, who also notes, “He is fickle and has very weird hobbies.”

Just after graduating college, Nakamoto went to work on defense and electronics communications for Hughes Aircraft in southern California. “That was just the beginning,” says Arthur, who also worked at Hughes. “He is the only person I have ever known to show up for a job interview and tell the interviewer he’s an idiot – and then prove it.” …

Two weeks before our meeting in Temple City, I struck up an email correspondence with Satoshi Nakamoto, mostly discussing his interest in upgrading and modifying model steam trains with computer-aided design technologies. I obtained Nakamoto’s email through a company he buys model trains from.

He has been buying train parts from Japan and England since he was a teenager, saying, “I do machining myself, manual lathe, mill, surface grinders.”

The process also requires a good amount of math, something at which Nakamoto – and his entire family – excels. The eldest of three brothers who all work in engineering and technical fields, Nakamoto graduated from California State Polytechnic University in Pomona, Calif., with a degree in physics. But unlike his brothers, his circuitous career path is very hard to trace. …

Dorian S. Nakamoto’s use of English, she says, was likely influenced by his lifelong interest in collecting model trains, many of which he imported from England as a teenager while he was still learning English.

Mitchell suspects Nakamoto’s initial interest in creating a digital currency that could be used anywhere in the world may have stemmed from his frustration with bank fees and high exchange rates when he was sending international wires to England to buy model trains. “He would always complain about that,” she says. “I would not say he writes flawless English. He will pick up words and mix the spellings.” …

“He is very wary of government interference in general,” she says. “When I was little, there was a game we used to play. He would say, ‘Pretend the government agencies are coming after you.’ And I would hide in the closet.” ‘

‘The Face Behind Bitcoin.’ Leah McGrath Goodman. (Newsweek.)

Modern Chumpatronic Engineering.


A reader recently asked me to comment on the demise of MtGox and its implications for Bitcoin enthusiasts.

I refused to do so, on account of the MtGox scam having been thoroughly beaten to death elsewhere – long before the recent and final convulsive fit people erroneously describe as ‘its demise.’ – The unwashed masses, eager to be fleeced, have no plans to listen now, just as they did not listen then.

So, instead, I wrote this.


In the English-speaking world, the period of lawless bacchanalia “enjoyed” by millions of people in the decade following the Soviet collapse is sometimes called the “Roaring ’90s.” 1

Just as much of the nautical terminology used by modern sailors was born during the famed “age of sail,” an epoch of “bold and free experiments” in the fields of… fraud, corruption, murder – likewise gave us a wealth of new “terms of art.”

Useful, catchy words for the defining concepts of an era tend to migrate, slowly but surely, across cultural and linguistic boundaries. But, since words are not themselves alive, they cannot do it without some help. So, like many other people, I intend to do my fair bit to help them.

You have already met our old friend, rectothermal cryptoanalysis. (I should hope – in the written word, rather than in person!) Now meet the Chumpatron (Лохотрон) – a short and self-documenting term, encompassing a variety of concepts essential to the daily life of modern man.

A chumpatron is not necessarily a physical contrivance, like a cyclotron. Although it can be. Modern, state-of-the-art chumpatrons tend to rely heavily on automatic machinery. But the machinery alone never suffices, for its operator must always take care to bring the machine fuel. That is to say, chump (Лох.) To be fair, chumps are not the fuel per se – merely the containers in which fuel is packaged and transported.

The fuel of a chumpatron is not necessarily money, as a naive reader might suppose. It could be something else entirely. But more often than not, it is something that, when reprocessed (perhaps in another kind of chumpatron) can be alchemically-converted into wealth. The chumps, as we noted above, are not necessarily consumed when the fuel is burned – being mere containers; and containers are often re-usable! In fact, these particular containers have arms, legs, and rudimentary nervous systems – and will, if correctly cared for, amble about the world semi-autonomously and gather more… fuel for the chumpatron.

A chumpatron, given as it converts human beings, their labour, hopes, aspirations, etc. into something tangible and useful for its master can easily be confused with other types of machines. Say, a biodiesel fermenter. But it is not the same thing! Anyone with the ill-fortune to end up in a biodiesel reactor will be fermented. But there is nothing fortuitous or accidental about ending up in a chumpatron.

The defining attribute of a chumpatron is that it does not run on just any kind of human being, but on chumps in particular. A conquering war-machine which practices ordinary, traditional enslavement of the conquered (with or without reprocessing into biodiesel!) is therefore not a chumpatron. The fuel-containers for a chumpatron carry out their duties on their own free will.

The chumpatron is more usefully-specific concept than the ordinary English word “scam” – because it implies an automatic, mechanical regularity to the workings of the people-to-resource converter. This is a considerable improvement on mere scamming – which is a somewhat unreliable, labour-intensive, and, more importantly – risky – affair. The perpetrator of an ordinary scam, should he fail to abscond with the proceeds in a timely manner, is liable to face some angry victims and perhaps some sharp pointed sticks. The operator of a chumpatron, on the other hand, can operate the mechanism by remote control. The highest grade of Chumpatronic Engineer can even make use of chumps directly in the machine’s control system, thoroughly shielding himself from the inevitably hot, fast-moving fragments of an exploding chumpatron (perhaps the only well-known, established fact about chumpatrons is: they tend to explode. Though almost never without some warning.)

When chumps find their way into a chumpatron, they tend to emit a variety of crunching and squeaking noises, as the gears turn, grind, and empty them of their useful contents. If you are not yet in the gears, have not yet been emptied – and would like to stay out, and remain full – you can try to learn something from these noises. But it will be, by and large, a waste of time. Don’t listen to the noises. Instead, learn from other people. For example, from people who have stood near the hopper, but at a safe distance – and have not wound up inside despite the mighty suction of the intake manifold.

One could spend years in the study and cataloging of chumpatrons. And others have done this, and you, dear reader, are invited to learn from them. One such man is the well-known Dmitri Orlov. Whether or not you agree with his uncommonly poor health prognosis for modern civilization, his analysis of today’s subject – how chumps find their way into a chumpatron – is worth considering:

“…the first hurdle, for many people, is in understanding what trust actually is, because there is no innate human quality called trustworthiness, possessed by some people, lacking in others. Rather, it is more along the lines of a generalization concerning a given individual’s behavior over time, within a given relationship. Trust is transactional: a person needs a reason to trust you, and you need a reason to trust that person. There is, however, such a quality as trustfulness: this is the property of small children, tame animals and, most unfortunately for them, many regular, salt-of-the-earth, mainstream Americans. It is of negative survival value in the context of financial collapse. It is being exhibited for all to see by some of the people who recently lost money when MF Global stole it to cover some private bets it had made. They licked their wounds, complained bitterly, and then…went looking for another financial company—to be taken advantage of again. Since the head of MF Global wasn’t punished, why wouldn’t another company do the same to them, knowing that it can do so with impunity? There also seems to be a certain set of traits possessed in abundance by a category of highly effective American financial operators that makes it easy for them to prey on trustful people. It may be the suits they wear, or the English they speak or their general demeanor—let us call it “trustiness,” to go along with the “truthiness” of their financial disclosures. Deep down, trustful people feel privileged to be robbed by such superior specimens. The predator-prey relationship has been honed to the fine point of a pen: told to sign their life away on the dotted line, the besotted, trustful American gulps quietly—and signs.”

Dmitri Orlov, “The Five Stages of Collapse.”

“…we need a word that describes the artifacts generated in response to irrational actors who demand to be fooled. As the old saying goes, “A fool and his money are soon parted” – at the fool’s own insistence, no less! If the deer comes out of the forest and walks up to the hunter, it is not proper hunting, and this is not proper con artistry or grift or embezzlement or any other term we use to describe proper works of evil. If the victim, at the sight of the economic predator, goes into doggie submission, we must stop discussing the phenomenon in terms of conflict and consider whether what we are observing might be some strange instance of symbiosis.”

Dmitri Orlov, “Welcome to Fuffland!”

If you have read this far, and happen to be one of the people who suffered from the collapse of MtGox, learn to recognize yourself in Mr. Orlov’s zoological portrait.

Given as falling into a chumpatron is entirely voluntary, you can easily opt out of doing so if you can 1) decide that you do not want to, and 2) learn to distinguish the business end (hopper) of an operating chumpatron from your everyday surroundings (I should hope that there is, at the present time, a difference!)

For instance, was MtGox a proper, free-standing automatic chumpatron in its own right, implementing the entire “fuel cycle?” Or was it merely one component of a larger chumpatron? That is, a media machine which made sure that every glossy magazine page mentioning Bitcoin would take care to also mention “MtGox, the premier Bitcoin exchange…” And now that MtGox is gone, are you in search of a new, improved, glossier magazine, so that you can be introduced to a new MtGox, in which you can lose whatever remains of your coin?

Are you eager to trust your cryptographic private keys to some “trustworthy” fellow, by using Bitcoin “banks” – or otherwise?

If so, you are fuel, and you belong in a fuel tank. If you do not care to be fuel, use your gifts as an advanced living organism (e.g. nervous system) and learn to identify and evade your predators. You don’t even need a human brain for this – the brain of an insect will easily suffice. But you must use it.


  1. Perhaps there exists a more flavourful and/or historically-analogous translation of what those who lived through this period called it. But Americans, generally familiar with “The Roaring ’20s,” probably understand the basic idea. 

Mechanics of FLUXBABBITT.

The public discovery of FLUXBABBITT, a modestly-clever American spy gadget – that may or may not have been “fired in anger” yet – has provoked the usual flood of media garbage (“JTAG is a Chinese back door! Threat or menace?”) What follows is some basic investigation regarding the plausible workings of this device, based only on:

  • The leaked document itself.
  • A friend’s disassembled “Dell PowerEdge,” of several years’ vintage.
  • Intel’s published documentation for their “XDP” port.

Here is the port in question:

XDP socket in Dell PowerEdge - Depopulated.

XDP socket in Dell PowerEdge - Depopulated.

If you doubt your lying eyes, run – not walk – to your server closet and pop a Dell machine of recent manufacture. Remove the cooling duct cover. Look near the rear or front-most edge of the motherboard. You will find a similar picture.

But, threat or menace? Let’s find out; straight from the horse’s mouth:

3.10 Depopulating XDP for Production Units

At some point there may be a desire to remove the debug port from production units. It is recommended that the port real-estate and pads remain in place if they need to be populated for a future problem. Depopulate all physical devices (connector, termination resistors, jumpers) except: Termination of OBSFN_x[0:1] / BPM[4:5]# / PREQ#, PRDY#; Termination of TCK; Termination of TDI; Termination of TMS; Termination of TRSTn.

Intel Corp., “Debug Port Design Guide for UP/DP Systems.” p. 24.

Not exactly a bog-standard JTAG port (there is, in fact no particular standard for the socket, really; only for the bottom layer of the protocol) – from here you can access CPU registers, view and edit the contents of memory, issue bus read/write cycles, etc. AMD includes a similar (though incompatible) port in some of its products.

Presumably, FLUXBABBIT injects a little bit of nasty directly into RAM at boot time – quite like a traditional MBR infector. The somewhat-exotic delivery mechanism is there to counter a possible audit of the system firmware. (Why this audit would not be expected to include a basic physical inspection of the machine’s internals is a question that should be asked of our dear friends at Ft. Meade, not me.)

JTAG and other debug connectors are routinely found in mass-market products. The manufacturer often succumbs to the temptation of shaving a few pennies of unit cost by omitting the actual connector. This is what the leaked document refers to as “depopulated” (in fact, a standard term-of-art in electronics manufacture.)

The only thing even vaguely suspicious about Dell’s particular phantom debug port is: the pre-tinned solder pads. This could, however, be a mere artifact of the plating process undergone by the motherboard, rather than a deliberate helping hand for our favourite intelligence agency. (Attaching the missing connector would take all of five minutes for a fellow with a steady hand, a solder paste stencil, and a hot air machine – with or without pre-tinned pads.)

And regarding the doings of spies in general: there is really no limit as to what can be done to a physically-molested computer. Focusing on this particular feature is just the kind of tunnel-vision typical of the Computer Insecurity community.

If you’re wondering why there is no FLUXBABBIT in your own Dell, take comfort: the product is almost certainly obsolete. That is, rendered obsolete by “pwning” at design time. Physical molestation is reserved for archaic or otherwise uncooperative machinery.

Cardano Prototype Tidbits: TRNG Boards.

Cardano is a joint project of yours truly and Mircea Popescu. The objective: an inexpensive, user-auditable gadget which attempts to deal with the problem discussed in “Don’t Blame the Mice.” Refer to Mr. Popescu’s page for more details.

The device consists of a mainboard (not yet complete) to which two TRNG modules, containing two equivalent analog TRNG circuits (outputs subsequently XOR-ed) each, are connected. (First prototype of this type of TRNG is shown here. It contained one circuit of the kind used in the current version. Statistical analysis of the output for that unit can be seen here.) The design of this and other Cardano components will be documented in excruciating detail and published after the product goes on sale.

Some prototype tidbits! Click on the images to enlarge:

SMT reflow using an ordinary Electric Hob.

SMT reflow using solder paste on an ordinary Electric Hob.

Five units, complete except for header and shield anchor. Ready for Bed of Nails test rig.

Five units, complete except for header and shield anchor. Ready for Bed of Nails test rig.

Inspection under Microscope (actually a very spiffy stereo scope, but naturally you cant see this here.)

Inspection under Microscope (actually a very spiffy stereo scope, but naturally you can't see this here.)

Wanted: FLUXBABBITT.

By now, I imagine everyone with the slightest inkling of an interest in electronics has seen this scandalous tidbit:

The widget in question, two variants.

The widget in question, two variants.

To anyone who has received this generous gift from his Government, I offer:

4 Bitcoin for either of the above, in working condition. 1 Bitcoin for a dead or untestable unit.

Serious inquiries only! Please attach two high-res photographs of your unit; one where it sits in its socket, and another, sitting on a white sheet of paper.

Household Tips: Reviving a Dead Laser Cutter.

Not long ago, I happened to come across a very cheap and heavily used CO2 Laser Cutting Machine, made by Full Spectrum Inc. About 1K USD, including curbside delivery from across the continent.  I also bought the traditional water chiller, air compressor, exhaust manifolds, etc:

The junk seller promised an intact tube, and indeed there was:

Tube. CO2, Sealed, ~25kV operating voltage.

Tube. CO2, Sealed, ~25kV operating voltage.

Naturally, “the miser pays twice.” The poor thing released its magic smoke five minutes into the first test run. The laser would still turn on if triggered manually, but the machine had become: an expensive electric drill! The culprit? X-axis stepper motor driver (Allegro Microsystems A3983) seen below:

Motor Driver Board

Motor Driver Board. Why no Heat Sinks, F.S. Inc.?

Magic Smoke, it Did Escape.

Magic Smoke, it Did Escape.

I then contacted the manufacturer: who demanded a steep “transfer fee” before they would even discuss the sale of a spare. And so, we resort to Chinese methods. The recipe, should you, my dear reader, find yourself in a similar situation:

  1. Obtain new chip. I found, rather surprisingly, that the A3983 could only be had on eBay, from a Chinese vendor.
  2. Remove Stepper Motor Driver Board.
  3. Heat Dead Chip to around 280C with Hot Air Tool.
  4. Carefully lift Dead Chip off the board with Vacuum Tweezer (or, lacking the latter, a sharp set of ordinary tweezers.)
  5. Allow board to cool.
  6. Scrub board with ordinary flux remover. Allow board to dry.
  7. Coat the pads in solder. Especially the large thermal pad found underneath Stepper Motor Drivers like this one.
  8. Place new chip on the pads; secure in place with Kapton tape.
  9. Solder opposite corners, securing the chip. You can now remove the tape.
  10. Solder remaining pads.
  11. Remove all unwanted “bridges,” with the possible exception of those found on pads that are already connected together on the PCB.
  12. Heat the area to ~280C using Hot Air Tool to reflow solder over thermal pad.
  13. Allow unit to cool; re-install in machine.
  14. “Do Not Look Into Laser With Remaining Good Eye.”
New A3983 Driver.

New A3983 Driver.

Result: a working tool again! The motors buzz merrily, the laser cuts.

There was one remaining write-off: the USB to Parallel dongle (made by Full Spectrum) which plugged into the above controller. It breathes no more, merely heating a bit when plugged into a USB port. I blame its malfunction for the death of the stepper driver, though I lack positive proof. And this weird MS-Windows-only gadget is no great loss: turns out, the purely parallel-port motor board runs perfectly well with LinuxCNC. The end.


Now to add heat sinks (~$0.50 each):

Aluminum Heatsinks, Chinese.

Aluminum Heatsinks, Chinese.

Heat Sinks, Top Level.

Heat Sinks, Top Level.

Heat Sinks, Bottom Level.

Heat Sinks, Bottom Level.

Posted in: Cold Air, Distractions, Hardware, NonLoper by Stanislav 3 Comments

Of Decaying Urbits.

After the sale of my Urbit ‘dukedom’, several readers have written to me, asking ‘why.’ The following was my reply to one such letter, from a fellow who suggested implementing a proper hardware foundation for Nock (Urbit’s computational base.)


Dear [Reader],

Here was my own Nock.

But notice that I made no attempt to implement a Nock in FPGA. To understand why, I recommend: trying it yourself!

I confess that I am entirely uninterested in any further doings involving Nock. To learn why, read on…

The proof of the pudding – if you will – or of the turd, if you must! – is in the eating.

It isn’t that one could not, in principle, wangle together some silicon which executes Nock. But the impedance mismatch between any physically-plausible machine and anything resembling Nock is atrocious. And I do believe that this actually matters (further discussion here.)

The whole concept of ‘immutable data’ (and the more general idea of a formula-reduction approach to computation) is a fundamental dead-end. This is because physical machinery inescapably relies on mutable storage – and the reasonably-efficient use thereof.

The approach taken by Curtis is a result of his mis-spent youth among academics, who accept the costs of this ‘hair shirt’ approach to computation because it allows them to write ‘proofs’ (not to be confused with actual mathematical proofs. The very notion of proving any important property of a computational system as a whole, rather than of an abstract algorithm taken individually, is laughable – because real-world situations do not give you the kind of hard priors required to rise to the level of an honest mathematical proof.)

A. Perlis taught that ‘one cannot transition from the informal to the formal by formal means.’ And indeed you can’t.

The ‘proofs’ so beloved by FP academics are written in order to participate in a bizarre grant embezzlement scheme, rather than for any practical purpose. They are fruits of a poison tree, just the same as anything created by Lysenkoist biologists.

Curtis himself meditated on this fact back in ‘07, but has proceeded to give us exactly the kind of thing he condemned.

Likewise:

‘This is also the reason why functional programming languages ignore macros. The people behind them are not interested in programming automation. Wadler created ML to help automate proofs. The Haskell gang is primarily interested in advancing applied type theory.’ (Vlad Sedach, quoted in ‘Of Lisp Macros and Washing Machines’.)

The people who gave us the pseudo-mathematical ‘computational astrology’ on which Nock is ultimately based did not have the best interests of your brain in mind! Quite the opposite, in fact. Their one and only objective was to make themselves seem clever while adding to a titanic pile of drivel, beneath which virtually all honest work in computer science was mercilessly crushed.

Curtis answered the inescapable clunkiness of formula-reduction with ‘jets.’ And even if the latter did not rely on efficient solutions to NP-hard problems (formula recognition), they are a total cop-out from the ‘turtles all the way down’ approach we’ve been promised. The result is fundamentally rotten.

Anyone who steps up to the task of re-creating computing from the ground up must take hold of the entire stack – software and hardware – and fit it in his head as a coherent whole. This is the only way to reduce the moving parts to an absolutely-essential crystalline minimum. Urbit is quite clearly not the result of such an undertaking. Curtis baited our appetites with the promise of a ‘Year Zero’, and instead gave us a craven surrender to Unix and the von Neumann machine, with yet another layer of even less-comprehensible crud plastered on top.

‘Proof,’ especially of the pseudo-mathematical variety, will never substitute for: understanding. The kind of understanding you have of arithmetic, or of a doorknob. (Where is the mathematical proof that your doorknob turns? And yet it turns!)

It is possible to build a computer which an educated person can understand – in exactly the same way that a Pashtun blacksmith understands a Kalashnikov. But in order to actually do this, one must first believe that such a thing is possible.

Like the infamous Galloping Gertie bridge at Tacoma Narrows, Urbit is now and will forever remain of great educational importance – to all would-be cleaners of the Augean Stables of modern computing. As an elaborately-worked example of what not to do!

If you are interested in physically-plausible and effective bottom-up redesigns of the computational stack, study the Scheme-79 chip and related work. Or better still, consider what can be built from the asynchronous Muller C-gate, and how well the latter plays with a pure-dataflow computational paradigm.

Yours,
-Stanislav

The Alert Reader.

The following is a conversation I recently had with an alert and inquisitive reader. It has been redacted for brevity; handles/names/irrelevant things have been removed. Some text has been turned into links to relevant material.

Anyone still reading this page for reasons related to its original purpose is encouraged to read this; it may help to answer some questions about the long-term direction of my work and how it differs from that of other OS crackpots.


reader: I have some questions about _Unfeature V_ and macros in Loper Lisp. dunno if you have a minute?

me: fire away

reader: okay. so _Law IV_ states that “Compilation is to be considered a form of caching, and thus shall happen solely behind the scenes, like all other forms of caching”, but traditional Lisps do macro expansion at compile-time. So I’m wondering when and how macros are expanded in Loper Lisp, and how they relate to self-modifying code in the manner of Dr Massalin’s Synthesis OS.

me: spot-on! i favour macro as 1st class data type, as in ‘f-expr.’

reader: ah, like in Kernel! So according to Shutt’s thesis, fexprs are a bitch to compile if they have access to the dynamically scoped environment. how do you plan to get around that? if at all?

me: Quite easily, actually. Are you familiar with the concept of ‘dataflow CPU’ ?

reader: I thought about this quite a lot, and it amazes me that so few people seem to realise that call-by-name can be decoupled from the macro mechanism. Yes, but only minimally. treat me as an idiot, if it doesn’t waste your time

me: well

reader: unfortunately it’s very difficult to find resources about non-Von Neumann archs

me: the closest analogy familiar to most computer users is: a spreadsheet!

reader: mmm. I noticed that there was some parallel with reactive programming

me: when something changes, everything it depends on is updated automagically. so, in a dataflow machine, memory is split into cells forming dependency graphs. the cpus, if you can still call them that, merely walk the graphs.

reader: oh weird, I hadn’t even managed to piece that together. so how does that relate to fexprs? I can’t make the cognitive leap

me: well. the difficulties of compiling run-time anything vanish if you switch to a dataflow machine. the concept of ‘compile’ can also be made to vanish. as does the von neumann bottleneck.

reader: oh, because everything at runtime is (in effect) concurrent?

me: correct.

reader: gah, thanks. I’ve been struggling with this for weeks

me: a dataflow machine should be thought of as a collection of circuits rather than procedures. think ‘fpga’ but of arbitrary size. (in practice, fpga with swappable bitstream pages.)

reader: yeah. now I’m thinking S40 (Moore) but for lisp instead of forth

me: in order to picture this concept correctly, you really have to let go of the concept of cpu in the usual sense.

me: so, for instance, think of the terminal you are now typing into.
on a true dataflow box, it would simply be the end of a circuit (screen memory) directly linked to a circuit with the keyboard matrix decoder on the other end of it.
you thus also lose the concept of ‘interrupts’ or ‘processes’.
a dataflow box doesn’t need a scheduler,
or an interrupt controller.

reader: huh. how do you manage when multiple inputs are trying to write to the same output?

me: inputs cannot try anything

reader: also, I can see already how this helps with _Law I_!

me: outputs can depend on one or more inputs.
with the logic function (e.g. AND, OR) specified.
inputs can only sit there and be depended on (or not.)

reader: this is going to take a while for me to get used to, I apologise. do you have any references on this? I apologise if I missed some on your site—I downloaded the whole site and consolidated a single page version for repeated reading, so it’s not for a lack of effort…

me: there are not terribly many references.
look for the post on my site labaled ‘the book’.

reader: Kogge?

me: right.

reader: oh, Kogge has some stuff about this?

me: quite a bit.

reader: blast. it’s so hard to pick it up. going to have to hit up my library by the looks of it

me: and some bibliographic paths to follow.
i must warn you, you won’t find any satisfactory references.
because it never really went anywhere.
i ended up having to derive mostly from first principles.

reader: right. I read a little about Muller C-gates at least

me: afaik nobody’s built a dataflow machine on C-gates. but it strikes me as the loudly, abundantly obvious thing to do.

reader: do you mind if I pass on your comment about fexprs in Loper to interested friends? it’ll be comments in public though.
I’ve been trying to convince them about fexprs for a while now. one of them is on the Scheme R7RS committee.
I tried to get him to add fexprs to Scheme. he told me to go fuck myself, haha

me: do what you like, but let it be known that i hate R7 (and R6) with a passion.

reader: hehe. will do!

me: and can’t stand the systems where ‘f-expr’ is presently found. i’m not particularly interested in implementing lisps on von neumann cpus these days.

reader: yeah, very much understood. I tried to write several alternatives myself…

me: and don’t particularly care how people do it.

reader: but I never really understood the important of dataflow until now.
if you do write any Loper-oriented posts in future, I’d be interested to hear more about the Loper Lisp. you said in 2010 that “I still work on my own Lisp dialect and underlying system, but in the meantime I have been productive in Common Lisp”

me: it is almost entirely absent from the literature, unless you have access to a large university library

reader: in the old days you said Common Lisp is an abomination

me: it’s an abomination, but less so than the supposed replacements.

reader: and then after imbibing more Dr Naggum and following his prescription, I think, you ended up saying you wanted to be a Common Lisp virtuoso and that CL is a Stradivarius compared to the usual C-machine kazoo based shit

me: more or less. it’s a poorly kept stradivarius, in very marginal condition

reader: but what I’m wondering is what the divergence is in your view of a (dataflow) lisp compared to Common Lisp

me: but remains a stradivarius.

me: if you want to see what dataflow feels like on your own skin, pick up an fpga and program in verilog for a bit

reader: I think, though, a huge missing piece of my understanding was just how radical are the changes that dataflow causes

me: it isn’t a general-purpose language by any means (the only data type is: the bit) but will give you a sense of the flavour.

reader: fpga and verilog: sounds better than writing spreadsheets at least… thanks for the tip

me: a terrible language, but will give you a feel for what it’s like to write a program where every line ‘executes’ simultaneously.

me: (because it is a circuit rather than a procedure)

me: the proprietary scripting language ‘mathematica’ supports dataflow. but, unsurprisingly, dog-slow.

reader: I always sort of thought that about CPU designs in general. whilst software designers say “how many cycles is this going to take?”, a hardware designer knows how many cycles something is going to take on a chip: one. or else

me: dataflow never caught on because you absolutely need dedicated hardware.
if you want real efficiency, you can’t even use standard RAM. so it gets dismissed as nuttery, on the rare occasions it comes up.

reader: not even DDR4?

me: nope. the memory bus becomes the bottleneck.

reader: ah, the Von Neumann bottleneck

me: because you can only address one machine word (or, if you pay through the nose for ‘dual port’, two) at a time.

reader: right, I see. so it’s like computing a new generation of Conway’s Life

me: precisely.

reader: this is a little depressing, I must admit. I’ve been thinking obessively about how a Loper device (which I define as adhering to the Laws + the Lisp Unfeatures) cutting as many corners as possible, to get something to ship; to get people to understand; to get people to use it. I know you’ve said it will take astronomical time, and that you only expect it to have a ripple effect at best.
I thought if you were going to do it the proper way, I might be able to hack something together the ghetto way.

me: if you want ghetto, visit ‘Urbit’.

reader: but increasingly, I think that any equivocation over the bedrock is wrong, wrong, wrong.

reader: yeah, I’ve been through Urbit… and TempleOS for that matter. love ‘em. but yeah…

me: the latter is far closer to a decent example than urbit.

reader: I’ve run TempleOS on QEMU. can’t say the same for Urbit of course

me: mr. m gave me a ‘dukedom’ (’DYS’) and i still think urbit is fundamentally retarded. because it builds on a turd.

reader: I managed to get Movitz, the bare metal Common Lisp, working too. tried emulating every Lisp machine that I know of, too. success rate: bloody terrible. (only got one working. you own a real one)

me: x86 is simply not a very habitable place.

reader: went through the T3 Explorer code, at least. some funny stuff in there

me: for ab-initio os work

reader: yeah. just coercing an x86-64 chip into a 64-bit friendly state is… hell

me: http://herpolhode.com/rob/utah2000.pdf (Rob Pike on Systems Research)

reader: it’s a fucking 64-bit chip! why does everything have to be backwards compatible with the pyramids!

me: see ’standards’ section. do you know just what is involved with getting… a usb mouse working?

me: not even talking about a thumb drive. the standards document is book-length.

reader: yeah, I looked at USB drivers. hell. absolute hell.

me: just for usb mass storage. now do video (pick a chip… then come back in a year or two with a working 2d raster display. maybe.)

reader: one of the ramshackle approaches I was thinking of was to rip drivers out of an existing OS, just use those, bury the C-machine below the Loper tide mark. I am slowly unlearning my idiocy

me: been there, done that.

reader: circa 2000, there used to be an OSKit, I think it was developed by the University of Utah, that was modularised for this. that died, nobody maintained it. people are leaving the bedrock behind. they don’t even care these days, just a decade later

me: it’s a fundamentally brain-damaged idea. see ‘bedrock complexity.’

me: the pieces into which something breaks, when it breaks, are inescapably relevant.

reader: yeah, the LEGO blocks

reader: instruction set isomorphic to a high level programming language. that’s why I asked you today about the Loper Lisp

reader: very interested in the LEGO blocks you have in mind

me: if an interrupt could stop your cpu between, say, an ADD instruction executing, and the results being copied from the ALU to memory, there would be chaos.

me: (there were machines where this could actually happen.)

reader: heh!

reader: one of my meme-mottos: “NOTHING IS THREAD SAFE”

reader: (I bring it out when somebody writes thread safe code and then experience the natural thread bug that takes them by surprise)

me: this is then papered over by locking.

reader: or STM

me: resulting in a single-cpu machine that wedges routinely.

me: (see python’s global interpreter lock, etc)

reader: (as you know, there is no such thing as broken software. it either works, or it doesn’t work. nice parallel to the two speeds, now that I think about it)

reader: ah yes, the GIL…

reader: I also love when a dual core machine runs everything on one core because its kernel is too stupid to realise what can be shunted off to the other core

reader: (and this is “just works” Appleware)

me: the entire procedural paradigm is incurably stupid

me: i’m not particularly interested in attempts to improve it.

me: the correct number of cpus is… zero. instead, dataflow fabric that one could buy ‘by the kilo.’

me: so, in a dataflow machine, memory is split into cells forming dependency graphs.

me: performing the functions of both storage (nonvolatile) and computation.

reader: gold dust like this is what my mind is going to be running on until I can pick up Kogge

me: pick up a book on fpga and see the diagram of how the macrocells and block RAM are connected.

reader: er… CPU merges into RAM, essentially?

me: correct.

me: you end up with LUTs for the logic, programmable crossbar interconnects for the routing, and small giblets of memory scattered throughout.

me: one could use conventional DRAM, and even magnetic disk, but these would have to be used as transparent swaps

reader: have you fabbed any working fpga dataflow designs yet? or are they all in verilog?

me: i have quite a bit of experimental code.

me: presently stuck on reverse-engineering the xilinx toolchain.

me: you can’t actually do what i have in mind unless you have access to either 1) silicon fab 2) fpga with entirely known design

me: lacking the $1B for (1), i went with (2)

Dukedom for Sale.

Urbit “dukedom” [1] no. 24, “DYS”, belonging to yours truly, is hereby for sale!

Sold! Please enjoy your purchase, Mr. Gogulski!

Price: 4.5 BTC, payable to 15pWcAqagHf2EeFjapjWt4EhYWgL5fne7s. Sale ends on Dec. 31.

Anyone seriously interested should contact Curtis Yarvin, the author of Urbit, to broker the sale.

Alternatively: I’ve written a PGP-signed declaration of the sale. [2] You can simply send the BTC and show it to Mr. Yarvin, who will presumably honor the contract. You might want to ask him first, though.

No refunds or exchanges! Please think carefully before buying.


[1] Or, to use the author’s new terminology, “aircraft carrier.”

[2] My personal PGP key can be found in the Bitcoin community’s “WOT”, and also here on this site.

A Letter to Idiot Spammers.

Dear Cretins,

You will not succeed in guessing the password for this site. Kindly make better use of your botnet (e.g. mine Bitcoin) and go away.

Yours,
-Stanislav

Posted in: NonLoper, SoftwareSucks by Stanislav 5 Comments