"We live in interesting times" - the tagline of this blog says it all. After watching Dave Snowden's talk recently about how not to manage complexity, it put me in a fugue state about what the web means for generations to come. He makes many compelling cases in that talk about why the web is essentially dead and broken and no longer the emancipatory anarchist utopia it once was.
Another compelling point he makes is the war of the skinbag versus silicon. Instead of being slaves to machines, or turning them into "fetishistic devices", we should use them as a tool to augment our lives, not replace them. I came to this talk far too late in the game, and was Fugued not because his ideas were unique (I've been shouting loudly about privacy issues for some time), but because they were compelling. So few speakers can put forth a case like that for me to shake me out of old patterns and narratives.
Recently I've been compartmentalizing my computing environment into multiple discrete single purpose environments using Qubes, and Virtual Machines, and making my computing more compartmentalized and discrete. The reason I do this is because complexity has finally crept up on me in the most subtle of ways and has caused me to nearly give up computing entirely and take up goat farming. It is not only physically taxing, but mentally taxing too. Complexity is not only hard to manage, but impossible without someone like Dave to impart wisdom.
I managed to sort of get my computing environment back into a flow state where I can work with a modicum of security and privacy, but it is by no means perfectly secure. I adopted the idea of 'containered' apps years ago instead of the old approach of one monolithic app that does all the things. Browsers, for example, are a perfect example of an app designed for 'all of the things', and hence very possible to break and hack into. Dave briefly mentioned (blackhat) hacking, but overlooked its opposite which is ethical hacking, or whitehat hacking. I have been doing whitehat stuff for years but never done anything serious with it until recently. Enter context switching:
Context switching has been around for years, but people rarely call it that. Switching between private and public modes is context switching. Having an app for reading the news, and then stepping into another app for looking up directions is context switching. But why is it important? Why do we naturally switch between contexts without caring for what it is? Well the truth is: humans are incapable of multitasking. Machines are great for multitasking, but humans; not so much. SO then it is in an engineer's interest to magnify context switching many folds to see if this impacts computing in some way. Here are the pros and cons for context switching:
You can get more done. The old idea of multitasking can be abolished, and it is impossible to contaminate two different states, or working environments with each other.
Relatively more secure. Got a shady .DOCX document in an email that you accidentally opened? Thankfully context switching is possible via virtual machines, and so even the worst malware only affects that VM. Depending on what you're doing on that machine (work or play). Do not mix work with play.
Rollback to a pristine state. This is not a unique concept. The ideal computing environment is when you start with a blank slate and are not reliant on a monolithic framework for working. You get the chance to experiment this way and toy with new concepts the moment you start working again, because a pristine state means more than a blank state - it also means bad habits are more easily broken.
Overhead. A great source of pain can spring from overhauling a computing environment for the purposes of context switching. Luckily things like Qubes have this behaviour built in, but Qubes is not always ideal if you're a tinkerer like me, and then proceed to naively roll your own environment. Invariably bespoke solutions lead to mental taxation and fugue states. Try to avoid getting fugued.
Time. There is a huge opportunity cost to context switching, and you might even lose friends in the process. Be willing to sacrifice large portions of your weekend for building a context switching environment. Be also willing to forgo healthy social outings and job opportunities.
Portability. I am aware of such things as Vagrant which are built for web developers who work on many different machines throughout their life and just want to pick up where they left off in terms of coding, and the operating system they use. One tradeoff of context switching is you have to be willing to drop the convenience of Vagrant and have a monolithic device. The key difference being that it is a static monolithic device with all the features and benefits of 'transient', or kiosk mode computing.