Shared posts

03 Feb 23:45

How to Succeed in Uncertain Times

by brandizzi

vintage bridge after earthquake crooked and shaken

Editor’s Note: This is a guest post from Kyle Eschenroeder.

“It is not given to human beings – happily for them, otherwise life would be intolerable – to foresee or predict to any large extent the unfolding of events. In one phase men seem to have been right, in another they seem to have been wrong. Then again, a few years later, when the perspective of time has lengthened, all stands in a different setting. There is a new proportion. There is another scale of values. History with its flickering lamp stumbles along the trail of the past, trying to reconstruct its scenes, to revive its echoes.” –Winston Churchill

As a much younger man, Churchill witnessed some of the most epic military failures of all time. In the decades before WWI there were no serious wars. This left plenty of room for academics to theorize about how new technology might be used in war; in fact, WWI was possibly the most thoroughly planned war in history.

Yet from the first encounter, the theories unraveled in the face of situations that could never have been predicted. The most respected generals in the world were made to look like amateurs. Their faith in abstract planning blinded them to the reality of the situation. It took years of conflict before they began to really adapt to the reality of their situation.

These generals didn’t realize that they were engaging in the world’s first truly modern battles. These battles required the ability to improvise more than they required detailed plans.

The same transition is currently happening in business. A plethora of business books came out this summer building on the concept of The Lean Startup methodology introduced by Eric Ries. That is, it is cheaper in most cases to run an experiment than to create a plan. Even massive companies are starting to turn their focus towards quickly implementing a strategy on a small scale to test a concept before rolling out a massive change.

Poke and prod rather than plan and plan.

This has implications not just in business on a grand scale, but on an individual level as well. Twenty-year career plans aren’t effective anymore. The amount of variables in our lives has multiplied, and with that, every day seems to contain growing uncertainty. There seem to be two schools of thought on how to deal with this increasing inconstancy:

  1. The Technophiles: These are the guys who say you should embrace everything that’s new. Technology will annihilate uncertainty. The aim is to integrate ourselves with machines as much as possible.
  2. The Paleophiles: These are the guys who say you should reject anything new, recover our ancient human history, and live according to that (effectively ignoring new uncertainties). Technology is making us less human. The aim is to detach ourselves from technology.

My goal here is to take a more sober look at ways to deal with (and even benefit from) the ever-increasing uncertainty of daily life. This isn’t a “middle” path of half-measures between the two views, but a totally new way to approach things.

Two Types of Uncertainty

The first thing to understand about our unpredictable world is that there are two types of uncertainty:

  1. Soft Uncertainty. This is the uncertainty you feel inside yourself. It encompasses the moral, spiritual, or philosophic uncertainties in your life, and the doubt that surrounds your choices in what to do and which way to go. It’s the uncertainty you feel before asking for a raise. It’s the uncertainty you feel before attempting a project. It’s the uncertainty of the existential crisis. It’s the uncertainty in the minds of generals at the start of WWI.
  2. Hard Uncertainty. This is uncertainty that exists outside of you. It’s the uncertainty that exists after you ask for a raise and after you begin your new project. It resides in the probabilities and randomness of the world. This uncertainty is the work of the Fates. This is the type of uncertainty that soccer moms and economic planners fail to solve, every time. It’s the fact that weapons will be used in ways never imagined.

If we look at these as problems, they are impossible to solve.

Soft Uncertainty seems, at first glance, to be a solvable problem. Just adopt the proper mindset – often that of some religion, nation, or political stance – and you’ll be golden. Many of us, however, are unable to adopt some ideology whole-heartedly.

Hard Uncertainty also seems like a lost cause. Each time we are promised some scientific or economic certainty, the forecasts miss and everything changes.

The problem isn’t uncertainty itself. The problem is our rejection of it.

Perhaps we don’t need to solve Soft Uncertainty by finding the answer. Maybe the ability to comfortably hold a paradox in our mind is the better answer.

Perhaps we can’t control Hard Uncertainty. Maybe we ought to position ourselves to actually benefit from things out of our control.

The tools we discuss below develop our strength to handle both types of uncertainty simultaneously.

Instead of becoming arrogantly certain, we will become confident in our uncertainty. Instead of pretending we can predict the future, we will be ready for a future we could never imagine.

“You get pseudo-order when you seek order; you get a measure of order and control when you embrace randomness.” –Nassim Nicholas Taleb

Some Things Are Certain

Let’s not forget that there are areas in life that are certain. John Kay explains the differences in Obliquity: Why Our Goals Are Best Achieved Indirectly:

“If you are clear about your high-level goals and knowledgeable enough about the systems their achievement depends on, then you can solve problems in a direct way. But goals are often vague, interactions unpredictable, complexity extensive, problem descriptions incomplete, the environment uncertain. That is where obliquity comes into play.”

The world isn’t pure chaos. If you want to learn to tie a bow tie, then you can find instructions on exactly how to do that. If you want to get fit, you know you’ll go far by eating less crap and working harder in the gym. It’s when you begin building a business, starting a romantic relationship, or writing a book that things get more complex. (Sure, there are best practices for these complex tasks, but these will only take you so far.)

These uncertain areas are the most interesting and the most valuable; they provide the most challenge, and thus the most growth, satisfaction, and ultimately, joy. It’s where your time is best spent, and where the concept of obliquity mentioned above factors in. Some problems — the complex ones, especially — require indirect solutions and the ebb and flow of a risk and discovery cycle.

The best chance you have at taking advantage of an uncertain world is to be operating with the proper framework. The tools below will take you a long way in developing that framework.

5 Tools for Dealing With Uncertainty

We are going to look at five tools for dealing with uncertainty through the emotional and professional lens, but understand that this is for the sake of space; many of these have the potential to benefit you in all areas of life where uncertainty resides. Which is to say, everywhere.

1. Stoicism: Focus On What You Can Control

When I was a day trader I would often lose thousands of dollars while making what I believed to be the correct trade. The next day I might make thousands of dollars while executing a foolish trade on a whim. If I allowed my emotions to tie themselves to these outcomes I would have gone broke within a month.

In an uncertain world we might have a great outcome follow a terrible choice or a terrible outcome follow a great choice.

The best we can do is stack the probability of winning in our favor and then act consistently towards winning.

This is terribly difficult because it hurts especially bad to lose while doing the “right” thing.

Stoicism is a powerful tool to help us through the emotional turmoil that this can cause.

Even more than any Roman philosopher, Nassim Nicholas Taleb has summed up what it means to be a modern Stoic:

Stoicism is about the domestication, not necessarily the elimination, of emotions. It is not about turning humans into vegetables. My idea of the modern Stoic sage is someone who transforms fear into prudence, pain into information, mistakes into initiation, and desire into undertaking.”

William Irvine has written the only true guidebook to modern Stoicism that exists (the Stoics didn’t bother with this, which tells you a lot about the differences between their minds and ours). In it, he describes one of the most important topics of Stoicism: control what you can, forget about the rest. He uses a tennis match to illustrate:

“Remember that among the things over which we have complete control are the goals we set for ourselves. I think that when a Stoic concerns himself with things over which he has some but not complete control, such as winning a tennis match, he will be very careful about the goals he sets for himself. In particular, he will be careful to set internal rather than external goals. Thus, his goal in playing tennis will not be to win a match (something external, over which he has only partial control) but to play to the best of his ability in the match (something internal, over which he was complete control). By choosing this goal, he will spare himself frustration or disappointment should he lose the match: Since it was not his goal to win the match, he will not have failed to attain his goal, as long as he played his best. His tranquility will not be disrupted.”

This is easier said than done. It takes constant practice to separate your emotions from external situations.

How do we go about this?

Every time you begin to feel anxious or upset, try practicing the Triad of Control. To do this, you simply distinguish, in any given situation, whether you have total control, no control, or some control. Then, focus on what is in your control with your whole being.

At first glance it seems like this may rob you of power. It’s acknowledging that you can’t, in fact, control everything. After some practice, though, you will notice a growing sense of control in your life. Instead of tiring yourself worrying about what-ifs and shoulding all over yourself, you are concerned with what you are able to do. You connect yourself to reality.

If you practice this consistently for a month or so you will notice that you actually seek out adversity. Consider Seneca’s description of a wise man:

“So far… is he from shrinking from the buffetings of circumstances or of men, that he counts even injury profitable, for through it he finds a means of putting himself to the proof and makes trial of his virtue.”

Working toward that mindset will make you a force in an uncertain world. You don’t hide when things shift, you push harder. You’re not afraid to learn when new skills become necessary. You aren’t afraid to see opportunities where others only see chaos.

For more on Stoicism check out Ryan Holiday’s quick and motivating The Obstacle is the Way, Tim Ferriss’s favorite essay by Seneca, or, if you want something comprehensive, William Irvine’s A Guide to the Good Life.

If you’d rather visit the primary texts (which are extremely readable and approachable; these guys were more concerned with solving problems than sounding smart) then I’d suggest Seneca’s Letters from a Stoic or Marcus Aurelius’s Meditations to start.

2. Make Many Small Bets

“People are bad at looking at seeds and guessing what size tree will grow out of them.” –Paul Graham

In most situations, it’s cheaper to test the validity of something than to spend a lot of time guessing about it.

In my business, StartupBros, we will use a blog post (investment: time) to gauge demand for information on a certain topic. We have an idea of what types of posts will hit, but we can never be certain. If a post elicits an extreme reaction from readers we consider building a paid course or coaching program based on that topic.

We make small bets (blog posts) and then pour more resources into the ones that show promise.

Venture capital funds operate in a similar way. They never know what is going to be the next Google or Facebook and so they are forced to make a ton of small bets, knowing that most of them won’t work out.

Paul Graham, founder of Y-Combinator, discusses the odd place this puts venture capitalists in:

“When you interview a startup and think ‘they seem likely to succeed,’ it’s hard not to fund them. And yet, financially at least, there is only one kind of success: they’re either going to be one of the really big winners or not, and if not it doesn’t matter whether you fund them, because even if they succeed the effect on your returns will be insignificant. In the same day of interviews you might meet some smart 19 year olds who aren’t even sure what they want to work on. Their chances of succeeding seem small. But again, it’s not their chances of succeeding that matter but their chances of succeeding really big. The probability that any group will succeed really big is microscopically small, but the probability that those 19 year olds will might be higher than that of the other, safer group.”

We can use this same approach to taking risks in our own lives. Put most of your resources into something safe while putting a small amount into extremely risky bets with massive potential.

An example of this for your career: keep your day job while working on a crazy startup at night.

If you’re operating in a random world you don’t want to have all your eggs in one basket. You want to be able to take a lot of small losses while being exposed to potentially massive wins.

3. Give Yourself Options

“[B]iology rarely rests with a single solution. Instead, it tends to ceaselessly reinvent solutions.” -David Eagleman, Incognito

An option is something you can take advantage of but don’t have to. If you buy a movie ticket then you’re guaranteed to be able to see a movie, but you don’t have to. That option cost you about $10. If a friend invites you to dinner it’s not a terrible cost to forgo the movie. A ticket to an AC/DC concert will be a much more expensive option.

Being exposed to more options means more potential opportunities.

Being able to move freely in life depends on the options you open up for yourself. Robert Greene explains how optionality is used in warfare:

“The world is full of people looking for a secret formula for success and power. They do not want to think on their own; they just want a recipe to follow. They are attracted to the idea of strategy for that very reason. In their minds strategy is a series of steps to be followed toward a goal. They want these steps spelled out for them by an expert or a guru. Believing in the power of imitating, they want to know exactly what some great person has done before. Their maneuvers in life are as mechanical as their thinking.

To separate yourself from such a crowd, you need to get rid of a common misconception: the essence of strategy is not to carry out a brilliant plan that proceeds in steps; it is to put yourself in situations where you have more options than the enemy does. Instead of grasping at Option A as the single right answer, true strategy is positioning yourself to be able to do A, B, or X depending on the circumstances. That is strategic depth of thinking, as opposed to formulaic thinking.”

The best generals aren’t the ones with the best plans, they are the ones who open themselves up to the most options.

In order to take advantage of these options one must be able to adapt.

Here are 5 ways to increase your options right now:

  • Learn a new professional skill. If your company goes bust right now, would you be able to get another job doing exactly what you’re doing in your current gig? If not, you need to expand your skillset. This kind of learning can create asymmetric payoffs – skills often work together synergistically.
  • Start a side hustle. Work on something on the side. Again, if everything goes to sh*t it’s nice to have options.
  • Save money. It’s also nice to have options if things go well. Money in the bank gives you the option to take advantage of opportunities – be they investments or some amazing offer that requires you to quit your job. Money in the bank also makes it easier to transition if everything goes to sh*t.
  • Go to parties. Opportunities often come in the form of humans – both personal and professional. One of the best ways to meet people is by going to parties. I hate parties until I get to them, then they are always worthwhile.
  • Shift your perspective. I know. This is BS. But it’s also not. When you shift your perspective and become aware of more options, then you can take advantage of them. Train yourself to see your opportunities and what you could do to expand them even further.

4. Adaptability: Learn How to Perform in the Present

“The problem is that we imagine that knowledge is what was lacking: if only we had known more, if only we had thought it through more thoroughly. That is precisely the wrong approach. What makes us go astray in the first place is that we are unattuned to the present moment, insensitive to the circumstances. We are listening to our own thoughts, reacting to things that happened in the past, applying theories and ideas that we digested long ago but that have nothing to do with our predicament in the present. More books, theories, and thinking only make the problem worse.

Understand: the greatest generals, the most creative strategists, stand out not because they have more knowledge but because they are able, when necessary, to drop their preconceived notions and focus intensely on the present moment.” -Robert Greene, The 33 Strategies of War

Abraham Lincoln put it more succinctly: “My policy is to have no policy.”

Remember the WWI generals. They had access to decades of theory and planning when they entered the war. The first person to make a move that wasn’t in the playbook made all that theory irrelevant. Worse than irrelevant, clinging to old plans actually makes them harmful.

The war didn’t call for the generals with the deepest knowledge, it called for generals who were able to adapt to a rapidly changing situation.

We are in a similarly volatile situation today. Industries are completely changing shape in the time it takes college students to graduate.

If you want to be a writer you’re not going to take the same path writers in the past have. There are different demands on writers now. Publishing doesn’t work the same. Instead of waiting to get picked up by a publisher, you may need to release your own work on Amazon.

If you want to make movies, you may be better off starting a YouTube channel than working your way up the studio system. You’ve got to adapt to the new mechanics of the industry.

Even those who are looking to get a job need to adapt. Looking to the past might teach you that getting a degree (and then another) is the best way to get hired. Actually, you may be be better off creating a badass side project and showing it off online.

This world is changing so fast that no book (or even blog post) can give you a definite path to follow. You’ve got to quickly look around and act as best as you can given the environment you see.

Doing what makes sense in your specific circumstances will serve you much better than doing what you learned you ought to do in a situation similar to yours. There are best practices, of course, but until you grow past them it is impossible to fully take advantage of the randomness around you.

Robert Greene’s 48th law in The 48 Laws of Power is about remaining fluid. It’s about evolving into something other than you are in order to take advantage of a new situation. He explains the importance of adaptability in evolutionary terms:

“In the evolution of species, protective armor has almost always spelled disaster. Although there are a few exceptions, the shell most often becomes a dead end for the animal encased in it; it slows the creature down, making it hard for it to forage for food and making it a target for fast-moving predators. Animals that take to the sea or sky, and that move swiftly and unpredictably, are infinitely more powerful and secure.

Just because you’ve mastered a skillset doesn’t mean that skillset will continue to matter. A friend of mine was a well-known wedding photographer. When digital cameras began taking over, he refused to adopt the technology.

After years of refusal he became a sort of novelty. For a window of time he was the person to go to if you wanted old-school film prints. Ten years later, nobody cared about film anymore, they just wanted great images. Now he has finally made the switch and is slowly building up his clientele again.

When a machine takes over your job your best bet is to learn how to use the machine. Don’t hold on to your old-school way in the name of tradition.

It’s easy to think of castles or fortresses as symbols of protection. We think that if we become strong enough nothing can harm us. Remember France’s Maginot Line? It was an impenetrable series of fortresses built as a reaction to the German invasion in WWI.

When WWII came around, the Germans marched right around the line, making it totally useless. The French, instead of looking around at their current circumstances, reacted to a previous attack. They prepared for the past instead of the future. They spent a massive part of their national budget on digging their heels in.

Their refusal to adapt was even more expensive.

5. Embrace the Undefined

“It’s also important to remember that no one is ‘the bad guy’ or ‘the best friend’ or ‘the whore with a heart of gold’ in real life; in real life we each of us regard ourselves as the main character, the protagonist, the big cheese; the camera is on us, baby. If you can bring this attitude into your fiction, you may not find it easier to create brilliant characters, but it will be harder for you to create the sort of one-dimensional dopes that populate so much pop fiction.” -Stephen King, On Writing

Our efforts to contain the world in a system or idea may be doing more to hurt us than help us. Instead of trying to find the answer, maybe we ought to embrace that there isn’t any answer besides what we do and what is.

Remember that this is true of both our external and internal worlds. John Kay describes the achievement of decision making under complexity:

“We do not solve problems in the way the concept of decision science implies, because we can’t. The achievement of the great statesman is not to reach the best decision fastest but to mediate effectively among competing views and values. The test of financial acumen, as described by Buffett and Soros, is to navigate successfully through irresolvable uncertainties.”

And so it is with our interior lives. At times it feels that we don’t know who we are. This would be bearable if we didn’t believe so intensely that we should know who we are. That we should be able to wrap up our identity into a box or sentence and serve it up to anyone who’s interested.

It’s not that easy, but it is that simple. Steven Pressfield has a suggestion for overcoming this dilemma in The War of Art:

“Are you a born writer? Were you put on earth to be a painter, a scientist, an apostle of peace? In the end the question can only be answered by action.

Do it or don’t do it.”

Let the actions you take define you and let the words fall away (they lie anyway).

Let yourself embrace the paradoxes of the world and begin to effectively mediate between the poles.

Let go of the need to explain and you’ll be amazed at what you do.

The aim here is to not just deal with the uncertain world that we have to live in but to embrace it — to love it. Nietzsche said it best:

“My formula for greatness in a human being is amor fati: that one wants nothing to be different, not forward, not backward, not in all eternity. Not merely bear what is necessary, still less conceal it—all idealism is mendaciousness in the face of what is necessary—but love it.”

Conclusions & Action Steps

“…it is much better to do things you cannot explain than explain things you cannot do.” –Nassim Nicholas Taleb

The world isn’t going to get any more certain. In fact, it looks like it’s going to get increasingly complex.

This doesn’t mean that we need to feel uncertain. It does mean we need to learn to operate under uncertainty more effectively.

I offered 5 specific ways in which you can go about doing this:

  1. Adopt Stoicism. Specifically practice the Triad of Control. Every time you feel disturbed by a situation, ask yourself what is in your control. Attach your mental well-being to your effort and the actions you take rather than the outcome. (Again, this is simple, effective, and incredibly difficult.)
  2. Make Small Bets. Think hard about small risks you can take that have the potential to pay off in big ways. Don’t focus on the possibility that you win but instead on the magnitude of the payoff if you do.
  3. Optionality. Give yourself more options in your life. Save money. Go to parties. Make your work public. Don’t commit until you need to. Get multiple offers. Always put yourself in situations where positive options are likely to be created.
  4. Adapt: Stay Present, Fluid. Stop reading about how to start a business and take the first step. Stop reading about fitness and go to the gym. Don’t think about what the book says you should do, think about what makes sense for you right now. The situation you are in is unique to you; a book or advisor may help you think through something, but only you fully understand the context of your situation.
  5. Embrace Uncertainty. Uncertainty is a force of nature; you don’t get to “beat” it, you can only hope to use it. How can you use it? Steps 1-4. How can you make room to begin applying those? Let go of your need for certainty. Begin to see that more ideas can be correct in the abstract — yet when you take action you find that only one reality exists. You can’t explain it all and you don’t need to. In fact, if you did, something else would just change. The goal is to love this. Amor fati!

Godspeed!

_________________________________________

Kyle kick-starts entrepreneurs at StartupBros.com and is offering this free guide of necessary entrepreneurial epiphanies to you. Feel freer than free to contact Kyle anywhere on the web. Even his inbox: kyle at StartupBros dot com.

Let's block ads! (Why?)

04 Dec 19:50

Deciphering Glyph :: What Am Container

by brandizzi

Perhaps you are a software developer.

Perhaps, as a developer, you have recently become familiar with the term "containers".

Perhaps you have heard containers described as something like "LXC, but better", "an application-level interface to cgroups" or "like virtual machines, but lightweight", or perhaps (even less usefully), a function call. You've probably heard of "docker"; do you wonder whether a container is the same as, different from, or part of an Docker?

Are you are bewildered by the blisteringly fast-paced world of "containers"? Maybe you have no trouble understanding what they are - in fact you might be familiar with a half a dozen orchestration systems and container runtimes already - but frustrated because this seems like a whole lot of work and you just don't see what the point of it all is?

If so, this article is for you.

I'd like to lay out what exactly the point of "containers" are, why people are so excited about them, what makes the ecosystem around them so confusing. Unlike my previous writing on the topic, I'm not going to assume you know anything about the ecosystem in general; just that you have a basic understanding of how UNIX-like operating systems separate processes, files, and networks.


At the dawn of time, a computer was a single-tasking machine. Somehow, you'd load your program into main memory, and then you'd turn it on; it would run the program, and (if you're lucky) spit out some output onto paper tape.

When a program running on such a computer looked around itself, it could "see" the core memory of the computer it was running on, any attached devices, including consoles, printers, teletypes, or (later) networking equipment. This was of course very powerful - the program had full control of everything attached to the computer - but also somewhat limiting.

This mode of addressing hardware is limiting because it meant that programs would break the instant you moved them to a new computer. They had to be re-written to accommodate new amounts and types of memory, new sizes and brands of storage, new types of networks. If the program had to contain within itself the full knowledge of every piece of hardware that it might ever interact with, it would be very expensive indeed.

Also, if all the resources of a computer were dedicated to one program, then you couldn't run a second program without stomping all over the first one - crashing it by mangling its structures in memory, deleting its data by overwriting its data on disk.

So, programmers cleverly devised a way of indirecting, or "virtualizing", access to hardware resources. Instead of a program simply addressing all the memory in the whole computer, it got its own little space where it could address its own memory - an address space, if you will. If a program wanted more memory, it would ask a supervising program - what we today call a "kernel" - to give it some more memory. This made programs much simpler: instead of memorizing the address offsets where a particular machine kept its memory, a program would simply begin by saying "hey operating system, give me some memory", and then it would access the memory in its own little virtual area.

In other words: memory allocation is just virtual RAM.

Virtualizing memory - i.e. ephemeral storage - wasn't enough; in order to save and transfer data, programs also had to virtualize disk - i.e. persistent storage. Whereas a whole-computer program would just seek to position 0 on the disk and start writing data to it however it pleased, a program writing to a virtualized disk - or, as we might call it today, a "file" - first needed to request a file from the operating system.

In other words: file systems are just virtual disks.

Networking was treated in a similar way. Rather than addressing the entire network connection at once, each program could allocate a little slice of the network - a "port". That way a program could, instead of consuming all network traffic destined for the entire machine, ask the operating system to just deliver it all the traffic for, say, port number seven.

In other words: listening ports are just virtual network cards.


Getting bored by all this obvious stuff yet? Good. One of the things that frustrates me the most about containers is that they are an incredibly obvious idea that is just a logical continuation of a trend that all programmers are intimately familiar with.


All of these different virtual resources exist for the same reason: as I said earlier, if two programs need the same resource to function properly, and they both try to use it without coordinating, they'll both break horribly.

UNIX-like operating systems more or less virtualize RAM correctly. When one program grabs some RAM, nobody else - modulo super-powered administrative debugging tools - gets to use it without talking to that program. It's extremely clear which memory belongs to which process. If programs want to use shared memory, there is a very specific, opt-in protocol for doing so; it is basically impossible for it to happen by accident.

However, the abstractions we use for disks (filesystems) and network cards (listening ports and addresses) are significantly more limited. Every program on the computer sees the same file-system. The program itself, and the data the program stores, both live on the same file-system. Every program on the computer can see the same network information, can query everything about it, and can receive arbitrary connections. Permissions can remove certain parts of the filesystem from view (i.e. programs can opt-out) but it is far less clear which program "owns" certain parts of the filesystem; access must be carefully controlled, and sometimes mediated by administrators.

In particular, the way that UNIX manages filesystems creates an environment where "installing" a program requires manipulating state in the same place (the filesystem) where other programs might require different state. Popular package managers on UNIX-like systems (APT, RPM, and so on) rarely have a way to separate program installation even by convention, let alone by strict enforcement. If you want to do that, you have to re-compile the software with ./configure --prefix to hard-code a new location. And, fundamentally, this is why the package managers don't support installing to a different place: if the program can tell the difference between different installation locations, then it will, because its developers thought it should go in one place on the file system, and why not hard code it? It works on their machine.


In order to address this shortcoming of the UNIX process model, the concept of "virtualization" became popular. The idea of virtualization is simple: you write a program which emulates an entire computer, with its own storage media, network devices, and then you install an operating system on it. This completely resolves the over-sharing of resources: a process inside a virtual machine is in a very real sense running on a different computer than programs running on a different virtual machine on the same physical device.

However, virtualiztion is also an extremly heavy-weight blunt instrument. Since virtual machines are running operating systems designed for physical machines, they have tons of redundant hardware-management code; enormous amounts of operating system data which could be shared with the host, but since it's in the form of a disk image totally managed by the virtual machine's operating system, the host can't really peek inside to optimize anything. It also makes other kinds of intentional resource sharing very hard: any software to manage the host needs to be installed on the host, since if it is installed on the guest it won't have full access to the host's hardware.

I hate using the term "heavy-weight" when I'm talking about software - it's often bandied about as a content-free criticism - but the difference in overhead between running a virtual machine and a process is the difference between gigabytes and kilobytes; somewhere between 4-6 orders of magnitude. That's a huge difference.

This means that you need to treat virtual machines as multi-purpose, since one VM is too big to run just a single small program. Which means you often have to manage them almost as if they were physical harware.


When we run a program on a UNIX-like operating system, and by so running it, grant it its very own address space, we call the entity that we just created a "process".

This is how to understand a "container".

A "container" is what we get when we run a program and give it not just its own memory, but its own whole virtual filesystem and its own whole virtual network card.

The metaphor to processes isn't perfect, because a container can contain multiple processes with different memory spaces that share a single filesystem. But this is also where some of the "container ecosystem" fervor begins to creep in - this is why people interested in containers will religiously exhort you to treat a container as a single application, not to run multiple things inside it, not to SSH into it, and so on. This is because the whole point of containers is that they are lightweight - far closer in overhead to the size of a process than that of a virtual machine.

A process inside a container, if it queries the operating system, will see a computer where only it is running, where it owns the entire filesystem, and where any mounted disks were explicitly put there by the administrator who ran the container. In other words, if it wants to share data with another application, it has to be given the shared data; opt-in, not opt-out, the same way that memory-sharing is opt-in in a UNIX-like system.


So why is this so exciting?

In a sense, it really is just a lower-overhead way to run a virtual machine, as long as it shares the same kernel. That's not super exciting, by itself.

The reason that containers are more exciting than processes is the same reason that using a filesystem is more exciting than having to use a whole disk: sharing state always, inevitably, leads to brokenness. Opt-in is better than opt-out.

When you give a program a whole filesystem to itself, sharing any data explicitly, you eliminate even the possibility that some other program scribbling on a shared area of the filesystem might break it. You don't need package managers any more, only package installers; by removing the other functions of package managers (inventory, removal) they can be radically simplified, and less complexity means less brokenness.

When you give a program an entire network address to itself, exposing any ports explicitly, you eliminate even the possibility that some rogue program will expose a security hole by listening on a port you weren't expecting. You eliminate the possibility that it might clash with other programs on the same host, hard-coding the same port numbers or auto-discovering the same addresses.


In addition to the exciting things on the run-time side, containers - or rather, the things you run to get containers, "images", present some compelling improvements to the build-time side.

On Linux and Windows, building a software artifact for distribution to end-users can be quite challenging. It's challenging because it's not clear how to specify that you depend on certain other software being installed; it's not clear what to do if you have conflicting versions of that software that may not be the same as the versions already available on the user's computer. It's not clear where to put things on the filesystem. On Linux, this often just means getting all of your software from your operating system distributor.

You'll notice I said "Linux and Windows"; not the usual (linux, windows, mac) big-3 desktop platforms, and I didn't say anything about mobile OSes. That's because on macOS, Android, iOS, and Windows Metro, applications already run in their own containers. The rules of macOS containers are a bit weird, and very different from Docker containers, but if you have a Mac you can check out ~/Library/Containers to see the view of the world that the applications you're running can see. iOS looks much the same.

This is something that doesn't get discussed a lot in the container ecosystem, partially because everyone is developing technology at such a breakneck pace, but in many ways Linux server-side containerization is just a continuation of a trend that started on mainframe operating systems in the 1970s and has already been picked up in full force by mobile operating systems.

When one builds an image, one is building a picture of the entire filesystem that the container will see, so an image is a complete artifact. By contrast, a package for a Linux package manager is just a fragment of a program, leaving out all of its dependencies, to be integrated later. If an image runs on your machine, it will (except in some extremely unusual circumstances) run on the target machine, because everything it needs to run is fully included.

Because you build all the software an image requires into the image itself, there are some implications for server management. You no longer need to apply security updates to a machine - they get applied to one application at a time, and they get applied as a normal process of deploying new code. Since there's only one update process, which is "delete the old container, run a new one with a new image", updates can roll out much faster, because you can build an image, run tests for the image with the security updates applied, and be confident that it won't break anything. No more scheduling maintenance windows, or managing reboots (at least for security updates to applications and libraries; kernel updates are a different kettle of fish).


That's why it's exciting. So why's it all so confusing?

Fundamentally the confusion is caused by there just being way too many tools. Why so many tools? Once you've accepted that your software should live in images, none of the old tools work any more. Almost every administrative, monitoring, or management tool for UNIX-like OSes depends intimately upon the ability to promiscuously share the entire filesystem with every other program running on it. Containers break these assumptions, and so new tools need to be built. Nobody really agrees on how those tools should work, and a wide variety of forces ranging from competitive pressure to personality conflicts make it difficult for the panoply of container vendors to collaborate perfectly.

Many companies whose core business has nothing to do with infrastructure have gone through this reasoning process:

  1. Containers are so much better than processes, we need to start using them right away, even if there's some tooling pain in adopting them.
  2. The old tools don't work.
  3. The new tools from the tool vendors aren't ready.
  4. The new tools from the community don't work for our use-case.
  5. Time to write our own tool, just for our use-case and nobody else's! (Which causes problem #3 for somebody else, of course...)

A less fundamental reason is too much focus on scale. If you're running a small-scale web application which has a stable user-base that you don't expect a lot of growth in, there are many great reasons to adopt containers as opposed to automating your operations; and in fact, if you keep things simple, the very fact that your software runs in a container might obviate the need for a system-management solution like Chef, Ansible, Puppet, or Salt. You should totally adopt them and try to ignore the more complex and involved parts of running an orchestration system.

However, containers are even more useful at significant scale, which means that companies which have significant scaling problems invest in containers heavily and write about them prolifically. Many guides and tutorials on containers assume that you expect to be running a multi-million-node cluster with fully automated continuous deployment, blue-green zero-downtime deploys, a 1000-person operations team. It's great if you've got all that stuff, but building each of those components is a non-trivial investment.


So, where does that leave you, my dear reader?

You should absolutely be adopting "container technology", which is to say, you should probably at least be using Docker to build your software. But there are other, radically different container systems - like Sandstorm - which might make sense for you, depending on what kind of services you create. And of course there's a huge ecosystem of other tools you might want to use; too many to mention, although I will shout out to my own employer's docker-as-a-service Carina, which delivered this blog post, among other things, to you.

You shouldn't feel as though you need to do containers absolutely "the right way", or that the value of containerization is derived from adopting every single tool that you can all at once. The value of containers comes from four very simple things:

  1. It reduces the overhead and increases the performance of co-locating multiple applications on the same hardware,
  2. It forces you to explicitly call out any shared state or required resources,
  3. It creates a complete build pipeline that results in a software artifact that can be run without special installation or set-up instructions (at least, on the "software installation" side; you still might require configuration, of course), and
  4. It gives you a way to test exactly what you're deploying.

These benefits can combine and interact in surprising and interesting ways, and can be enhanced with a wide and growing variety of tools. But underneath all the hype and the buzz, the very real benefit of containerization is basically just that it is fixing a very old design flaw in UNIX.

Containers let you share less state, and shared mutable state is the root of all evil.

Let's block ads! (Why?)

04 Dec 19:49

Como a substituição do ‘trabalhador’ pelo ‘empreendedor’ afeta a esquerda - Nexo Jornal

by brandizzi
Como a substituição do ‘trabalhador’ pelo ‘empreendedor’ afeta a esquerda - Nexo Jornal

Discurso do PT passa por transformação profunda, com queda no sindicalismo e ascensão de autônomos e pequenos empresários. Novo cenário impõe desafio para o futuro da esquerda, diz antropólogo Carlos Gutierrez ao ‘Nexo’

one pixel graphics
one pixel graphics

Let's block ads! (Why?)

04 Dec 19:49

Why EuroDisney Failed

by brandizzi

Projects / Academic / Why Eurodisney Failed

Planning

The confidence of Disney was partly based on the number of Europeans visiting US Disney parks. Europeans would be visiting the US parks because they were in America however, not visiting America specifically to go to the parks (These figure hence do not accurately reflect the popularity of Disney theme parks in Europe). The US Disney parks are seen as part of the American experience not as a complete holiday destination as they are more in America.

All attendance predictions are based on parks in the US and Japan, which is also quite americanised. All calculations treated Europe as a general mass of people rather than many individual countries.

The strategy was very greedy in buying all the surrounding land so no one else could benefit from the project. This is not going to promote any local support and isolates the project from and other business support. The scale of the investment also isolated them more in the case of a failure.

The idea was to market the Disney as a complete holiday encouraging people to stay in the hotels and eat all meals in the park.

The location of the park first defied this. Since the travel time to Paris was 35 minutes and the gate hotel in Euro Disney cost as much as the best hotel in Paris, many people may prefer to stay overnight in the capital city.

The proximity to Paris also puts it in competition regarding the tourist industry. People passing through the area may decide to take the more traditional option and visit the romantic Paris instead. Paris may also lose out from the detraction of local tourist focus causing some businesses in Paris to oppose the project.

Secondly the attention to the wrong details. How many Europeans are going to notice leather wallpaper when they cant get their usual breakfast or wine with meals. This seems to show that Disney were acting on an American view of Europe rather than a native view, which could identify the important cultural differences.
Also the paranoia about offending 'sophisticated' European tastes meant that Disney forgot that their parks would always be seen as part of American culture. Most people enjoy the parks for this reason and would prefer a hamburger to a large lengthy meal, which would be normal everyday at home.
The executive saying, "We were told Europeans donâ??t take breakfast..." seems to show that the analysis of the European market was very general and the managers were too confident in their success to research the small details about European cultures.

In planning Euro Disney there do not seem to have been many contingency plans established. The attitude towards customer habits was very complacent, assuming that there would be so many customers every day, each staying an average number of nights spending an average amount of money. In America this may be more the case since there is a well-established theme park culture. Many people will avoid visiting during peak holiday times, spreading out attendance figures over a year for example. The European market proved to be a lot more volatile however, with great peaks and valleys in attendance. One would expect large crowds at weekends and holidays. In planning, Disney were more interested in the moneymaking ventures than the fundamental details such as providing enough restrooms for coach drivers.
Most Europeans are not accustomed to stating overnight in a theme park so the heavy investment in hotels seems a big risk.
Disney was introducing theme parks to people only previously interested in fun fairs. People would hence not be used to completely living in the amusement environment. The scale of Euro Disney would also be associated with high prices and a commercial atmosphere.

Marketing

In marketing the park Europe was treated as one country when it has a larger range of language and culture than the US or Japan. While the attempt was to give the park a European flavour, the advertising campaign was typically American.
Most advertising was aimed at children while the adults make the final decision on whether to go or not. In America this may work because Disney theme parks are long established and adults associate the whole experience with childhood memories. In Europe however theme parks are un-established so more marketing effort is required to convince people that Euro Disney will surpass everyoneâ??s expectations.

On opening the park, Disney continue to display over-confidence. The prices reflected their expectation for demand. The Media also appear to have been treated as if the scale of the investment would sell the park. By not giving access to the Disney executives it seems as if they have better things to do and the success of Euro Disney is guaranteed.

Management

The Management seem to be overpowered by their reputation for success with no scepticism about the European market.
The opposition to Euro Disney was disregarded despite the fact that mainstream newspapers seemed support the protest. Disney ignored the description of Euro Disney as a cultural abomination, which could have highlighted the need for further cultural integration. The attitude of Disney management is confidently dismissive making them appear out of touch with the cultural differences.

The early change in managing director shows Disneyâ??s expectations for success. Robert Fitzpatrick was said to know Europe well, which sounds like a general knowledge rather than that acquired from being native to the country and living there. Choosing Fitzpatrick may have been an initial bad choice but to replace him after only a year shows Disney as being impatient and throwing away the experience Fitzpatrick has gained.

Philippe Bourguignon tells that some of the best ideas on park improvement came from staff members. This suggests that more could have been done to survey visitorâ??s opinions of the Park after opening. There is a need for management to treat the Europe as something knew about which they are constantly learning, rather than as a market they can dominate at will.

There were reasons for failure due to marketing and administration decisions made before and after the launch of the park. The whole concept of trying to sell an American product to Europe, while trying to adapt some features of the park to suit a wide variety of cultural tastes, doomed the project. Overconfidence in the formerly foolproof Disney formula meant that in planning the park not much attention was paid to many important details. In this sense the administrative errors in the project planning were the main reasons for failure. The inappropriate marketing of Euro Disney contributed greatly to the poor attendance but ultimately the park itself was not going to make the groundbreaking impression needed to create a new market.


Let's block ads! (Why?)

04 Dec 19:19

Fabulous illustrations by René Gruau

by Paula Zargaj-Reynolds

Here are some beautiful vintage ads for women's gloves featuring art work by René Gruau, my all-time favorite fashion illustrator.

1961 ad for Crescendoes gloves:

B0041f2768ff984cc7866231d9ed5ee4

1961 ad for Crescendoes gloves:

F88547123c7c82632e27995a4c0b99c6

1962 ad for Crescendoes gloves:

957356d1eaf8fe430ba8a71c78d9227f

This ad is from the same campaign for Crescendos gloves but I don't know what year it ran:

86143d7a0d3d8eb7a86dc2a4f6f47503

In the interest of equality, here are some of Gruau's very stylish illustrations of men:

2462974766461808_F5ssGY5b_f

Rene_gruau_exhibition_03

3593097956_f016d25905

1950

You may have noticed René Gruau's distinctive signature mark:

Signature_Gruau_Basse_Déf

 

Find these and other works by René Gruau on my Pinterest page HERE.

15 Nov 11:22

Ácaro

by Raphael Salimena

15 Nov 11:22

Which full-stack developer are you?

by CommitStrip

strip-nous-sommes-tous-full-stack-english650-final

15 Nov 11:15

Tech Support Sombra

15 Nov 11:14

Solidarity and guilt

by CommitStrip

strip-le-remort-solidarite-650-finalenglish3

15 Nov 11:14

Reading The News

by Brian

reading-the-news

Bonus Panel

The post Reading The News appeared first on Fowl Language Comics.

15 Nov 11:13

Saturday Morning Breakfast Cereal - On Cheese Platters

by tech@thehiveworks.com


Hovertext:
Studying social science has completely obliterated my ability to enjoy pleasant human behaviors.

New comic!
Today's News:
15 Nov 11:12

Photo









15 Nov 11:12

Facts #2

by itsthetie

new-canvas-copy

bonus

12 Nov 10:46

Hide this code, that I dare not see.

by CommitStrip
Today, we welcome again, Hired on CommitStrip! As you may know, Hired is a tech recruitment platform proposing opportunities accross the world, in Paris, London, NYC, San Francisco, Toronto, Sydney and more… They told us that a developer finds a new job every thirty minutes.
So if you’re looking for a new stack, test it!

strip-cacher-les-vieilles-technos-english650-final
hired_en

12 Nov 10:46

Saturday Morning Breakfast Cereal - Cookies

by tech@thehiveworks.com


Hovertext:
At this point, she tosses her hair and giggles.

New comic!
Today's News:

WEDNESDAY BOOK REVIEWS (on Thursday, because I forgot on Wednesday)

Now (Muller) I have loved Muller’s “...for Future Presidents” series of books. A lot. I find him to be lucid, intelligent, and skeptical of easy answers. This book, I’m afraid, fell short. The book is mostly about Muller’s theories of time, which are interesting. But, at the end, it makes a poor segue into his theory of the supernatural. I’m being a bit ungenerous, but the short version goes like this: “I think qualia are real, therefore there is a soul that exists but will never be understood by physics.” It’s unfortunate that his philosophy is so grade-school, while his physics teaching is so excellent. I recommend you read the first part of this book, and spare yourself the end.

Call the Midwife (Worth) Okay, confession time - I have a real soft spot for working class memoirs from the first half of the 20th century. There’s something about people experiencing the rapid transition to something like modern life just after World War II. This is a delightful memoir of a woman’s life as a midwife, mostly during the 1950s. It’s very reminiscent of James Herriot’s veterinary stories, to the point that I wonder if she hadn’t read them. If you’re into this sort of thing, I highly recommend it.

Time Travel (Gleick) This was a bit of a weird book. A better title would be “James Gleick read a lot of stuff about time travel and here’s all of it.” That’s not necessarily a bad thing - one of the thing’s I love about Mary Roach books is that they feel like a grand info-dump after a research adventure. This book is kind of like that, but exploring the science, history, and philosophy of the concept of time travel as we currently think of it. It’s a unique and fun book, but I think on some level I wanted a bit more structure. That said, I enjoyed it throughout, and it may be the only good book of its kind.

11 Nov 16:40

Achei na rua

by Will Tirando

achei-na-rua

11 Nov 16:16

City Pigeon

by Reza

city-pigeon

11 Nov 16:16

Breakthrough

by Reza

breakthrough

11 Nov 16:15

Earth

by Reza

earth

11 Nov 15:56

Chá

by André Farias

Vida de Suporte

Por falar nisso, sabia que o chá de camomila e maracujá com Rivotril e morfina traz diversos benefícios pra quem trabalha com TI?


Chá é um post do blog Vida de Suporte.
11 Nov 15:56

Saturday Morning Breakfast Cereal - Progress

by tech@thehiveworks.com


Hovertext:
Now, it's time to create a pig that can fly.

New comic!
Today's News:
11 Nov 15:55

Photo



11 Nov 15:54

Cachorro vs gatos

by O Criador


Gatos xD

The post Cachorro vs gatos appeared first on DrPepper.com.br.

11 Nov 15:54

100th Comic

02 Nov 18:18

Froggy Day

by Brian

froggy-day

Bonus Panel

The post Froggy Day appeared first on Fowl Language Comics.

02 Nov 18:15

Comic for November 02, 2016

by Scott Adams
02 Nov 18:13

More Cluster Fudge HERE



More Cluster Fudge HERE

02 Nov 18:12

How to Suck Down

by Scott Meyer

Mullet Boss is a terrible boss, and Angry Customer is a terrible customer, but in fairness, Comic Scott is a terrible employee. It’d be interesting to know who was awful first, but to show them all meeting I’d have to do a Basic Instructions prequel, or maybe Basic Instructions Babies, and that ain’t happening.

I never noticed it before, but in a way these three characters form a sort of rock-paper-scissors. When any two of them are together, there’s a clear winner, but between the three there’s a stalemate. Mullet Boss threatens to fire Comic Scott. Comic Scott refuses to do what Angry Client wants. Angry Client threatens to stop bringing Mullet Boss his business.

Sometimes, these things I think up are a little too close to the way real life works.

 

You can comment on this comic on Facebook.

As always, thanks for using my Amazon Affiliate links (USUKCanada).

 

 

02 Nov 18:10

Saturday Morning Breakfast Cereal - Excuse Me, Sir

by tech@thehiveworks.com


Hovertext:
People who are more self-aware tend to buy SMBC merchandise.

New comic!
Today's News:
02 Nov 18:08

Dog and Human

by Reza

dog-and-human