Drinking at Cloud Scale
I may have at least a partial solution for representing cocktails that solves some of the problems that I was complaining about in my previous post. I actually got into it as part of a work project, but the project is suspended and I want to do something with the technique, so y’all are hearing about it here. This post uses MathJax to render LaTeX math notation inline, because I’m a huge nerd it makes the explanation easier.
To recap, a cocktail can sort-of be thought of as a point in a hyperspace, where each dimension is an ingredient, and how much of each ingredient is in the drink is the distance along that dimension. Since we live in a low-dimensional space (3D), let’s consider the Margarita. Classically, that’s a 3:2:1 ratio of tequila:triple sec:lime juice (fresh, this drink is showcasing the lime as much as the liquor). Move three units along the tequila dimension, 2 units along the triple sec dimension, 1 unit along the lime dimension. A Daiquiri also has three ingredients, but the ratios are a little different: 2 units rumward, 1 unit towards lime, and 3/4 unit along simple syrup.
Between those two drinks, though, there are 5 ingredients, so the space they are in is at least 5-D. They are, however, kind of close in it, because they’re both 1 lime unit out from the origin. There are a lot of good reasons to not use Euclidean distance in high-D spaces, and annoyingly, “high” is not what most people who do this sort of thing think of as high. Aggarwal, Hinneburg and Keim (2001) use 20 for their empirical tests. Twenty? Gotta pump those numbers up! Those are rookie numbers in this racket.
However, there are two problems.
Problem the first: the variation within a spirit is complex. It may be able to be represented as a hierarchy, but determining where the levels split is complicated. This might actually be a job for the Gini index, which is a measure of class purity and is typically used for deciding where to put the splits in decision trees. Mostly, I don’t want to sit down and hand write a booze ontology myself.
Problem the second: There are a lot of things that aren’t measured in the same units. Alcohol and mixers are measured in more-or-less continuous graduations of volume. Egg whites are measured in integers, and it’s a pretty rare drink that has more than one (yes, yes, eggnog). Mint leaves, cinnamon sticks, orange slices, and other garnishes and muddled ingredients are measured in integer counts or units like “sprigs”. As a result, the dimensions don’t use comparable units. I could convert an egg white to a volume, but the volume that muddling 5 mint leaves and then straining them out adds to a drink is trivial. Nonetheless, the mint is important.
One possible solution to this is to represent the drinks using a Vector Semantic Architecture (VSA). VSAs use vectors of a fixed length to represent semantic atoms, and can compose those vectors using a number of operations to represent data and perform logical operations.
One weird thing to note here is that this is a holographic, non-localized way of representing ingredients, while the typical each-ingredient-is-a-dimension representation is a localized representation, it uses one specific location in the vector per ingredient. The VSA way of representing an ingredient has an entire N-element vector, where N is typically in the thousands, and something that has multiple ingredients is the combination of all of those vectors. In general, there are two ways to combine vectors in a VSA, bundling, which is sort-of like addition, and binding, which is sort of like multiplication. As a result, the VSA is effectively an algebra over an embedding.
Because the vectors are a non-localized representation, checking the similarity is a little more complicated. Typically, cosine similarity is used for floating point vectors, and hamming distance is used for bipolar vectors. High-dimensional vectors have the property that any two randomly chosen ones are going to have very very low cosine similarity, so you can represent all your semantic atoms by randomly generating vectors. More interestingly, you can intentionally create vectors with varying degrees of similarity to each other (Rachkovskij, Slipchenko, Kussl, Baidyk 2005). That way, the light rum and dark rum vectors can be designed to be more similar to each other than to vodka.
Even more interestingly, there are ways to use FHRR fractional binding to represent the prevalence of a thing in a multiset, and so affect how similar the multiset vector is to the vector for that thing. Combining that with the compositional nature of the VSA operations, it should be possible to use VSA vectors to represent the liquor ontology. For example, you can have rum. You can have a dark rum. You can have a dark Jamaican pot still rum, and so forth. Each liquor’s representation could be a bundling of a bag of words describing that liquors flavor, and bundling that with the base type, possibly augmented by a high prevalence of the base type through fractional binding, to ensure that all the rums are most similar to the base rum, but also that rums that are of similar flavor descriptions would have similar vector representations.
This brings us to point that makes VSAs spectacular for building neuro-symbolic AIs. The vectors can be learned from data instead of hand-engineered. You might expect that if I want this rum ontology, I’d have to sit down and come up with all of the vectors myself, like some computationalist peasant. Instead, I suspect that a lot of the the flavor descriptions could automatically be pulled from marketing materials on liquor sales websites and fed through an LLM or some more conventional NLP pipeline to produce the features that form the description of each liquor. Simply building these liquor vector representations is useful, because the inter-vector similarity points the way to substitutions. Strega is sweeter than yellow Chartruse, but it’s close enough (and cheaper). Admittedly, there’s some appeal to studying all the boozes in order to handcraft a fine, artisanal ontology, but I’m a mortal man, and humanity has been distilling since at least the 8th century AD. The boozes have a head start, and if this project has taught me anything at all, it’s how to be decent at pillaging web sites with Python scripts.
For representation of cocktails, the ingredients would be bound with amounts and bundled to produce the final cocktail representation. This is where the VSA comes in handy for representing amounts. Because of the compositional nature of the representation, “1 dash of Angostura” becomes a vector of the same length as “2 oz of gin” or, even more flexibly, “garnish with an orange”, and each vector contributes to the recipe’s similarity to other vectors that also have that ingredient (or even operations, in the case of garnishing). I think, with a careful design of the representation, it would be possible to create a vector of ingredients with no amounts, pass it to a vector DB and pull the closest match, and then get the amounts of those ingredients back out of it via unbinding, but I still have a lot of work to do to ensure that the representation is capable of answering the questions that I would have about a cocktail.
The Cocktail Embedding
I got into cocktail making during the pandemic lockdowns. I have a little library of cocktail books, pretty heavy on the Death and Company books, and assorted Tiki nonsense. Once you make a bunch of cocktails, you start to get an idea of what sort of structure they have, and so where you can swap things out or make substitutions. For instance, if there’s a sour/acid component like lemon juice, there’s likely to be an approximately equal volume of sweetener like orgeat or simple syrup. Another thing is that there are common backbones with embellishments on them to make different drinks. A Margarita is tequila, triple sec, and lime juice. If you don’t have tequila, use cognac and you have a Sidecar. A Daquiri is pretty similar, but with rum as the spirit and simple syrup as the sweetener. Swap whiskey for the rum and you have a Whiskey sour (although probably with lemon, not lime). Swap gin for the rum, and it’s a Gimlet. Put some mint and Angostura bitters in there, and you’re drinking a Southside (and it’s way better).
At any rate, there are certain regularities in the structure of drinks. Part of this is due to what’s palatable, part of it is probably fashion, and there is also history and economics in there. Saint Germain is lovely stuff, but it’s also relatively modern, so you won’t find it in old cocktail books. There also aren’t a ton of scotch cocktails because it has historically been viewed as A) not for mixing (aside from a few drops of Scottish spring water, maybe), and B) expensive. Not putting expensive ingredients in cocktails is for weirdos, the stuff was made to be drank, maybe drink it ya goober.
However, none of this historical or cultural context is able to be rolled into questionable machine learning plans and schemes, so I’ve recently been pillaging cocktail recipe web sites for their recipes using web spiders. I have thousands of recipes, and I’m planning to use it as a data set to train ML models to do a couple of different things.
One basic thing is clustering. Cocktails can be imagined as points in a high-dimensional space. The number of dimensions is quite large, because each ingredient is a dimension, and the amount of each ingredient is the distance from the origin in that dimension. One thing that I’m probably going to have to do in the interests of comparisons is normalizing the units of the cocktails, since some are in ounces, some are in milliliters, and some of the ingredients are in amounts like “barspoons” and “dashes”. That transformation will put them all in the same coordinate space. Normalizing them so that the ingredients are proportional to the total drink then converts them to points within the unit hypersphere. Because Cartesian distance is pretty ill-behaved in high-dimensions, cosine similarity will probably be a better measure for clustering, but it will be interesting to see what comes out from that process.
Before I can do any of that, though, I have to clean up the data, and that’s turning out to be its own interesting problem. One aspect of it is that liquors are themselves kind of complicated. Gin, for example, is pretty variable in taste. Hendricks Gin is fine stuff, but if you don’t want your drink to taste like cucumber, don’t use it. Most gin has piney/citrus notes, but the other herbs and spices in it cause a lot of variation around that theme. Some cocktail recipes (specs, in the industry) call for a specific spirit. Some web sites complicate this by allowing you to enter your bar’s contents, and then swapping analogous spirits out for the ones you already have. This works for some spirits, sort of, but it has limits.
As a result, one of the more complicated parts of normalizing the data set is going to be figuring out where the boundaries are between types of alcohol that can be substituted for each other, and types that can’t. This is a form of dimensionality reduction, because collapsing all of, for example, the different brands of gin into a single “gin dimension” will remove dimensions from the dataset. More importantly, it removes dimensions that are effectively the same dimension, but would be extremely sparse, with each brand probably only represented a handful of times.
The problem is, not all spirits in a class are analogous. Kentucky bourbon and Islay scotch are exactly the same thing, in the sense that they are fermented from a grain mash, distilled to somewhere around 80% alcohol, and then barrel aged. Say that in Scotland or Kentucky, though, and you best start running. Bourbon requires 51% or more corn in the mash bill (list of grains in the mash), and is aged in new containers made of oak and charred on the inside. Once the barrel is used, it can’t be reused for bourbon, and so there are a lot of them going cheap. This is why you can’t throw a bottlecap without hitting a local microbrewery producing bourbon-barrel-aged something-or-other. Legally, whiskey imported from outside the USA can’t be sold as “Bourbon”. Scotch mash starts with malted barley, but then breaks down further in to single malts, blended malts, and a bunch of other categories, depending on how the mash was set up and whether it was mixed after aging. You don’t have to char the barrels, and you can reuse them. In fact, some scotches are aged in barrels that previously held other spirits, like sherry or port. As a result of all this messing around, the resulting spirits taste wildly different. Maker’s Mark is has a sweet, honey/floral and vanilla thing going on, while Laphroaig tastes like you’re watching an evening storm roll in on a cold, seaweed-strewn ocean beach while someone sets tires on fire to keep warm. Even within scotches, there’s a ton of variation, so if a spec calls for Cragganmore vs. something like Lagavulin, they’re aiming for a particular flavor profile.
My instinct at this point is to split or lump scotches by region, other whiskeys by bourbon/rye split, and tequilas by age (blanco/reposado/anjeo). Gins are even weirder, so I’m not sure what to do there, aside from keeping flavored ones (usually orange or lime, although Hendricks’ cucumber also counts) distinct from “plain” ones. Rums are probably the weirdest of all, despite all being distilled sugarcane spirit. There are different styles of still, different aging processes, and the large number of fairly weird flavored things out there, like Malibu (which I might just delete on sight for being vile). Vodka is boring, it’s largely required to be flavorless, although there are texture and smoothness aspects to it. Where it’s going to be a problem is, again, flavored nonsense.
In terms of tackling the project, the first thing I’m going to do is get the various files into a standard format for representing ingredients and their amounts. At that point, I can also standardize the amount units, probably to ounces since that’s what my jiggers are calibrated it.
Once everything is standardized in representation, I can also unify the datasets and create a derived dataset with the amounts converted to proportions, but this raises another problem: cocktail names. I feel like that is actually two problems: variations of a cocktail, and people reusing names for different drinks. There is a cocktail in the Savoy Cocktail book that is called an Aviation, and has most of the ingredients that are also in the Death and Company Aviation, but the amounts are different, and the D&C Aviation is a far superior drink. I fully expect, however, that there are different drinks with the same or very similar names in the dataset. At the moment, I’m thinking that the solution here is not to treat names as special, and especially not to use them as keys in any kind of data structure.
What I Want to Do with the Data
One thing that a statistical model of cocktail ingredients is good for is reverse-engineering the ingredient amounts from cocktails at a bar. Bars will typically list the ingredients, but not the amounts, and so if you want to replicate the drink at home, you’re out of luck. Given a list of ingredients, it should be possible to predict the likely proportions of them in a cocktail. As mentioned previously, sour/acid components frequently have a balancing sweet ingredient and so on. I suspect that the solution to this is some kind of Bayesian constraint solver, where it has to pick out the amounts that are most likely, conditioned on the other amounts and ingredients, and with the constraint that the total volume doesn’t go over what you can fit in a cocktail glass. If you want to drop the constraint, just work with proportions and then put in 1oz of base spirit and calculate the others from there.
Another possible application is finding the drinks that don’t exist, but should, or the drinks that really really shouldn’t exist. A drink that doesn’t exist but should is one whose hypervector representation puts it in a void in a cluster. I think the representation of the problem there is that it should maximize dissimilarity with everything in the cluster, while not being so unlike them that it ends up in another cluster. Drinks that shouldn’t exist are ones that maximize distance from any cluster, subject to the constraint that the total volume is still reasonable. The volume constraint is because one gallon of lime juice with a pint of bitters is one way to end up very far from all other drinks along the “lime juice” dimension. Another constraint is that a drink probably shouldn’t have more than 5-8 ingredients in it, although the exact number is something I will probably derive from the data.
An even sillier proposition is to train a neural network to produce names from recipes, or vice versa. This is silly because it creates a latent space that continuously maps sequences of English letters to plausible combinations of cocktail ingredients, and so can also create a cocktail for “England” or “Beatrix Potter”. It would be interesting to see if a “Southcar” or a “Sideside” were similar to each other or to the Southside and Sidecar. Going the other way is also amusing, because it can name cocktails based on ingredients. I’m slightly curious how the name of a Margarita changes as you add increasing amounts of blackberry liquor to it.
Trucks (and the fluid dynamics thereof (with ideas for internet startups))
This was all written in 2008, so the prices will have gone up. The truck rental user experience is still garbage, though.
I’m renting a truck, and since I’m not in a hurry, I decided to check every service that showed up on the front page of a Google search. Truck rental seems like the sort of business where there would not be a lot to distinguish competitors aside from price and service. From what I’ve seen of U-Haul’s customer service, that is not where they distinguish themselves, so truck rental companies must be competing on price.
Ryder wants $45 for a day of use of a truck, and that includes 1000 (yes, a thousand) miles.
U-haul wants ~$100 for one day of use, with 59 miles for a one-way rental. A round-trip rental is $29.95, plus $0.99/mile, which is something of a concern when the round trip is 100 miles or so.
Budget wants $112.85 for one day and 85 miles one-way. For a round-trip, the cost is the same as U-haul, so a 100 mile round trip ends up costing around $130.
Penske wants $180 for a one-way trip, and offers unlimited mileage. The round trip cost is $70, which is a lot more reasonable but still doesn’t beat Ryder.
I’ll have to make a round-trip anyway, because I’ll probably have to drive to the truck pick-up location, and then leave my car there. If the trip were any shorter, the prices for U-haul and Budget would be better,
but on this particular route, Ryder manages to beat all other rental companies by a pretty good margin. The heuristic seems to be that for any round trip under ten miles, go for U-haul or Budget, Ryder for trips
beyond that, and Penske if you are doing something like going across the country, which makes the “unlimited mileage” actually significant.
Ryder can offer the better deal for this distance because they don’t offer one-way rentals. Companies that do offer one-way rentals have the issue that trucks will accumulate at places people want to move to, and
run out at places that people don’t want to be. Every fall, college towns would have too many trucks and towns in the suburbs would run out.
The solution is to hire some people to drive the trucks to where they are needed. That’s a sure way to lose money, because those people have to be paid, the gas for those trips comes out of the company’s pocket,
and the drivers don’t pay for the rental. The only way to make money on this situation is to either restrict one-way rentals (Ryder), or charge more to cover the losses (everyone else).
Cutting out one-way rentals is not the most optimal solution for the company, though, just the simplest. Given a bit of information about where the trucks tend to flow over the course of a year, or where they
are and where they are needed, it should be possible to do things like offering one-way rentals only to the places trucks are needed. This gets paying customers to move the trucks and pay for the gas, but it requires a good deal of tracking and trend analysis to work well. It also could become an issue if something unexpected happens, like an unpopular place suddenly becoming wildly popular, and everyone moving there.
Another way to improve truck rental with computers would be to figure out the pricing algorithms used by each of the major truck rental companies, and then use that information to calculate which rental
company is best for a given route. If someone wanted to make a business out of doing this, they could get the rental companies to give them a cut of the referrals, and offer business intelligence on where people are moving and how they want to use the rental. Heck, if I found the idea of starting a business interesting, I could probably handle the software end of this. Fortunately for me, I don’t find it interesting,
because if I did, I’d start a business, and I wouldn’t like that because I’m not interested in starting a business.
Snap is a failure
Ubuntu finally figured out that no one wanted the Unity desktop environment, but now they’re trying to fuck up software installation with “Snap”, which is apparently some kind of misbegotten blend of containerization and static linking.
Here’s what it looks like to the user: you install an application, like a text editor. It’s noticably slower to launch, and then go to open a file in the Documents folder in your home directory. Unfortunately, the text editor is a snap, so the Documents folder is in some random number’s home directory, not yours.
Then you delete the snap and install the text editor from a source that doesn’t use snap, and so is FUCKING COMPATIBLE WITH DIRECTORIES.
As a bonus, it runs faster now.
This feels a lot like how Firefox made a working browser, and then realized that once it was working, maintenance coding was boring and not profitable, so they divide their time between stupid but new things no one wants (Pocket) and breaking existing features (Open image in new tab).
It seems it’s never enough to do a good job, or once it’s done the project attracts useless hangers-on who have to appear to be doing something to justify their pay.
Holonomic drives and tradeoffs
I noticed that I could get a used toy car that has Mecanum wheels for around $12. This is pretty neat, because the wheels themselves can be pretty spendy. The reason to use Mecanum wheels is that, with 4 of them, you can get rotation and translation in any direction by varying the speed of each wheel independently. It’s a properly holonomic drive, letting you do stuff you can’t do with tank style steering, like orbiting a point while facing it.
Of course, this is cheap crap from China, so I was also curious where the corners had been cut to make it cheap. I assumed I wasn’t getting four motors, four encoders, and a closed loop controller, but what I got is kind of interesting.

The car has two gearboxes, one one each side, and two motors. Each motor drives one wheel on each gearbox, on opposite corners. So one motor drives the left front and right rear wheels, and vice versa. Driving just one motor will make the car translate diagonally, driving both will make it translate forward, backwards, or sideways, depending on which direction they are driven.
Unfortunately, what this design gives up is turning. Any turning at all. Rotation around an axis is just Not The Done Thing. I think the only way to change heading is to hit something.
The wheels are pretty nice, though. There seems to be an informal standard of 5.75mm across the flats hexagonal shafts for toy robot motors, and these follow it, so I can get a set of motors and encoders to use the wheels.
Not Even Wrong.
There is a conceptual division of statements of fact that places them on a sort of spectrum from “right” to “wrong”. Right facts are those that square with what is observed in the world (e.g. “water is wet”) and wrong ideas are those that do not (e.g. “water is pink”). Inherent in this is the idea of falsifiablity: these statements assert facts, and the truth or falsity of these facts can be determined. Statements that are not even wrong are those that do not engage with the mechanisms of meaning, truth, and so forth, and so cannot be tested (e.g. “water is beautiful”). Some people may find a particular body of water beautiful or not, on a given day, but that says more about the people than the water, and is not something that can really be falsified.
Aeon published a fairly regrettable article, called “The Empty Brain“, which, despite the almost self-aware title, does not appear to be an autobiography. It’s main problem is that the author is not aware of the meaning of the words he uses, and so from possibly correct, or at least coherent premises, builds an Escher-esque house of failed conclusions.
No matter how hard they try, brain scientists and cognitive psychologists will never find a copy of Beethoven’s 5th Symphony in the brain – or copies of words, pictures, grammatical rules or any other kinds of environmental stimuli. The human brain isn’t really empty, of course. But it does not contain most of the things people think it does – not even simple things such as ‘memories’.
This is, of course, wrong. The brain is, in fact, the organ of the body in which memories are stored. This has been demonstrated, both in research on animals and in unfortunate cases where humans sustained trauma to the brain and lost memories, or memory-related functions, as a consequence. Anyone asserting otherwise would have to find an organ which stores memories, and is not the brain. This approach, of asserting that something is not the case, but failing to indicate what is, appears to be Epstein’s primary mode of argument.
He is somewhat correct, in that the brain does not contain copies of the listed items in a form that you can simply peer into the brain and read back out. The idea that they are not stored at all, however, begs the question of how we operate using something that Epstein asserts that we do not have, and worse, how we have the subjective experience of having something he asserts we don’t have.
Our shoddy thinking about the brain has deep historical roots, but the invention of computers in the 1940s got us especially confused. For more than half a century now, psychologists, linguists, neuroscientists and other experts on human behaviour have been asserting that the human brain works like a computer.
People have used a number of metaphors to explain the working of a number of systems. The brain/computer one is flawed, and in some places strained, but at a very high level has some explanatory value. The problems mostly arise when people mistake the map for the territory. In later paragraphs, Epstein does this on a level roughly on par with seeing a map of the United States, and then asserting that one could jump across the United States, since it’s only about a meter wide.
To see how vacuous this idea is, consider the brains of babies. Thanks to evolution, human neonates, like the newborns of all other mammalian species, enter the world prepared to interact with it effectively. A baby’s vision is blurry, but it pays special attention to faces, and is quickly able to identify its mother’s. It prefers the sound of voices to non-speech sounds, and can distinguish one basic speech sound from another. We are, without doubt, built to make social connections.
A healthy newborn is also equipped with more than a dozen reflexes – ready-made reactions to certain stimuli that are important for its survival. It turns its head in the direction of something that brushes its cheek and then sucks whatever enters its mouth. It holds its breath when submerged in water. It grasps things placed in its hands so strongly it can nearly support its own weight. Perhaps most important, newborns come equipped with powerful learning mechanisms that allow them to change rapidly so they can interact increasingly effectively with their world, even if that world is unlike the one their distant ancestors faced.
So far so good, these statements about the behavior of newborn babies are largely correct. They have a vast number of built-in capabilities, which are part of their structure, as described by their DNA and built in utero according to that plan.
Senses, reflexes and learning mechanisms – this is what we start with, and it is quite a lot, when you think about it. If we lacked any of these capabilities at birth, we would probably have trouble surviving.
But here is what we are not born with: information, data, rules, software, knowledge, lexicons, representations, algorithms, programs, models, memories, images, processors, subroutines, encoders, decoders, symbols, or buffers – design elements that allow digital computers to behave somewhat intelligently. Not only are we not born with such things, we also don’t develop them – ever.
And here is where we run up against the limitations of Epstein’s knowledge and lexicon. These words mean things, and many of them mean things that are exactly what we do develop. Information, for example, is, at a very basic and informal level, the ability to discriminate between things. It has an inverse, called entropy. In the game of 20 Questions, the guessing player starts off with no information except that the answering player is thinking of a thing. Each question they ask adds one bit of information, and causes a corresponding reduction in their entropy. To assert that humans never “develop” information is to assert that humans never acquire the ability to tell anything from anything else, and so experience the world as a sort of colossal monolith of all things.
An algorithm is a procedure for solving a problem or doing a calculation. If you ever learned to do long division, change a car tire, or get dressed, you have an algorithm, and if you really sat down and thought about it, you could probably write the procedure down. If you never learned to do any of that stuff, you’re naked and walking everywhere, so you’re really not my problem.
Mixed in with the things that we clearly do develop are some that we clearly don’t. To say that the brain has “software”, for example, strains the metaphor to the breaking point. Yes, one could make a distinction between the activity of the brain and the physical matter of the brain, but since the matter does the activity and the activity changes the matter, the distinction isn’t terribly useful except when considering the possibility of executing the activity in simulation, on different matter.
We don’t store words or the rules that tell us how to manipulate them. We don’t create representations of visual stimuli, store them in a short-term memory buffer, and then transfer the representation into a long-term memory device. We don’t retrieve information or images or words from memory registers. Computers do all of these things, but organisms do not.
Computers, quite literally, process information – numbers, letters, words, formulas, images. The information first has to be encoded into a format computers can use, which means patterns of ones and zeroes (‘bits’) organised into small chunks (‘bytes’). On my computer, each byte contains 8 bits, and a certain pattern of those bits stands for the letter d, another for the letter o, and another for the letter g. Side by side, those three bytes form the word dog. One single image – say, the photograph of my cat Henry on my desktop – is represented by a very specific pattern of a million of these bytes (‘one megabyte’), surrounded by some special characters that tell the computer to expect an image, not a word.
This is where Epstein starts to lose the plot with regard to what information is. Information is not just numbers, letters, words and so forth. It is the ability to discriminate. One bit, the fundamental unit of information, has two possible values, typically represented as 1 and 0. It allows a single discrimination, this/that, here/there, etc. Unfortunately for this line of argument, that’s pretty much all that a bit is. The fact that computers happen to handle the bits as chunks of 8 to a byte, or that certain patterns stand for certain things are what’s called “implementation details”.
Paul Revere’s friend in the Old North Church on the eve of the revolution sent a two-bit message to Paul using lanterns. The famous line is “One if by land, two if by sea”, with the number of lanterns indicating the approach direction of the British forces. This could be done by one bit: 1 lantern for land, 0 lanterns for sea. However, there was a second bit needed to distinguish a potential failure case: 11 (binary for 2) if by sea, 01 (binary for one) if by land, 00 (binary for 0) if they catch you before you put the lantern up. Note that these cases have nothing to do with computers, because Paul’s cell phone was unreliable or something.
The fact that we don’t store our visual memories in our heads as 1024×768 pixel 24-bit per pixel JPG-compressed image files doesn’t mean we don’t have representations, just that they’re not the same as the ones in computers. There is still latent information, but the implementation details are different.
Computers, quite literally, move these patterns from place to place in different physical storage areas etched into electronic components. Sometimes they also copy the patterns, and sometimes they transform them in various ways – say, when we are correcting errors in a manuscript or when we are touching up a photograph. The rules computers follow for moving, copying and operating on these arrays of data are also stored inside the computer. Together, a set of rules is called a ‘program’ or an ‘algorithm’. A group of algorithms that work together to help us do something (like buy stocks or find a date online) is called an ‘application’ – what most people now call an ‘app’.
Yes, the way a computer does these things is called an algorithm. This is a matter of convention, though. The way I make a cake is also an algorithm, and while accurate, it would sound stilted for me to say it that way, so I don’t. That doesn’t make it less correct, though.
Forgive me for this introduction to computing, but I need to be clear: computers really do operate on symbolic representations of the world. They really store and retrieve. They really process. They really have physical memories. They really are guided in everything they do, without exception, by algorithms.
Humans, on the other hand, do not – never did, never will. Given this reality, why do so many scientists talk about our mental life as if we were computers?
Again with the asserting that things are not, without proposing what they are. If human memories are not physical, then what are they? If we don’t do things by following procedures, then how do we do them?
In his book In Our Own Image (2015), the artificial intelligence expert George Zarkadakis describes six different metaphors people have employed over the past 2,000 years to try to explain human intelligence.
In the earliest one, eventually preserved in the Bible, humans were formed from clay or dirt, which an intelligent god then infused with its spirit. That spirit ‘explained’ our intelligence – grammatically, at least.
The invention of hydraulic engineering in the 3rd century BCE led to the popularity of a hydraulic model of human intelligence, the idea that the flow of different fluids in the body – the ‘humours’ – accounted for both our physical and mental functioning. The hydraulic metaphor persisted for more than 1,600 years, handicapping medical practice all the while.
By the 1500s, automata powered by springs and gears had been devised, eventually inspiring leading thinkers such as René Descartes to assert that humans are complex machines. In the 1600s, the British philosopher Thomas Hobbes suggested that thinking arose from small mechanical motions in the brain. By the 1700s, discoveries about electricity and chemistry led to new theories of human intelligence – again, largely metaphorical in nature. In the mid-1800s, inspired by recent advances in communications, the German physicist Hermann von Helmholtz compared the brain to a telegraph.
Each metaphor reflected the most advanced thinking of the era that spawned it. Predictably, just a few years after the dawn of computer technology in the 1940s, the brain was said to operate like a computer, with the role of physical hardware played by the brain itself and our thoughts serving as software. The landmark event that launched what is now broadly called ‘cognitive science’ was the publication of Language and Communication (1951) by the psychologist George Miller. Miller proposed that the mental world could be studied rigorously using concepts from information theory, computation and linguistics.
The key word of this is “metaphor”. The metaphor that the brain is like a computer indicates that at some level it shares some properties, not that the brain and a computer are identical. If I say my girlfriend’s cheeks are like roses, I mean that they are pink and soft, not that she literally has flowers for a face.
Information theory is the basis of all the talk about entropy and bits earlier, it is the study of systems capable of discrimination, as humans appear to be, between the things in their environments, so it doesn’t seem like too much of a stretch to attempt to apply it to the question of how we do that discriminating.
This kind of thinking was taken to its ultimate expression in the short book The Computer and the Brain (1958), in which the mathematician John von Neumann stated flatly that the function of the human nervous system is ‘prima facie digital’. Although he acknowledged that little was actually known about the role the brain played in human reasoning and memory, he drew parallel after parallel between the components of the computing machines of the day and the components of the human brain.
Propelled by subsequent advances in both computer technology and brain research, an ambitious multidisciplinary effort to understand human intelligence gradually developed, firmly rooted in the idea that humans are, like computers, information processors. This effort now involves thousands of researchers, consumes billions of dollars in funding, and has generated a vast literature consisting of both technical and mainstream articles and books. Ray Kurzweil’s book How to Create a Mind: The Secret of Human Thought Revealed (2013), exemplifies this perspective, speculating about the ‘algorithms’ of the brain, how the brain ‘processes data’, and even how it superficially resembles integrated circuits in its structure.
Von Neumann’s assertion that the activity of the nervous system is digital is based on the observation of the electrical activity of nerves, which appear to have two states: resting and firing, and change the rate at which they fire, rather than e.g. the amplitude with which they fire. Note again, the appearance of the word two, that is to say, one bit of information, firing/resting. Whether sub-threshold activity, which does not tip the neuron into firing, has a place in cognition is an open research question. The point is that Von Neumann did not mean that everyone was running around with a ENIAC full of vacuum tubes in their head, but that the activity of neurons appeared to be divided into two phases, rather than a continuum. Digital, not analog.
Having not read the Kurtzweil book, I cannot speak to its content or the accuracy of the review. However, anyone with any knowledge of the structure, at the IC level in computers or the neuronal level in brains, would regard any similarity as purely superficial: they’re both really complicated.
The idea that humans are information processors is, with a proper understanding of what information is, fairly trivial to assert. Anything that reacts to its environment is an information processor at some level, as it has received information (that is, it has determined that some condition holds or not) and then engaged in some process using that information.
The information processing (IP) metaphor of human intelligence now dominates human thinking, both on the street and in the sciences. There is virtually no form of discourse about intelligent human behaviour that proceeds without employing this metaphor, just as no form of discourse about intelligent human behaviour could proceed in certain eras and cultures without reference to a spirit or deity. The validity of the IP metaphor in today’s world is generally assumed without question.
But the IP metaphor is, after all, just another metaphor – a story we tell to make sense of something we don’t actually understand. And like all the metaphors that preceded it, it will certainly be cast aside at some point – either replaced by another metaphor or, in the end, replaced by actual knowledge.
At the beginning of this article, if you can really call it that, the author asserted that humans don’t develop knowledge. Now he says we’ll replace our metaphors with knowledge. As to the validity of the current metaphor, it has its good points and its bad ones, but the main problem is in over-applying it, or insisting that it holds true in cases where it doesn’t. The idea that we can follow a sequence of steps to perform a task (that is, use an algorithm) seems to have been extended (at least by Epstein) to mean that we run a bootleg copy of Windows in our heads. The idea that there is a representation stored in our brains has been overextended (again, by Epstein) to mean that we store the image file “mom.png” in a folder someplace. Unfortunately for the line of argument against these over-extensions, no one actually believes that. That’s the whole point of a metaphor. It’s not literally true, it just says there exist similarities.
Just over a year ago, on a visit to one of the world’s most prestigious research institutes, I challenged researchers there to account for intelligent human behaviour without reference to any aspect of the IP metaphor. They couldn’t do it, and when I politely raised the issue in subsequent email communications, they still had nothing to offer months later. They saw the problem. They didn’t dismiss the challenge as trivial. But they couldn’t offer an alternative. In other words, the IP metaphor is ‘sticky’. It encumbers our thinking with language and ideas that are so powerful we have trouble thinking around them.
Now this is a legitimate problem, and an interesting challenge. All maps are wrong, but some maps are useful, and the IP map certainly has some utility. However, having it as the only map you can use to think about something limits the thinking you can do.
The faulty logic of the IP metaphor is easy enough to state. It is based on a faulty syllogism – one with two reasonable premises and a faulty conclusion. Reasonable premise #1: all computers are capable of behaving intelligently. Reasonable premise #2: all computers are information processors. Faulty conclusion: all entities that are capable of behaving intelligently are information processors.
Setting aside the formal language, the idea that humans must be information processors just because computers are information processors is just plain silly, and when, some day, the IP metaphor is finally abandoned, it will almost certainly be seen that way by historians, just as we now view the hydraulic and mechanical metaphors to be silly.
After such a promising preceding paragraph, this descent into silly-gisms is a disappointment. Premise #1 is nothing like reasonable. No one who works with computers for any length of time is capable of thinking something like that without at least a wry smile, and sometimes a chuckle. Computers are stupid. They are literally dumb as rocks: their main active components are made of silicon, the main constituent of quartz. However, computers are also fast. They are capable of manipulating the symbols they work on at blazing speeds, and so they can do things that humans find hard (multiplying large numbers, looking through a list of a million names to see if a specific one is on it) easily. They are not, however, intelligent.
The loss of the premise gets rid of the syllogism, but perhaps its conclusion, while logically unsound, still has some merit. The terms are, admittedly, ill defined. Just what is “behaving intelligently”?
The portia genus of jumping spider eats other spiders, and has a repertoire of behaviors it uses to approach and attack other spiders. These include different ways of tapping on the webs of other spiders, to disguise its approach or to mimic trapped insects. If one of these approaches fails, it will try others, and can learn which ones are effective against which kinds of spiders. Portia also has the ability to make long detours that take it out of sight of prey, in order to descend on its prey from behind. These seem like intelligent behaviors, if fairly minimal ones.
However, in order to do all these things, portia receives and operates on information. It uses its eyes to distinguish between different kinds of prey spiders (again, discrimination is the basis of information). It uses some form of mental map-building and direction sensing to make its detours. So even this very basic intelligent behavior relies on information being accessed and used.
As a thought experiment, then, what intelligent behavior would be possible without performing some process on some information? With no information, there is no distinguishing between things, so the universe is perceived as a single confusion of sense-data, with no distinguishing characteristics (as those would be information), or not perceived at all (as something/nothing is exactly one bit of information). No behavior can be selected, either. Selection of one behavior, as opposed to another, gives rise to a single bit of information. So yes, all behavior, at some point, is a product of information being processed. One could point out that a rock might roll down a hill, receiving no input and selecting no output, but that is hardly “behavior” in any sense that the word is normally used, and it’s certainly not intelligent.
If the IP metaphor is so silly, why is it so sticky? What is stopping us from brushing it aside, just as we might brush aside a branch that was blocking our path? Is there a way to understand human intelligence without leaning on a flimsy intellectual crutch? And what price have we paid for leaning so heavily on this particular crutch for so long? The IP metaphor, after all, has been guiding the writing and thinking of a large number of researchers in multiple fields for decades. At what cost?
Ok, now we’re getting somewhere interesting again. The bit with the syllogism could have been left out, and would have strengthened the argument. Unfortunately, this is the last we’ll hear, in this essay at least, about this potentially fruitful line of inquiry.
In a classroom exercise I have conducted many times over the years, I begin by recruiting a student to draw a detailed picture of a dollar bill – ‘as detailed as possible’, I say – on the blackboard in front of the room. When the student has finished, I cover the drawing with a sheet of paper, remove a dollar bill from my wallet, tape it to the board, and ask the student to repeat the task. When he or she is done, I remove the cover from the first drawing, and the class comments on the differences.
Because you might never have seen a demonstration like this, or because you might have trouble imagining the outcome, I have asked Jinny Hyun, one of the student interns at the institute where I conduct my research, to make the two drawings. Here is her drawing ‘from memory’ (notice the metaphor):

And here is the drawing she subsequently made with a dollar bill present:

Jinny was as surprised by the outcome as you probably are, but it is typical. As you can see, the drawing made in the absence of the dollar bill is horrible compared with the drawing made from an exemplar, even though Jinny has seen a dollar bill thousands of times.
What is the problem? Don’t we have a ‘representation’ of the dollar bill ‘stored’ in a ‘memory register’ in our brains? Can’t we just ‘retrieve’ it and use it to make our drawing?
This is the problem with the metaphor leading us into a variety of possible traps in how we think about things. The first is that since humans do have memories (despite Epstein’s assertions to the contrary) and computers have memories (RAM is “Random Access Memory” after all), they must be exactly the same objects. This is, when stated clearly, obviously wrong. Humans have existed far longer than computers, and that is a useful clue to the source of the confusion. The memory in computers was named that by analogy to the function of our memory: it is a place to store some form of representation. Computer memories are precise where ours our somewhat fuzzy, delicate where ours are surprisingly robust, and made of silicon metal and plastic where ours are made mostly out of wet fat. The analogy is at a functional level, not the details of implementation.
Obviously not, and a thousand years of neuroscience will never locate a representation of a dollar bill stored inside the human brain for the simple reason that it is not there to be found.
Wait, what? Then how did his student call up anything at all? The term “dollar bill” refers to something, and it’s something most Americans are familiar with. If there was nothing in Jinny’s brain that in some way represented a dollar bill, then when she was asked to draw one, she would have said something like “What is a ‘dollar bill’?” The term would not have referred to anything, and since it wasn’t likely to refer to a particular actual dollar bill (Jinny probably doesn’t keep her money between her ears), it would refer to some representation of one.
But for now, lets take Epstein at (pardon the pun) face value. There are no representations of anything in the brain.
A wealth of brain studies tells us, in fact, that multiple and sometimes large areas of the brain are often involved in even the most mundane memory tasks. When strong emotions are involved, millions of neurons can become more active. In a 2016 study of survivors of a plane crash by the University of Toronto neuropsychologist Brian Levine and others, recalling the crash increased neural activity in ‘the amygdala, medial temporal lobe, anterior and posterior midline, and visual cortex’ of the passengers.
This part is actually pretty accurate. Even more interestingly, the storage is somehow holographic, in the sense that it requires pretty widespread damage to remove memories, rather than having them highly localized, and so lost with minor damage.
The idea, advanced by several scientists, that specific memories are somehow stored in individual neurons is preposterous; if anything, that assertion just pushes the problem of memory to an even more challenging level: how and where, after all, is the memory stored in the cell?
I’m willing to take this as an axiom. It’s hard to propose a method for handling the storage, and it has weird implications. For example, infants are born with lots of neurons already in place, but haven’t experienced much, so what do their neurons store? White noise? The sound of one hand clapping?
I do, however, find it suspect that he was able to cite a lot of studies about multiple regions of the brain becoming active during memory tasks, but when it comes to this one-neuron-one-memory idea, suddenly it’s a murky “several scientists”. Which ones?
So what is occurring when Jinny draws the dollar bill in its absence? If Jinny had never seen a dollar bill before, her first drawing would probably have not resembled the second drawing at all. Having seen dollar bills before, she was changed in some way. Specifically, her brain was changed in a way that allowed her to visualise a dollar bill – that is, to re-experience seeing a dollar bill, at least to some extent.
Ok, so there is a change in her brain, which has at least some of the content of seeing a dollar bill, but is not a representation. This is either a distinction without a difference, or the author descending into near-incoherence. A representation is a description or portrayal, a set of signs that stand in for (that “represent”) something else. The changes to Jinny’s brain are not a dollar bill, clearly, but they stand in for it when she is asked to draw one. They’re just not very good or precise stand-ins, largely because they don’t need to be to permit Jinny to do things like recognize dollar bills when she is presented with them.
The difference between the two diagrams reminds us that visualising something (that is, seeing something in its absence) is far less accurate than seeing something in its presence. This is why we’re much better at recognising than recalling. When we re-member something (from the Latin re, ‘again’, and memorari, ‘be mindful of’), we have to try to relive an experience; but when we recognise something, we must merely be conscious of the fact that we have had this perceptual experience before.
Perhaps you will object to this demonstration. Jinny had seen dollar bills before, but she hadn’t made a deliberate effort to ‘memorise’ the details. Had she done so, you might argue, she could presumably have drawn the second image without the bill being present. Even in this case, though, no image of the dollar bill has in any sense been ‘stored’ in Jinny’s brain. She has simply become better prepared to draw it accurately, just as, through practice, a pianist becomes more skilled in playing a concerto without somehow inhaling a copy of the sheet music.
I will admit that there is not a literal copy of a dollar bill in Jinny’s brain, in the sense that if you cracked the poor woman’s skull open and rooted around, you wouldn’t find anything you could pay a bar tab with. No one has ever made any claim that you would, though, so the point of this exercise is somewhat unclear. Clearly she’s undergoing an alteration that is not the thing itself, but is something that stands in for the thing itself (i.e a representation). The fact that it’s not literally “dollar_bill.png” doesn’t mean the alteration didn’t happen.
From this simple exercise, we can begin to build the framework of a metaphor-free theory of intelligent human behaviour – one in which the brain isn’t completely empty, but is at least empty of the baggage of the IP metaphor.
As we navigate through the world, we are changed by a variety of experiences. Of special note are experiences of three types: (1) we observe what is happening around us (other people behaving, sounds of music, instructions directed at us, words on pages, images on screens); (2) we are exposed to the pairing of unimportant stimuli (such as sirens) with important stimuli (such as the appearance of police cars); (3) we are punished or rewarded for behaving in certain ways.
We become more effective in our lives if we change in ways that are consistent with these experiences – if we can now recite a poem or sing a song, if we are able to follow the instructions we are given, if we respond to the unimportant stimuli more like we do to the important stimuli, if we refrain from behaving in ways that were punished, if we behave more frequently in ways that were rewarded.
Misleading headlines notwithstanding, no one really has the slightest idea how the brain changes after we have learned to sing a song or recite a poem. But neither the song nor the poem has been ‘stored’ in it. The brain has simply changed in an orderly way that now allows us to sing the song or recite the poem under certain conditions. When called on to perform, neither the song nor the poem is in any sense ‘retrieved’ from anywhere in the brain, any more than my finger movements are ‘retrieved’ when I tap my finger on my desk. We simply sing or recite – no retrieval necessary.
Except that the change to the brain is the storing of the memorized thing in it. It’s also a lot of other things, like the kinesthetics of the performance, the emotional content of it and the intonations and expressions that would convey that performance to others, and so on. The representation is different from the original, and possibly both richer and less accurate, but that’s a far cry from the assertion that no representations exist. They just are not precise copies.
A few years ago, I asked the neuroscientist Eric Kandel of Columbia University – winner of a Nobel Prize for identifying some of the chemical changes that take place in the neuronal synapses of the Aplysia (a marine snail) after it learns something – how long he thought it would take us to understand how human memory works. He quickly replied: ‘A hundred years.’ I didn’t think to ask him whether he thought the IP metaphor was slowing down neuroscience, but some neuroscientists are indeed beginning to think the unthinkable – that the metaphor is not indispensable.
A few cognitive scientists – notably Anthony Chemero of the University of Cincinnati, the author of Radical Embodied Cognitive Science (2009) – now completely reject the view that the human brain works like a computer. The mainstream view is that we, like computers, make sense of the world by performing computations on mental representations of it, but Chemero and others describe another way of understanding intelligent behaviour – as a direct interaction between organisms and their world.
I have only limited experience with neuroscience, but having done some computational neuroscience, rather than just talked to a neuroscientist once years ago, I can safely say that almost no one thinks that humans perform calculations (in the narrow sense that computers perform calculations, at least) on mental representations of the world.
On the other hand, I have fuckton of experience with robotics, and I can tell you that that approach to AI is called GOFAI (Good Old Fashioned AI), and it tends to run into combinatorial explosion problems when your world has more than like 12 things in it. It is not, in general, an effective way of dealing with a dynamic and changing world, especially in the absence of perfect perception. However, in narrow applications, it is terrifyingly effective. The last person who could play a computer to a stalemate in checkers died in the 70s, and since then, they have become perfect at it, in the formal sense. You, a human, cannot beat a computer at checkers.
This is the root of what’s known as Moravec’s paradox. The things that we literally do without thinking about it, like running across uneven ground, are absurdly difficult for computers, while things that we find tortuously brain-bending, like thinking a handful of moves ahead in chess, are easy for computers. Our brains are evolved to be good at certain things, and to do them efficiently and well enough to not die. We don’t need to explain these activities, because everyone who didn’t have how to acquire those skills hardwired into them from birth was eaten. The things that our brains did not evolve to be good at, like maintaining baroque and precise structures of abstractions and assessing them very quickly, computers happen to be very good at.
My favourite example of the dramatic difference between the IP perspective and what some now call the ‘anti-representational’ view of human functioning involves two different ways of explaining how a baseball player manages to catch a fly ball – beautifully explicated by Michael McBeath, now at Arizona State University, and his colleagues in a 1995 paper in Science. The IP perspective requires the player to formulate an estimate of various initial conditions of the ball’s flight – the force of the impact, the angle of the trajectory, that kind of thing – then to create and analyse an internal model of the path along which the ball will likely move, then to use that model to guide and adjust motor movements continuously in time in order to intercept the ball.
That is all well and good if we functioned as computers do, but McBeath and his colleagues gave a simpler account: to catch the ball, the player simply needs to keep moving in a way that keeps the ball in a constant visual relationship with respect to home plate and the surrounding scenery (technically, in a ‘linear optical trajectory’). This might sound complicated, but it is actually incredibly simple, and completely free of computations, representations and algorithms.
Well, yes, no, and no. The baseball player doesn’t run the numbers, but the presence of external events is somehow represented in their brain, unless you’re willing to claim that the baseball in the air outside is literally the same thing as the one represented by the idea of “baseball” and the sense-information in the player’s head. And, unfortunately, “Keep moving in a way that keeps (your representation of) the ball in a constant visual (representation) relationship with respect to (your representation of) home plate and (your representation of) the surrounding scenery” is an algorithm, that is to say, a sequence of steps to achieve a goal.
Interestingly, a lot of the ways robots do things effectively are more or less implementations of the “keep these visual targets in this sort of relationship” algorithm, more than the “build a detailed model of the physics of the world and do math on it” algorithms, at least at some level of their implementation. After all, these are the more robust ways of dealing with the world, and that’s what we want the robots to do… and yet, the algorithms are being run on standard computers like you can buy in the shop.
Two determined psychology professors at Leeds Beckett University in the UK – Andrew Wilson and Sabrina Golonka – include the baseball example among many others that can be looked at simply and sensibly outside the IP framework. They have been blogging for years about what they call a ‘more coherent, naturalised approach to the scientific study of human behaviour… at odds with the dominant cognitive neuroscience approach’. This is far from a movement, however; the mainstream cognitive sciences continue to wallow uncritically in the IP metaphor, and some of the world’s most influential thinkers have made grand predictions about humanity’s future that depend on the validity of the metaphor.
One prediction – made by the futurist Kurzweil, the physicist Stephen Hawking and the neuroscientist Randal Koene, among others – is that, because human consciousness is supposedly like computer software, it will soon be possible to download human minds to a computer, in the circuits of which we will become immensely powerful intellectually and, quite possibly, immortal. This concept drove the plot of the dystopian movie Transcendence (2014) starring Johnny Depp as the Kurzweil-like scientist whose mind was downloaded to the internet – with disastrous results for humanity.
The idea the the mind (or consciousness, if you like, both terms are equally poorly defined) is like “software” to the brain’s “hardware” is just based on the idea that you can have a brain without a mind, such as a dead person. All their organs are still there, they’re just not doing anything. However, in a state of health, the mind appears to be the thing (or at least a thing) that the brain does. The “grand prediction” goes something like this: if you assume that the brain is necessary and sufficient to “do” the mind, and, to be perfectly clear, that there are not spooks, such as the soul or other supernatural agencies, also required to “do the mind”, then if you can represent the working of the brain at a sufficiently detailed level, essentially in simulation, that simulation will also “do the mind”. No one is expecting this to be easy, and it may well be so difficult that it’s not worth doing.
Also, literally every single thing that goes wrong in the movie Transcendence is caused by neoluddite terrorists. Johnny Depp’s uploaded character is benevolent, if a little spooky. He just builds hyper-efficient solar cells, heals people’s spinal injuries, and cures diseases. Terrorists and the FBI react to this by bombing humanity back to the 1800s.
Fortunately, because the IP metaphor is not even slightly valid, we will never have to worry about a human mind going amok in cyberspace; alas, we will also never achieve immortality through downloading. This is not only because of the absence of consciousness software in the brain; there is a deeper problem here – let’s call it the uniqueness problem – which is both inspirational and depressing.
Because neither ‘memory banks’ nor ‘representations’ of stimuli exist in the brain, and because all that is required for us to function in the world is for the brain to change in an orderly way as a result of our experiences, there is no reason to believe that any two of us are changed the same way by the same experience. If you and I attend the same concert, the changes that occur in my brain when I listen to Beethoven’s 5th will almost certainly be completely different from the changes that occur in your brain. Those changes, whatever they are, are built on the unique neural structure that already exists, each structure having developed over a lifetime of unique experiences.
This is why, as Sir Frederic Bartlett demonstrated in his book Remembering (1932), no two people will repeat a story they have heard the same way and why, over time, their recitations of the story will diverge more and more. No ‘copy’ of the story is ever made; rather, each individual, upon hearing the story, changes to some extent – enough so that when asked about the story later (in some cases, days, months or even years after Bartlett first read them the story) – they can re-experience hearing the story to some extent, although not very well (see the first drawing of the dollar bill, above).
At this point, this feels like a semantic quibble. The representation (the change in the brain) is both admitted to exist, but somehow not to represent, and because it’s not exact, it’s not a “copy”.
This is inspirational, I suppose, because it means that each of us is truly unique, not just in our genetic makeup, but even in the way our brains change over time. It is also depressing, because it makes the task of the neuroscientist daunting almost beyond imagination. For any given experience, orderly change could involve a thousand neurons, a million neurons or even the entire brain, with the pattern of change different in every brain.
So yes, it’s hard. And? Last I checked “It’s hard” wasn’t something that made humanity pack up and go home. It’s hard to climb mountains. It’s hard to build airplanes. It’s hard to put robots on Mars.
Also, at least part of the idea is that brains/minds are autopoeic. They create themselves. A potentially useful (if fraught) goal on the route to uploading would be the creation of a minimal set of self-modifying informational structures needed to create a mind. Duplicating one specific mind is certainly a more daunting prospect that creating any mind at all, but again, “It’s hard” isn’t an argument related to whether or not it’s possible.
Worse still, even if we had the ability to take a snapshot of all of the brain’s 86 billion neurons and then to simulate the state of those neurons in a computer, that vast pattern would mean nothing outside the body of the brain that produced it. This is perhaps the most egregious way in which the IP metaphor has distorted our thinking about human functioning. Whereas computers do store exact copies of data – copies that can persist unchanged for long periods of time, even if the power has been turned off – the brain maintains our intellect only as long as it remains alive. There is no on-off switch. Either the brain keeps functioning, or we disappear. What’s more, as the neurobiologist Steven Rose pointed out in The Future of the Brain (2005), a snapshot of the brain’s current state might also be meaningless unless we knew the entire life history of that brain’s owner – perhaps even about the social context in which he or she was raised.
I’m willing to accept that the body is a vital part of the mind, partly because the constant input of the body provides a regulation on certain aspects of the mind. However, I’m not so sure about the second part. I personally don’t have total knowledge of my life, and yet my mind appears to be as functional as it ever was. I would assume that my entire life history could be divided into two parts: those that made significant changes in my brain, and those that didn’t. The ones that didn’t make significant changes will not be present in the current state of my brain, since, by definition, they didn’t make changes in it, while those that did, will be. The distinction between a given person’s social context and life history seems like it was made more for emphasis than any sort of reasoned argument, since it’s not like the two are different from each other.
Think how difficult this problem is. To understand even the basics of how the brain maintains the human intellect, we might need to know not just the current state of all 86 billion neurons and their 100 trillion interconnections, not just the varying strengths with which they are connected, and not just the states of more than 1,000 proteins that exist at each connection point, but how the moment-to-moment activity of the brain contributes to the integrity of the system. Add to this the uniqueness of each brain, brought about in part because of the uniqueness of each person’s life history, and Kandel’s prediction starts to sound overly optimistic. (In a recent op-ed in The New York Times, the neuroscientist Kenneth Miller suggested it will take ‘centuries’ just to figure out basic neuronal connectivity.)
Meanwhile, vast sums of money are being raised for brain research, based in some cases on faulty ideas and promises that cannot be kept. The most blatant instance of neuroscience gone awry, documented recently in a report in Scientific American, concerns the $1.3 billion Human Brain Project launched by the European Union in 2013. Convinced by the charismatic Henry Markram that he could create a simulation of the entire human brain on a supercomputer by the year 2023, and that such a model would revolutionise the treatment of Alzheimer’s disease and other disorders, EU officials funded his project with virtually no restrictions. Less than two years into it, the project turned into a ‘brain wreck’, and Markram was asked to step down.
Again, the fact that a thing is difficult is not proof that it is impossible. Mismanagement of a project is at best, proof that the management was irresponsible or incompetent, not proof that the goals of the project are impossible. As yet, this article has not managed to link its premises (which seem to be that the computational metaphor for the brain is a metaphor, and that the brain isn’t storing representations when it stores representations) with the idea that those somewhat jumbled premises somehow lead to the conclusion that uploading is impossible. Even if copying a particular mind into an executable form on a computer is impossible, elucidating the failings of the computational metaphor does not explain (or even hint at) why.
We are organisms, not computers. Get over it. Let’s get on with the business of trying to understand ourselves, but without being encumbered by unnecessary intellectual baggage. The IP metaphor has had a half-century run, producing few, if any, insights along the way. The time has come to hit the DELETE key.
Your essay’s not good, get over yourself. The business of understanding ourselves would be better served by a coherent exploration of the problems with the computational metaphor, rather than throwing the baby out with the bathwater and claiming a total absence of knowledge in the brain. Such an exploration might not vanquish the problem of uploading, which the author seems to have poorly-examined objections to, but it would at least provide a useful cognitive exercise, and show where our understanding is supported by the metaphor and where it is undercut. In places where this essay approached the handling of the computational metaphor it did raise a number of much more interesting points, but they were unceremoniously dropped in favor of pointing out that computational neuroscience is difficult, which those of us who have actually done work in the field have already noticed.
Vape Sensor Plotting

The values calculated here are differences from the average of the first 2o samples. The X axis is time, but it’s not well-specified because I didn’t actually set a regular timer, I just collected samples as fast as possible.
As was predicted in the previous entry, the MQ-135 and MQ-3, both of which can sense alcohol, had the strongest response to vape clouds. These are the ones I’d use for the primary detection if I was building a serious vape detecting product.
The MQ-9 and MQ-8 had similar responses, but not as strong. This is kind of interesting, since they are supposed to be good for butane, propane, LPG, and hydrogen, but maybe they just do a decent job detecting light molecules with carbon in them? The MQ-2 response is interesting, since it’s sold as a LPG, propane, and hydrogen detector, but has a moderate response to vapes too.
The much lower results seems to indicate that vape clouds have no VOCs (CJMCU-1100) and no town gas or LPG (MQ-5, but I didn’t need a sensor to tell me that).
In Which Vapes May Yet Be Sensed
I’m coming to the “being a narc” thing a little late, since everyone is now having a panic about cutting agents in vapes killing people (Body count stands at ~15. The cops killed about 678 people so far this year, so y’know, keep vaping and avoid cops, it’s 45 times safer). At any rate, a school in my area was sold fantastically expensive devices that monitor areas for vaping, and report to the school administration when someone does it. The devices are on a subscription model, so they’re not just expensive once, they stay expensive.
This got me wondering what it actually takes to detect vape… vapor. Vape juice is mostly propylene glycol and glycerine, plus a dab of flavor and possibly nicotine. I have two theories about ways to detect this. One is that there will be some material produced by vaping that is detectable with a gas sensor. The other way is that phat clouds can be picked up by a particulate sensor, and the fact that it picks up smoke too is just fine, since the kids aren’t supposed to be smoking in the bathroom either.
MQ-2 | Combustable gasses, LPG, propane, hydrogen, probably also methane |
MQ-8 | Just hydrogen |
MQ-4 | Methane and natural gas |
MQ-3 | Alcohol |
MQ-6 | LPG, iso-butane, propane |
MQ-5 | LPG, natural gas, “town gas” |
MQ-135 | Carbon monoxide, carbon dioxide, ammonia, nitrogen oxide, alcohols, “aromatic compounds”, “sulfide”, and smoke |
MQ-9 | Carbon monoxide, LPG |
CMJU-1100 | VOCs, toluene, formaldehyde, benzene, and so on |
There’s a lot of overlap in these sensors, as well as a lot of ambiguity in their datasheets. “Sulfide” isn’t a thing without whatever it’s a sulfide of. Hydrogen sulfide is a toxic and terrible-smelling gas. Cadmium sulfide is a bright yellow solid. “Town gas” is typically a mix of carbon monoxide and hydrogen. LPG is also a mix, including propane, butane, and isobutane, so having it in a list with any of those is kind of redundant.
I haven’t tested yet, but I suspect that the sensors most likely to detect sick clouds are the MQ-3, the MQ-135, and maaaaybe the CMJU-1100. The MQ-3 claims to detect alcohol, as in a breathalyzer, but the family of alcohols is actually pretty large. There’s ethyl (drinkin’ alcohol) and isopropyl (cleanin’ alcohol) and methyl (killin’ alcohol), in addition to some stuff people don’t typically think of as alcohols, like the sugar alcohols, which includes glycerine. Since glycerine is in vape juice, perhaps the sensor will detect it.
The actual mechanism of these sensors is interesting. They appear to the circuit as a resistor that changes resistance in the presence of a gas. The resistor is made of tin dioxide, which has a resistance that drops when exposed to the gasses, but it only responds quickly if the device is hot, so there is also a built-in heater for the sensors.
Because the sensors have little heaters in them, A) they smell weird when they power up for the first time and B) they take a while to stabilize. I powered them up and watched them on the Arduino serial plotter until the outputs more or less leveled out. Then I vaped at them.
Pretty much all of the sensors had some sort of response, but the thing that seemed to vary between them was that some responded faster than others. The next step is going to be logging which ones are outputting what, so I can tell which ones had the fast response and which ones had the strongest response.
The sensors also have a slight response when I just blow at them with normal breath (I have a control! I’m a scientist, doin’ a science!). Interestingly, for some of the sensors, the reaction to my normal breath was a deviation downwards/towards a lower value, while the vape reactions was uniformly a deviation upwards/towards a higher value. This suggests that including one of the sensors that indicates vaping by the sign of its change would serve as a check, since only vaping would cause both sensors to go up, and normal breath would cause one to go up and one to go down.
int readings[9] = {0,0,0,0,0,0,0,0,0}; int index = 0; void setup() { Serial.begin(9600); } void loop() { //Read all the analog inputs from A0-A8 (I think they're consecutive...) index = 0; for(int ii = A0; ii <= A8; ii++ ){ readings[index] = analogRead(ii); index++; } for(int jj = 0; jj < index-1; jj++){ Serial.print(readings[jj]); Serial.print(","); } Serial.println(readings[index-1]); }
On Looking into Mouse Sensors
That is to say, the sensors from optical mice, rather than a sensor intended to detect the small rodent.
I have 10 boards from optical mice and three desoldered sensors. Among that bunch there are two common IC packages, a 16-pin staggered DIP (4 units) and an 8-pin staggered DIP (6 units). There is also a 20-pin staggered DIP, and two 12-pin DIP packages.
Most of the chips were made by Agilent, or Avago, a spin-off of Agilent that eventually bought Broadcom and started operating under that name. A couple are from At Lab, or as they style themselves “@lab”.
The chip interfaces are very heterogeneous. Some of them just output PS2 data and clock signals, and so are a very integrated mouse IC. Some of them output quadrature signals for x and y motion.
I had high hopes for using these mouse sensors for a couple of hacks. One of them is that they are essentially optical flow processors, so you can use them to either get velocity based on the observed motion of stationary objects from a moving platform, assuming you know how far away the objects are (and so get odometry for a moving robot by watching the ground roll by). The inverse of that is that you can also get how far away an object is assuming that it is stationary and you know your own speed (for height over ground detection in a drone, for example).
Ultimately, though, I don’t think this stash of ICs is going to do the job I want. What I want is something I can drop into projects I’m working on, and reverse engineering each of these, finding the datasheets for ICs old enough to support PS2 protocol, and so forth, would be its own hassle of a project. USB optical mice are $7 or so, so I can’t really justify the effort to get these working, sort out optics for them, etc.
On top of that, drone optical flow sensors with the optics already sorted are like $10-20, so for that use case, I can just buy the part. For robot odometry, I can use the same part, or put optics on a USB mouse that can actually plug into a recent computer, instead of decoding quadrature or PS2.
It feels kind of weird to pick up one of my old projects that I had been kind of looking forward to, and realize that it’s simply not useful or interesting, but I guess that’s just how it goes. At least I can free up that parts drawer now!
Algorithmic bar stocking
Generally, stocking a bar is a pretty simple affair. You get a big bottle of your basic alcohols (rum, gin, vodka, whiskey, tequila), smaller bottles of some other stuff (vermouth, bitters, etc), and a bunch of mixers.
Given a well-stocked bar, you can make a lot of drinks. However, you can’t make all the drinks, or rather, you shouldn’t. Not all combinations of ingredients will work well together. A rum and Coke is fine. A Coke and Coke won’t impress anyone, and a Midori and Coke would be awful, so the upper bound on the number of drinks you can make with a set of N alcohols is much lower than pure math would suggest.
I’m very gradually building a barbot, which adds a further complication: the robot only has five pumps. So from all the available alcohols, mixers, and so on, I have to choose five (there’s also a practical concern, which is that pumping soda shakes it up badly, but I’m choosing to ignore that for now).
For example, gin, tonic, vodka, orange juice, and cranberry juice would let me make a Vodka and Tonic, G&T, Screwdriver, Gin & Juice, and a Cape Cod. That’s pretty good, with 5 different drinks available from 5 different ingredients (10 if you count “shot of gin”, “glass of orange juice”, and so on as drinks).
But I want to know what the set of five liquors with the most possible mixed drinks is. To that end, I’ve downloaded the complete set of mixed drinks from the webtender, which I plan to use as the data for making my drink set.
The algorithm is another matter.
Recent Comments