Stalwart News

Abode of an online trashman


Playing over these moves is an eerie experience. They are not human; a grandmaster does not understand them any better than someone who has learned chess yesterday. The knights jump, the kings orbit, the sun goes down, and every move is the truth. It's like being revealed the Meaning of Life, but it's in Estonian.

Today science is biased towards rejecting any theory involving God. It is called naturalism. It proposes that any and all observable phenomena must have a natural cause. It also has the side-effect of barring God from having any influence in the world. If it appears that God has an influence in the world, a different explanation must be found. And men are masters of creating alternative explanations. It is called skepticism.

Education is an extension of the human instinct to reproduce. One of the things we should be doing is to purposely invent better ways to think, and then figure out how to teach them to children to create much more able adults than we are.

Anyone can cook, but only the fearless can be great

Hedonic treadmill

From soup to nuts

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

Most Non-Unix managers conclude that VI is either extraterrestrial in origin or was devised by the original Unix developers as part of a secret communications code to reach another dimension. -- To email me, first you have to remove my pants.

Benevolent Dictator For Life

The moral is obvious. You can't trust code that you did not totally create yourself.

im 86 years old, and, uh, im in the bathtub with two crocodiles, they're like pet crocodiles, cause real crocodiles have gone extinct, so they're like small and pink, and they're crawling all over me, im drinking nice, moroccan coffee, and im listening to old chief keef demos, and just like, beautiful, women everywhere, exotic pets, and i don't know i go down and check the mail


In the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. Today, this is no longer the case. Engineers now routinely write code for complicated hardware that they don’t fully understand (and often can’t understand because of trade secrecy.) The same is true at the software level, since programming environments consist of gigantic libraries with enormous functionality. Programming today is “More like science. You grab this piece of library and you poke at it. You write programs that poke it and see what it does. And you say, ‘Can I tweak it to do the thing I want?'”. The “analysis-by-synthesis” view of SICP — where you build a larger system out of smaller, simple parts — became irrelevant. Nowadays, we do programming by poking.

I have no idea if other fields have this same problem — my guess is that physicists are particularly prone to it, since we are trained early on to think that physicists are simply smarter than chemists or biologists. Those other fields are for the hard workers. We don’t put mathemeticians on this scale, because we secretly believe they’re smarter than us. Note to the biologist lynch mob: tounge is in cheek.)

Enjoy your work

ex nihilo nihil fit

one should base one’s work satisfaction on realistic achievements, such as advancing the state of knowledge in one’s specialty, improving one’s understanding of a field, or communicating this understanding successfully to others, rather than basing it on exceptionally rare events, such as spectacularly solving a major open problem, or achieving major recognition from one’s peers.

There is no royal way to geometry

we should be getting as much baloney as possible out of our own sandwiches.

after cultivating the right habits around doing nothing, you can actually obtain animal consciousness where you do not desire to do things.

Everybody writes a screen editor. It's easy to do and makes them feel important. Tell them to work on something useful.

Dotfile Madness. We are no longer in control of our home directories.

What you do need is some amount of time spent on the idea that computer programs are mathematical objects which can be reasoned about mathematically. This is the part that the vast majority of people are missing nowadays, and it can be a little tricky to wrap your brain around at first.

of course it runs NetBSD

Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: "I'd spell creat with an e."

Radio on TV

C is a Spartan language, and so should your naming be. Unlike Modula-2 and Pascal programmers, C programmers do not use cute names like ThisVariableIsATemporaryCounter. A C programmer would call that variable tmp, which is much easier to write, and not the least more difficult to understand.

free software without any warranty but with best wishes

Why don't you tell us what you are attempting to accomplish and perhaps we can suggest an easier way to "skin this cat".

I find it bizarre that people use the term "coding" to mean programming. For decades, we used the word "coding" for the work of low-level staff in a business programming team. The designer would write a detailed flow chart, then the "coders" would write code to implement the flow chart. This is quite different from what we did and do in the hacker community -- with us, one person designs the program and writes its code as a single activity. When I developed GNU programs, that was programming, but it was definitely not coding. Since I don't think the recent fad for "coding" is an improvement, I have decided not to adopt it. I don't use the term "coding", except if I were talking about a business programming team which has coders.

anything that’s truly real can stand up to scrutiny

If you are anything like me, then you are not an astrophysicist.

nota bene, "note well"

Leaning toothpick syndrome

A notable group of exceptions to all the previous systems are Interactive LISP [...] and TRAC [...] Their only great drawback is that programs written in them look like King Burniburiach's letter to the Sumerians done in Babylonian cuniform!


I never metacharacter I didn't like


lots of cream, lots of sugar

People often miss this, or even deny it, but there are many examples of object-oriented programming in the kernel. Although the kernel developers may shun C++ and other explicitly object-oriented languages, thinking in terms of objects is often useful. The VFS [Virtual File System] is a good example of how to do clean and efficient OOP in C, which is a language that lacks any OOP constructs

Thompson: One day I got this idea -- pipes, essentially exactly as they are today. I put them in the operating system in an hour -- they're trivial, they really are super trivial when you've got redirecting IO like UNIX already had. The idea was just mind blowing to us. Dennis and I came in and rewrote everything in the world -- our world, in one night. We converted everything. Mostly what we did was throw out extraneous messages. Like, sort would never say "hey I'm sorting, I'm merging, I'm doing this, I'm working on this file". All that garbage is gone -- sort would read, sort, then write. And suddenly sort was what we'd call a "filter" in that day. Then we converted everything that processed something into filters. It was massive, and just exciting.
Kernighan: And the world changed, essentially overnight.

Thompson: I've always been interested in chess, I played it when I was in 7th grade because that's when Bobby Fischer was right at his height. Bobby Fischer and I are like 10 years apart in age, except that he's dead. So, I would come home and on the cover of Life Magazine there'd be "Bobby Fischer". And here I am, exactly the same age, and what do I do? So I felt very very, I don't know, worthless. I joined the chess club and played chess in school, and was good at it, but I didn't like it. I didn't like to win -- because you feel sorry for somebody who'd take it seriously, and I didn't like to lose of course. And that cut down on my options.

In order to do evil things like convert raw bytes to floats, I chose to use the “unsafe” package, which made me feel manly, powerful, and highly supportive of private gun ownership.

A mathematician’s distance from the center of his universe is often measured by Erdős number − how many degrees of coauthorship separate him and the legendary Paul Erdős. It has been my good fortune to snag a Ritchie-Thompson number of one.

Java: the elegant simplicity of C++ and the blazing speed of Smalltalk.

Lehrer went on to describe his official response to the request to use his song: "As sole copyright owner of 'The Old Dope Peddler', I grant you motherfuckers permission to do this. Please give my regards to Mr. Chainz, or may I call him 2?"

To be “good at math” is a direct reference to the K to 12 math curriculum


Tautological cat is tautological

Erdős number

The majority of ordinary people want to live a peaceful life. In fact, the people who are the most determined to live a peaceful and calm life are constantly running into capitalism as an insurmountable obstacle to living it. Every single day we're pushed aside, pushed at the job, we're put under all kinds of pressure in the family and society -- anywhere we go in capitalist society, which impedes on our very modest wish to live a perfectly ordinary, non-eventful and harmonious life. Because of the pressures the crisis of capitalism puts on these people, you see that the people who are most determined to live a normal and tranquil life are pushed towards drawing more and more radical and revolutionary ideas, contrary to their wishes. And that in fact is the driving force of all revolutions.

To be a Hegelian is to have a big stomach. You've got the whole world in thought. That's how we understand someone like Zizek -- he's got a very big philosophical stomach... there's nothing he can't digest.

You are Not Expected to Understand This

‘You are not expected to understand this’ was intended as a remark in the spirit of ‘This won’t be on the exam,’ rather than as an impudent challenge.

What Are You Afraid Of? Another way of looking at it is that you’re picking a license based on what you are afraid of. All of these licenses assume you’re afraid of being sued. The MIT license is if you’re afraid no one will use your code; you’re making the licensing as short and non-intimidating as possible. The Apache License you are somewhat afraid of no one using your code, but you are also afraid of legal ambiguity and patent trolls. With the GPL licenses, you are afraid of someone else profiting from your work (and ambiguity, and patent trolls). This is a radical simplification, but if nothing else it can be a helpful framework in discussing with your attorney what license makes sense for your software.

Andy giveth, and Bill taketh away.

int risultato;
risultato = addizione(5,6);

Lorinda Cherry told me that that RTM (senior) used to test people's programs by feeding them to themselves as input, a.out < a.out. It helped cure people of the assumption that a program would only see "reasonable" inputs.

There's More Than One Way To Do It

Richard Stallman - The Last of the Hackers, he vowed to defend the principles of hackerism to the bitter end. Remained at MIT until there was no one to eat Chinese food with.

Shaving off an instruction or two was almost an obsession with them. McCarthy compared these students to ski bums. They got the same kind of primal thrill from “maximizing code” as fanatic skiers got from swooshing frantically down a hill. So the practice of taking a computer program and trying to cut off instructions without affecting the outcome came to be called “program bumming"

To err is human to forgive divine.

Nothing further

The Useless Use of Cat Award

Helen: As you know, god hates brute force

The sonavabich didn't study astronomy

Tesla doesn't have a cafeteria

Unix herder

enough _ to be dangerous

Enjoy every sandwich

The hacker ethic that played such a large part in advancing computer science, building gcc, building Linux, indeed building the world's computer systems and engineering the biggest peaceful economic boom in history, is more than just a thirst for knowledge about computers. It's the obsessive belief that knowledge exists to be shared, that helping someone by making their computer run better (or their air conditioner) is one of life's joys, and that the rules that prevent sharing and helping exist to be broken. [...] The hero is the one who knows how to fix things, and fixes them -- despite not being "authorized." The evil is the paperwork we construct around ourselves, the forms and regulations that take the place of people freely helping each other.

Next time your boss comes to you and asks "Can't you just...?" Stop. Think about what he just asked. Your boss is managing complexity and he doesn't even know it, and he's just described the interface he wants. Before you dismiss him as asking for the impossible, at least consider whether or not you could arrange things so that it looks like you're doing the really simple thing he's asking for, rather than making it obvious to all your users that you're doing the really complex thing that you have to do to achieve what he asked for. You know that's what you're doing, but you don't have to share your pain with people who don't know or care about the underlying complexity.

The fact is, your brain is built to do Perl programming. You have a deep desire to turn the complex into the simple, and Perl is just another tool to help you do that--just as I am using English right now to try to simplify reality. I can use English for that because English is a mess. This is important, and a little hard to understand. English is useful because it's a mess. Since English is a mess, it maps well onto the problem space, which is also a mess, which we call reality. Similarly, Perl was designed to be a mess (though in the nicest of possible ways).

Our variable and function naming convention is to match the surrounding code. For example, if you see that variables use a CamelCase style, match that. If they use underscores, or are lowercase, match that. Readability and consistency within a section of code is of greater importance than universal consistency.

Home is a place where you are without having to justify why you're there.

If you are writing a script that is more than 100 lines long, you should probably be writing it in Python instead. Bear in mind that scripts grow. Rewrite your script in another language early to avoid a time-consuming rewrite at a later date.

This code is MIT Licensed. Do stuff with it.

Just some dotfiles son

** auuuuugggghhhhhh **
Oh bother and blast, I am mere version 3 compiler and cannot see into the future.
You have given me a version 5 program. This means my time on earth has come.
You will have to kill me. You will uninstall me, and install a version five compiler. I will be no more. I will cease to exist.
Goodbye old friend.
I have a headache. I'm going to have a rest...

Prison mellowed him wonderfully...Suffering either embitters you or, mercifully, ennobles you


не болтай ногами

I couldn't really learn Erlang, 'cos it didn't exist, so I invented it

I hate complexity. I tolerate it when there is no other way, but as my math kids say, if you have the right answer, it is beautiful and simple. Complex is reserved for when you haven't figured it out yet.

You must speak the native language of the community you want to be part of. If you deride their local language and proselytize Esperanto, the natives may not take kindly to you!

Finally, although the subject is not a pleasant one, I must mention PL/1, a programming language for which the defining documentation is of a frightening size and complexity. Using PL/1 must be like flying a plane with 7000 buttons, switches and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language —our basic tool, mind you!— already escapes our intellectual control.

Argument three is based on the constructive approach to the problem of program correctness. Today a usual technique is to make a program and then to test it. But: program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence. The only effective way to raise the confidence level of a program significantly is to give a convincing proof of its correctness. But one should not first make the program and then prove its correctness, because then the requirement of providing the proof would only increase the poor programmer’s burden. On the contrary: the programmer should let correctness proof and program grow hand in hand. Argument three is essentially based on the following observation. If one first asks oneself what the structure of a convincing proof would be and, having found this, then constructs a program satisfying this proof’s requirements, then these correctness concerns turn out to be a very effective heuristic guidance. By definition this approach is only applicable when we restrict ourselves to intellectually manageable programs, but it provides us with effective means for finding a satisfactory one among these.

We all know that the only mental tool by means of which a very finite piece of reasoning can cover a myriad cases is called “abstraction”; as a result the effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. In this connection it might be worth-while to point out that the purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.

The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

Remember when, on the Internet, nobody cared that you were a dog?

In theory, you eschew ornamentation

C++ is several different languages in one compiler. You can use it as a stricter C, as a C with some syntactic support of ADTs, as C++98-style OO, or as a C++17 style meta-programming system. And I’ve probably missed a few. The resulting complexity requires a lot of discipline to use successfully, especially in a large team.


“understanding hardware” was akin to fathoming the Tao of physical nature.)

Kotok was not the only one preparing for the arrival of the PDP-1. Like a motley collection of expectant parents, other hackers were busily weaving software booties and blankets for the new baby coming into the family, so this heralded heir to the computing throne would be welcome as soon as it was delivered in late September.

weapons or tools that aren’t very trustworthy are held in very low esteem -— people really like to be able to trust their tools and weapons.

The man of the future. Hands on a keyboard, eyes on a CRT, in touch with the body of information and thought that the world had been storing since history began. It would all be accessible to Computational Man.

During the 1970s, when structured programming was introduced, Harlan Mills pointed out that the programming team should be organized like a surgical team--one surgeon and his or her assistants, not like a hog butchering team--give everybody an axe and let them chop away.

I am as proud as a mother hen

Open Source Won the Battle, But Lost the War... a larger share of computing is performed by fixed function products, where the ability to modify the product is not part of the value proposition for the customer. Now ironically, open source has flourished in these fixed function devices, but more often than not, the benefits of those freedoms being realized more by those making the products rather than end users (which actually was true of the software market even back then: Microsoft was a big consumer of open source software, but their customers were not). Similarly, one could argue that open source has struggled more in the general purpose desktop space than anywhere else, but as the web and cloud computing has grown, desktop computing has increasingly been used for a narrower purpose (primarily running a browser), with the remaining functions running in the cloud (ironically, primarily on open source platforms). In short: open source does really own the general purpose computing space, but the market has become more sophisticated.

Работаете братья

standard hackerese pejorative

But to Gosper, LIFE was much more than your normal hack. He saw it as a way to “basically do science in a new universe where all the smart guys haven’t already nixed you out two or three hundred years ago. It’s your life story if you’re a mathematician: every time you discover something neat, you discover that Gauss or Newton knew it in his crib. With LIFE you’re the first guy there, and there’s always fun stuff going on.

"The lyf so short, the craft so long to lerne." - Chaucer

The original used the EBCDIC cent sign character to start and another cent sign to end the comment (i.e. programmer's two cents).

Bourne to Program, Type with Joy

PICNIC: Problem In Chair Not In Computer


This might not seem like something that noteworthy, but I see it as the exact type of thing one would think of while taking a shower, which is why I love it.

I like to think of a cybernetic forest filled with pines and electronics where deer stroll peacefully past computers as if they were flowers with spinning blossoms.

It seems that many modern programmers prefer lasagna code to spaghetti code. I'm still debating which is worse. - Bill

Meritocracy was meant to be a satirical concept so clearly wrongheaded that nobody could think it was a good idea. There is no true meritocracy - there's only an arbitrarily chosen set of metrics that any given organisation considers to be of merit, and people who either benefit or lose out as a result of that specific choice. We don't understand community dynamics and the process of software development well enough to say with absolute certainty that a given set of metrics is objectively the correct measure, and as a result we cannot provide a meaningful definition of merit.

'Ken Thompson has an automobile which he helped design. Unlike most automobiles, it has neither speedometer, nor gas gauge, nor any of the other numerous idiot lights which plague the modern driver. Rather, if the driver makes a mistake, a giant “?” lights up in the center of the dashboard. “The experienced driver,” says Thompson, “will usually know what’s wrong.”'

Gods of BSD

Meanwhile, the GPL has legally enforced a consortia on major commercial companies. Red Hat, Novell, IBM, and many others are all contributing, and feel safe in doing so because the others are legally required to do the same. It's basically created a "safe" zone of cooperation, without anyone having to sign complicated legal documents. A company can't feel safe contributing code to the BSDs, because its competitors might simply copy it without reciprocating. There's much more corporate cooperation in the GPL'ed kernel code than with the BSD'd kernel code. Which means that in practice, it's actually been the GPL that's most "business-friendly". So while the BSDs have lost energy every time a company gets involved, the GPL'ed programs gain almost every time a company gets involved. And that explains it all.

No time for shoes; we sped here in our winged car.

ego death arms race

Dennis told me he was going to a class reunion at Harvard.
Me: "I guess you're the most famous member of your class."
dmr: "No, the Unabomber is.

give me a persian rug where the center looks like galaga

When "history" overtakes some new chunk of the recent past, it always comes as a relief--one thing that history to fumigate experience, making it safe and sterile.... Experience undergoes eternal gentrification; the past, all parts of it that are dirty and exciting and dangerous and uncomfortable and real, turns gradually into the East Village.

The "Who wrote the Bourne shell?" question kind of reminds me of the old Bugs Bunny bit where he'd be on some radio gameshow and the host would ask, "Who's buried in Grant's Tomb?" and no one would get it right. (Except totally different because, of course, no one is buried in Grant's Tomb: Grant and his wife are entombed in sarcophagi above ground, not buried below.)

Prometheus: Get going then. Keep to the course you're on.
Ocean: You speak to one already under way. My four-foot bird is skimming with his wings the level paths of air. He will be glad to bend his knee, I think, in his own stall. (Ocean exits as he had entered, flying on his winged beast.)

Not everyone at the labs had a three-letter login. Bjarne Stroustrup had the login bs, despite several gentle suggestions from myself and others that had add a middle initial

Before I was shot, I always thought that I was more half-there than all-there—I always suspected that I was watching TV instead of living life. People sometimes say that the way things happen in movies is unreal, but actually it's the way things happen in life that's unreal. The movies make emotions look so strong and real, whereas when things really do happen to you, it's like watching television—you don't feel anything. Right when I was being shot and ever since, I knew that I was watching television. The channels switch, but it's all television.

г на п (гавно на палке)

Under the siren song of affluence, we began offshoring critical production capacity in the 1960s for geopolitical reasons. In 1971, economist Nicholas Kaldor noted that American financial policies were turning a "a nation of creative producers into a community of rentiers increasingly living on others, seeking gratification in ever more useless consumption, with all the debilitating effects of the bread and circuses of imperial Rome."

McIlroy implies that the problem is that people didn't think hard enough, the old school UNIX mavens would have sat down in the same room and thought longer and harder until they came up with a set of consistent tools that has "unusual simplicity". But that was never going to scale, the philosophy made the mess we're in inevitable. It's not a matter of not thinking longer or harder; it's a matter of having a philosophy that cannot scale unless you have a relatively small team with a shared cultural understanding, able to to sit down in the same room.


When port wine is passed around at British meals, one tradition dictates that a diner passes the decanter to the left immediately after pouring a glass for his or her neighbour on the right; the decanter should not stop its clockwise progress around the table until it is finished. If someone is seen to have failed to follow tradition, the breach is brought to their attention by asking "Do you know the Bishop of Norwich?"; those aware of the tradition treat the question as a reminder, while those who don't are told "He's a terribly good chap, but he always forgets to pass the port."

It is possible to make man suid to a user man. Then, if a cat directory has owner man and mode 0755 (only writable by man), and the cat files have owner man and mode 0644 or 0444 (only writable by man, or not writable at all), no ordinary user can change the cat pages or put other files in the cat directory. If man is not made suid, then a cat directory should have mode 0777 if all users should be able to leave cat pages there. - $ man man

The Collatz Conjecture was once called "a Russian plot to stagnate American mathematics"

rev < /usr/share/dict/web2 | sort | rev > ~/rhyming_dictionary.txt

If anyone even hints at breaking the tradition honoured since FØRTRAN of using i, j, and k for indexing variables, namely replacing them with ii, jj and kk, warn them about what the Spanish Inquisition did to heretics.

I remember a really interesting quote I've heard (forgive me if it's off, it's been a while): "originally a movie looks like it was made by 100 people, then you edit it to look like it was made by 1 person, and then the real magic happens when it looks like it was made by no one". I feel like spacemacs is currently on that 100 ppl choppiness atm, doom is at 1, and no one has figured out how to make it seem natural as it differs per person. I feel like the magic happens when I code my own config, as I know myself best. Idk if that makes sense.

The construction of software should be an engineering discipline. However, this doesn’t preclude individual craftsmanship. Think about the large cathedrals built in Europe during the Middle Ages. Each took thousands of person-years of effort, spread over many decades. Lessons learned were passed down to the next set of builders, who advanced the state of structural engineering with their accomplishments. But the carpenters, stonecutters, carvers, and glass workers were all craftspeople, interpreting the engineering requirements to produce a whole that transcended the purely mechanical side of the construction. It was their belief in their individual contributions that sustained the projects: We who cut mere stones must always be envisioning cathedrals. (Quarry worker’s creed).

Sometimes you want work computers to be sea monsters, not cattle.

Breakable Toys. You work in an environment that does not allow for failure. Yet failure is often the best way to learn anything. Only by attempting to do bold things, failing, learning from that failure, and trying again do we grow into the kind of people who can succeed when faced with difficult problems. Solution: Budget for failure by designing and building toy systems that are similar in toolset, but not in scope to the systems you build at work.

Lopatin’s own interests lay in filmmaking, and later, music journalism, but his parents’ experience with musical and creative censorship while behind the Iron Curtain would help inform his contextual, resourced approach to creating electronic music as OPN later on. “Music was rare and very special to them,” he remembers. “My dad has absolutely crazy stories about trading vodka for the microphone that a trolley driver uses to announce stops and then converting it for band practice, or listening to bootleg records pressed on X-rays. When you don’t have shit, you really learn to actually appreciate it. It’s so fundamental and yet so easy to overlook.”

Clifford Stoll: The first time you do something, it's science. The second time, it's engineering. The third time it's just being a technician. I'm a scientist -- once I do something I want to do something else.

Clifford Stoll: It's out of problems that you can't understand that you make progress. Doing science means bumping into something that makes you wonder, that you don't know the answer to, and in getting to the answer brings you to an understanding of the bigger world around us

The debugging strategy has been "Shake the tree, fix what falls out.: That works really good at first, but now you have to shake the tree really hard to get anything to fall out

Consider also this; all the time you spend studying is time you don't spend helping others, or keeping fit, or being a good friend. You need to decide what the balance of your priorities and time is, but I'd argue someone who spends more time seeking knowledge than being virtuous because seeking knowledge is virtuous is likely missing something very important. As for overspecialisation, people underestimate the importance of intersectionality. You cannot understand physics without a strong grasp of maths. You cannot understand literature without being aware of the historical context in which it was written. Study multiple areas to understand your own better would be my view, as it gives you that all-important tool: context.

Suppose that ah ken aw the pros and cons, know that ah’m gaunnae huv a short life, am ay sound mind etcetera, etcetera, but still want tae use smack? Tey won’t let ye dae it. Tey won’t let ye dae it, because it’s seen as a sign of thir ain failure. Te fact that ye jist simply choose tae reject whit they huv tae ofer. Choose us. Choose life. Choose mortgage payments; choose washing machines; choose cars; choose sitting oan a couch watching mind- numbing and spirit- crushing game shows, stufng fuckin junk food intae yir mooth. Choose rotting away, pishing and shiteing yersel in a home, a total fuckin embarrassment tae the selfsh, fucked- up brats ye’ve produced. Choose life. Well, ah choose not tae choose life. If the cunts cannae handle that, it’s thair fuckin problem. As Harry Lauder sais, ah jist intend tae keep right on to the end of the road.

Years ago, anthropologist Margaret Mead was asked by a student what she considered to be the first sign of civilization in a culture. The student expected Mead to talk about fishhooks or clay pots or grinding stones. But no. Mead said that the first sign of civilization in an ancient culture was a femur (thighbone) that had been broken and then healed. Mead explained that in the animal kingdom, if you break your leg, you die. You cannot run from danger, get to the river for a drink or hunt for food. You are meat for prowling beasts. No animal survives a broken leg long enough for the bone to heal. A broken femur that has healed is evidence that someone has taken time to stay with the one who fell, has bound up the wound, has carried the person to safety and has tended the person through recovery. Helping someone else through difficulty is where civilization starts, Mead said." We are at our best when we serve others. Be civilized.

Does what it says on the tin.

I have the right ideas, but my words are too complicated. I need to simplify them, so that people won't get lost in the dark when they see and hear them. I want them to shine like beacons of light in a world of overly complicated darkness. One day I will find the right words, and they will be simple.

In modern parlance, every single instruction was followed by a GO TO! Put that in Pascal's pipe and smoke it.

I have often felt that programming is an art form, whose real value can only be appreciated by another versed in the same arcane art;

Quiche Eaters

Most present-day inventions, it seems to me, do not differ much from the way humanity has been picturing them in imagination for countless generations. The submarine and aeroplane must have been foreseen by many of our species from the time they first observed the ways of the fish and the bird. All tele-instruments are probably what men always hoped they might be; and the destructive power of our hydrogen bombs is no more terrifying than the Biblical prediction of their impact. But I doubt whether even the most fertile imagination possessed by a mathematician a short century ago could have foreseen the wondrous features of our high-speed electronic computer -

A good programmer was concise and elegant and never wasted a word. They were poets of bits.

Blurbs are hilarious to me. Even modest and prudent writers suddenly become the most fiery and flowery spokespeople when asked to write a blurb. It’s amazing. It’s this whole register of language people would never use otherwise, part self-help and part advertising—you need this book, this book will help you live—written by “writers” who are all trying to outdo themselves. So it seemed like perfect source material for a poem.

We say most aptly that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves

This is computer science. There aren't restrictions. I can do anything I want. It's just bits. You don't own me.

conceptual integrity

Scheme is an artisan’s little hammer

Dogfood. It is good practice to use the software one is developing on a daily basis, even when one is not actively working on developing or testing the product. This is known as "eating one's dogfood". Many bugs, usually user interface (UI) issues but also occasionally web standards bugs, are found by people using daily builds of the product while not actively looking for failures. A bug found using this technique which prevents the user of the product on a regular basis is called a "dogfood" bug and is usually given a very high priority.

The code base's age makes it likely that its authors by now either have advanced to management positions where reading books as this one is frowned upon or have an eyesight unable to deal with this book's fonts. These changes conveniently provide me with a free license to criticize code without fear of nasty retributions.

A quick way to judge a language implementation is by inspecting its string concatenation function. If concat is implemented as a realloc and memcpy, well, the upstairs lights probably aren’t set to full brightness.

Read broadly (there are a few books recommended in my earlier columns). Always take jobs that expand what you might do (I rarely take a job in the same industry twice). Have your own projects that you're interested in, and they don't need to be as large as a FreeBSD. Code for fun and not always for profit if you can afford it. I started by "playing with computers" as it was called when I was young and I continue to "play" as well as work. Undirected learning has a place.

Multics Emacs proved to be a great success — programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program. So Bernie saw that an application — a program that does something useful for you — which has Lisp inside it and which you could extend by rewriting the Lisp programs, is actually a very good way for people to learn programming. It gives them a chance to write small programs that are useful for them, which in most arenas you can't possibly do. They can get encouragement for their own practical use — at the stage where it's the hardest — where they don't believe they can program, until they get to the point where they are programmers.

Excellent testing can make you unpopular with almost everyone.

But I was never a debugger-first programmer. None of us in the lab were, and that's probably why the debugging setup in Unix is to this day so weak compared to what other systems provide.

Rob's Rule - what a program presents as output it should also accept as input.

> "... But truth be known, I'm sort of a printf() debugger."
So am I, and ISTR Brian Kernighan and Larry Wall saying that they are, as well.

Who shall be the arbiters of good taste?

Yes, Virginia, it had better be unsigned

An étude (a French word meaning study) is an instrumental musical composition, usually short, of considerable difficulty, and designed to provide practice material for perfecting a particular musical skill.


If you want to abstract away the machine from the end user, it's wise to not propagate its internal word size to users trying to build user interfaces for scientific applications!

Finally there came in the mail an invitation from the Institute for Advanced Study: Einstein…von Neumann…Wyl…all these great minds! They write to me, and invite me to be a professor there! And not just a regular professor. Somehow they knew my feelings about the Institute: how it’s too theoretical; how there’s not enough real activity and challenge. So they write, “We appreciate that you have a considerable interest in experiments and in teaching, so we have made arrangements to create a special type of professorship, if you wish: half professor at Princeton University, and half at the Institute.”
Institute for Advanced Study! Special exception! A position better than Einstein, even! It was ideal; it was perfect; it was absurd!
It was absurd. The other offers had made me feel worse, up to a point. They were expecting me to accomplish something. But this offer was so ridiculous, so impossible for me ever to live up to, so ridiculously out of proportion. The other ones were just mistakes; this was an absurdity! I laughed at it while I was shaving, thinking about it.
And then I thought to myself, “You know, what they think of you is so fantastic, it’s impossible to live up to it. You have no responsibility to live up to it!”
It was a brilliant idea: You have no responsibility to live up to what other people think you ought to accomplish. I have no responsibility to be like they expect me to be. It’s their mistake, not my failing.
It wasn’t a failure on my part that the Institute for Advanced Study expected me to be that good; it was impossible. It was clearly a mistake—and the moment I appreciated the possibility that they might be wrong, I realized that it was also true of all the other places, including my own university. I am what I am, and if they expected me to be good and they’re offering me some money for it, it’s their hard luck.

capitalism in molecular life happens in plasma

I like to think of RPN as the computing equivalent of mis en place; before you start cooking, you get all your ingredients lined up.

Parse, don’t validate

Europeans tend to pronounce his name properly, as Nih-klaus Virt, while Americans usually mangle it into something like Nickles Worth. That has led to the programmer joke saying Europeans call him by name while Americans call him by value.

One thing to keep in mind when looking at GNU programs is that they're often intentionally written in an odd style to remove all questions of Unix copyright infringement at the time that they were written. The long-standing advice when writing GNU utilities used to be that if the program you were replacing was optimized for minimizing CPU use, write yours to minimize memory use, or vice-versa. Or in this case, if the program was optimized for simplicity, optimize for throughput.

an ornamental text

quintessentially collegiate in the sense that it involved ordering pizza.

If the Author of the Software (the "Author") needs a place to crash and you have a sofa available, you should maybe give the Author a break and let him sleep on your couch. If you are caught in a dire situation wherein you only have enough time to save one person out of a group, and the Author is a member of that group, you must save the Author.

>>> I wish it was as easy for others to have such satisfaction these days.
>>Amen to that.  I think we all lived, you Bell Labs people especially, in a simpler time.  We were trying to fit into 64K, split I/D 128K, my Z80 was 64K but some extra for graphics, then the VAX came and we were trying for 1MB, Suns with 4MB. So small mattered a lot and that meant the Unix philosophy of do one thing and do it well worked quite nicely. What that also meant, to people coming on a little bit after, was that it was relatively easy to modify stuff, the stuff was not that complex. Even I had an easy time, my prime was back at Sun when SunOS was a uniprocessor OS.  That is dramatically simpler than a fully threaded SMP OS that has support for TCP offloading, NUMA, etc, etc. I really don't know how systems people do it these days, it is a much more complex world. So I'm with Norm, it was fun back in the day to be able to come in and have a big impact.  I too wish that it was as easy for young people to come in and have that impact.  I've done that and it was awesome, these days, I have no idea how I'd make a difference.
>By doing something besides systems. There are tons of open source projects at the user level that make a difference. Consider something like AsciiDoc.  Less than 10 years old (methinks), and in use for production by at least one major technical publisher that I know of. (And it sure beats the pants off of DocBook XML.) Or the work I do on gawk, Chet on Bash, other GNU bits. There's a whole world out there besides just the kernel.

Rules, guidelines, and principles are gems of distilled experience that should be studied and respected. But they’re never a substute for thinking critically about your work.

The other way, which is actually a really meaningful thing to me, and it’s super super subtle, is that I included a fast-forward button, so you can fast forward the music, you can skip to the next track, et cetera. But the subtle part is that, when you press the fast-forward button, you have changed the playback speed of the piece of music, but the random-number generator is moving ahead at the same rate. And so, the result of that is that you’ve now offset the music a little bit from the random sequence that it would have gotten had you not pressed that button. And, so you are suddenly getting an entirely new version of the piece. It sounds pretty much identical, because I use randomness in this textural level in the sound synthesis. It’s not like it has any control at the actual musical level. But the philosophical side of it is that if you never press the fast-forward button, then it’s this closed computational system, and it’s basically output-only. You know, you’re turning on the chip, the code starts running and it’s this closed system that mirrors some basic number theory. And the moment you press the button, then you’ve kind of interjected in this pure closed system, and you’ve brought in all of the messiness of the real world — like whether or not our time and space is grid-based on the lowest level, or whether or not we have free will, or where randomness comes in in quantum mechanics. All of these messy real world things suddenly come into the system and it’s no longer this clean abstract thing. And so, for me, what that also means is that the work of mathematicians, like Alan Turing and Kurt Gödel, these people who really explored the limits of computation, and the limits of mathematics, really — their work in applicable until you press the fast-forward button. It’s applicable so long as this is a deterministic system, and you kind of kill that determinism when you press the fast-forward button. So I think of that as, like, playing the piece.

And like the wooden boat, Morse code gives us a link with the past. The old salts of radio are out there, still pounding the brass, and willing to chat with anyone who makes a credible effort to enter their world.
I travel with a small radio that fits into an old laptop computer bag. I'll throw a wire out the hotel window, slip on my headphones, dim the room lights, and see what's coming in. Sometimes I'll hear weak signals with exotic distortions picked up in the ionosphere as the waves crossed the equator or bounced over the pole. I feel lightning bolts jump from my fingers when I squeeze the key to send my own thoughts back the other way.
Sometimes I'll hear the crisp clean signal of an A-1 operator, probably a retired operator, probably living in Phoenix and having trouble sleeping. Once for them code unlocked adventure. They traveled the world keeping in touch with dits and dahs. They make it sound like poetry. I like to meet these guys by radio. In code they don't seem so old.


Incidentally, adjusting the Q on a random EQ band with no cut or boost is a surefire way of convincing most clients that something sounds better...

What's interesting is that at the same time that we were doing AWK, there was a project at Xerox PARC called ... Poplar ... which had fairly similar goals. That is, they were going to take these files consisting of a lot of characters and you break them apart in various ways and you process them using some language and you pass them on. And they put a lot of work into clever ideas. It was a functional programming language. Which was ... especially then a big deal, now it's less of a big deal. And it was supposed to be user friendly ... They had all sorts of stuff. And AWK lived and Poplar died. And I don't know, you know, this has affected my view about people who talk about user interfaces fairly severely. I'm no longer convinced anybody knows anything about user interface. It's clear some things are easier to use and some things are harder to use. That's okay. But it's also clear that people, people learn a lot. ... although AWK s language is both C-like and not real elegant, a lot of AWK programming isn't done by getting the reference manual and writing code. What is done is by finding some AWK program that's very similar to what you want to do and changing it, okay? And then the fact that it's a little weird isn't so bad. It's, you know what you're just changing. AWK lives partly, I think, because of its programming by example.


I think I was here two years before I understood anything Ken said. Because if you ask Ken a question, he sort of gives you a one line answer to the question he thinks you ought to have asked approximately. I don't know what he thinks he's doing, but that's certainly what it seemed to be like he was doing. And you have to know a lot to understand a one line answer to these things. And after a while the answers become extremely informative. But it really took a long time before I just understood anything Ken was saying.

I’d love to see Jack Tramiel and Richard Stallman in a debate. God, that would be just great.

I think almost every experienced programmer has gone through three stages and some go through four:
Cowboy coders or nuggets know little to nothing about design and view it as an unnecessary formality. If working on small projects for non-technical stakeholders, this attitude may serve them well for a while; it Gets Things Done, it impresses the boss, makes the programmer feel good about himself and confirms the idea that he knows what he's doing (even though he doesn't).
Architecture Astronauts have witnessed the failures of their first ball-of-yarn projects to adapt to changing circumstances. Everything must be rewritten and to prevent the need for another rewrite in the future, they create inner platforms, and end up spending 4 hours a day on support because nobody else understands how to use them properly. Quasi-engineers often mistake themselves for actual, trained engineers because they are genuinely competent and understand some engineering principles. They're aware of the underlying engineering and business concepts: Risk, ROI, UX, performance, maintainability, and so on. These people see design and documentation as a continuum and are usually able to adapt the level of architecture/design to the project requirements.
At this point, many fall in love with methodologies, whether they be Agile, Waterfall, RUP, etc. They start believing in the absolute infallibility and even necessity of these methodologies without realizing that in the actual software engineering field, they're merely tools, not religions. And unfortunately, it prevents them from ever getting to the final stage, which is:
Duct tape programmers AKA gurus or highly-paid consultants know what architecture and design they're going to use within five minutes after hearing the project requirements. All of the architecture and design work is still happening, but it's on an intuitive level and happening so fast that an untrained observer would mistake it for cowboy coding - and many do.
Generally these people are all about creating a product that's "good enough" and so their works may be a little under-engineered but they are miles away from the spaghetti code produced by cowboy coders. Nuggets cannot even identify these people when they're told about them, because to them, everything that is happening in the background just doesn't exist.
Some of you will probably be thinking to yourselves at this point that I haven't answered the question. That's because the question itself is flawed. Cowboy coding isn't a choice, it's a skill level, and you can't choose to be a cowboy coder any more than you can choose to be illiterate.
If you are a cowboy coder, then you know no other way.
If you've become an architecture astronaut, you are physically and psychologically incapable of producing software with no design.
If you are a quasi-engineer (or a professional engineer), then completing a project with little or no up-front design effort is a conscious choice (usually due to absurd deadlines) that has to be weighed against the obvious risks, and undertaken only after the stakeholders have agreed to them (usually in writing).
And if you are a duct-tape programmer, then there is never any reason to "cowboy code" because you can build a quality product just as quickly.

One thing you have to be careful about, though, is that duct tape programmers are the software world equivalent of pretty boys… those breathtakingly good-looking young men who can roll out of bed, without shaving, without combing their hair, and without brushing their teeth, and get on the subway in yesterday’s dirty clothes and look beautiful, because that’s who they are. You, my friend, cannot go out in public without combing your hair. It will frighten the children. Because you’re just not that pretty.

Hackers don't write documentation, or plan out their programming, instead they write Manifestos.

"Hypergrunge" was more specific, because a lot of the peripheral ideas about this record are like very directly dealing with observations in the music industry, and grunge is like, an insane thing, because it's a fallacy, it's totally fabricated. All grunge is hypergrunge. It's been synthesized by all of these marketing factors. You know about grunge speak? Or the story of grunge speak? There was a secretary at the Sub Pop office in the '90s, she was always getting interviewed because journalists would just come in and be like "So, what's grunge?" And she got sick of it, and she started tricking them or lying to them, like "Yeah, there's a whole language to grunge, dude." And she made up all these words that were like, grunge speak. [The New York Times] went and published this thing that she tricked them with, and I was so inspired by that.

How does one patch KDE2 under FreeBSD?

pete burkeet
this is a brilliant exercise. we need to talk.

trips around the sun

These compromises mean that we can best think about typeface design as the creation of a wonderful collection of letters but not as a collection of wonderful letters.

the medium is the massage

Piratical Practices

Ever since I heard this story, I can't help but see that we live in a world brimming with "electric" meat. Learn to find it. Then get out there and grab it.

I have not reached the burrito point yet

These digits that Samson had jammed into the computer were a universal language that could produce anything-—a Bach fugue or an antiaircraft system.

Yes, formerly they wanted your blood, now they want your ink.

der Herr Warum

Ever since the 50's, the fashion in language design has been minimalism. Languages were designed around paradigms, and paradigms were judged on elegance. If your choice of paradigm was lists, the result was LISP. If you decided on strings, you invented SNOBOL. Arrays, you wound up with APL. If your reasoning led you to logic, you ended up with Prolog. If you thought that descriptions of algorithms must be the basis of programming, then your fate was Algol. If assembly language stayed at the core of your world view, what you created would be an imperative lanugage and might look like any of C, BASIC or FORTRAN. If stacks were your thing, you created a language that looked like Forth. And who knows if the belief in objects as the one paradigm will ever again see Orodruin and feel the heat of the flames in which it was forged. Some of these languages were totalitarian -- they insisted everything be shoehorned into their central concept. I recall some very unpleasant struggles with early dialects of SNOBOL, LISP and Prolog. Imperative languages tended to be more elastic. But, while the strictness of adherence varies, almost every language invented over the past 50 years bears the clear stamp of minimalism.

LALR parsing rode on the backs of yacc and the Portable C Compiler into total dominance over parsing mindshare. LALR came to define production-quality parsing. In 1978, there had been two C compilers, both at AT&T's Bell Labs -- Ritchie's original, and Johnson's Portable C Compiler, which was about to replace it. Neither was a commercial product -- AT&T was a regulated monopoly, banned from selling hardware or software. By 2006, C was the most important systems programming language in a world which had become far more dependent on computer systems. There were now many C compilers, several of them of great commercial importance. Arguably, one of these was the most visible production-quality C compiler. This no longer came from AT&T. The leader among C compilers in 2006 was GCC, the GNU foundation's flagship accomplishment. GCC can be said to have clearly taken this lead by 1994, when BSD UNIX had switched from the Portable C Compiler to GCC. This was a revolution of another kind, but as far as the parsing algorithm went, it was "Hail to the new boss... same as the old boss". GCC parsing was firmly in the LALR tradition.
But on 28 February 2006, the nearly 3 decades of LALR dominance were over. That's the date of the change log for GCC 4.1. It's a long document, and the relevant entry is deep inside it. It's one of the shorter change descriptions. In fact, it's exactly this one sentence: The old Bison-based C and Objective-C parser has been replaced by a new, faster hand-written recursive descent parser. For me, that's a little like reading page 62,518 of the Federal Register and spotting a one-line notice: Effective immediately, Manhattan belongs to the Indians.

The history is not being told in order. This is not because I am attempting to ape "Pulp Fiction". It's because the series was originally planned as perhaps two or three blog posts and has grown in scope. I'm stuck now with telling the tale using flashbacks and fast-forwards, but I'll make the process as easy as possible.

Historians can divided into two types -- the Braudel's and the Churchill's. Fernand Braudel insisted on accumulation of detail, and avoided broad sweeping statements, especially those of the kind that are hard to back up with facts. Winston Churchill thought the important thing was the broad sense, and that historians should awaken the reader to what really mattered, not deaden him with forgettable detail.

But it is also true that some of the programming skills we've developed over the years could aptly be called symptoms.

Colorless green ideas sleep furiously

If you want to build a ship, don't drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.

If languages were free, this is the kind of perfection that we would seek -- languages precisely fitted to their domain, so that adding to them cannot make them better.

Ada's "Notes" were written 20 years after Mary Shelly, while visiting Ada's father in Switzerland, wrote the novel Frankenstein. For Ada's contemporaries, announcing that you planned to create a machine that composed music, or did advanced mathematical reasoning, was not very different from announcing that you planned to assemble a human being in your lab.

2006-10-31: The default prefix used to be "sqlite_". But then Mcafee started using SQLite in their anti-virus product and it started putting files with the "sqlite" name in the c:/temp folder. This annoyed many windows users. Those users would then do a Google search for "sqlite", find the telephone numbers of the developers and call to wake them up at night and complain. For this reason, the default name prefix is changed to be "sqlite" spelled backwards. So the temp files are still identified, but anybody smart enough to figure out the code is also likely smart enough to know that calling the developer will not help get rid of the file.

Newsgroups: comp.os.linux.advocacy,gnu.misc.discuss
John Dyson said:
> not most) users. I attain no high in passive smoking, and only feel
> the anxiety. The very sad thing is to avoid the anxiety, pot users
> often either seek more pot, alcohol or benzo's for temporary relief.
> This is a really silly vicious circle for a little short term
> relief. Those who think that pot is harmless are diluding themselves
> or even simply ignorant.
That's because your not using the Scheme Configurable Window Manager. I found that having the proper WM while toking is extremely important. You need one that absolutely minimizes use of the rodent, and with scwm's synthetic events, awesome key binding supports and scripting, I have a setup which allows me to do everything without pushing about the cursed rolly thing. Thank you Maciej for thinking about all of us stoners when designing SCWM.

It's like herding cats


The alternatives are much worse. With informal and non-standardized error messaging you would have to know not only the programming language itself but its error messaging Pidgin as well. Every C++ practitioner can confirm that reading STL messages is an art by itself. It takes knowledge, patience, determination and, occasionally, a crystal ball to build a firm understanding of a reported problem.

one must understand that Unix commands are not a logical language. They are a natural language--in the sense that they developed by organic evolution, not "intelligent design".

Less traditional symbols are also useful. For example: ☎->✆(); // take my phone (☎) off hook (✆)

As many of you know, the rule with Unix was "you can touch anything, but if you change it, you own it." This was a great way to turn arguments into progress.

…I realised that I wanted to read about them what I myself knew. More than this—what only I knew. Deprived of this possibility, I decided to write about them. Hence this book.

URL shorteners may be one of the worst ideas, one of the most backward ideas, to come out of the last five years. In very recent times, per-site shorteners, where a website registers a smaller version of its hostname and provides a single small link for a more complicated piece of content within it… those are fine. But these general-purpose URL shorteners, with their shady or fragile setups and utter dependence upon them, well. If we lose TinyURL or, millions of weblogs, essays, and non-archived tweets lose their meaning. Instantly. To someone in the future, it’ll be like everyone from a certain era of history, say ten years of the 18th century, started speaking in a one-time pad of cryptographic pass phrases.
But the biggest burden falls on the clicker, the person who follows the links. The extra layer of indirection slows down browsing with additional DNS lookups and server hits. A new and potentially unreliable middleman now sits between the link and its destination. And the long-term archivability of the hyperlink now depends on the health of a third party. The shortener may decide a link is a Terms Of Service violation and delete it. If the shortener accidentally erases a database, forgets to renew its domain, or just disappears, the link will break. If a top-level domain changes its policy on commercial use, the link will break. If the shortener gets hacked, every link becomes a potential phishing attack.

I think you’ll see what I mean if I teach you a few principles magicians employ when they want to alter your perceptions…Make the secret a lot more trouble than the trick seems worth. You will be fooled by a trick if it involves more time, money and practice than you (or any other sane onlooker) would be willing to invest.”

it was the right thing to do. wish i had thought of it. i was too busy saving bytes.

you could have invented ...

Richard Stallman, famous for Emacs, founder of GNU Project and Free Software Foundation presents a wonderful beard. Although Eric Raymond did the Art of Unix programming, he has only really been famous for Fetchmail, hence his smaller mustache

Shannon says this can't happen.

“My students, once they are filled up with new ecological knowledge and have developed an awareness of our situation, always say, ‘We have to tell people what’s happening in the world. If they only knew what they were doing, they would stop.’ But, it’s not true. We are all saturated with data. We do know what we are doing...The data may change our minds, but we need poetry to change our hearts”

Multicores r us

The Net interprets censorship as damage and routes around it

Syntactic sugar causes cancer of the semicolon.

If you know the way broadly, you will see it in everything

You're Holding It Wrong

The increasing population in the US, and the demands of Congress to ask more questions in each census, was making the processing of the data a longer and longer process. It was anticipated that the 1890 census data would not be processed before the 1900 census was due unless something was done to improve the processing methodology. Herman Hollerith won the competition for the delivery of data processing equipment to assist in the processing of the data from the 1890 US Census, and went on to assist in the census processing for many countries around the world. The company he founded, Hollerith Tabulating Company, eventually became one of the three that composed the Calculating-Tabulating-Recording (C-T-R) company in 1914, and eventually was renamed IBM in 1924.

Unlike music, scientific work does not come with liner notes. Perhaps it should.

Still, I recall a brief exchange with a physicist who was sitting next to me listening to a panel discussion on Theoretical Computer Science and Physics (which took place in the early 1990s): They [the TCS guys] talk as if a bit is as fundamental as an electron - he told me with amazement. That's of course wrong, a bit is far more fundamental - I answered to his even greater amazement. Needless to say, he did not talk to me during the rest of the panel...
An electron is merely a specific model of a specific phenomena. It is a very important model, but how can you compare its importance to the importance of the notion of a model? But, then, all models are built of binary attributes.
This reminds me of a drive from MIT to Providence that Shafi and me made in the mid-1980's. We stopped in a diner on the way, got some food and coffee, and then Shafi asked the attendant Do you have the notion of a refill? The answer was: Yes, we do have refills, but what is a notion?
Indeed, people may use notions without having a notion of a notion, and likewise they may think of bits without a clear conceptualizing of the pure notion of a bit. In both cases, these notions exist before we conceptualize them; these notions are preconditions to any conceptualization.

He who understands Archimedes and Apollonius will admire less the achievements of the foremost men of later times.

Alright, so here we are, in front of the, er, elephants. And the cool thing about these guys is that they have really, really, really long trunks. And that’s cool.

Long ago, I observed that Edsger Dijkstra’s dining philosopher’s problem received much more attention than I thought it deserved. For example, it isn’t nearly as important as the self-stabilization problem, also introduced by Dijkstra, which received almost no notice for a decade. I realized that it was the story that went with it that made the problem so popular. I felt that the Byzantine generals problem (which was discovered by my colleagues at SRI International; was really important, and I wanted it to be noticed. So, I formulated it in terms of Byzantine generals, taking my inspiration from a related problem that I had heard described years earlier by Jim Gray as the Chinese generals problem.

On April 12, Kevin MacKenzie emails the MsgGroup a suggestion of adding some emotion back into the dry text medium of email, such as -) for indicating a sentence was tongue-in-cheek. Though flamed by many at the time, emoticons became widely used after Scott Fahlman suggested the use of :-) and :-( in a CMU BBS on 19 September 1982.

In Turkish there is a simpler solution to this you just say, “kolay gelsin Steve”

enjoy the music and this life we have:)

I am regularly asked what the average Internet user can do to ensure his security. My first answer is usually 'Nothing; you're screwed'

(On Paul Vixie) Yeah, that unibrow is epic! Maybe that is why he is so good at networking, Even his brow is connected! hahahah.

boiling the power users out

Common Lisp macros are to C++ templates what poetry is to IRS tax forms

Hence the description of Windows 95 as "a 32-bit extension to a 16-bit patch to an 8 bit OS originally for a 4-bit chip written by a 2-bit company that doesn't care 1 bit about its users."

It began badly. We were walking along the South Downs Way in early summer, the sun glittering on the English Channel on our right, the Weald of Sussex stretching away to our left. “How big,” asked Arthur, “should a text editor be?"

Everyone knows how C programs look: tall and skinny. Whitney’s don’t.

Imagine if there were a tunnel which ran into your basement from the outside world, ending in a sturdy door with four or five high-security locks which anybody could approach completely anonymously. A mail slot in the door allows you to receive messages and news delivered through the tunnel, but isn't big enough to allow intruders to enter. Now imagine that every time you go down into your basement, you found several hundred letters piled up in a snowdrift extending from the mail slot, and that to find the rare messages from your friends and family you had to sort through reams of pornography of the most disgusting kind, solicitations for criminal schemes, “human engineered” attempts to steal your identity and financial information, and the occasional rat, scorpion, or snake slipped through the slot to attack you if you're insufficiently wary. You don't allow your kids into the basement any more for fear of what they may see coming through the slot, and you're worried by the stories of people like yourself who've had their basements filled with sewage or concrete spewed through the mail slot by malicious “pranksters”. Further, whenever you're in the basement you not only hear the incessant sound of unwanted letters and worse dropping through the mail slot, but every minute or so you hear somebody trying a key or pick in one of your locks. As a savvy basement tunnel owner, you make a point of regularly reading tunnel security news to learn of “exploits” which compromise the locks you're using so you can update your locks before miscreants can break in through the tunnel. You may consider it wise to install motion detectors in your basement so you're notified if an intruder does manage to defeat your locks and gain entry. As the risks of basement tunnels make the news more and more often, industry and government begin to draw up plans to “do something” about them. A new “trusted door” scheme is proposed, which will replace the existing locks and mail slot with “inherently secure” versions which you're not allowed to open up and examine, whose master keys are guarded by commercial manufacturers and government agencies entirely deserving of your trust. You may choose to be patient, put up with the inconveniences and risks of your basement tunnel until you can install that trusted door. Or, you may simply decide that what comes through the tunnel isn't remotely worth the aggravation it creates and dynamite the whole thing, reclaiming your basement for yourself.

If there’s no such thing as anonymous data, does privacy just mean security?


verb 99 noun 62

O’Reilly meme-engineers a nice euphemism—“meme-engineering”—to describe what has previously been known as “propaganda.”

On the Semantic Web, it's too hard to prove you're not a dog.


the hackish sense of humor transcends cultural barriers

which in those days were illegal and therefore had to be smuggled to other countries, an activity also known as "working ahead of the law"... ;-)

If your goal is to get an idea or approach widely used to the largest possible extent, a permissive license like the BSD (or MIT) license has much to offer. Anyone can quickly snap up the code and use it. Much of the TCP/IP code (at least for tools) in Windows was originally from BSD, I believe; there are even some copyright statements still in it. But don't expect the public code to be maintained by those who take and modify the code. I haven't noticed a large number of Microsoft developers being paid to improve any of the *BSDs, even though they share the same code ancestries. If your goal is to have a useful program that stays useful long-term, then a protective license like the LGPL or GPL licenses have much to offer. They force the cooperation that is good for everyone in the long term, if a long-term useful project is the goal. In general, I've noticed that GPL projects are far less likely to fork than BSD-licensed projects; the GPL completely eliminates any financial advantage to forking.
One person who agrees with you that the GNU GPL is not the best choice for all circumstances: Richard Stallman.
The BSD development teams have been characterised by who has a 'commit bit', and who has the power to grant it. BSDs have forked not only because of commercial interference but because of petty tousles over privilege. [netbsd coup/cabal, etc] In one sense, there has only ever been one committer to the Linux kernel: Linus Torvalds himself is the only person who applies patches to his own tree and is the sole dispenser of 'holy penguin pee'. ... From the start, source code management in Linux was handled by the completely decentralised 'patch'; an inheritance from the Minix hotrodders' community who had no rights over the original source but could swap and improve one another's patches at will.
Actually the only place where I see a use of BSD license is in creating things that are intended to become standards. Like if the gecko (the html rendering) part of Mozilla, was BSD licensed. It would have allowed people in other companies to pickup the code into their browsers. And we would have seen that the html dialect followed by gecko would have become a standard. This was a mistake made by Mozilla. Actually BSD license was very useful in the early days of Unix. The License made Unix API into the standard that it is today. Similarly Internet Protocol also became standard because of BSD license.

I feel I should point out that both the dominant mobile operating systems are Unix-hased. The UI is necessarily new, but astonishingly the 50 year old basic abstractions are the same.
Except Unix is kind of hard to see. It wasn't just the hierarchical file system but the idea of composability. Even now we whip up a shell "one-liners" to perform some task we just thought of. All that is lost. And not just on mobile devices. For example search through email messages for something in an email "app". And no UI composability. We have to use extremely heavyweight IDEs such as X-Code weighing at 15GB (even "du -s /Application/X-code" takes tens of seconds!) to painstakingly construct a UI. We can't just whip up a dashboard to measure & display some realtime changing process/entity. There may be equally heavyweight third party tools but there has been no Bell Labs like research crew to distill it down to the essence of composable UI and ship it with every copy. The idea that users too can learn to "program" if given the right tools.

A megacorp is not your dream job. ... Megacorps are, in fact, in the minority. There are tens of thousands of other tech companies that could use your help. Tech workers are in high demand — you have choices! You will probably be much happier at a small to mid-size company. The “dream job” megacorps have sold you on is just good marketing.

There are some major problems on the internet which may seem intractable. How do we prevent centralization of our communication tools under the authority of a few, whose motivations may not align with our interests? How do we build internet-scale infrastructure without a megacorp-scale budget? Can we make our systems reliable and fault-tolerant — in the face of technical and social problems? Federation is an idea which takes a swing at all of these problems.

The web is dead, and its fetid corpse persists only as the layer of goop that Google scrapes between its servers and your screen. Anyone who still believes that Mozilla will save the web is a fool.

Embrace, extend, and extinguish

yak shaving

"contrib" directory

thou shalt not run a water pipe above your data center

In the Crypto Wars, arguments have occasionally been made that there is a constitutional right to cryptography. Most recently, Apple made that argument in trying to fend off the FBI's request to help break into an encrypted phone. It went roughly as follows: writing code is an expressive act, freedom of expression is protected by the First Amendment, and so they can't be forced to express themselves in ways they don't want. I don't think this argument would have fared well in the courts.
But there is an amendment in the Bill of Rights that really is a good match: the Second. The Second Amendment is about private possession of weapons of war; crypto has eminently been a weapon of war. It is about preserving the ability to resist tyranny; and if the government were to have the power to snoop on every communication in a modern computerized society, it would enable a level of tyranny so oppressive as to make every tyranny in history seem mild in comparison. It is also about self-defense against criminals; and there too the fit is good -- not just because cryptography is essential for protecting such things as online banking transactions (though it is); it also ties in to personal self-defense, as might be performed with a firearm.

unknown unknowns


By studying the masters, not their pupils.

user diligence was built into the system.

Bruce Schneier knows Alice and Bob's shared secret.

Doug McIlroy can change file permissions using a magnet and a pin. Doug McIlroy can read data from /dev/null. Doug McIlroy can handle SIGKILL.

textual markup should describe logical structure instead of physical appearance, and textual markup should be unambiguous and easily understood by either a program or a person

After taking a computer course at Harvard in 1960 Ted Nelson began a mystical journey. He started exploring the possibility of liberating text from paper, of developing a means whereby writers could harness text in a manner closer to human cognitive patterns: i.e., the way words flowed through our minds. In 1965 Nelson coined the term hypertext.

Go's heritage is at least as much Oberon as it is C! In 1960, language experts from America and Europe teamed up to create Algol 60. In 1970, the Algol tree split into the C and the Pascal branch. ~40 years later, the two branches join again in Go.

values of β will give rise to dom!

The result of the NSA query was that Bob and I--the arrangements were made by him--received a visit from a man whom Bob called "a retired gentleman from Virginia."

“When will the world be ready to receive its saints?” I think we know the answer — when they are dead, pasteurized and homogenized and simplified into stereotypes, and the true depth and integrity of their ideas and initiatives are forgotten.

there should be no walls between areas of thought

it took Ash Ketchum like 10 years to become a Pokémon master. You'll get there

the thing that bothered me most about vi and emacs was that they gave you a two-dimensional display of your file but you had only a one-dimensional input device to talk to them. It was like giving directions with a map on the table, but being forced to say "up a little, right, no back down, right there, yes turn there that's the spot" instead of just putting your finger on the map.

children must learn these things for themselves

Skunkworks project

When other people remove branches, they won’t be removed from your local copy of the repository. To take care of this housekeeping, you need to express a fruit preference: git remote prune origin. Again, don’t ask. I don’t know why. That’s just how it is.

If computers are the wave of the future, displays are the surfboards

therefore algebra is run on a machine (the universe) which is twos-complement.

The Smalltalk language is object oriented rather than function oriented, and this often confuses people with previous experience in computer science. For example, to evaluate <someobject>+4 means to present +4 as a message to the object. The fundamental difference is that the object is in control, not +. If <someobject> is the integer 3, then the result will be the integer 7. However, if <someobject> were the string 'Meta', the result might be Meta4. In this way, meaning rides with the objects of the system, and code remains an abstract form, merely directing the flow of communication.

This largely comes down to whether your servers are pets or livestock. Pets get individual names. They're distinct from each other, and we care about those differences. When one gets sick, we usually try to nurse it back to health. Traditionally, servers have been pets. Livestock get numbers. They're mostly identical, and what differences there are, we don't care about and usually try to minimize. When one gets sick, we put it down and get another one. Fully virtualized servers, especially IaaS servers such as AWS, are livestock.

protocols, not platforms

"SHARE. It's not an acronym. It's what we do."

It was a fundamentally different experience. It showed that the desire to share software was alive and well, but DECUS tapes were full of dead offerings. You could take them or leave them, but there was no overall effort to integrate or improve that code or to make a coherent offering out of it. I know people used that code but nobody ever sent me an improvement to it. It was an ornament I could hang on DEC's tree.


you can't do much carpentry with your bare hands, and you can't do much thinking with your bare brain

Religion is one of the forms of spiritual oppression which everywhere weighs down heavily upon the masses of the people, over burdened by their perpetual work for others, by want and isolation. Impotence of the exploited classes in their struggle against the exploiters just as inevitably gives rise to the belief in a better life after death as impotence of the savage in his battle with nature gives rise to belief in gods, devils, miracles, and the like. Those who toil and live in want all their lives are taught by religion to be submissive and patient while here on earth, and to take comfort in the hope of a heavenly reward. But those who live by the labour of others are taught by religion to practise charity while on earth, thus offering them a very cheap way of justifying their entire existence as exploiters and selling them at a moderate price tickets to well-being in heaven. Religion is opium for the people. Religion is a sort of spiritual booze, in which the slaves of capital drown their human image, their demand for a life more or less worthy of man.

competence without comprehension

how come vs what for

you have to have enough background knowledge to penetrate jargon

individuals do matter; the past is less determinate than historians like to make, and the future is less open ended than you would like to believe

the assumption that what currently exists must necessarily exist is the acid that corrodes all visionary thinking

Commands need not be on different lines; instead they may be separated by semicolons.
Processes which are never waited for die unnoticed and presumably unmourned

[Algol 60] was more racehorse than camel . . . . a rounded work of art . . . . Rarely has a construction so useful and elegant emerged as the output of a committee of 13 meeting for about 8 days . . . . Algol deserves our affection and appreciation.

On the other hand, in private, we have been justifiably proud of our wil#ingness to explore weird ideas, because pursuing them is the only way to make progress. Unfortunately, the necessity for speculation has combined with the culture of the hacker in computer science to cripple our self-discipline. In a young field, self-discipline is not necessarily a virtue, but we are not getting any younger. In the past few years, our tolerance of sloppy thinking has led us to repeat many mistakes over and over.

talk much but say little

Reading makes a full Man, Meditation a profound Man, discourse a clear Man.

Not invented here (NIH) syndrome

"Computers are mostly used against people instead of for people; used to control people instead of to free them; Time to change all that - we need a... Peoples Computer Company."

price of anarchy

the only constant in life is change

The People's Library (OWS Library)

US intelligence (sic) community

As the current situation in Afghanistan demonstrates, however, a Potemkin village will only stay up as long as everyone involved continues to play along.

Understanding the true significance of events is, at least in some sense, a task best left to historians. Even the fall of the Roman empire can appear as something akin to the normal state of things for the people living through it; the true historical significance of something is generally only clear well after the fact, and every new generation has its own notion of the true meaning of history.

Such a focus on individual responsibility, necessary as it is, functions as ideology the moment it serves to obfuscate the big question of how to change our entire economic and social system.

the 60s were a leap in human consciousness. Mahatma Gandhi, Malcom X, Martin Luther King, Che Guevara, they led a revolution of conscience. .... The youth of today must go there to find themselves.

newcomers to the internet are often startled to discover themselves not so much in some soulless colony of technocrats as in a kind of cultural Brigadoon - a flowering remnant of the 60s, when hippie communalism and liberarian politics formed the roots of the modern cyberrevolution - Stewart Brand

I drifted into indiscipline and intellectual adventure that eventually became complete confusion.

Gary Snyder defined wild as "whose order has grown from within and is maintained by the force of consensus and custom rather than explicit legislation". "The wild is not brute savagery, but a healthy balance, a self-regulating system.". Snyder attributed wild to Buddhism and Daoism, the interests of some Beats. "Snyder's synthesis uses Buddhist thought to encourage American social activism, relying on both the concept of impermanence and the classically American imperative toward freedom."

Reporters are not generally well versed in artistic movements, or the history of literature or art. And most are certain that their readers, or viewers, are of limited intellectual ability and must have things explained simply, in any case. Thus, the reporters in the media tried to relate something that was new to already preexisting frameworks and images that were only vaguely appropriate in their efforts to explain and simplify. With a variety of oversimplified and conventional formulas at their disposal, they fell back on the nearest stereotypical approximation of what the phenomenon resembled, as they saw it. And even worse, they did not see it clearly and completely at that. They got a quotation here and a photograph there—and it was their job to wrap it up in a comprehensible package—and if it seemed to violate the prevailing mandatory conformist doctrine, they would also be obliged to give it a negative spin as well. And in this, they were aided and abetted by the Poetic Establishment of the day. Thus, what came out in the media: from newspapers, magazines, TV, and the movies, was a product of the stereotypes of the 30s and 40s—though garbled—of a cross between a 1920s Greenwich Village bohemian artist and a Bop musician, whose visual image was completed by mixing in Daliesque paintings, a beret, a Vandyck beard, a turtleneck sweater, a pair of sandals, and set of bongo drums. A few authentic elements were added to the collective image: poets reading their poems, for example, but even this was made unintelligible by making all of the poets speak in some kind of phony Bop idiom. The consequence is, that even though we may know now that these images do not accurately reflect the reality of the Beat movement, we still subconsciously look for them when we look back to the 50s. We have not even yet completely escaped the visual imagery that has been so insistently forced upon us

The Beats destroyed the distinction between life and literature... They made efforts to destroy the wall between art and real life, so that art would become a living experience in cafes or jazz clubs, and not remain the prerogative of galleries and museums

This approach that has generated a common jibe that New Age represents "supermarket spirituality". York suggested that this eclecticism stemmed from the New Age's origins within late modern capitalism, with New Agers subscribing to a belief in a free market of spiritual ideas as a parallel to a free market in economics.

When Darwin's theory was published, several years later, church hierarchs agreed that it did not contradict Christian teaching, regardless of whether it was true or not. And Darwin himself did not present his theory as refuting any religious dogma. Immediately after publication, the theory of evolution was generally accepted by society and did not cause a split between religion and science. The war began only 60 years after the publication of Darwin's work, and the reasons for it were political rather than religious or scientific. In the United States, religious fundamentalists have lobbied for a ban on teaching evolution in schools. But why? The fact is that at that time the theory was used to justify the idea of ​​social Darwinism: the strong have the right to oppress the weak. This idea was unacceptable to Christians and especially to Christian socialists. However, their opponents argued that in matters of morality, one should rely on science, not religion. And if science tells us that the weak must perish in the process of natural selection, then so be it. Because of such a stupid interpretation of Darwin's ideas, a protracted conflict between the scientific and religious worldviews began, which now continues to gain momentum. Creationism emerged, which, interpreting the Bible literally, denies not only a hundred years of scientific research, but also two thousand years of Christian theology. On the other hand, ultra-Darwinism has emerged, which tries to apply the theory of evolution to explain everything. Both sides are wrong, the professor says. An adequate understanding of both faith and science does not lead to contradictions. "Since when is it to be a Christian to believe that dinosaurs lived with humans?" Connor wonders. Creationism is not a heir to the Christian tradition, but a dead-end branch of the evolution of human thought.

How was it, they argued, that the great mass of people could be sucked into complicity with their own exploitation? With the emergence of fascism in the 1920s and 30s the question became even more urgent. What led educated people to throw their lot in with the barbarism of fascism? This, for them, was the ultimate in false consciousness.

history is just one fucking thing after another

it is not possible to live a true life in a false system

It arrives at a pessimistic view of what can be done against a false system which, through the "culture industry", constantly creates a false consciousness about the world around us based on myths and distortions deliberately spread in order to benefit the ruling class. This is, of course, not peculiar to capitalism, but in capitalism it finds its full commodified form so that we become the willing consumers and reproducers of our own alienation by becoming consumers rather than producers of culture.

This convergence had done away with the worst excesses of class exploitation and replaced it with a sort of social complicity between the classes... Fascism is successful because it permits and encourages our deepest desires to find the culprit for our own complicity

Marxism is well known for its two components: a “cold stream” which concerns objective scientific analysis; and a “warm stream” that concerns enthusiasm and hope and leads to commitment to Marxism as a cause.

Another damned, thick, square book!

There is a new profession of trail blazers, those who find delight in the task of establishing useful trails through the enormous mass of the common record.

The real heart of the matter of selection, however, goes deeper than a lag in the adoption of mechanisms by libraries, or a lack of development of devices for their use. Our ineptitude in getting at the record is largely caused by the artificiality of systems of indexing. When data of any sort are placed in storage, they are filed alphabetically or numerically, and information is found (when it is) by tracing it down from subclass to subclass. It can be in only one place, unless duplicates are used; one has to have rules as to which path will locate it, and the rules are cumbersome. Having found one item, moreover, one has to emerge from the system and re-enter on a new path. The human mind does not work that way. It operates by association. With one item in its grasp, it snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is transitory. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature.
... This is the essential feature of the memex. The process of tying two items together is the important thing. When the user is building a trail, he names it, inserts the name in his code book, and taps it out on his keyboard. Before him are the two items to be joined, projected onto adjacent viewing positions. The user taps a single key, and the items are permanently joined. Thereafter, at any time, when one of these items is in view, the other can be instantly recalled merely by tapping a button below the corresponding code space. Moreover, when numerous items have been thus joined together to form a trail, they can be reviewed in turn, rapidly or slowly, by deflecting a lever like that used for turning the pages of a book. It is exactly as though the physical items had been gathered together from widely separated sources and bound together to form a new book. It is more than this, for any item can be joined into numerous trails.

Vannevar Bush's "library of a million volumes, compressed into one end of a desk" may sound quaint to us today. Bush naively assumed that immediate access to a million volumes would require the physical presence of those million volumes. His proposal -- a million volumes in every desk. The web, of course, took a different approach. A million volumes, yes, but our desks remain empty. Instead, when we summon a volume, we are granted a transient and ephemeral peek at its sole instance, out there somewhere in the world, typically secured within a large institution. Two thoughts: It's interesting that life itself chose Bush's approach. Every cell of every organism has a full copy of the genome. That works pretty well -- DNA gets damaged, cells die, organisms die, the genome lives on. It's been working pretty well for about 4 billion years. It's also interesting to consider how someone from Bush's time might view our situation. For someone who's thinking about a library in every desk, going on the web today might feel like visiting the Library of Alexandria. Things didn't work out so well with the Library of Alexandria. It's not working so well today either. We, as a species, are currently putting together a universal repository of knowledge and ideas, unprecedented in scope and scale. Which information-handling technology should we model it on? The one that's worked for 4 billion years and is responsible for our existence? Or the one that's led to the greatest intellectual tragedies in history?

the public space

I've come to believe that a lot of what's wrong with the Internet has to do with memory. The Internet somehow contrives to remember too much and too little at the same time, and it maps poorly on our concepts of how memory should work.
In our elementary schools in America, if we did something particularly heinous, they had a special way of threatening you. They would say: "This is going on your permanent record".
It was pretty scary. I had never seen a permanent record, but I knew exactly what it must look like. It was bright red, thick, tied with twine. Full of official stamps.
The permanent record would follow you through life, and whenever you changed schools, or looked for a job or moved to a new house, people would see the shameful things you had done in fifth grade.
How wonderful it felt when I first realized the permanent record didn't exist. They were bluffing! Nothing I did was going to matter! We were free!
And then when I grew up, I helped build it for real.

Although it's been discredited by some, I'm still a believer in "stop and fsck" policing of disk drives.

I do not think that I would be able to build STL without her help. (After all, STL stands for Stepanov and Lee...)

cal 9 1752

The net is precious to me because it gives ordinary human beings a way to communicate with other ordinary human beings. Corporations have too many ways to cram their ads down my throat. Human beings have the net.

The CCRU does not, has not and will never exist.

Accelerationism is simply the self-awareness of capitalism, which has scarcely begun.

The MIT guy then muttered that sometimes it takes a tough man to make a tender chicken, but the New Jersey guy didn't understand (I'm not sure I do either).

These applications (“appliances” is a better word) come equipped with a fixed vocabulary of actions, speak no common language, and cannot be extended, composed, or combined with other applications except with enormous friction. By analogy, what we have is a railway system where the tracks in each region are of differing widths, forcing trains and their cargo to be totally disassembled and then reassembled to transport anything across the country. As ridiculous as this sounds, this is roughly what we do at application boundaries: write explicit serialization and parsing code and lots of tedious (not to mention inefficient) code to deconstruct and reconstruct application data and functions.
This essay is a call to cast aside the broken machine metaphor and ultimately end the tyranny of applications. Applications can and ultimately should be replaced by programming environments, explicitly recognized as such, in which the user interactively creates, executes, inspects and composes programs. In this model, interaction with the computer is fundamentally an act of creation, the creative act of programming, of assembling language to express ideas, access information, and automate tasks. And software presents an opportunity to help humanity harness and channel “our vast imaginations, humming away, charged with creative energy”.
We artificially limit the potential of this incredible technology by reserving a tiny, select group of people (programmers) to use its power build applications with largely fixed sets of actions (and we now put these machines on the internet too and call them “web applications”), and whose behaviors are not composable with other programs. Software let us escape the tyranny of the machine, yet we keep using it to build more prisons for our data and functionality!

I wouldn’t say ‘perfectly happy’, I’d say that users are resigned to the notion that applications are machines with a fixed set of actions, and any limitations of these machines must simply be worked around via whatever tedium is required.

The step after ubiquity is invisibility.

This is not just about providing children with the intellectual breadth to get into Oxbridge - it's about cultural entitlement. We're always hearing complaints about how the subsidised theatre and opera are too elitist, but no one ever asks the question about how best to educate people to enjoy them. It's not the job of the arts to dumb down; it's the job of the state to create an intellectually appreciative audience. This won't happen if learning in schools is reduced to a narrow range of disconnected facts, and children will be deprived of their cultural right.

Newcomers to the Internet are often startled to discover themselves not so much in some soulless colony of technocrats as in a kind of cultural Brigadoon - a flowering remnant of the '60s, when hippie communalism and libertarian politics formed the roots of the modern cyberrevolution...
Authors Stewart Brand and John Markoff argue that the development and popularization of personal computers and the Internet find one of their primary roots in the anti-authoritarian ethos promoted by hippie culture.

The '60s were a leap in human consciousness. Mahatma Gandhi, Malcolm X, Martin Luther King, Che Guevara, they led a revolution of conscience. The Beatles, The Doors, Jimi Hendrix created revolution and evolution themes. The music was like Dalí, with many colors and revolutionary ways. The youth of today must go there to find themselves.

The peculiarity of decision-making in computing systems is illustrated by some amusing data in More Programming Pearls by Jon Bentley (pp. 157-158). Imagine yourself in 1969, and you need to solve the 1024x1024x1024 Poisson's equation (a particular 3-dimensional system of elliptic partial differential equations). The best numerical method that you can find is called SOR Iteration, and the fastest computer is the CDC 7600 at 5 megaflops. Obviously, your best course is to run SOR on the 7600, right? Well, you will still be less than half done in 1976. I will wait until 1976, use a Cray-1 at 50 megaflops and the Cyclic Reduction method, solving the problem in a matter of hours and winning the race by a long margin.

Marx's understanding of religion, summed up in a passage from the preface to his 1843 Contribution to the Critique of Hegel's Philosophy of Right:
Religious suffering is, at one and the same time, the expression of real suffering and a protest against real suffering. Religion is the sigh of the oppressed creature, the heart of a heartless world, and the soul of soulless conditions. It is the opium of the people. The abolition of religion as the illusory happiness of the people is the demand for their real happiness. To call on them to give up their illusions about their condition is to call on them to give up a condition that requires illusions.

So much for the manipulation of ideas and their insertion into the record. Thus far we seem to be worse off than before—for we can enormously extend the record; yet even in its present bulk we can hardly consult it. **This is a much larger matter than merely the extraction of data for the purposes of scientific research; it involves the entire process by which man profits by his inheritance of acquired knowledge.**

In the world of the man in the gray flannel suit, people were starting to look for ways out.

The transformation of labor into pleasure is the central idea in Fourier's giant socialist utopia

Language standards committees tend to be like a pack of dogs contemplating a tree. Each dog isn't satisfied with the tree until he's peed on it.

The metric of merit is wrong.

Be courageous. Try different things; experiment. Try to give a cool demo.

Despite pulling other ideas from Plan 9, the importance of having an opinion on the distributed nature of modern computing seems to have been missed by prominent operating systems today. As a result, their development has been relegated to what they do: be a platform for things that actually provide an abstraction for my resources.

Distributed systems that work well on football-sized data centers may not work that well when you only have a few racks in colo facility. The "I forgot how to count that low" challenge is a real one...

Software folks need to be prepared for the fact that there may actually be nobody who knows how portions of the hardware actually work because it's not all designed at one place anymore. We have to be prepared for the SoC version of node.js.

I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.
The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature. It also requires a willing- ness to accept objectives which are limited by physical, logical, and technological constraints, and to accept a compromise when conflicting objectives cannot be met. No committee will ever do this until it is too late.

At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be imple- mented, sold, and even used given enough determina- tion. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way--and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.

Among the structuring methods for computer programs, three basic constructs have received widespread recognition and use: A repetitive construct (e.g. the while loop), an alternative construct (e.g. the conditional if..then..else), and normal sequential program composition (often denoted by a semicolon). Less agreement has been reached about the design of other important program structures, and many suggestions have been made: Subroutines (Fortran), procedures (Algol 60), entries (PL/I), coroutines (UNIX), classes (SIMULA67), processes and monitors (Concurrent Pascal), clusters (CLU), forms (ALPHARD), actors (Hewitt).

(Computer scientist to a professor of linguistics): What can you tell me about the engineering efficiency of language? ... The thing I want to know is: how do I write an efficient language for communicating to a machine, with enough redundancy? Why do we have the number of synonyms we do? We do we have the antonyms? Why do we have irregular and regular verbs? Why? What are the values?

There are two languages: you to the machine, and the machine back to you; they need not be the same language. You want a terse one in, and you're willing to put up with a rather more verbose one coming out.

“safety” is the fire flower. But “fearless concurrency” is Fire Mario.

I was like “How long to think it will be before DTrace shows up in Linux?” and we had guesses, and I think the quickest guess was two months, some Danish master student is going to get it working and I guess that Danish master student is a metaphor for someone who is bright but underemployed, I don’t know, not to offend the Danes.

The difference between Lisp and Java, as Paul Graham has pointed out, is that Lisp is for working with computational ideas and expression, whereas Java is for expressing completed programs. As James says, Java requires you to pin down decisions early on. And once pinned down, the system which is the set of type declarations, the compiler, and the runtime system make it as hard as it can for you to change those assumptions, on the assumption that all such changes are mistakes you're inadvertently making.
There are, of course, many situations when making change more difficult is the best thing to do: Once a program is perfected, for example, or when it is put into light-maintenance mode. But when we are exploring what to create given a trigger or other impetus—when we are in flow—we need to change things frequently, even while we want the system to be robust in the face of such changes.
The screwed-up way we approach software development is because of what we have done with programming languages. With some exceptions, we have opted for optimizing the description of programs for compilers, computers, .... Interestingly, the results of this optimization are well-described by "Premature optimization is the root of all evil in programming.". [Knuth] was referring to the practice of worrying about performance of an algorithm before worrying about correctness, but the dictum can be taken to refer to any design problem where optimization is an eventual concern. In this case, the design problem was to design a usable programming medium that excels at enabling developers and designers to explore and discover, and to continue to enable discovery and exploration once well into the perfecting stage. Instead of waiting until we understood the ramifications of large system design and implementation using computer programming media, we decided to prematurely optimize for performance and optimization. And we got program description (or programming) languages instead—the root of all evil.

a poem is never finished, only abandoned.

Perhaps it's the coincidence of the same mind apprehending different things, but I used to describe AI as "trying to program what cannot be programmed," and I currently define poetry as "trying to say what cannot be said."

In general, an implementation must be conservative in its sending behavior, and liberal in its receiving behavior.

They know enough who know how to learn

That language is an instrument of human reason, and not merely a medium for the expression of thought, is a truth generally admitted.

An apocryphal example is "the spirit is willing but the flesh is weak." Translated back and forth with Russian, it became "the vodka is good but the meat is rotten."

studying the structure of information and the structure of problem solving processes independently of applications and independently of its realization in animals or humans.

Chess is the Drosophila of AI.

Your proposal is like a contest to see who can name the largest number with me going first.

“In the air-ship —” He broke off, and she fancied that he looked sad. She could not be sure, for the Machine did not transmit nuances of expression. It only gave a general idea of people — an idea that was good enough for all practical purposes.

I had never managed a large group before and I was clearly in over my head. Richard volunteered to help out. "We've got to get these guys organized," he told me. "Let me tell you how we did it at Los Alamos."
Every great man that I have known has had a certain time and place in their life that they use as a reference point; a time when things worked as they were supposed to and great things were accomplished. For Richard, that time was at Los Alamos during the Manhattan Project. Whenever things got "cockeyed," Richard would look back and try to understand how now was different than then.

Newtonian physics is an approximation to Einsteinian physics (general relativity). Classical physics is an approximation to quantum mechanics. Classical information is an approximation to quantum information. In each case, the approximation excludes important details but serves well for many purposes. In each case, removing the approximation requires deeper understanding and harder math, but results in a truer picture of Nature and may enable new technologies. Yes, Nature: we’re beginning to understand that information is a physical concept.

But when you understand how your tools work, then you can reason in terms of what would be the ideal solution if ideal tools existed. Software becomes clay instead of LEGOs.

Do you think less is more, or less is less?

Performing and listening to a gradual musical process resembles: pulling back a swing, releasing it, and observing it gradually come to rest; turning over an hour glass and watching the sand slowly run through the bottom; placing your feet in the sand by the ocean's edge and watching, feeling, and listening to the waves gradually bury them.

in order to sell printers, they threw away the universe

If bbb is huge, one might run out of room, but with today's 'light my cigar with disk blocks' life, not a problem

I definitely experienced some cognitive dissonance watching an 82 year old flying around vim editing postscript. It was a trip and it was really inspiring to see someone his age still hacking.

When I asked my Magic-8 ball about which email client to use, it said: "Outlook not so good."

everything is deeply intertwingled.

All Models Are Wrong Some Models Are Useful

what's upvar?

But, here we come to something even more egregious. I just defined equality. It’s utterly horrible that I have to now define inequality because what’s the meaning of inequality? Not equality. Could there be any other meaning?
In 1994 I proposed such a thing to the standard committee. I even proposed bunch of templates which will automatically do it. They threw them out because there were people who said, “but we want to have the freedom to make the glyph != do something else.” I literally have no words because that is not freedom. It’s like saying I want to have freedom to run on the street with no pants! The semantics must be fixed, you have no right to define inequality which will do a semantically different thing.

Go directly to Twitter, do not pass Google, do not collect 200 cookies

Since I am not an actual formal standards body, I don't have a nice pronounceable acronym that one could prepend to "-compliant" to form an adjective to describe a conforming implementation. In lieu of this, then, I hereby suggest that a Brainfuck implementation that is compliant with all of the constraints listed here should be described as "nice".

One in a million is next Tuesday

In a nutshell, since any software that processes inputs is, in fact, an interpreter, and any inputs are thus its programs, input validation is not essentially different from program verification. To be trustworthy, input validation must therefore be grounded in models that describe precisely what the properties of valid inputs are. Luckily, such models exist, and can be made accessible to regular developers.

"The Internet has created the most precise mirror of people as a whole that we've yet had. It is not a summary prepared by a social scientist or an elite think tank. It is not the hagiography of an era, condensed by a romantic idealist or a sneering cynic. It is the real us, available for direct inspection for the first time. Our collective window shades are now open. We see the mundanity, the avarice, the ugliness, the perversity, the loneliness, the love, the inspiration, the serendipity, and the tenderness that manifest in humanity. Seen in proportion, we can breathe a sigh of relief. We are basically OK."

People degrade themselves in order to make machines seem smart all the time. We ask teachers to teach to standardized tests so a student will look good to an algorithm. We have repeatedly demonstrated our species’ bottomless ability to lower our standards to make information technology look good.

I do not want to embarrass the company by saying it's name so I will just use the initials... IBM

SEXI Farber

You can’t swing a cat in contemporary metaphysics these days without hitting a discussion involving possible worlds

Impossible n'est pas français

This page looks cluttered in Any Browser

normalization of deviance

almost nothing is mutually exclusive

a hacker is just someone who doesn't let cultural norms get in their way

Clever though those anecdotes may be, it was much easier to become root. Sometime around 1981, I was visiting USG and they were in a bit of a panic, checking that their system was intact. Why? Because early that morning, there was a phone call to the machine room:
"Hi, this is Ken. What's the root password?"
The call was successful.
Any sysadmin worth his paycheck would have known that Ken isn't awake in the mornings and could have blocked this interloper. But...

But where is everybody?

What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing [...] is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.

en charette

... bad notations can stifle progress. Roman numerals hobbled mathematics for a millennium but were propagated by custom and by natural deference to authority. Today we no longer meekly accept individual authority. Instead, we have ‘‘standards,’’ impersonal imprimaturs on convention.

What is the major problem in computer science? Is there one? Can there ever be any? In thinking about it, I have come to the conclusion that if there is any major problem, it is the problem of bridging the gap between neuroscience and psychology. If one looks at neuroscientists, one finds that they work very deep inside the nervous system at an extremely primitive level; they work on neurons. It is as though computer scientists spent all their time looking at gates. On the other end of the spectrum is the psychologist, who sees man as an entity, as a totality, trying to understand what makes him tick. The psychologist's weapons are gross and very, very macroscopic. How can we create a bridge between neuroscience and psychology? My conclusion is that computer science is the discipline that will provide this bridge, and the bridge will come from the study of software. There is a major problem worth sinking your teeth into. Software--collections of symbols that execute processes--is our external way of trying to model the way thinking goes on. Of course, we are very primitive. Nevertheless, it seems to us that is the clue: computer science--if any discipline will--will ultimately provide us the bridge that tells us how the neurons, working as gates, pass signals by the billions in such a way that our brain causes us to behave in a way that psychologists can say, "Ah! I understand."

A life blighted by the trisection


Abigail's length horror

When examined, answer with questions

More people have been to Russia than I have

Deities must be invoked directly and not via Phoenix MVS

Today man has developed extensions for practically everything he used to do with his body. The evolution of weapons begins with the teeth and the fist and ends with the atom bomb. Clothes and houses are extensions of man's biological temperature-control mechanisms. Furniture takes the place of squatting and sitting on the ground. Power tools, glasses, TV, telephones, and books which carry the voice across both time and space are examples of material extensions. Money is a way of extending and storing labor. Our transportation networks now do what we used to do with our feet and backs. In fact, all man-made material things can be treated as extensions of what man once did with his body or some specialized part of his body.

we suppress an organ in the living subject, by a section or ablation; and from the disturbance produced in the whole organism or in a special function, we deduce the function of the missing organ.

There are several ways to understand the difference between scientists and writers. One can contrast their methods and stage the difference as an opposition between exptanation and interpretation. In this respect, literature is part of a general field devoted to understanding, as opposed to an explanation through causes and effects: the scientists are discovering laws where the writers are creating meaning. One can contrast their objects of study. This is a more romantic version of the divide: the principles of nature against the torments of the human heart; the fatality of the natural world against the unpredictability of human consciousness and action.

Why do all hammers look basically the same? Because there's an 'ideal hammer', and over time hammer design has asymtoted toward that 'ideal hammer' design. One can't just keep improving the design indefinitely - diminishing returns set in. So I suspect there is, to some degree, a Platonic 'ideal syntax' for a 'classic block-structured' programming language, and to me, C came pretty close to it. I except LISP from that assessment, because LISP is built around a fundamentally different model of how computations/algorithms are organized, and C and LISP aren't directly comparable. But that realization points to a deeper bug with the 'Platonic ideal language' concept above, which is that languages are fundamentally, albeit at a very deep conceptual level, tied to the basic concept of the computing hardware they are to run on.

The roffians versus the texans

the Chinese saying that it is difficult to find a black cat in a dark room, especially if there is no cat

A related argument is that engineering approaches are not applicable to cells because these little wonders are fundamentally different from objects studied by engineers. What is so special about cells is not usually specified, but it is implied that real biologists feel the difference. I consider this argument as a sign of what I call the urea syndrome because of the shock that the scientific community had two hundred years ago after learning that urea can be synthesized by a chemist from inorganic materials. It was assumed that organic chemicals could only be produced by a vital force present in living organisms. Perhaps, when we describe signal transduction pathways properly, we would realize that their similarity to the radio is not superficial. In fact, engineers already see deep similarities between the systems they design and live organisms

The Igon Value Effect

Integrated software -- today people think that means word professor, spreadsheet and database. That’s like, hamburger fries and shake, that’s food... for somebody who only grew up with McDonald’s.

Kefir zhizni

At one point, KV might have suggested that more stringent requirements, such as those used in the aerospace industry, might have been one way to ameliorate the dangers of software in the four-wheeled killing machines all around us, but then Boeing 737s started falling out of the air and that idea went out the window as well

In the case of Intel (x86), Ring -3 is the Intel Management Engine.7 It can turn on nodes and reimage disks invisibly. It has a kernel that runs Minix 11 as well as a web server and entire networking stack. Because of this, Minix is the world's most widely used operating system.

Among the structuring methods for computer programs, three basic constructs have received widespread recognition and use: A repetitive construct (e.g. the while loop), an alternative construct (e.g. the conditional if..then..else), and normal sequential program composi- tion (often denoted by a semicolon). Less agreement has been reached about the design of other important program structures, and many suggestions have been made: Subroutines (Fortran), procedures (Algol 60 [15]), entries (PL/I), coroutines (UNIX [171), classes (SIMULA67 [5]), processes and monitors (Concurrent Pascal [2]), clusters (CLU [13]), forms (ALPHARD[19]), actors (Hewitt [1]).

I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.

The closer the real possibility of liberating the individual from the constraints once justified by scarcity and immaturity, the greater the need for maintaining and streamlining these constraints lest the established order of domination dissolve. Civilisation has to protect itself against the spectre of a world which could be free.

Emancipatory politics must always destroy the appearance of a ‘natural order’, must reveal what is presented as necessary and inevitable to be a mere contingency, just as it must make what was previously deemed to be impossible seem attainable

infinite scrolling pastel hellscapes of Zuckerberg and company

Shlemiel the painter’s algorithm


If the only tool you have is an analogy to a hammer, every problem looks like a story about nails.

They might never tell you it's broken

A year or two after I'd joined the Labs, I was pair programming with Ken Thompson on an on-the-fly compiler for a little interactive graphics language designed by Gerard Holzmann. I was the faster typist, so I was at the keyboard and Ken was standing behind me as we programmed. We were working fast, and things broke, often visibly—it was a graphics language, after all. When something went wrong, I'd reflexively start to dig in to the problem, examining stack traces, sticking in print statements, invoking a debugger, and so on. But Ken would just stand and think, ignoring me and the code we'd just written. After a while I noticed a pattern: Ken would often understand the problem before I would, and would suddenly announce, "I know what's wrong." He was usually correct. I realized that Ken was building a mental model of the code and when something broke it was an error in the model. By thinking about *how* that problem could happen, he'd intuit where the model was wrong or where our code must not be satisfying the model.
Ken taught me that thinking before debugging is extremely important. If you dive into the bug, you tend to fix the local issue in the code, but if you think about the bug first, how the bug came to be, you often find and correct a higher-level problem in the code that will improve the design and prevent further bugs.

You don't need a weatherman to know which way the wind blows

We petitioned, we demonstrated, we sat in. I was willing to get hit over the head, I did; I was willing to go to prison, I did. To me, it was a question of what had to be done to stop the much greater violence that was going on.

Physicists work in the basement of reality

In the midst of a network of particle interactions that we draw as a Feynman diagram, it often happens that one particle will trace a closed loop in time, become an anti-particle when traveling backward in time, and annihilate with itself at an earlier time. These interactions are common enough that we have a name for them: penguins. (Richard Feynman once complained that "penguin" was absurd: these diagrams don't look anything like penguins. The speaker responded that they didn't look anything like Richard Feynman, either.)

a divine spark

It hardly matters whether we run the formulas forward or backward—the whole is a single, self-consistent tapestry.

The problem with monolithic repositories is that they have no clear end. They have infinite growth possibility

There are parallel and series circuits in causality that our language tries to cram into all-or-nothing categories like "is responsible" and "isn't responsible."

The "Be reasonable, do it my way" approach does not work. Neither does the Esperanto approach of "let's all switch to yet a new language".

In English and French - the word "first" is not derived from the word "one" but from an old word for "prince" (which means "foremost"). Similarly, the English word "second" is not derived from the number "two" but from an old word which means "to follow". Obviously there is a close relation between "third" and "three", "fourth" and "four" and so on.

fait accompli

Don't seek to emulate the wise. Seek What They Sought.

Btrfs can survive acts of god. XFS is resistant to acts of god. FAT32 is too dumb to realize what is before it is an act of god, making it similarly resistant for all the wrong reasons.

I'm a Unix guy, so I'm thinking about the environment I grew up on. When we gave programmers a virtual machine image with (mostly) protected memory, the unit of computing was process. But since it turned out that the kernel's attempts to isolate processes from each other failed, the unit of computing became virtual machine image, and now the problem is maintaining the isolation between VMs running in a stack -- it's the same problem with just another level of indirection added. Today, we're heading toward disposable networks of disposable nonexistent machines.

The first message sent on the Moscow–Washington hotline on August 30, 1963, was the test phrase "THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG'S BACK 1234567890".[8] Later, during testing, the Russian translators sent a message asking their American counterparts, "What does it mean when your people say 'The quick brown fox jumped over the lazy dog'?

cosmic schmuck

tradition is just peer pressure from dead people

I came to Regnecentralen in 1963 to work with Peter Naur and Jørn Jensen. The two of them worked so closely together that they hardly needed to say anything to solve a problem. I remember a discussion where Peter was writing something on the blackboard, when Jørn suddenly said “but Peter...” and immediately was interrupted with the reply “yes, of course, Jørn.”

In early computer systems, operators carried out most of these functions, but during the last fifteen years the programs that we call operating systems have gradually taken over these aspects of sharing.

Even with good design, w/o tests you will fear change and so the code will rot. With good tests, there’s no fear, so you’ll clean the code.

The Programmer as a Young Dog

the orange website

This reminds me of a Ken story from the late '90s. I was at a conference that I won't name where Ken gave a talk about his compression work; if I remember correctly his goal was to fit all of the Billboard Top 100 songs of all time onto a single CD. He showed us the big stack of disks that he made to give to us, but then said that to his surprise the the lawyers refused to give permission. At that point he became very focused on messing with his slides while everyone got up, got in line, and took a disc. After the pile was gone Ken looked up and nonchalantly continued his talk.

danger, however, is agile shaman! many, many shiney rock lost to agile shaman!

Curiosity may have killed the cat, but it's always been my good friend.

The whole future lies in uncertainty – live immediately

that dog would not hunt

Borgmon readability

the problem with you guys is that, your search technology is so stupendously wonderful, that you have invented a human right. the right to do a google search.

you go to an employer and say "here I am, I just graduated from MIT, look at how white my teeth are! please give me a job. I am good at whatever."

This romantic vision of the luddite, potentially emancipating, power of computing was promptly smothered by military drones, surveillance hardware and the advertisement machinery. Suffice to say, that nowadays, to most of my friends, computing evokes either encroaching social networks or the drudgery of data entry.

I often think back on how, in the movie Hackers(1995), each character had their own laptop launch sequence reflecting parts of their aesthetics. — A far cry from today's disposable laptops, each equally adorned of proprietary services stickers.

The Queen's Duck

the law, in its majestic equality, forbids rich and poor alike to sleep under bridges, to beg in the streets, and to steal their bread


Back in the days of ARPANET mailing lists, there used to be an "educational" mailing list called "please-remove-me", that was for people who asked an entire mailing list to remove them, instead of removing themselves, or sending email to the administrative "-request" address. So when somebody asked an entire mailing list to remove them, somebody else would add them to the "please-remove-me" mailing list, and they would start getting hundreds of "please remove me" requests from other people, so they could discuss the topic of being removed from mailing lists with people with similar interests, without bothering people on mailing lists whose topics weren't about being removed from mailing lists. It worked so well that it was a victim of its own success: Eventually the "please-remove-me" mailing list was so popular that it got too big and had to be shut down...

Jordan K. Hubbard rwall incident

Lena Image

The command line is like language. The GUI is like shopping.

The solution is simple: don’t estimate! Don’t spend the time trying to work out how long something will take! If you really have to, I quite like no bullshit estimation - basically there’s only three types of story: 1, TFB (Too Fucking Big), NFC (No Fucking Clue).

Brussels bureaucracy

It's definitely one of the more pernicious attempts to re-enchant the world after the death of god

But in the new millennium, the Internet is poised to trump each and every one of these prior “liberations” of media into content, because the Internet is making content of them all

Debt, as Doctor Faustus shows us, is to market societies what hell is to Christianity: unpleasant yet indispensable

In civilizations without boats, dreams dry up, espionage takes the place of adventure, and police take the place of pirates.

Arguing with an engineer is like mudwrestling a pig: after an hour or so you're covered with mud... then, suddenly, you notice the pig's really enjoying itself

"You can't grep dead trees" -- hacker saying

Streams or STREAMS (as Ritchie famously said, it "means something different when shouted")

> If we have a whole section for rogue(6), anything can get its own section ;)
I don't regard this section's existence as waste or excess, but as a litmus test for organizations that deploy *nix systems. If the people in the C suite insist that this stuff be chopped out "because IT is serious business", you know that you're dealing with an organization that is more dedicated than most to ensuring that individual contributors experience their labor as a drudge.

Ichimoku cloud

We intuitively know that the tea itself is probably a nothing in and by itself, and that it probably does nothing in and by itself, but that this a nothing we can ritualise and return to as a refuge from the pressures of the day to day. In a world overstuffed with disorder and frantic activity, calm is found not in a location but in a ritual. It is found by enjoying an end-in-itself pleasure that promises nothing but itself. And that’s all it needs to be.

You might assume that, if a credit card is stolen/hacked and used by a bad actor to buy something, the cardholder would be liable. They will suffer the first loss, certainly, but society has decided by regulation (specifically, Regulation E) that that loss should flow to their financial institution, less a $50 I-can’t-believe-it’s-not-deductible. As a marketing decision, the U.S. financial industry virtually universally waives that $50

friends are the only motherland

search engine incantation

Don't confuse familiarity with simplicity

Licklider grew frustrated with the long hours that he, as a scientist, spent 'getting into position to think'. Like Engelbart, Licklider imagined that computers might evolve into machines to help scientists -- if only there were a better way to link scientists with computers than punch cards and printouts.

Really, we just need a progress meter that says "don't bother getting up up", "get lunch now", or "come back tomorrow", but I don't know that there is one.

Copy/paste are the biggest neglected operations in computing, considering that they are the only universal mechanism for transferring data between applications that is accessible to end users.

And now for something completely different

inside baseball

Make reversible decisions as soon as possible. Make irreversible decisions as late as possible.

With that name, I would have bet money that it came from the "suckless" people, who seem to be on a mission to occupy every cell in the two-letter Unix command name space that Ken Thompson left vacant, but apparently not.

different byte sex

I'm sorry if this is incoherent, I don't have time to try to make it clearer.
- Leslie

You might assume that, if a credit card is stolen/hacked and used by a bad actor to buy something, the cardholder would be liable. They will suffer the first loss, certainly, but society has decided by regulation (specifically, Regulation E) that that loss should flow to their financial institution, less a $50 I-can’t-believe-it’s-not-deductible. As a marketing decision, the U.S. financial industry virtually universally waives that $50

We intuitively know that the tea itself is probably a nothing in and by itself, and that it probably does nothing in and by itself, but that this a nothing we can ritualise and return to as a refuge from the pressures of the day to day. In a world overstuffed with disorder and frantic activity, calm is found not in a location but in a ritual. It is found by enjoying an end-in-itself pleasure that promises nothing but itself. And that’s all it needs to be.

In my eulogy of Barry Boehm last week in this blog, I mentioned from memory an exercise in his classic Software Engineering Economics textbook (Prentice Hall, 1981). Now I've got my hands on the book itself and found that it is even better than I remembered. So here is the exercise text in its entirety. It is exercise 1.4, page 9. I hope that citing one exercise from a 1981 textbook, even in full, falls under fair use. They do not write textbooks like this anymore!
Mary Jones in the Accounting Department tells you that she has a file of personnel records [2022 update: an Excel sheet] and asks you to develop a program to compute the median age of the personnel in the file. Here are four different ways you might respond:
(a) Invoke a sort routine which sorts the personnel file by increasing age. Count the number, N, of personnel records in the file. Find record N/2 in the sorted file, extract its value for "age".
(b) Note that in The Art of Computer Programming [Knuth, 1973], Vol. III, pp. 209-220, the problem of obtaining the median is a special case of the problem of finding the ith largest of N numbers, and that R.W. Floyd has formulated a recursive method of obtaining the median in an average of 3/2 N + O (N2/3 log N) comparisons. Spend a couple of weeks attempting (unsuccessfully) to improve on Floyd's algorithm, a day programming Floyd's algorithm, and then return to Mary Jones with some questions on the size and format of her file.
(c) Ask Mary how soon she needs the results, how much she is willing to pay for them, how many records, N, her personnel file has, and how often she will be making such runs. If N is large, and she wants results often, quickly, and cheaply, ask her if she would be satisfied with the mean value, which is much easier and cheaper to calculate. If not, work with Mary to tailor an approach to obtaining the median which is the best compromise between her various objectives.
(d) Compute the mean age, and print it out as the median. It's much easier to program, and Mary Jones will probably never notice the difference.
Rank the responses in the order of their relative concern with programming considerations, economic considerations, or other important considerations. If you were the programmer, which approach would you prefer? If you were Mary Jones, which approach would you prefer?

fall on an outstretched hand (FOOSH)


the easiest way to censor someone online is through harassment, or DDoS attacks - i.e. have a bunch of people shout at you until you shut the fuck up

convicted vapist

if you do this stuff you gotta go in weird places

The starting point of these reflections was usually a feeling of impatience at the sight of the 'naturalness' with which newspapers, art and common sense constantly dress up a reality which, even though it is the one we live in, is undoubtedly determined by history. In short, in the account given of our contemporary circumstances, I resented seeing Nature and History confused at every turn, and I wanted to track down, in the decorative display of what-goes-without-saying, the ideological abuse which, in my view, is hidden there.

There is some Unix quote that God wrote the first device driver and people have copied that and tweaked it for their device ever since

Just another Perl hacker,

I believe programming, in this regard, can learn something from writing: when writing the first core of a new system, when the original creator is still alone, isolated, able to do anything, she should pretend that this first core is her only bullet. During the genesis of the system she should rewrite this primitive kernel again and again, in order to find the best possible design. My hypothesis is that this initial design will greatly inform what will happen later: growing organically something that has a good initial structure will result in a better system, even after years of distance from the original creation, and even if the original core was just a tiny faction of the future mass the system would eventually assume.

As somebody said, the best code is written when you are supposed to do something else

And if you have written code that is not just a “filler” for a bigger system, but a creation of your own, you know that writer block also happens in programming. The only difference is that for most people you are an engineer, hence, if you don’t work, you are lazy. The same laziness, in the case of an artist, will assume the shape of a fascinating part of the creative process.

I feel as a chessman must feel when the opponent says of it : That piece cannot be moved.

I'm annoyed as well when 'man some_command' tells me to RTFTID (where TID is 'TexInfoDocumentation' and you know what RTF stands for :-) ).

The most ludicrous of all ludicrous things, it seems to me, is to be busy in the world, to be a man who is brisk at his meals and brisk at his work. Therefore, when I see a fly settle on the nose of one of those men of business in a decisive moment,or if he is splashed by a carriage that passes him in even greater haste, or the drawbridge tilts up, or a roof tile falls and kills him, I laugh from the bottom of my heart. And who could keep from laughing? What, after all, do these busy bustlers achieve? Are they not just like that woman who, in a flurry be- cause the house was on fire, rescued the fire tongs? What more, after all, do they salvage from life's huge conflagration?

Ask me what you wish; just do not ask me for reasons. A young girl is excused for not being able to state reasons; she lives in feelings, it is said. It is different with me. Ordinarily I have so many and most often such mutually contradictory reasons that for this reason it is impossible for me to state reasons. It also seems to me that with cause and effect the relation does not hold together properly. Sometimes enormous and gewaltige [powerful] causes produce a very klein [small] and insignificant little effect, sometimes none at all; sometimes a nimble little cause produces a colossal effect.

When I was very young, I forgot in the Trophonean cave how to laugh; when I became an adult, when I opened my eyes and saw actuality, then I started to laugh and have never stopped laughing since that time. I saw that the meaning of life was to make a living, its goal to become a councilor, that the rich delight of love was to acquire a well-to-do girl, that the blessedness of friendship was to help each other in financial difficulties, that wisdom was whatever the majority assumed it to be, that enthusiasm was to give a speech, that courage was to risk being fined ten dollars, that cordiality was to say "May it do you good" after a meal, that piety was to go to communion once a year. This I saw, and I laughed.

It takes a lot of naivete to believe that it helps to shout and scream in the world, as if one's fate would thereby be altered. Take what comes and avoid all complications. In my early years, when I went to a restaurant, I would say to the waiter: A good cut, a very good cut, from the loin, and not too fat. Perhaps the waiter would scarcely hear what I said. Perhaps it was even less likely that he would heed it, and still less that my voice would penetrate into the kitchen, influence the chef, and even if all this happened, there perhaps was not a good cut in the whole roast. Now I never shout anymore.

This FOSS idealism unchecked has created a systemic bias in Open Source that favors people who: have the time to do it, have income, don't worry about or have bills. What has this created? A system that extracts value w/o having to compensate producers of that value. An overwhelmingly White, male, Western, & priveleged cohort of Open Source practitioners.

Larry and Sergey’s protobuf moving company

Sabbath Mode

the "great unwashed"

beyond our ken


Mr. Nixon may be very experienced in kitchen debates, but so are a great many other married men I know.

errors of omission, rather than commission

perpetual stew

impedance mismatch



sunlight is the best disinfectant

It doesn't need to be imagined, it needs to be written down
- Philip Glass

The characters in my novel are my own possibilities that were not realized
- Milan Kundera

enjoyment of the feeling of writing on paper. The feeling is actually really nice, and I believe it even inspired essays by Japanese authors about the feeling

Any reasonable person wouldn’t feel liberated by a $50 fork, but constrained by it.

Partisans of

(Fanged noumena?)
(Vs phenomena)

You're approaching the topic of a healthy marriage from game theory where your spouse is another player/opponent, not from empathy and good-faith participation or even just as a team with a common goal.
Is your goal to "have it your way all the time", or is it to have a healthy and loving marriage with your spouse? If you approach it from the latter perspective, the question doesn't really make any sense.

I read both On The Road and The Dharma Bums as a student, when I was trying to figure out what to do with my life

Marshall McLuhan the media seer

I nominate SerenityOS as the new spiritual computing platform, because it reflects a spiritual desire to create and live rather than decay and die.

Pax Americana Geriatrica. Most wealthy countries have median ages of over 40, and middle-aged people don’t like starting fights. We have responsibilities and worries, our frontal-lobes have made us cautious, and our testosterone levels are in terminal decline.

Arnold Schoenberg said of his 12-tone method of music composition, "in constraints I find freedom". The best thing about committing to a simple style and a small set of tools that span the problem space, is the effect it has on my program composition, imh

Do it once, do it well, and do it for everything

Tell me about something you wrote that was entirely you, the docs, the
tests, the source, the installer, everything.  It doesn't have to be a
big thing, but it has to have been successfully used by at least 10
people who had no contact with you (other than to say thanks)."

Magic smoke

Direct portal to my essence

I need to hear some sounds that recognize the pain in me

1 - it works in your office
2 - it works in an office down the hall
3 - it works for someone you've never met
4 - you don't have to explain why you use it
5 - you have to explain why you don't use it

This is imho a pure tooling problem.
We still use a loosely representation (text) for a semantically very rich data format (code). When you look at this objectively that's madness.
We should finally use proper editors for our semantically rich data format instead of "dumb" text editors. (Which are by now actually not so dumb, and which do again completely crazy things to re-extract the semantic information from a representation that inherently erased this information while we're used a loosely text representation).
We should imho eventually switch to "binary source code" and start using proper tools to edit this data.
What we do currently is like editing Excel sheets in a hex editor…
Binary source code (or at least something in the ballpark of XML tech) would also solve a lot of other problems: For example the rendering of the data on screen would be independent form the actual data on disc. This means bitching around "code style" and even partly syntax could finally end. The stuff on screen could be rendered with the help of some "style sheets". Everybody would get the preferred look & feel for their code. (We do this already partly with syntax highlighting; we "just" need to extend this concept). Also things like version control, dependencies, and such, could be build in. Proper indices for searching (and refactoring code) could be also added (things that our editors today compute anyway, but in some ad hoc and very language specific way). Compilation of such code would be faster as all the parsing wouldn't be needed (as it would happen already in the editor; actually, also what is already done today, only that we than again throw away this information for no reason, so the compiler "may" regenerate it over and over on every run, instead that this stuff ends up in a kind of database which could be even part of the "binary source code" format).
I guess some innovative editor features nobody even considered until now would be also enable this way.
It's time for progress!
(Most likely, as almost always, someone will come up with some references to very old systems that did already this because they were ahead of their time; let's see what new stuff I'm going to learn this time :-D).

I would honestly love to revolutionize this country from one end to the other! I am sure this would bring happiness to the Cuban people. I would not be stopped by the hatred and ill will of a few thousand people, including some of my relatives, half the people I know, two-thirds of my fellow professionals, and four-fifths of my ex-schoolmates.

he argued that a successful revolution could not be run by committee and required a strong leader.[80

We do not have a smidgen of capitalism or neo-liberalism. We are facing a world completely ruled by neo-liberalism and capitalism. This does not mean that we are going to surrender. It means that we have to adopt to the reality of that world. That is what we are doing, with great equanimity, without giving up our ideals, our goals. I ask you to have trust in what the government and party are doing. They are defending, to the last atom, socialist ideas, principles and goals.
– Fidel Castro explaining the reforms of the Special Period[319]

It gets at that feeling I want to have from emacs and literate programming but rarely achieve, the sense of Living Text.

Most programmers gravitate towards a set of courses that can best be described as the olive-garden of computer science


Hunger to explore the world

I’m not an incel I’m a pretzel

Convinced that he would never make another movie, he poured his energies into making this violent biopic of middleweight boxing champion Jake LaMotta, calling it a kamikaze method of film-making.

Hardware eventually fails. Software eventually works.” – Michael Hartung

At the same time, aliens function as the last acceptable mythology in an age of science. “A lot of what science does is say there are no dragons, there are no unicorns—all these things that have been part of our folklore,” Poundstone says. “Scientists tell us they don’t exist. But they can’t tell you there are no aliens.”

My mother had memory problems in the last years of her life. My sister would take her to a coffee shop, where she would order a latte or some such. To my mother, it was new and delightful every time--and she would exclaim over how she'd never had anything like that before, although in fact she'd had it just the week before.
When I get old(er), that's how I hope I'll be: delighting in new experiences, even when they're old.

spiritual bypass

you must assume responsibility for what you believe

You’ve climbed ten thousand steps in search of the Dharma. So many long days in the archives, copying, copying. The gravity of the Tang and the profundity of the Song make heavy baggage. Here! I’ve picked you a bunch of wildflowers. Their meaning is the same but they’re much easier to carry.
-xu yun

Hankering for the enemy (the worth-while enemy)

Might it be that the “inquiring mind” was simply the human mind terrified by pessimism and trying to escape from it, a clever bulwark erected against the truth? Something craven and false, if one wanted to be moral about it? Of, if one preferred to put it amorally, a dodge? Had this perhaps been your secret, great Socrates? Most secretive of ironists, had this been your deepest irony?

In spots it is saccharine to the point of effeminacy 😂

Knew then as it does now how to enlist fellow revelers and to tempt them into secret alleys, onto mysterious dancing grounds


What I’m doing now is allowing myself to do much more in terms of just completely random experimentation with certain like very low level technologies [electronics], and indeed when you do that things do jump out that you would never have gotten by any kind of methodical pattern. And that, for example, is something that’s very difficult to do in software, it’s very difficult to actually... make a discovery in software.

Blame up, credit down

The truth has a special peculiarity about it, one which people try to forget. Lies are logical, but the truth is bottomless. It is dirty, it is scary, and it is illogical.

People can be paid in three ways: in money, in mastery, or in meaning, and ideally you want to be paid in all three.

Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use. - Steve Jobs

PHP’s parser refers to e.g. :: internally as T_PAAMAYIM_NEKUDOYATIM

Although I’ve nicely spaced out my example above, you can imagine a less sociable developer might cram everything together without any spaces or newlines

When you forget about that urge of productivity, which has become the moloch we sacrifice our children to, you may be able to achieve that particular thing that is called quality, elegance, art. It may take a lifetime, you may never reach that far, but still you should strive for it.

death knell

logic piano

Nobody tells this to people who are beginners, I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase, they quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know its normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story. It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your way through.

The manual also contains a "tonsil", as explained in this footnote: "4) Since all other reference manuals have appendices, it was decided that the INTERCAL manual should contain some other type of removable organ."[5]

Related to this, according to Steve Johnson, stderr was not part of the
original stdio library; it was added as a side effect of the development
of troff for the C/A/T photoypesetter which projected images onto silver
photographic paper. That became very expensive when the Hunt brothers
cornered the silver market, and folks were asked to cut down on
phototypesetter use. It was not uncommon to send a job to the typesetter
only to get back a beautifully formatted page containing a cannot open
file error message. The stderr file pointer was born so that error messages
could go to the terminal instead of to the typesetter in order to save money.

const poisoning

UNIX programmers too often fail to check for failure of system calls or functions, taking the familiar teen-age attitude that ``it can't happen to me (or my program)''


Many people think that errors can only happen to ``the other guy.'' Unfortunately, current versions UNIX do not provide a system call to tell if you're running as the other guy... But I hear that Dennis is working on it!

In the end, it’s like having an intern with a bit of experience, Stack Overflow, and a decent aptitude driving the keyboard: you still have to break down the spec into small, detailed chunks, and while sometimes they come back with the right thing, more often, you need to walk through it line by line to correct the little mistakes.
I’m looking forward to seeing a generative model combined with static analysis, incremental compilation, unit test output: I think it will be possible for a good programmer to multiply their productivity by a few times (maybe even 10x, but I don’t see 100x).  There’ll still be times when it’s simpler to just write the code yourself, rather than trying to rephrase the request.
All of which makes me think of the assembly language to high-level language transition ...

suicide necklaces

Amin forcefully stated that the emancipation of the so-called ‘underdeveloped’ countries can neither happen while respecting the logic of the globalized capitalist system nor within this system

Scrum usually arrives the same way grain arrives in the stomachs of fois gras ducks, so unfortunately I suspect the team has no choice in the matter.

If you are reading this and are thinking I'm perhaps making too big a deal out of this problem, you are exactly the person I need to reach so please - I beg you - keep reading.


Having been running a University computer center we were the target environment for these.   Still the “optical only” drive was problematic.
By the time I actually received one (the joke was that the company was going to be renamed from “Next” to “Eventually”)

Caveat lector
Caveat emptor

It really is desperately simple. A beautiful bit of engineering

I find that when I feel this way, I try to shift my "consumption" mental state to "construction"

In vain does the chicken cross the road; Emacs is on both sides. – Ludovic Brenta

The Tao gave birth to machine language. Machine language gave birth to the assembler.
The assembler gave birth to the compiler. Now there are ten thousand languages.
Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.But do not program in COBOL if you can avoid it.

Try not to care.
One of the great leaps in OO is to be able to answer
the question "How does this work?" with "I don’t care".

The surgeon general similarly addressed addictive algorithms, explaining pitting adolescents against Big Tech is “just not a fair fight.” He told CNN, “You have some of the best designers and product developers in the world who have designed these products to make sure people are maximizing the amount of time they spend on these platforms. And if we tell a child, use the force of your willpower to control how much time you’re spending, you’re pitting a child against the world’s greatest product designers.”

The MOO problem

Well the Web 1.0 was about giving static information. You would go on page created by Webmasters (Or, fun fact, sometimes called "Webmestre" in French, which I just imagine as a guy in a robe with a staff and a big hat).

Americans want to believe. Call it "optimism", if you're feeling generous.
American exceptionalism is a thing to believe in which satisfies all of the needs of a believer. It's part of the belief triad "god-family-country".
The military is an extension of the country. There is very little visible military presence in the US, and the military has no role in civilian affairs except in cases of temporary callup for natural disasters etc.
And yet it's a very big military, so everyone has some adjacency to present or historical members of the military.
In short, it's the perfect object of optimistic belief. The military is consistently the "most trusted" part of American society -- perhaps because all the things it does, it does elsewhere.
And for the most part, American foreign policy is pretty similar across political lines, so there's no inherent partisan rift, making it an easy and safe thing for everyone to agree on.
A foreigner might argue that that is a flimsy basis for belief. They might point to some tragic events visited upon the world by the US military. They might say that Normandy was a long time ago and it doesn't justify everything that's happened since then.
Many Americans would agree with that. But that's the outsider's view. First and foremost, internally, the military is a jobs program. And it's very very good at that! Tons of training and education, incredible amounts of commerce and technology, genuine personal development, and on the whole very little international malfeasance.
Americans are optimistic people.

Stolen valor

It was -30 outside this morning. My car hates me for bringing it here.

One of the greatest flaws of modern society is how we systematically beat this natural childlike enthusiasm for bending the rules out of people.

Cult of Conformity... Yale and Stanford... start ups used to be formed by punk rock drummers, people who made blue boxes, hackers and all the crazy rejects of society who where smart enough to build, but were rejected by all the "conformist institutions" - we had no where else to go.
Now... yeah...

Tech is now called “Deep Tech

Eternal September

I have lifted for 30 years. The standard bullshit line in the fitness industry has always been “everyone else is wrong”. Practically what every single trainer in the world has said.
The reason is because of all the things I have done in my life, lifting is the most trivially simple activity there is. It is as complex as shoveling dirt. The only way to differentiate if trying to make money is to bullshit. Pick the weights up, put them down, eat food. It’s just not that complicated.

Imagine you reached into a bag of chips only to find you’d already eaten the last one. However, your futilely grasping hand somehow triggers the incursion of every object in the known universe into the chip bag. Within nanoseconds a black hole forms and you are annihilated. This is roughly the experience of writing C++.

he who knows only his own side of the case, knows little of that

A preoccupation with the means is a lack of commitment to the end

I remember joking that PowerShell is a properly architected shell, which is why it was so uninspiring to use. I still use Bourne-derived shells because they’re just so damn human.


The semantic web is a dream that never came to be. Now we have a computer program that breaks all information down to semantics. So anything you thought was possible with the semantic web is now within reach.

I personally knew of Ken Thompson, but only as a person whose
fingerprints were all over the TTY DIM (and who continually spelled
kernel as kernal -- a characteristic that would continue into the Unix
source code).

I attribute that to the early
mentality that the PDP-11 was the only machine that mattered, and the
belief of the succeeding generation, despite obvious contrary evidence,
that the VAX was the only machine that mattered.
Nowadays, we laugh at the blinkered folly of our ancestors and
confidently understand that x86-64 is all that matters.

Bill Gates volunteers that he would gladly urinate on a NeXT machine.

In a microservice architecture one needs to communicate between the different services. The golden hammer for such communication is REST-ish services employing JSON over HTTP

My experience has been that people have a transactional relationship to software, not a values-based one. Which is the main reason the various free software movements have yet to gain wide spread traction. People don't seem to care about how software is created and how it is licensed but whether it meets a particular need. (I need to file my taxes. I want to listen to music. I want to book a reservation, etc.) The challenge is not necessarily to "make software free" but to first get people to view software through a holistic, non-transactional lens.

A little bit of slope makes up for a lot of y-intercept"

should only appear at system boundaries

complex and interlocking societal factors make excellence a pipe dream

Learning involves in effect compressing data by leveraging regularities.

a hodgepodge of Make, autogenerated rules from autotools, and the maintainer’s boutique shell scripts
outside of hobbyists playing with weird architectures for fun (and accepting the overwhelming likelihood that most projects won’t immediately work for them), open source groups should not be unconditionally supporting the ecosystem for a large corporation’s hardware and/or platforms.
Companies should be paying for this directly: if pyca/cryptography actually broke on HPPA or IA-64, then HP or Intel or whoever should be forking over money to get it fixed or using their own horde of engineers to fix it themselves. No free work for platforms that only corporations are using14. No, this doesn’t violate the open-source ethos15; nothing about OSS says that you have to bend over backwards to support a corporate platform that you didn’t care about in the first place.

the substrate

At this throughput, the primary datastore could be a human writing into a physical book.

all of the abstractions between hardware and high level languages are leaky. Many of the concepts in high level programming derive from analogs in lower level programming, which in turn loosely wrap even lower level concepts. None of these abstractions are clean. Most were created as conveniences, not as entirely new paradigms that allow programmers to stop thinking about those below.

In an era before cloud, one of the major project risks was under-provisioning hardware. Load testing made sense then. It makes less sense now.
I've given up on load testing all together. Most applications or services quickly grow to complex to maintain in a cost-effective way with the pace of change demanded of them.
Instead every team I talk to about load testing or performance I shift it to observability. If the team can't understand current performance and load in production, any sort of load testing results in another environment will be poorly understood and hold little value

Take historical note of textile and steel industries: do you want to build machines and tools, or do you want to operate those machines?

If people really have lost hardware management skills in their entirety (as in, not even being able to connect to an IPMI on fully managed hardware) - then we truly are serfs to our landlords now and they can charge whatever they want in perpetuity, its the ultimate drug dealers deal (something free to get you hooked

I do remember this was right around when gcc first starts coming out, and they had a tool called robitussin to "cure coffs" as they were using a.out wen they could.

“young man shouts at cloud”

the function doesn’t really have an contract beyond “if you use me then I’ll do a bunch of stuff”

I thought of Richard Feynman and how he felt after the Manhattan Project. He said that he saw people building a bridge in New York and thought that they were being absurd, that they didn’t understand. There were atomic bombs now, it was senseless to make anything. It would all be destroyed soon.

A reminder for all that have forgotten: UB is the one that can email your local council and submit a request to bulldoze the house you’re in. It is not a free core dump.

"I must study politics and war that my sons may have liberty to study mathematics and philosophy. My sons ought to study mathematics and philosophy, geography, natural history, naval architecture, navigation, commerce and agriculture in order to give their children a right to study painting, poetry, music, architecture, statuary, tapestry, and porcelain

In your own career, I'd advise you to develop an appreciation an
    appreciation and an aptitude for both the /quick-and-dirty/ and
    /elegant-and-formal/ styles of programming, and to cultivate the
    ability to produce either kind on demand, as circumstances

There are no hotspots. Computing has become lukewarm by default, and just like the globe, it's slowly heating up.

I'm a fisherman, the fish get bigger every time I tell the story and the years
I used X back in the day get longer :)

On September 28, 2004, he dedicated more money to the campaign and kicked off his own multistate tour with a speech, "Why We Must Not Re-elect President Bush",[184] delivered at the National Press Club in Washington, D.C. The online transcript of this speech received many views after Dick Cheney accidentally referred to as "" in the vice presidential debate, causing the owner of that domain to redirect all traffic to Soros's site.[185]

this should only be a URL - let me know if Chrome/gmail is peeing on it again

Lore is the grease between the concrete blocks of knowledge, the carved step in an otherwise impossible-to-scale mountain, the small bit of powder sprinkled through a workspace to ensure sparks dont fly and things don’t burn

had anyone ever tried to harvest energy from key presses to prolong battery life?


I also evolved Larry's Theory of Exceptions, which is that it is the programmer's job to sort exceptional conditions into actionable categories: (1) resolvable by the user (bad arguments) (2) Temporary (out of network sockets or whatever) (3) resolvable by the sysadmin (config) (4) real bug, resolvable by the author.

I don't remember where I heard this, but the method was described to me using the story of how a suspension bridge is built: first an arrow with twine tied to it is shot from one side of the canyon to the other. Then that twine is used to pull thicker twine, then rope, then steel cables, and so on. From a string to a suspension bridge, with the gap between the canyons conquered the entire time. To achieve large scale software projects, start with the thinnest logical twine that goes from start to finish for the project at hand, and build out with a start to finish operating environment as soon as possible and throughout the duration of the project.

From a compiler writer's perspective, the name STD for the C++
Standard Library is most apt.  STD routines are a disease that infects
anything that touches them

Time-puzzle narration

The United States is conspicuous.

because the potential for speculative abuse is less

Balkanization of the internet

skepticism of most of the comments here does feel cheap. It's not that you aren't allowed to think about the world without properly hacking your p-values and pinky promise double blind peer review by your bros.

When I worked in NYC (mid 2010s) we were on the top floor of our building and one day a service guy came through needing access to the roof from our suite.
Turns out he was there to update some cameras on the roof that pointed out to Union Square. I talked to him for a while, and while he wouldn't specifically say who owned them, he did say "they could read a business card from 300 yards away."
This was probably before there was much facial recognition going on, but it stuck with me that we were only one of many buildings with these set ups. I always heard about London being over-surveilled, I guess the NYPD did a much better job of keeping quiet about it.

Volkswagen CI (exit 0)

We exist in a reality we are used to. Nothing else.

Bus factor

argue hard because I was raised that way and I believe it's the best way to quickly find the truth. Like Steve Jobs said: strong opinions, loosely held. You argue hard, then when you are convinced by the other side, you flip with absolutely no time in between trying to "save face".

Trying to study the immune system has gotten me into a Bret Victor sort of mood, wondering what could be done, or built, to make understanding this subject easier. A few things come to mind:

A common idiom that is no longer as common is to always create a stack buffer up to a certain small bound and then an allocation if it goes beyond:

void dwim(unsigned count) {
struct Something _buffer[10];
struct Something* buffer;
if (count < sizeof(_buffer) / sizeof(_buffer[0]))
buffer = _buffer;
else {
buffer = (struct Something*) malloc(count * sizeof(struct Something));
doSomething(buffer, count);
if (buffer != _buffer)
It used to be really common to write that without considering if it was a necessary optimization or not - nowadays I would just malloc up front.

Fucking... Qué?

It's the only part of the PC architecture left, really, that is capable of what one might call "nonlinear behavior."

First pass
To get started, I took my son’s Google Doc and asked ChatGPT to clean it up and rewrite it using a more consistent format. I didn’t want to waste GPT 4 credits for such a simple task, so we opted for ChatGPT 3.5, which was more than capable of handling the job. In the mean time, my son finished brushing his teeth (apparently he had forgotten about it in the morning) and joined me at my desk.

The cost and benefits are very extreme. I can pay proof/belief of correctness for extreme flexibility

Craig Robertson, associate professor of media and communication studies, argues that ordering paper at the document level and storing it in a filing cabinet changed our relationship to information, that people came to envision information itself as a discrete thing, “Information, grasped as individual pieces of paper, became malleable, both in its physical shape and its contents.”
and what I have come to call granular certainty, or the drive to break more and more of life and its everyday routines into discrete, observable, and manageable parts.”

Just this one more fix!" draws
software defects like cats to the sound of a tuna can opening.

they also have their own compute resources and an up-to-date copy of and and

when one chooses identifiers that communicate
meaning, they can pay their freight

Distilled bits of wisdoms that get to the truth in a hurry

Have no north star


* Truth be told, some of the idiocy is fun to complain about. My
all-time favorite is Open Office inferring that my name, M. Douglas
McIlroy, is the beginning of a numbered paragraph and carrying on to
number the following paragraphs MI, MII, MIII, ...

Cache misses hurt in meatware too

He also tends to fall quiet when rebutted with a point that seems
    difficult to contradict.[2]  This is a familiar debate tactic in
    synchronous forums like mailing lists.  One never actually concedes
    a point; rather, one lets the entire topic time out

Western decadence

It doesn’t emerge naturally but through a series of traumatic cuts

A truth which appears only from a subjectively engaged position

Discover that you are in love... deepest choices which are precisely not experienced as choices

HTTPS was originally so rare that at one point, Internet Explorer popped up an alert to users to notify them that the connection was secured by HTTPS, reminiscent of the “Everything’s Okay” alarm from The Simpsons

Posix semantics

Just as a liberal arts education includes a course in "the great books" of a culture, so this book is, at one level, a course in "the great programs" that define the AI culture.1

. always be dispensable.
In my 20s I was doing a mix of sysadmin and programming work for financial traders. I loved it. High stakes, high pressure, very rewarding. I got my fingers into a lot of pies and became seemingly indispensable. Which meant that taking vacations was hard and I was always kinda on call. I also couldn’t escape the duties I had taken on to do new stuff. After a while, it wore me down and I grew to hate life.
Then a friend quoted Charles De Gaulle to me: “The graveyards are full of indispensable men.” His point was that nobody is really indispensable, and pretending otherwise is a great way to waste your life. So I quit and became a freelancer, where I learned the art of being dispensable. By learning to delegate, collaborate, document, and build to last, whenever I got tired of something I could always move on responsibly.

Platform + killer app

I will not give you explanation here, just provide the coordinates

A: The nature of information is to dissolve into entropy.
B: You bought a Western Digital drive too, eh?

From a user POV, I think == and === on floats should simply be undefined in any language. It should be a compile time or runtime error.
There can be a separate function `float_equals()` with explicit args that does what people want
The only reason to use the same syntax == is for POLYMORPHIC code that is actually correct.
But it's not going to be correct with floats, because they don't obey the same algebraic laws ... So the syntax should be different!

The subject was Public Key Encryption. Not an easy topic particularly
if you don't have a math inclined audience. One of the concepts is a
one way function - easy to calculate but hard to reverse. The teachers
used the concept of mixing paint. I loved it.

If you have to paints, you can mix them in various quantities to make
a third color. You can send the third color to someone else and unless
they know one of your two colors, they won't be able to figure out the
other color - you can't unmix the paint and any given mixture can be
made from multiple different combinations. Simple, elegant, and if you do it live, messy which can also be fun. It got me thinking that there
might be some Swedish Chef mixing a batter (vs unmixing) motivation
that could similarly be done

The second approximation is that we strive to balance program
usefulness with the effort to develop the program. Bugs reduce
usefulness a lot, and there are two styles of software engineering to
deal with the:
Erlang style, where we embrace failability of both hardware and
software and explicitly design programs to be resilient to partial
SQLite style, where we overcome an unreliable environment at the cost
of rigorous engineering.

> I really miss terminal rooms.  I learned so much looking over the
> shoulders of more experienced people.
Completely agree. They were the "playground learning" that did all of
educate, build craft and community, and occasionally bestow humility.

The room was kept dimly lit with the overhead lighting off and only the
glow of the displays and small wattage desk lamps. It shared the raised
floor environment with the PDP-10 machine room (though was walled off
from it) and so had a "quiet-loud" aura from all the white noise. The
white noise cocooned you but permitted conversation and interaction with
others that didn't usually disturb the uninvolved.

Plato wrote in his famous work on democracy that the body of citizens
in a polis should not exceed 10000, else the direct democracy
disintegrates, and both electing officials consciously, and keeping
them accountable becomes hard

This analysis is completely fact-free.

Every thing I know about human psychology tells me that in order for
people to thrive, we need to be needed by others. A world where
everyone is more or less alone consuming media automatically generated
machines might be a world where people nominally have all their
problems solved, but it's a world where everyone will be absolutely
We are already living in the throes of the societal impact of
outsourcing or automating away many of the male-dominated blue collar
jobs in the US that provided fulfilling jobs for people with limited
education. Where do you think so much of the male rage driving US
politics today is coming from?
Now imagine what happens to the fabric of society if you automate away
most of the white collar jobs too.
People are like border collies. If we don't have a job, not literally
a job job, but like, meaningful work in service of others we care
about, we will start chewing up the furniture.

The pen is mightier than the sword. And now we've got semiautomatic

Alright let me make the argument why indicting Trump is a horrible
idea. It's really not hard to see why, if you have any insight into
what the other side thinks:

1. First there are two alternative realities being played in real time
in US: This arguably is the first time this has happened in US history
(maybe civil war was another time) but two populations have become so
isolated that they essentially live in 2 different realities. An
amusing moment that depicts this occurred in John Oliver's recent
segment where he plays a clip of Ron Desantis bragging that the UN
hates the laws he passed and John plays it completely incredulous why

would someone brag that he is hated by the UN. Since this audience is
mostly liberal and understands the liberal worldview, please quiz
yourself what worldview would brag about being hated by UN. If you
cant understand, you literally can't understand anything about ~48% of
the country, and if you're serious about politics you need to at least
understand the 2 sides, ideally more than that. The fact is most of
the US population barely understands the other side and so they will
necessarily clash on most political issues.
2. There is a huge amount of democratic energy on both sides. There
was always a lot of political energy on the left, since RooseVelt,
Civil Rights movement, now LGBTQ, Black Lives Matter etc. It used to
be a characteristic of the left. Now there is in fact a suprisingly
large amount of political energy on the right, that first started with
the Tea Party Movement in the 2010's and of culminating Trump who
could essentially be considered a Populist Leader from the Right.
3. So we have two populations, with large political energies compared
to any time in recent history, who also see the world so differently
that neither can understand each other. The only reason this hasn't
led to civil war like situation is because they both still to some
extent follow the law, and still believe in Democracy as a schelling
point for choosing who rules them. Now if you go ahead and jail the
populist leader, you are going even closer to complete political
fracture especially after a good chunk of the population believes the
election was stolen from him. If you think this will convince any
Trump supporters they're wrong (lol), I have a pipe dream to sell you.

Quick question, who is the most criminal president in US history? If
your instant answer wasn't Obama (or if it was Obama because of drone
strikes lol), you definitely do not understand the other side in any
meaningful way to heal any political fracture this country is
suffering with. So good job playing your reenactment in our version of
Populares vs Optimates, and we all know how that ended

A snapshot basically tells the filesystem code "these blocks are still needed". Hence, they won't be reclaimed and potentially overwritten with new data. However, they still reference the same old data blocks.
Now, how is that different from simply making a copy using rsync, cp, cat or whatever? It's different because until the data actually changes, no additional physical copy of the data is made.
It's like hardlinks on stereoids; the same physical on-disk copy of the data is used when accessing a file under different names. The difference is that with hardlinks, a change to the file under one name propagates to every other copy because they really reference the same data blocks. With copy-on-write and snapshotting, the changed blocks only show up in the place where they were changed. 

The “dark forest” is a place that seems eerily quiet and devoid of
life. All the living creatures within it are hiding. Because “night is
when the predators come out. To survive, the animals stay silent.”
The predators here are the advertisers, tracking bots, clickbait
creators, attention-hungry influencers, reply guys, and trolls. It's
unsafe to reveal yourself to them in any authentic way. So we retreat
into private spaces. We hide in the cozy web.
“These are all spaces where depressurized conversation is possible
because of their non-indexed, non-optimized, and non-gamified

Unplanned hypertext sprawl is wilderness: complex and interesting, but
uninviting. Interesting things await us in the thickets, but we may be
reluctant to plough through the brush, subject to thorns and

My OCaml:
let foo (x: bar): baz =
      (\* Is this quuxable? *)
      match is_quuxable x with
      | Yes ->
         (* Then, we have to ... \*)

All the OCaml I see in the wild:
qlet%bind f = 's 't  'a 'b (fun ꙮ -> ꙮ ((<_<')) ꙮ)
    [@@ppx_gov_backdoor (~b~e~p~i~s)]

relying on the due diligence of other developers

A person smarter than me once told me: “Just use snprintf()”. The tiny performance hit is usually worth the safety and simplicity.
Only one error condition to check, covering both concatenation and
copies, sensible 'size' argument behaviour (size includes null
terminating byte, null terminating byte is always written)...Just use snprintf().

char buf[1024];
    snprintf(buf, sizeof buf, "%s%s", "foo", "bar");

As a bonus, if you pass NULL for the first argument, its return value
tells you how much memory it would have used, so you can allocate a
buffer that's the right size.

 conflict is never truly eliminated, but can be shifted. The task of
the critic is to shift the conflict back to its proper place. Since
straightforward argument presupposes a shared frame of reference, it
is not a suitable tool for carrying out the kind of frame-shifting
that Žižek is trying to achieve. More indirect methods are necessary.

One customer called it the Rush Limbaugh of C compilers--extremely
conservative, and you can't reason with it.

We have dealt with this problem plenty of times in the past by setting up specialized bureaus and giving them broad authority to regulate players in the space and deal with infractions (the SEC is a great example of this), but there is no such tech authority. Imagine a world where the smartest programming minds aren't just joining Google but also the agency set up to regulate Google. Imagine if in a post-scandal hearing you don't have politicians who can't figure out an iPhone ask the questions but someone who knows how to set up a network firewall and what 2FA means. Until that happens, just passing more and more laws is going to be meaningless

We've gone away from system design interview questions on my team. We ask people to diagram something technical they understand well and the team digs in and asks questions to understand depth and breadth of the candidates understanding. For us it works much better. It's a chance to see how well candidates do in following instructions. It gives you a chance to explore depth and breadth of their knowledge on something technical that they claim to understand. Our philosophy is how well you understand something you claim to know well is indicative of the depth and breadth of your technical knowledge in general. There are plenty of opportunities in this to ask about design and get to know how people think when it comes to design. I think it helps to eliminate false negatives and false positives.

I wouldn’t mind smoking the peace pipe with


I never liked the idea transgression has be good, clever or even self-conscious; that it has to be understood by the people affected by it. It doesn't have to be put in a vacuum sealed display so people have time to clinically analyse it from the outside (maybe one reason why recently leftist art has stopped being transgressive. It's method of transgressiveness has become formulaic & is now being discussed in polite society. Art student fail a curse due to low grades on their transgressive art assignment)

“I want people to transgress.... but not like that”

the broad implicit right

MO = Harvard does a study, NYT reports it, US gov’t enacts it

Wooden language

Analog cigarette

We don't stop playing because we grow old; we grow old because we stop playing

taking arbitrary programs and distilling constraints and invariants out of them

“pickle” yourself in the base material

Both environmentalists and early American naturalists have one common weak spot in their world view; they view humans as fundamentally distinct from nature. Nature is somehow both profane and awe inspiring compared to the "rational" human world. In that view, we need to preserve the wilderness (somewhere "out there") for aesthetic/spiritual/resource management reasons.
From the indigenous viewpoint, there is little distinction; humans are part of the physical/natural world, same as a mountain lion or a worm, albeit a very powerful part capable of wielding great power and thus responsibility. There is no concept of wilderness.
It's worth over-emphasizing that the indigenous viewpoint in North America was sustainable (and was actually sustained) for thousands of years. The modern industrial culture of bipolar consumption/reverence of wilderness is showing severe signs of overshoot after a couple hundred years. That's not to say that indigenous land practices are more ethical or wise... merely that they've been proven more effective by the test of time

Not with contempt but with compassion

The Unix problem of non-obvious command names is made worse by some of
the commands whose names are obscure in-jokes.  The worst offender is
probably the biff utility.  This is the command that lets you set
notifications for incoming email.  Why biff?  Because a friend of the
guy who wrote the utility had a dog named Biff who used to bark at the

“My life is bad because of bitches/billionaires/Mexicans/whatever”

“It took me several frustrating years to figure it out, but eventually getting visibly fit and well groomed gave me enough leeway to bisect the bugs in my interpersonal communication protocols and algorithms”

Sponsorship deals of any kind are the reason the software industry is in the sorry shape it’s in. To the programmer not privy to backroom shenanigans this pronouncement may seem a little out there, but it’s the reality: tech conferences have the power to shape what we as software engineers focus on (a single talk at GDC can alter the trajectory of the game dev industry.) As of right now, nearly all events are sponsored by the tech giants.
Organizers who accept financial assistance from companies inevitably become beholden to their demands:
* Speaker proposals are denied
* Titles for talks get changed
* ‘Problematic’ PPT slides never see the light of day
* Your pamphlets are vetted one by one by some VP at Amazon
This is not a conspiracy theory—it’s the status quo. Why should we back anyone in their quest to become someone’s puppet? That seems like a pretty raw deal for the Kickstarter backer.

Our venue trick was “Hey, if we pack your bar/restaurant on a random weekday night so you make a killing in drinks, can we have the place?”. Venues were happy to say yes.

The “tell us your quietest night and we’ll get 20+ people to come that night” trick works wonders, not just for tech meetups but for things like karaoke nights and other kinds of adult social activities too. It’s a great win-win.

A mil itary contractor I worked for had three different ladders employees could climb: One was the usual engineer/developer-to-manager route. Another was becoming a consultant and later a primary engineer who remained an engineer, but instead of working on one project, consulted across the company (not outside it) and was rewarded with a salary similar to top managers. The third was to do a startup within the company, form or become part of a team, write grant proposals, get money, do the R&D, then start a product line if it worked out. Going into management was not what some engineers/developers wanted and the other two routes were extremely beneficial to the company.

The government holds authority because they have a monopoly on violence.

Not by their intention, but by an accumulation of opsec failures over the last 700 years.

One of Žižek’s great contributions to philosophy is in articulating the juncture between German Idealism (Hegel, Kant) on the one hand, and Psychoanalysis (Lacan, Freud) on the other, while at the same time maintaining a proper Marxist analysis

These are not trivial issues. Throughout the history of Civil Rights, bathrooms have often been the site for the struggle to exist more or less freely in public spaces

Not looking backward so much as imagining possibilities outside of the current ideological hegemony

When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine.

Some scientists seek to clarify reality, others to mystify it. Physicist David Bohm seemed driven by both impulses. He is renowned for promoting a sensible (according to experts like Einstein, John Bell and philosopher Tim Maudlin) interpretation of quantum mechanics. But Bohm also asserted that science can never fully explain the world, and his 1980 book Wholeness and the Implicate Order veers into spirituality

In the colorful MBA vernacular, we’re either poop umbrellas or poop funnels: buffering our teams from the noise and confusion as best we can, or letting it all fall on their heads

At its best, philosophy is a revolutionary pursuit that dissolves our common-sense intuitions and exposes the possibility of much deeper structures behind them. One can respond by becoming a saint or madman, or by becoming a pragmatist who is willing to continue to participate in human society while also understanding its theoretical limitations. Both are respectable career paths.

After their death, attempts are made to convert them into harmless icons, to canonize them, so to say, and to hallow their names to a certain extent for the “consolation” of the oppressed classes and with the object of duping the latter, while at the same time robbing the revolutionary theory of its substance, blunting its revolutionary edge and vulgarizing it.

it is the admission that this society has become entangled in an insoluble contradiction with itself, that it has split into irreconcilable antagonisms which it is powerless to dispel.

and this power, arisen out of society but placing itself above it, and alienating itself more and more from it, is the state.

Your curiosity is your pattern matcher working in the depths.

Working without names (also known as implicit or tacit or point-free programming) is sometimes a more natural and less irritating way to compute. Getting rid of names can also lead to much more concise code. And less code is good code

an ifdef forest

GOFAI (good old fashioned artificial intelligence)

Vanguard party

Tobacco is a model organism in plant bio. Like drosphila/fruit flies or xenopus/frog or E.coli and candida


Never underestimate this one, and never take it for granted.  If you look forward to work and even miss it on vacation; if you occasionally leave work whistling with delight and/or triumph; if your brain has figured out how to wring out regular doses of dopamine and serotonin while delivering ever-increasing value; if you look back with pride at what you have learned and built and achieved, if you regularly tap into your creative happy place … hell, your life is already better than 99.99% of all the humans who have ever labored and lived.  Don’t underestimate the magnitude of your achievement, and don’t assume it will always be there waiting for you to just pick it right back up again.

While I'm sure you are right, I can't help but to be irked by this strange environment we live in where we have to treat business people like infants who need things mashed and mushed into something they can digest and understand

A language is a dialect with an army and a navy

Subversive ideas

There’s a big difference between using a word and mentioning a word
I had a coffee vs. I used the word “had”
Quote operator!

Investing in experiments today increases what we know, and so increases the scope of what can be done “conservatively” tomorrow

Social technologies for allocating scarce resources

Fault line

Anyway, I made a mess, I'm not good at explaining...

Linux is catsup, and I will make Red Hat™ the same as “Heinz™”

I have no idea how people would manage to write this language In The Large. At the same time, it seems incredible for programming In The Small. One-off scripts, computations, personal tooling, all the kinds of things I wanted to do with it in the first place.

The GNU/Hurd is the Sagrada Família of the Software World

Once again it seems clear that running code from two security domains on the same physical processor cores is just not possible to get right, and we should probably just stop doing it.

It’s not a supply chain unless you’re a responsible consumer

Single things that compose

The top of the house

A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren’t flexible. Neither is a violin, or a typewriter, until you learn how to use it.

They know what was easy and what was hard from their own experience, and they have a theory of mind and if an adult tells them something at odds with their experience they could just devalue that adult's credibility.

It feels very human that we have a nearly post-scarcity delivery mechanism that we still optimize for rent seeking.

I do it, come arrest me. I'd download a petrol car too if I could - Come at me tomato soup throwers!

but would you seed?

Feels like building on sand.

It used to be you’d give outside and nobody would know where the fuck you were. That’s called freedom

Take my advice and live for a long, long time. Because the maddest thing a man can do in this life is to let himself die.

The resulting life is one of “bondage”

After many years (going back to about 2010, with a short break) where the ever-changing background of my homepage reflected the season of the year — green for spring, yellow in summer, orange in autumn, and blue in winter — I’ve changed. While the course from spring to autumn looked great and worked fairly well, the turn to winter and back involved going through a lot of very unseasonable shades of purple and turquoise respectively, and though I tried various solutions, none of them really worked very well.
The background now shows a somewhat rough-and-ready live simulation of the sky in my current home city of Berlin, Germany — or at least, what it would look like if the sky here were clear, which it’s not always. There are some improvements I’d like to make, which I’ll doubtless slowly integrate, much as my previous season-based code got gradual improvements over the years as well.

If a Dutch person speaks under water it comes out as English, and vice versa, making a simple bath tub an analog translator. This is because large parts of Holland had been below sea level.

Do you know that books smell like nutmeg or some spice from a foreign land? I loved to smell them when I was a boy. Lord, there were a lot of lovely books once, before we let them go

Jenny: "Honestly, what is it about them that bothers you so much?"
Giles: "The smell."
Jenny: "Computers don't smell, Rupert."
Giles: "I know. Smell is the most powerful trigger to the memory there is. A certain flower, or a a whiff of smoke can bring up experiences long forgotten. Books smell musty and-and-and rich. The knowledge gained from a computer is a - it, uh, it has no no texture, no-no context. It's-it's there and then it's gone. If it's to last, then-then the getting of knowledge should be, uh, tangible, it should be, um, smelly."

So we don't believe that life is beautiful because we don't recall it but if we get a whiff of a long-forgotten smell we are suddenly intoxicated and similarly we think we no longer love the dead because we don't remember them but if by chance we come across an old glove we burst into tears

Also learned that the British put posters everywhere to encourage people to eat carrots and improve their nightsight so they could report Nazi planes or missiles.. then people in London would report it to Berlin.
The British did not want to reveal the new radar technology and German planes kept getting downed so the British came up with that to fool the Germans into believing that carrots were why the British were suddenly able to spot the planes and shoot them down.

I shall describe learning paths that have led hundreds of children
to becoming quite sophisticated programmers. Once programming is seen in the proper perspective, there is nothing very surprising about the fact that this should happen. Programming a computer
means nothing more or less than communicating to it in a language that it and the human user can both "understand." And learning languages is one of the things children do best. Every normal child learns to talk. Why then should a child not learn to "talk" to a computer?

What is happening now is an empirical question. What can happen is a technical question. But what will happen is a political question, depending on social choices.

Aspire to be agents of change

These are some of the error messages produced by Apple's MPW C compiler. These are all real. (If you must know I was bored one afternoon and decompiled the String resources for the compiler.) The compiler is 324k in size so these are just an excerpt I hope. I'm not sure where I stand on the copyright issue.
Tony Cunningham
* "String literal too long (I let you have 512 characters, that's 3 more than ANSI said I should)"
* "...And the lord said, 'lo, there shall only be case or default labels inside a switch statement'"
* "a typedef name was a complete surprise to me at this point in your program"
* "'Volatile' and 'Register' are not miscible"
* "You can't modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler"
* "This struct already has a perfectly good definition"
* "type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don't care, I'm just trying to annoy you)"
* "Can't cast a void type to type void (because the ANSI spec. says so, that's why)"
* "Huh ?"
* "can't go mucking with a 'void *'"
* "we already did this function"
* "This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn't wide enough to read this whole error message"
* "Call me paranoid but finding '/*' inside this comment makes me suspicious"
* "Too many errors on one line (make fewer)"
* "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer"

I can eat glass, it does not hurt me

La plume de ma tante

Pardon me, but your postillion has been struck by lightning

Changes in society are due chiefly to the development of the internal contradictions in society

I hold that it is bad as far as we are concerned if a person, a political party, an army or a school is not attacked by the enemy, for in that case it would definitely mean that we have sunk to the level of the enemy. It is good if we are attacked by the enemy, since it proves that we have drawn a clear line of demarcation between the enemy and ourselves. It is still better if the enemy attacks us wildly and paints us as utterly black and without a single virtue; it demonstrates that we have not only drawn a clear line of demarcation
between the enemy and ourselves but achieved a great deal in our work.
To Be Attacked by the Enemy Is Not a Bad Thing but a Good Thing (May 26, 1939), 1st pocket ed., p. 2.*

I don't have an eye for design and I tweak my talks too regularly to pay a designer to "bake" them.

We've almost given up on the body already. We sit at a desk while working, and sit on a couch while playing, and even sit while transporting ourselves between the two. We've had to invent this peculiar concept of artificial "exercise" to keep our bodies from atrophying altogether.

> I didn't realize 9legacy actually had a distribution for some reason I
> thought it was only a patch set applied against the old main line. Glad I
> don't have to pick apart the patch set that (works)...
yes. i was expecting this confusion will arise some day. officially
it's a spoon, nor a fork.

'In the midst of Shannon’s career, some lawyers in the patent department at Bell Labs decided to study whether there was an organizing principle that could explain why certain individuals at the Labs were more productive than others. They discerned only one common thread: Workers with the most patents often shared lunch or breakfast with a Bell Labs electrical engineer named Harry Nyquist. It wasn’t the case that Nyquist gave them specific ideas. Rather, as one scientist recalled, “he drew people out, got them thinking.” More than anything, Nyquist asked good questions.'

We called that Scrumflation at a past company. Didn't finish everything for the week? Claim the ticket was done and open a bug for the uncompleted work.

as described elsethread

Just let go.
Let go of how you thought your life should be, and embrace the life that is trying to
  work its way into your consciousness.

fairly balkanized

"A buffer overflow issue was addressed with improved memory handling" an awful lot. Hopefully one day they will finish improving the memory handling!

I get that sometimes you just want to wear sweatpants and write code without thought of the details

Law Enforcement Officer, aka "Road Pirate


forgotten more about _ than I'll ever know

systems must be able to grow without rebooting. A system that can't grow over time is static, so it really isn't a system at all; it's a function

First: every great system has a command shell. It is always an integral part of the system. It's been there since the system was born. The designer of the system couldn't imagine life without a command shell. The command shell is a full interface to the system: anything you can do with the system in some other way can also be done in the command shell.

You can get Starbucks drink nonsense but I want real, decent god-fearing black coffee.

a bunch of bash scripts in a trench coat

Covid introduced the entire internet to Eternal September on steroids

Most land animals have a skeleton not just to toro vids physical scaffolding to hang issue on but because we need a store of calcium to mediate blood pH, something sea life doesn’t require thanks to those minerals in the water. That’s why you can have sharks which are mostly supported by cartilage with one set of bones: their jaws.

Artists, I think, are people who see beauty where other people don’t see it. And then they paint it or sing about it to try to show that beauty to other people

Artistry to me has always felt like being possessed by something, and it’s itching to get out. The trouble is communicating a language that’s never been spoken, otherwise if that idea existed outside us we wouldn’t feel much need to express something that cannot be expressed by any other means. Consider yourself one of the lucky ones who is sensitive enough to recognize when this language isn’t communicating properly what is meant to be conveyed. I hope you can find the voice in your heart for what needs to be expressed

Like pornography, people know what engineering is when they see it

In their heart of hearts

Baloney detection kit

These people are not human at all but loathsome worms

Rigged Skinner box casino

The attacker’s advantage: they have to be perfect, and we just need to find one mistake

When a crisis comes around ideas can move from the fringe to the center in an instant

I talked to him about Eccojams around the time the tape came out, and he described it as a form of folk music that pretty much anyone would be capable of making if they have a computer

Say what you will about VMS, its HELP functionality makes it much easier to go from "I want to do X" to "And here's a sequence of commands that will do X" when you don't already have a good mental model of what's on the system.

Raymond Chen's airtight hatchway



Austere efficiency

Zillow made the same mistake that every new quant trader makes early on: Mistaking an adversarial environment for a random one

The Mossad doing Mossad things with your email account Magical amulets? Fake your own death, move into a submarine? YOU’RE STILL GONNA BE MOSSAD’ED UPO

Code nurse

Nostalgia for optimism is latent radicalism and resistance.

one of the classic problems of politics: how to sustain political unity and civic virtue in the absence of war or a credible threat

The phrase was ‘Tom Sawyering,’ ”Someone would decide that a certain thing was really important to do. They would start working on it, give some structure to it, and then try to convince other people to come whitewash this fence with them

It’s ok to be cringe. Try expressing yourself sometime instead of always conforming.

I heard that a Danish horse forum makes up about 20% of available training data for that language

For example, as Huxley says, the state of consciousness that most people are in their whole lives is very appropriately suited for survival behaviors and thoughts best suited to social and demanding environments.

Cory told me an old aphorism, of life being a well. Sorrow is the shovel that digs the well, and happiness is the water that fills it. Given this, would you really want a shallow well?

My last fridge literally had the ability to press some buttons to get error information as an encoded sound. An app is used to decode the audio to obtain something that can be read. Sadly it was a break in a component that cannot be swapped out.

It's much more peaceful to solve a few problems, not waste a single iota of my energy on creating systemic change unless we're going to try curing cancer, then log off to touch grass. Realizing that no mere words can demonstrate an appetite for true change was necessary for me to make that change in my life - hopefully it does the same for someone else.

Not only do we underinvest in tooling but only the largest companies have the spare time and resources to do so.
I think this has led to many modern open innovations only realistically being useful for solving the problems of very large companies.

North Star

In the same vein, don’t tell your boss that you’re going to refactor something, add tests, or write documentation. These are implementation details that you bake into your estimates and are part of doing software development. Your boss likely has no visibility into the tech debt in your codebase. Talking about refactoring, tests, and documentation gives the boss the opportunity to say “No, don’t waste your time on that”.
It’s not lying to your boss, it’s part of doing quality work.

"The road to learning by precept is long, by example short and effective."
Lucius Seneca

What they are doing in effect is valorizing the lives of hunter gatherers in contrast with and in contradistinction to the lives of modern economies

In effect, your example demonstrates that a key effect of USA tech industry is taking vast amounts of customers' and tech investors' money and handing it over to California landlords / real estate investors.

And then, with the sole defibrillator for heartache we have — humor — Feynman adds:
PS Please excuse my not mailing this — but I don’t know your new address.

the quintessential examples are evolution and entropy. Both are trivial in their essence, but infinitely rich in their implications.

A: (about arXiv) I still find myself typing in It used to redirect but doesn't anymore :(
B: the most risqué place to store your preprints

yeah?? tell me more, your outlook is really good

The flaws in cryptosystems tend to appear in the joinery, not the lumber

Now you may think this is purely academic. It’s not. It can bite you in the ass.

This is a pretty good rant. I feel like I am attacking a work of art with an axe here, but the rant promotes misconceptions that need to be addressed.

my all-time favorite compiler sermon

Guard your heart above all else, for it determines the course of your life

Judas goat

Consequently, i tend to leave mandoc_man(7) just as it is and not
repaint the bikeshed

Although the implementation for the compiler is complex, and the syntax can get complex and verbose, to me my requirement is simple: I want to encode everything about input and output that I know.
Right now in mainstream languages I often know more about my arguments or output than the type system will allow me to specify.

once you have universal health care and every possible social safety net, then people will be able to take risks without fear of failing and innovate like crazy

Somehow, Go manages to optimize for accidentally swallowing errors, which is sort of impressively bad. Because if you forget to write the code to account for an error, your program still compiles (unlike languages that use sum types for errors) and then said error will be accidentally swallowed when it occurs (unlike languages that use exceptions for errors).

By taking away the typesafety of requiring some sort of type wrapper for multiple return that must be unwrapped, _and_ by taking away the enforcement that you have to check for and either propagate or explicitly swallow the error (by way of a result type or even checked exceptions), Golang takes away your guardrails, leaving you on the mountainside and liable to fall off easily.
By making you do repetitive boilerplate "if err != nil { return nil, err }" every other line or so (rather than providing automatic error-propagation machinery like Haskell's do-notation or Rust's `?` operator), Golang lulls you into "highway hypnosis"[1], setting you up to be much more likely to accidentally drive over the cliff. It makes the Right Thing™ tedious, easily omitted, and only enforced by your own constant vigilance (or complex external tooling that has to guess at your intent), and makes the Wrong Thing™ the default.

Always ask whether the hypothesis can be, at least in principle, falsified. Propositions that are untestable, unfalsifiable are not worth much

Falsifiability is a great tool for being able to say some things don't work. But it's important not to let it limit curiosity.

> This is actually why I feel that mathematical texts tend to be not rigorous enough, rather than too rigorous.
The thing that mathematicians refuse to admit is that they are extremely sloppy with their notation, terminology and rigor. Especially in comparison to the average programmer.
They are conceptually/abstractly rigorous, but in "implementation" are incredibly sloppy. But they've been in that world so long they can't really see it / just expect it.
And if you debate with one long enough, they'll eventually concede and say something along the lines of "well math evolved being written on paper and conciseness was important so that took priority over those other concerns." And it leaks through into math instruction and general math text writing.
Programming is forced to be extremely rigorous at the implementation level simply because what is written must be executed. Now engineering abstraction is extremely conceptually sloppy and if it works it's often deemed "good enough". And math generally is the exact opposite. Even for a simple case, take the number of symbols that have context sensitive meanings and mathematicians. They will use them without declaring which context they are using, and a reader is simply supposed to infer correctly. It's actually somewhat funny because it's not at all how they see themselves.

The purely computational approach to mathematics used up through high school (with the oddball exception of Euclidean geometry) and many introductory calculus classes can't really go much further than that.

There is no royal road bro

Axler is pathological in his avoidance of determinants. I've heard (third hand) that he once pulled aside some fields medalist into a classroom after a talk and asked them "Do you like determinants?" I imagine him drawing the curtains and sweeping for bugs first.
The response that he received in the story was "I feel about them the same way I feel about tomatoes. I like to eat them, but other than that, no, I don't like them."

Example: in physics, oscillation and waves A. underpin everything and B. involve energy sloshing between two buckets. Kinetic and potential. Electric and magnetic. Pressure and velocity. These become real and imaginary (or imaginary and real, it's arbitrary). This is where complex numbers -- where you have two choices of units -- absolutely shine. Where you would have needed two coupled equations with lots of sin(), cos(), trig identities, and perhaps even bifurcated domains you now have one simple equation with exponentials and lots of mathematical power tools immediately available. Complex numbers are a huge upgrade, and that's why anything to do with waves will have them absolutely everywhere.

Zero, negative numbers, and imaginary numbers were all latently defined by prior concepts before they were recognized. They were unavoidable, as existing operations inevitably kept producing them. Since they kept coming up, it forced people to eventually recognize that these seemingly nonsensical concepts continued to behave sensibly under the operations that produced them.

Poor pronunciation (I.e. thick accent) but good grammar is usually more forgiven by a native than great pronunciation but poor grammar. Because then you sound more native, but you sound a bit… mentally slow.
I am in the latter camp. My Mandarin Chinese accent is really quite good. But I sound like a child.
So my suggestion to all learning a new language: keep a bit of your accent and heavily index on correct grammar and vocab and listening skills.

It was part of my mental furniture

If you make things that aren’t obvious, you can make things that can actually become larger, by people’s interpretations

Sox earwax

this whole internet thing can easily turn into television with only a few people controlling what we see.

Like in every organization, "what you measure is what you get".

I was trying to keep a death grip on sobriety. The clenching and clawing while putting up appearances... life brings us sadness. sometimes at times of desperation, the only thing I have left is my reaction.
When I look back on my mistakes, it all feels insane; the pathology of feedback loop neurosis had me chasing tornados with a butterfly net. What would catching it do for me?
Recognize the stillness where you are _right now_ my friend, and we can sit here for awhile and watch those clouds join the others as they roll over the horizon.

It is one of those rare blog posts where things don’t go perfectly well and the author is not some sort of flawless god

I think people like recycling so much because they can live their high consumption lifestyle then throw the guilt from their high consumption lifestyle in the recycling bin.

This is the documented reason that the plastic manufacturers promoted recycling.

The people that go to therapy most times don't have mentally ill problems. They are going through real life situations that would cause distress in anyone and they just need to talk about it. It's really the society that's sick.

Therapy is a simulacrum of a supportive relationship, not an actual supportive relationship.

The 17th century French traveler and writer Jean Chardin gave a lively description of the Persian coffeehouse scene:
People engage in conversation, for it is there that news is communicated and where those interested in politics criticize the government in all freedom and without being fearful, since the government does not heed what the people say. Innocent games ... resembling checkers, hopscotch, and chess, are played. In addition, mollas, dervishes, and poets take turns telling stories in verse or in prose. The narrations by the mollas and the dervishes are moral lessons, like our sermons, but it is not considered scandalous not to pay attention to them. No one is forced to give up his game or his conversation because of it. A molla will stand up in the middle, or at one end of the qahveh-khaneh, and begin to preach in a loud voice, or a dervish enters all of a sudden, and chastises the assembled on the vanity of the world and its material goods. It often happens that two or three people talk at the same time, one on one side, the other on the opposite, and sometimes one will be a preacher and the other a storyteller.

This is not how the government should work. Lawmakers should not take an unpopular, contested, and dangerous piece of legislation and slip it into a massive bill that, if opposed, would shut down the entire government.

A lesson I learned long ago is that if something isn't fun, I need to turn it into a compiler.

Their app was timing out like crazy earlier this morning, and now appears to be down. Anyone else notice similar? Not surprising I guess, but what a Monday to be alive.

We have as much evidence for this hypothesis as for any other. Not discrediting it. But let's be mindful of the fog of war.

This idea that the best way to connect with green consumers is not to appeal to their greenness, but rather to dig deeper and appeal to the core values that make them green, is not a new one.

Learning almost anything sufficiently new will do that to you. Dabble in calligraphy and letters will never quite look the same again. Get into dance or poetry and you'll appreciate entirely new nuances to music.

Maybe this is a career? I dunno, the author of "Zen and the Art of Motorcycle Maintenance" was a technical writer, he also spent a stint in a mental institution. Maybe it was the software he was documenting?

I'll be downvoted for this comment, but hopefully with replies

Open source is already a miracle. The fact that something works somewhere is a miracle. I don’t tempt the powers and I don’t demand even more miracles to satisfy some perfectionist urges.

That said, I'm considering having GF installed anyway as long as they're in the neighborhood and running dual-WAN for a while

People often want to recite the tragic events that have deformed their lives

RFC 3986 defines HTTP query strings as a URI part that works as a non-hierarchical way of location a resource

One of my favorite tech legends is that apparently Voyager 1 launched with a Viterbi encoder, even though there was no computer on Earth at the time fast enough to decode it. After a number of years Moore's Law caught up and they remotely switched over to Viterbi for more efficient transmissions.

Yes. Wake up in the morning the smells of some kind of "percolated" coffee and breakfast being cooked by the grownups

one of the great transmogrifiers of the world into words

Like a flight attendant on a turbulent flight, your team is looking at you for cues on how to feel

Hire only people you would wanna hug

Hire for diligence and conscientiousness or what I like to call ‘Give a fuck factor’ over anything else

For larger clients (like the K Mart stores) we had private pilots on call that could be sent to another city to get a ~$500 part. Especially during holiday shopping season. Some clients had onsite spares but that wasn’t very common. They relied on IBM service to just handle everything. For some customers we had a 2 hour on-site SLA.

But Sweet wasn’t interested in clinically picking apart these moments, using the camera lens as a scalpel.

His subjects were often shot formally, at the center of the frame, as if posed, but this, it seems to me, was not intended as a sign of cold detachment but of respect.

Sweet is really looking. He’s paying attention.

talking about something before it’s finished releases dopamine reserved for the action

80085 in hex is OxTITS

Thanks for your continued dedication to gawk. Awk still just flows out of my fingers without even
needing to think much or at all. Professionally, I have programmed in python for years, and have
never gotten to the same level intimacy I have with awk.

I find it unhelpful (what could help?) but salutary

Compassion for animals is intimately connected with goodness of character, and it may be confidently asserted that he, who is cruel to living creatures, cannot be a good man. Moreover, this compassion manifestly flows from the same source whence arise the virtues of justice and loving-kindness towards men


Everything added to the Self is a burden

Reality merchant

it faces strong selection pressures in such an environment

success theatre

avoiding incentive systems

Can be safely disregarded

This handy guide for supervisors, other researchers, or the plain bored

Motley crew

Anal retentive


Grief, I’ve learned, is really just love. It’s all the love you want to give, but cannot. All that unspent love gathers up in the corners of your eyes, the lump in your throat, and in that hollow part of your chest. Grief is just love with no place to go.

I'll just put it out there that if you start talking with a random stranger, "... okay, I've got to go now. It's been nice talking with you!" is a perfectly acceptable kernel panic. :)

Of course such a state of affairs could not last. It was simply a temporary and local phase in an enormous game that is being played over the whole surface of the earth. But it lasted long enough to have its effect upon anyone who experienced it.

No man is a hero to his valet

I argue with computers for my day job