Minecraft as a Kubernetes admin tool
eric-jadi.medium.com
eric-jadi.medium.com
"Lose/Lose is a video-game with real life consequences. Each alien in the game is created based on a random file on the players computer. If the player kills the alien, the file it is based on is deleted. If the players ship is destroyed, the application itself is deleted."
> "Lose/Lose is a video-game with real life consequences. Each alien in the game is created based on a random file on the players computer. If the player kills the alien, the file it is based on is deleted. If the players ship is destroyed, the application itself is deleted."
That's awesome! Reminds me of a little virtual tamagochi I programmed in college called Virus.
Virus would only represent itself as a file called for example Toby.virus and it would wander around in folders (only 2 levels deep) and you could give him ascii files with a ".food" extension that includes strings and depending on the size of the file the virus would get full.
If too full it would lave ".puke" files with some of the strings from the food file. And otherwise randomly leave ".poop" files around you'd have to clean up to make virus stay healthy.
You could see its stats in the ".virus" file.
I even implemented mating and light genetic traits that can be passed down
Good times
Brilliant
I think good interfaces wrap these intricacies in powerful metaphors that build a bridge between the human and the computer, and that it is right and proper that the human meets the computer more than halfway. I think things like desktops and video games as admin tools* are poor user interfaces because they present poor metaphors for how work is done or how concepts are arranged, instead of good metaphors for computation.
This creates brittle interfaces that are difficult to learn and troubleshoot because
I think the terminal is an antiqutated interface that needs to be modernized, but there's a good reason it's still used. Bash is a pretty reasonably metaphor for computation. When things go wrong with your computer, you're better able to reach into it's guts, hear the hum of it's engine, and figure out what's wrong. As I said, it's antiquated and hostile to newcomers, so ultimately it isn't that good an interface. But there is no ceiling for how well you can master it or what you can do with it.
Contrast that with a desktop interface, where if things go wrong, your only option is to muck about in a settings application. If your needs have been correctly anticipated, this works like butter, with very little friction. If your needs have been incorrectly anticipated, it works okay, but is probably frustrating. If your needs have not been anticipated at all, you may be able to find a workaround, but only if you have a high degree of mastery in the interface. And you may be out of luck.
Additionally, achieving this high degree of mastery is difficult and not generally worthwhile, because these interfaces are subject to frequent changes. You don't accrue more and more skill over time throughout your career, unless you happen to work in this industry or are a motivated power user. And as you upgrade your OS, things are moved around and tweaked, and your mastery degrades.
I realized this was the case when my hands were injured for 10 months from typing, and I could only compute on my phone. I couldn't make anything, I could only browse premade apps and pray my needs had been anticipated. I couldn't fix anything, my only path to getting useful debugging information involved a computer. I was frustrated and felt like I didn't understand what my phone was doing or why it wasn't working. And I realized that is how most people feel about their computers.
* I do realize these are fun toys/proofs of concept, and I totally appreciate them on that level.
That does indeed mirror how games work, however for all of our systems we do not perfectly know the actual "true" state of the graph. Even the oldest, simplest, most well understood systems are not understood perfectly. The fog of war is ever present.
To present systems management without the "intricacies of computers" you either have to not care where the actions lead you, or have a system that is perfectly understood. And if the latter is the case, then there is literally 0 value in a human pressing the buttons.
This is a false dichotomy—why would there be no middle ground? It's in that middle ground that all useful abstractions reside, and many of them are effectively lossless compressions of some "computational intricacies," which makes it possible to non-misleadingly interact through some simplified interface.
This isn't to say that forming such a simplified interface is impossible to get wrong, but to say the results will necessarily be poor is overly dismissive.
The problem is that no code movement did not open up the field to a lot more people.
It also is not all roses. From a maintenance, collaboration and correctness standpoint there are many footguns that have caused massive pain. I've yet to see other no code solutions trying to learn from these lessons.
Advanced user can make pretty customized stuff happen in excel with VBA and macros - but then it's no longer no-code. It's similar to how python has disseminated to a degree into various white-collar professions but it's still on a small percentage basis.
By the time you're in the 0.03% (or less) who are using VBA, it's probably not a no-code solution anymore.
Maybe... but I don't think it can be done in the exact format as presented in the article though.
"Hey we've a new version to deploy, can you punch that 'default:service:hello-world' chicken until it ... turns into smoke? You can keep the egg ;)"
A good UI needs to be efficient to operate while easy enough to form mental model (abstraction) around it. So, basically not a Minecraft server. Nice try, Now get back to work.
Then the 'cloud' came along and blew all that away with autoscaling and completely non-persistence of machines... this _really_ captures it in my eyes, where we're now managing large farms of desposable infrastructure. It shows the idea of culling large amounts of it and scaling, but still brings back the 'personal' feel that the servers are living things with feelings (。◕‿◕。).
Also, throwJan22's creeper idea for chaos monkey implementation is fantastic (and I guess not a particuarly hard thing to implement at this point :P )
If you could break the fences between the namespaces and just blow open any network policies between them would be great :D
I've worked at a few companies that loved SlackOps, but MinecraftOps seems a lot more fun...
Regarding the plugin, there might be a need to detect the user that kills the chickens for auditing purposes, but the basic idea should work fine yeah.
It is an original game (twin stick shmup) made in Unity that is able to connect to a kubernetes cluster. You 'enter' into your nodes and the pods running on those nodes appear in that 'world' where you are able to shoot and destroy them. Replica Sets will of course re-create them, so they respawn and float around again.
My presentation skills suck, so it never got off the ground but I still visualise network traffic in my head that way. Would still love to roam around in networks and enjoy the graphics.
Real life farming for money!
This looks similar.