Obviously, this already exists, and it is called Minecraft, so I am talking about something other than that. #
I'm working on another post that has a bunch of profanity in it, and a couple other animations, and there are the other literally hundreds of projects I am working on, but I don't want to work on any of that stuff, I need to take a break, and write about simple happy fun stuff.#
I actually have a simple happy fun stuff post in the hopper as well, because I have been having enormous amounts of fun with simple onion-skin animation, and I'd like to write about that. But I want to be extremely careful, because I am pretty sure the app I am using is actually aimed at kids, and I am going to do my best to ensure that anybody who comes by to read that post doesn't have to deal with the rest of my work, which is actually kind of sweary.#
So instead, I'm going to admit that I'm nuts and that, to relax, I like to think about building crazy things, and some of those things might actually be practical, if, say, someone else built it, rather than me possibly one day having the chance to sit down and do it right. #
Here's something I want to build but probably will never get around to, which I really wish someone else would build, because it would be awesome to have around. I have a lot of ideas like this. Writing them all up is a big reason I have the blog part, so here goes—#
Eventually I will get around to doing a real post, or possibly a fractal infinite set of posts, on the Loaf Question, but basically it's the story of how I, well, took apart another man's life's work, poked around inside a machine intended to hold every secret, ever, and, umm, repurposed it for my own devices. Literally. #
Apparently this is something I keep doing, I don't know, something something human. #
Seriously, if you want to go figure it out yourself, stop reading this post Right Now and go see the forum thread, because I present it as a mystery there. It's not too long a read, and in fact one of the original builders of the great machine in question, came by and, well, I have to say, that was literally amazing for me. #
And you will absolutely recognize the machine I'm talking about, and exactly whose life I'm rummaging around in, once it makes its appearance, trust me. This is an amazing piece of human history, and nobody, besides the original madmen, has ever taken it apart and rummaged around the way I did. No joke.#
Suffice to say, the rest of this post is, apparently, once again, about one incredibly amazing life's work, and you get one chance to discover just what the fucking hell I was looking for, and what I found, when I discovered the Snarfs, Turtles, Recipes, Cookbooks and Fossils. Let alone the Ent. #
So go take a look there, and then come back here for another fabulous episode of "Gary Teter rummages through someone else's life's work, and makes a macrame owl that is also a potholder."#
Right, so for me the interesting part of GitHub is actually the git part. It's the storage part, just like a regular file system, but it is versioned. #
Each version is a parallel universe, where things were just a little (or a lot) different. #
And it lets you compare, what is the difference between this universe, and that one.#
Also, the past is just another parallel universe, so you get a time machine, too.#
And if someone makes something, and you want to take that thing and make it yours, you can, in fact, make your own parallel universe. With your own time machine.#
I don't know if GitHub has this, but I am going to say that they also have, or should have, an easy way to spin up one of those parallel universes, to breathe its life into a virtual machine that can execute the code I have put there. This part is basically AWS Lambda, I want as little friction as possible, I want that virtual machine to behave as if it was always there, listening for anytime anyone, anywhere, wants to call it and ask it to do something#
Also, I would like this universe to be operated by someone who has solved the very, very hard problem of keeping my universe EXACTLY THE FUCKING WAY I SET IT UP WITHOUT RANDOMLY CHANGING THE RULES OF THE UNIVERSE ON ME JUST BECAUSE SOME ASSHOLE CHANGED SOMETHING WAY OVER THERE IN THEIR OWN GODDAMN UNIVERSE. #
There is code today running, at my employer, that processes millions of dollars of real money all the time all day long. My paycheck depends on that code, and so do a lot of other people's. Due to some quirks of history and the fact that when you are sailing a ship, you need to actually keep operating that ship while a) going where you need to go, b) repairing the ship, c) adding entire new masts and sails and shit to the ship, and d) replacing the parts that wear out, my paycheck, as well as a lot of others, also depends on a library of code that I wrote more than twenty years ago.#
Obviously, you want to replace the old code, we are in the middle of a long, long process of paring away and refactoring and stripping off pieces and replacing them with modern parts. And it is going well, even though everything is always on fire. But for now, that other code is still in there. And that code has gone through makefiles, jam files, ant files, I don't remember what else, because you know the last time I fixed a bug in that code? Probably a decade ago. I can't remember. #
Code doesn't actually get old, and creaky, and break. All the shit it's hooked up to is what changes, behind its back, when the code isn't looking. If you have code that does a thing, it can keep doing that thing. It's when you need it to do a different thing, or the other things that code is connected to change on it, which is, well, doing a different thing, that's when you need to change the code.#
Here's what I do know about that old code. If I needed to, if we found a bug, I could build it again. I do not mean I could write it again, though I could do that, and have, better, in various forms throughout the years, and we're using some of those parts now, and some of them are now due for replacement. We barely use any of the original code by now, and what's left is on its way out. No, what I mean is, I have all the jars and libraries and whatnot that I need to compile it, one click, from original source all the way to the various packaged installers we used to offer back in the day. #
I think I can actually execute the build files themselves, the ones that build literally everything. Unfortunately, that code needs to run on machines that are twenty years different from what that code originally required and expected, so I dunno if I can actually run that makefile. But, if I had an appropriately configured virtual environment, I could do it there. Really, though, we're down to a handful of jars, and you can do those by hand. But the jars needed to build those jars, all that stuff, I have that in my own parallel universe time machine. #
Which, now that I think about, has gone through rcs, cvs, svn and git. #
I am getting used to the idea that when I build my code, it's an entirely reasonable thing that my build system will go out on the internet and download things to a special little cache that is literally outside the area, under version control, where I stick the fucking jars I need, and I can use my own time machine to root around and figure out what the idiot I was twenty years ago had in mind when I wrote this old, crappy code in the first place.#
What I am saying here is, I have opinions on the importance of the stability of environments and systems that I have spent ridiculous amounts of time and care setting up and suddenly now I'm outside my happy place and need to go back to looting other people's ideas.#
I haven't been keeping up with what Dave is doing with Drummer and Drumkit the past few days regarding GitHub, so I have no idea if he's already spelled out his ideas in this space, and I'm the kind of person that is way too impatient to go see.#
I think what I want, and I'm kind of thinking out loud here, is an outline.#
I am doing an un-outliney thing here, and separating the commentary from the actual example outline, because it's easier for me to see what it should look like when it's as close as possible to the final form, and parts of the outline I'm presenting, are, naturally, meant to be collapsible for their own reasons apart from any context I want to provide.#
It's got a lot of attribute set up behind the scenes, but I want it to read as clearly as possible. So you can think of the below as representing the "rendered" version, similar to how in Drummer a node representing a tweet is presented with a bird icon, indicating there is more information behind the scenes. The bird is an affordance, this is more like a dynamic summary or something, I guess? Maybe a virtuality.#
The "this is an icon" text is the sort of thing that is automatically generated. The "when you click it" is the description I wrote as the provider of the code. #
When you click on the various things, like "revised 22 times", you could pull up the suitcase icon to edit attributes. I guess this thing would probably need a pretty structured editor.#
But as long as I'm making up work I'm not going to do, maybe it navigates to a repository or displays a history inline, or something. I like the history inline thing, now that I think about it for exactly two seconds.#
The part under "here is the code" is exactly what you would put into your icon bar or menu bar opml file in Drummer. In fact, it gets put into your icon bar, because what's in your icon bar is actually a node that points here.#
Here, in fact, is a place in GitHub land. It's a parallel universe you can point to and navigate to, and be assured that when you look for it, there it is, the way you left it.#
The "standard string" part goes to the official definition, which has been carefully thought through, unlike this design. The entire "what it expects", "what it provides" section is automatically generated and cannot be edited. Imagine it was created by the compiler or linker or something. Part of the signing process, perhaps. #
(There should probably be a signing process, somewhere, but I really hate those, they are devised by people who failed to work enough cruelty into setting the clock on a VCR, do not get me started.)#
Often, the input will be opml or JSON, but here it is just a string.#
The "standard environment" takes you to details about, well, the current standard environment. The standard environment is what does things like cleans strings etc. It's a very narrow subset of verbs, just the ones that keep changing but are expected to provide consistent, safe, behavior.#
"Limited HTML" is obviously defined somewhere, basically it's some escape entities and maybe bold tags. The standard environment is extremely good at parsing and escaping. "Limited HTML" could also be, say, Markdown or something else.#
Discovery of these snippets of Drumkit, whatever you want to call them, as well as the obvious gaping security issues to be thought through, are left as an exercise to the reader. Like, maybe there's a big outline, or we all share links or something? I don't know.#
And, I dunno, some way to install these little Drumkit widgets or extensions or plugins or whatever they are, the usual UI stuff. #
I do think maybe, perhaps, I really have not thought this through at all, actually, security issues might get easier to deal with if you can lock down the definition of what you're dealing with, that is, the universe isn't going to change behind your back. #
But, no universe is an island (ha!), and your code will still have to deal with input that may be trying to kill it, or make it do something you never intended. So if an outside universe is sending you information that exploits a bug in yours, you can't really protect against that, can you? It's the record that breaks your player, thank you Madame Tortue. This is a pretty hard problem.#
OK, so that's the Drummer part, obviously this Drumkit code runs inside Drummer. And it's accessing a node and its properties, so the security description above needs work, it's not just consuming a string. #
But, you know, it doesn't have to run inside your browser or on your machine.#
Maybe your little snippet of Drumkit actually is just waiting there, up in GitHub land, waiting for someone to ask it to do something. #
It wouldn't be displaying a dialog box to show you what you have selected, duh.#
What would that Drumkit code be waiting to do for me, or you, up there in the cloud? It could, say, talk to other things in the cloud, even other bits of Drumkit code, or bits of code that weren't written in Drumkit at all, but know how to handle a standardized remote call.#
I dunno what exactly that code might get up to, but I am very curious to find out.#
Also, that is a seriously huge amount of work I've just described. If you're thinking that Dave, or anybody else, could just up and build that, or that I expect anybody to, or that I have the time to, well, you might be disappointed. #
Of course, if you think you might like to just up and build that, or parts of it, holy crap please get going because I really want to see something like this, in one form or another.#
"Blog" is a real word that will not drive me insane every time I hear it#
Why would people watch other people's home videos#
Why would you use an RSS reader to download giant audio files so you can listen to people talking when you could use an RSS reader to read#
Why would people want to give rides to strangers in their own car in their spare time#
It is completely rational to download the same bytes, over and over, to watch a video more than once#
People would actually take the idea seriously that a fucking computer is capable of safely driving a car in actual traffic with actual human lives right down to fucking school zones with children for fucks sake have you seen them children are literally insane without actual fucking magic being applied#
Why would people want to read Christmas letters and participate in Thanksgiving arguments, with everybody they have ever known, constantly, every day #
OK I admit that wasn't actually my question. But I did get Facebook wrong. Only an actual, no-joking, cartoon supervillain could be responsible for what literally billions of people see, and talk about, and therefore think, and therefore believe, and therefore act on, and yet think so little of the implications of that, and care so little about anything except growth and domination and power, that blame for literally uncountable actual human deaths, and social divides that could cause far more, can be aimed directly, solely, at their individual, specific, personal, neglect and greed. Fuck you, Mark. Think about somebody besides your fucking self for one fucking second. You fucking, fucking asshole.#
Why would people want to be notified about what you had for lunch on their phone#
Daniel Amos will one day receive the recognition they deserve#
Bitcoin is not the stupidest fucking idea ever that we will later discover is actually an information attack from a parallel universe#
I believe the jury is still out on whether it's actually an attack from another kurt, but I just wanted to put that out there. I will write more about this, as I have opinions about performing waste work when not one, but two, towns where I've lived, have been completely destroyed by natural disasters. I hid from the tornado that destroyed Xenia, and Paradise has burned to the ground. This place is far, far more fragile than any of us want to admit, and we're all setting tulip bulbs on fire.#
The America I grew up in, the one that believed in immigration and immunizations and science and taxes and parks and was arcing toward justice, however imperfectly, would be the one I'd live in#
Using technology to enable everyone to talk to everyone else will increase understanding and basic human respect#
Why would anybody want to watch other people play video games#
Dave Winer should adopt "Drumkit" as the name for Drummer's scripting language. HA!! FINALLY GOT ONE!! IN YOUR FACE, UNIVERSE!!! #
Obviously, this already exists, and it is called Minecraft, so I am talking about something other than that. #
I'm working on another post that has a bunch of profanity in it, and a couple other animations, and there are the other literally hundreds of projects I am working on, but I don't want to work on any of that stuff, I need to take a break, and write about simple happy fun stuff.#
I actually have a simple happy fun stuff post in the hopper as well, because I have been having enormous amounts of fun with simple onion-skin animation, and I'd like to write about that. But I want to be extremely careful, because I am pretty sure the app I am using is actually aimed at kids, and I am going to do my best to ensure that anybody who comes by to read that post doesn't have to deal with the rest of my work, which is actually kind of sweary.#
So instead, I'm going to admit that I'm nuts and that, to relax, I like to think about building crazy things, and some of those things might actually be practical, if, say, someone else built it, rather than me possibly one day having the chance to sit down and do it right. #
Here's something I want to build but probably will never get around to, which I really wish someone else would build, because it would be awesome to have around. I have a lot of ideas like this. Writing them all up is a big reason I have the blog part, so here goes—#
Eventually I will get around to doing a real post, or possibly a fractal infinite set of posts, on the Loaf Question, but basically it's the story of how I, well, took apart another man's life's work, poked around inside a machine intended to hold every secret, ever, and, umm, repurposed it for my own devices. Literally. #
Apparently this is something I keep doing, I don't know, something something human. #
Seriously, if you want to go figure it out yourself, stop reading this post Right Now and go see the forum thread, because I present it as a mystery there. It's not too long a read, and in fact one of the original builders of the great machine in question, came by and, well, I have to say, that was literally amazing for me. #
And you will absolutely recognize the machine I'm talking about, and exactly whose life I'm rummaging around in, once it makes its appearance, trust me. This is an amazing piece of human history, and nobody, besides the original madmen, has ever taken it apart and rummaged around the way I did. No joke.#
Suffice to say, the rest of this post is, apparently, once again, about one incredibly amazing life's work, and you get one chance to discover just what the fucking hell I was looking for, and what I found, when I discovered the Snarfs, Turtles, Recipes, Cookbooks and Fossils. Let alone the Ent. #
So go take a look there, and then come back here for another fabulous episode of "Gary Teter rummages through someone else's life's work, and makes a macrame owl that is also a potholder."#
Right, so for me the interesting part of GitHub is actually the git part. It's the storage part, just like a regular file system, but it is versioned. #
Each version is a parallel universe, where things were just a little (or a lot) different. #
And it lets you compare, what is the difference between this universe, and that one.#
Also, the past is just another parallel universe, so you get a time machine, too.#
And if someone makes something, and you want to take that thing and make it yours, you can, in fact, make your own parallel universe. With your own time machine.#
I don't know if GitHub has this, but I am going to say that they also have, or should have, an easy way to spin up one of those parallel universes, to breathe its life into a virtual machine that can execute the code I have put there. This part is basically AWS Lambda, I want as little friction as possible, I want that virtual machine to behave as if it was always there, listening for anytime anyone, anywhere, wants to call it and ask it to do something#
Also, I would like this universe to be operated by someone who has solved the very, very hard problem of keeping my universe EXACTLY THE FUCKING WAY I SET IT UP WITHOUT RANDOMLY CHANGING THE RULES OF THE UNIVERSE ON ME JUST BECAUSE SOME ASSHOLE CHANGED SOMETHING WAY OVER THERE IN THEIR OWN GODDAMN UNIVERSE. #
There is code today running, at my employer, that processes millions of dollars of real money all the time all day long. My paycheck depends on that code, and so do a lot of other people's. Due to some quirks of history and the fact that when you are sailing a ship, you need to actually keep operating that ship while a) going where you need to go, b) repairing the ship, c) adding entire new masts and sails and shit to the ship, and d) replacing the parts that wear out, my paycheck, as well as a lot of others, also depends on a library of code that I wrote more than twenty years ago.#
Obviously, you want to replace the old code, we are in the middle of a long, long process of paring away and refactoring and stripping off pieces and replacing them with modern parts. And it is going well, even though everything is always on fire. But for now, that other code is still in there. And that code has gone through makefiles, jam files, ant files, I don't remember what else, because you know the last time I fixed a bug in that code? Probably a decade ago. I can't remember. #
Code doesn't actually get old, and creaky, and break. All the shit it's hooked up to is what changes, behind its back, when the code isn't looking. If you have code that does a thing, it can keep doing that thing. It's when you need it to do a different thing, or the other things that code is connected to change on it, which is, well, doing a different thing, that's when you need to change the code.#
Here's what I do know about that old code. If I needed to, if we found a bug, I could build it again. I do not mean I could write it again, though I could do that, and have, better, in various forms throughout the years, and we're using some of those parts now, and some of them are now due for replacement. We barely use any of the original code by now, and what's left is on its way out. No, what I mean is, I have all the jars and libraries and whatnot that I need to compile it, one click, from original source all the way to the various packaged installers we used to offer back in the day. #
I think I can actually execute the build files themselves, the ones that build literally everything. Unfortunately, that code needs to run on machines that are twenty years different from what that code originally required and expected, so I dunno if I can actually run that makefile. But, if I had an appropriately configured virtual environment, I could do it there. Really, though, we're down to a handful of jars, and you can do those by hand. But the jars needed to build those jars, all that stuff, I have that in my own parallel universe time machine. #
Which, now that I think about, has gone through rcs, cvs, svn and git. #
I am getting used to the idea that when I build my code, it's an entirely reasonable thing that my build system will go out on the internet and download things to a special little cache that is literally outside the area, under version control, where I stick the fucking jars I need, and I can use my own time machine to root around and figure out what the idiot I was twenty years ago had in mind when I wrote this old, crappy code in the first place.#
What I am saying here is, I have opinions on the importance of the stability of environments and systems that I have spent ridiculous amounts of time and care setting up and suddenly now I'm outside my happy place and need to go back to looting other people's ideas.#
I haven't been keeping up with what Dave is doing with Drummer and Drumkit the past few days regarding GitHub, so I have no idea if he's already spelled out his ideas in this space, and I'm the kind of person that is way too impatient to go see.#
I think what I want, and I'm kind of thinking out loud here, is an outline.#
I am doing an un-outliney thing here, and separating the commentary from the actual example outline, because it's easier for me to see what it should look like when it's as close as possible to the final form, and parts of the outline I'm presenting, are, naturally, meant to be collapsible for their own reasons apart from any context I want to provide.#
It's got a lot of attribute set up behind the scenes, but I want it to read as clearly as possible. So you can think of the below as representing the "rendered" version, similar to how in Drummer a node representing a tweet is presented with a bird icon, indicating there is more information behind the scenes. The bird is an affordance, this is more like a dynamic summary or something, I guess? Maybe a virtuality.#
The "this is an icon" text is the sort of thing that is automatically generated. The "when you click it" is the description I wrote as the provider of the code. #
When you click on the various things, like "revised 22 times", you could pull up the suitcase icon to edit attributes. I guess this thing would probably need a pretty structured editor.#
But as long as I'm making up work I'm not going to do, maybe it navigates to a repository or displays a history inline, or something. I like the history inline thing, now that I think about it for exactly two seconds.#
The part under "here is the code" is exactly what you would put into your icon bar or menu bar opml file in Drummer. In fact, it gets put into your icon bar, because what's in your icon bar is actually a node that points here.#
Here, in fact, is a place in GitHub land. It's a parallel universe you can point to and navigate to, and be assured that when you look for it, there it is, the way you left it.#
The "standard string" part goes to the official definition, which has been carefully thought through, unlike this design. The entire "what it expects", "what it provides" section is automatically generated and cannot be edited. Imagine it was created by the compiler or linker or something. Part of the signing process, perhaps. #
(There should probably be a signing process, somewhere, but I really hate those, they are devised by people who failed to work enough cruelty into setting the clock on a VCR, do not get me started.)#
Often, the input will be opml or JSON, but here it is just a string.#
The "standard environment" takes you to details about, well, the current standard environment. The standard environment is what does things like cleans strings etc. It's a very narrow subset of verbs, just the ones that keep changing but are expected to provide consistent, safe, behavior.#
"Limited HTML" is obviously defined somewhere, basically it's some escape entities and maybe bold tags. The standard environment is extremely good at parsing and escaping. "Limited HTML" could also be, say, Markdown or something else.#
Discovery of these snippets of Drumkit, whatever you want to call them, as well as the obvious gaping security issues to be thought through, are left as an exercise to the reader. Like, maybe there's a big outline, or we all share links or something? I don't know.#
And, I dunno, some way to install these little Drumkit widgets or extensions or plugins or whatever they are, the usual UI stuff. #
I do think maybe, perhaps, I really have not thought this through at all, actually, security issues might get easier to deal with if you can lock down the definition of what you're dealing with, that is, the universe isn't going to change behind your back. #
But, no universe is an island (ha!), and your code will still have to deal with input that may be trying to kill it, or make it do something you never intended. So if an outside universe is sending you information that exploits a bug in yours, you can't really protect against that, can you? It's the record that breaks your player, thank you Madame Tortue. This is a pretty hard problem.#
OK, so that's the Drummer part, obviously this Drumkit code runs inside Drummer. And it's accessing a node and its properties, so the security description above needs work, it's not just consuming a string. #
But, you know, it doesn't have to run inside your browser or on your machine.#
Maybe your little snippet of Drumkit actually is just waiting there, up in GitHub land, waiting for someone to ask it to do something. #
It wouldn't be displaying a dialog box to show you what you have selected, duh.#
What would that Drumkit code be waiting to do for me, or you, up there in the cloud? It could, say, talk to other things in the cloud, even other bits of Drumkit code, or bits of code that weren't written in Drumkit at all, but know how to handle a standardized remote call.#
I dunno what exactly that code might get up to, but I am very curious to find out.#
Also, that is a seriously huge amount of work I've just described. If you're thinking that Dave, or anybody else, could just up and build that, or that I expect anybody to, or that I have the time to, well, you might be disappointed. #
Of course, if you think you might like to just up and build that, or parts of it, holy crap please get going because I really want to see something like this, in one form or another.#
"Blog" is a real word that will not drive me insane every time I hear it#
Why would people watch other people's home videos#
Why would you use an RSS reader to download giant audio files so you can listen to people talking when you could use an RSS reader to read#
Why would people want to give rides to strangers in their own car in their spare time#
It is completely rational to download the same bytes, over and over, to watch a video more than once#
People would actually take the idea seriously that a fucking computer is capable of safely driving a car in actual traffic with actual human lives right down to fucking school zones with children for fucks sake have you seen them children are literally insane without actual fucking magic being applied#
Why would people want to read Christmas letters and participate in Thanksgiving arguments, with everybody they have ever known, constantly, every day #
OK I admit that wasn't actually my question. But I did get Facebook wrong. Only an actual, no-joking, cartoon supervillain could be responsible for what literally billions of people see, and talk about, and therefore think, and therefore believe, and therefore act on, and yet think so little of the implications of that, and care so little about anything except growth and domination and power, that blame for literally uncountable actual human deaths, and social divides that could cause far more, can be aimed directly, solely, at their individual, specific, personal, neglect and greed. Fuck you, Mark. Think about somebody besides your fucking self for one fucking second. You fucking, fucking asshole.#
Why would people want to be notified about what you had for lunch on their phone#
Daniel Amos will one day receive the recognition they deserve#
Bitcoin is not the stupidest fucking idea ever that we will later discover is actually an information attack from a parallel universe#
I believe the jury is still out on whether it's actually an attack from another kurt, but I just wanted to put that out there. I will write more about this, as I have opinions about performing waste work when not one, but two, towns where I've lived, have been completely destroyed by natural disasters. I hid from the tornado that destroyed Xenia, and Paradise has burned to the ground. This place is far, far more fragile than any of us want to admit, and we're all setting tulip bulbs on fire.#
The America I grew up in, the one that believed in immigration and immunizations and science and taxes and parks and was arcing toward justice, however imperfectly, would be the one I'd live in#
Using technology to enable everyone to talk to everyone else will increase understanding and basic human respect#
Why would anybody want to watch other people play video games#
Dave Winer should adopt "Drumkit" as the name for Drummer's scripting language. HA!! FINALLY GOT ONE!! IN YOUR FACE, UNIVERSE!!! #