He learnt the hard way (as did all those who followed him into Russia)
HN user
tristramb
A year ago I started sending postcards to my 91 year old father because he has difficulties with modern forms of communication. They do still exist but you have to search for them.
Its so the monsters can't see you.
Or reading a forum populated only by bots.
He liked to be able to reason about programs without running them. He preferred simpler languages because they contain less irrelevant noise which got in the way of that.
"Kinda hard to find where Dijkstra praised something (except Algol 60)."
Hamilton Richards, who was one of Dijkstra's colleagues at the University of Texas, told me in an email that Dijkstra was impressed by the work of Richard Bird on functional programming.
If the transients occur immediately following the nuclear explosions but not before them, then the correlation together with the earth shadow deficit suggests that the transients are caused by reflective debris produced by the nuclear explosions. I don't know how feasible it would be for this debris to survive the explosion and be blasted above the atmosphere to glint in the sunlight at night, but there is the case of the missing manhole cover from one of the Operation Plumbbob tests: https://en.wikipedia.org/wiki/Operation_Plumbbob#Missing_ste...
Use the Tor browser
Yes, that is how Facebook, Yahoo and many other companies started out. But they rewrote their code when it became to big to be maintainable. The problem with shoddy code is not necessarily that it doesn't work but that it becomes impossible to change.
But it was like this before. Its just that now the sewer that was keeping it all hidden has now broken and it is spewing out all over the world.
Just behind me where I am sitting at the moment I have 21 RUBs containing my collection of about 42000 pinned out flies (mostly). The RUBs are stacked in and on top of bookshelves. I seem to remember that you could buy a rack to hold them but it looked too flimsy for what I wanted. The flies are pinned out onto plastic foam sheets in small clear plastic presentation boxes, 48 of which fit in each 12 litre RUB. I still have to properly identify about half of the flies. Photos of the presentation boxes and CSV files of the identifications are backed up to https://github.com/tristrambrelstaff/flies. RUBs have played a significant part in enabling me to manage all this.
"To explain what I was doing in logic-driven software architecture I looked for a good metaphor and, on the spot, proposed that there was a kind of “contract” between caller and callee. He did not say anything, but his mere presence had enabled me to make my incipient ideas jell."
I hadn't realised that Hoare was present when Meyer first used the term 'contract' to describe his ideas.
"Around Easter 1961, a course on ALGOL 60 was offered in Brighton, England, with Peter Naur, Edsger W. Dijkstra, and Peter Landin as tutors. I attended this course with my colleague in the language project, Jill Pym, our divisional Technical Manager, Roger Cook, and our Sales Manager, Paul King. It was there that I first learned about recursive procedures and saw how to program the sorting method which I had earlier found such difficulty in explaining. It was there that I wrote the procedure, immodestly named Quicksort, on which my career as a computer scientist is founded. Due credit must be paid to the genius of the designers of ALGOL 60 who included recursion in their language and enabled me to describe my invention so elegantly to the world. I have regarded it as the highest goal of programming language design to enable good ideas to be elegantly expressed." - C.A.R Hoare, The Emperor's Old Clothes, Comm. ACM 24(2), 75-83 (February 1981).
I retired in 2024 after a four decade career, mostly programming avionics systems but with a decade of Ruby on Rails towards the end. I am now sitting here eating popcorn and watching the disaster unfold. I am happy to be out of it. So long as it doesn't affect my pensions and the local shops still have food...
It's not unlikely that Donald Knuth looked at examples of 16th Century typesetting when he came to design TeX. Or looked at examples of typesetting that had been influenced by 16th Century typsetting.
I think it is a good general principle that, for any process that is likely to be a tempting target for scammers, you should require a non-electronic step to initiate that process. Requiring a physical letter of application for a job, for example.
It doesn't have to prevent the scam completely, it just has to make harder for them to scam you than it would be to move on to scam someone else.
I seem to remember (but I can't find the source) that Wirth initially had three aims in designing Pascal:
1. To use it in teaching a structure programming course to new students. As in the late 60's all student programming was batch mode (submit your program to an operator to run, and pick up the printout the following day), this meant the compiler had to be single-pass and give good error messages.
2. To use it in teaching a data structures course involving new data structures worked out by Wirth and Hoare.
3. To use it in teaching a compilers course. This meant the compiler code had to be clean and understandable. Being single-pass helped in this.
Personal freedom includes not being manipulated by commercial interests.
The Empire was self-financing. Taxes on trade paid for the ships and sailors to protect the trade routes (with a fair bit left over).
Many years ago (or so it seems now), I was turned on to slime moulds by the photos of Kim Fleming on Flickr (https://www.flickr.com/photos/myriorama/albums/1271006/). The undersides of logs can be a good place to find them.
The Grothendieck method can be applied to implementing a new feature in a software system. You just refactor the existing code until the implementation of the new feature becomes trivial.
In 'Managing Technical People', 1997, page 199, Watts Humphrey says that, after several failed attempts to produce a PC by IBM procedures, they set up an independent team that could skip the procedures as necessary to get the job done. This worked in the short term but it had two side-effects that were catastrophic in the long term: they lost control of the operating system to Microsoft, and they also lost control of the chips to Intel. He says both of these side-effects would have been caught by the checks inherent in the normal IBM procedures.
I recently came to realise that my memories of my experiences of early childhood are probably greatly affected by seeing my younger siblings going through those same experiences a few years later. At age five or six I would see my mother reading to them on the sofa and they would be lying with their heads on her tummy feeling her warmth and listening to her heartbeat and stomach gurgles. Seeing this would remind me of when I used to do that, thus reinforcing those memories and probably somewhat distorting them. One of the distortions is that this memory is set in the house we moved to when I was four, and most of my own relevant experiences would have been set in our previous house. I think the accumulation of memories is a bit like training an LLM on a combination of new data and its own data.
It always pleases me to see pictures of NGC 4216, the edge-on spiral galaxy with a star beside its nucleus. I used to use it as a pointer to the short-period contact binary star CC Comae Berenices back when I used observe eclipsing binaries with my Celestron 8.
Same here. My first though was 'This is an AI prompt.'
+1 for quoting Kipling in 2025
Yes. When you are specifying a system you are building the category that you want it to live in.
Take a mapping a and precompose it with the identity mapping i. By the definition of the identity mapping the resulting composition is equal to a.
i;a = a
(Here ';' represents forward composition. Mathematicians tend to use backward composition represented by '∘' but I find backward composition awkward and error-prone and so avoid using it.)Now, if there is another mapping j that is different from i, such that
j;a = a
then the mapping a loses information.
By this I mean that if you are given the value of a(x) you cannot always determine what x was.
To understand this properly you may need to work through a simple example by drawing circles, dots and arrows on a piece of paper.If there is no such j then mapping a is said to be a monomorphism or injection (the set theoretic term) and it does not lose information.
This specification of the property 'loses information' only involves mapping equality and mapping composition. It does not involve sets or elements of sets.
An example of a mapping that loses information would be the capitalization of strings of letters. An example of a mapping that you would not want to lose information would be zip file compression.
If you alter the above specification to use post-composition (a;i = a and a;j = a) instead of pre-composition you get epimorphisms or surjections which capture the idea that a mapping constrains all the values in its codomain. I like to think of this as the mapping does not return uninitialized values or 'junk' as it is sometimes called.
Bartosz Milewski works through this in more detail (including from the set-theoretic side) in the last 10 minutes of https://www.youtube.com/watch?v=O2lZkr-aAqk&list=PLbgaMIhjbm... and the first 10 minutes of https://www.youtube.com/watch?v=NcT7CGPICzo&list=PLbgaMIhjbm....
So category theory is really the theory of composition of mappings. I conjecture that all programming can be seen as just the composition of mappings. If this is correct then category theory is a theory of programming.