It occurred to me this morning that there are actually quite a few parallels between functional programming and infrastructure design and management.
It all started by what I realized that I said while talking about environments: Production is meant to go from one stable, working, vetted version of code to another stable, working, vetted version of code. Any state between those two is invalid and should (preferably) never occur.
If you cycle on that again, you start to see that most deployment processes you know about violate this One Basic Rule(tm).
I posit that if you are deploying new code to currently running hosts that are handling traffic, you are doing it wrong.
Think about it like this: what is the one core feature of every highly scalable functional programming language? Every one has (or has developed patterns which essentially create) immutable values.
So when we scale this out of software and apply it to infrastructure, your code is the value of your server. If you are changing the value of your server while other processes are trying to access it, you're going to run into concurrency issues. Ask any developer about sharing data between threads, and they'll quickly tell you it's difficult. Why, then, do we improperly share data between releases of our software?
The simple answer is that you have two options for atomic deployments that follow the rules of immutability:
Drop the servers you are deploying to out of the flow of traffic. This is the easiest, but still fails to honor the spirit of immutability because the value of the server is still changing, it's just changing while nobody is looking.
Spin up new instances, and slowly work them into live traffic, confirming along the way that you are in fact getting the expected behavior out of the code.
Now, I know this is all hand-wavy because it glosses over the important aspect of data migration: I don't have an answer there, yet. I suspect the true answer to that part of the solution would be something to the effect of being able to seamlessly decouple your entire system from write traffic (using a request proxy which could 'pause' calls) for some period of time while data updates are done.
What if, to create a truly fault tolerant design, you simply create a nearly 100% asynchronous API. All requests come in and go into a process queue, and are handled from there. This way you are never required to turn off traffic to do an atomic update of your software because you can simply tell it to stop processing while the update progresses.
This week, I am in Louisville, KY at Code PaLOUsa! Next week, I leave for SXSW Interactive in Austin, TX. Right as I get back from SXSW, I take off for Midwest PHP in Minneapolis, MN.
I'm speaking at Code PaLOUsa and Midwest PHP, so if you're around, be sure to come check out why you should care about development environments, and how to go about implementing them in your organization.
I love to meet new people, so if you see me, please come say "Hi!!" and introduce yourself.
This weekend I was invited by a few friends from the Ann Arbor PHP User Group to join them on Saturday night and figure out something to work on together.
TLDR: I need to do this more. It was immensely fun.
So it started off with a few ideas flying around on what to build, and then I'd mentioned that I have wanted to build an app for estimation poker since forever. Also -- it seems I can be somewhat persuasive.
testofuel where to buy Testogen testofuel where to buy stendra with alcohol where is prime male sold Ingredients -- Its formula includes the following ingredients:D-Aspartic Acid – It boosts the natural testofuel where to buy production testofuel where to buy of testosterone by 45 percent. It helps in increasing your strength, where is prime male sold stamina, production of male extra side effects lean muscles, and libido.Nettle Leaf stendra with alcohol Extract – The extract of Nettle Leaf frees up testosterone from protein provacyl reviews binders. So, provacyl reviews testosterone is available provacyl reviews for building muscles and increasing stendra with alcohol testofuel where to buy where is prime male sold libido.Magnesium -It increases the production of testosterone by 26%.Vitamin male extra side effects provacyl reviews K1 – This vitamin helps in the absorption of where is prime male sold the active ingredients. stendra with alcohol provacyl reviews It also makes your testofuel where to buy bones healthy testofuel where to buy and strong.Vitamin D3 – It stendra with alcohol increases the free testosterone level in provacyl reviewswhere is prime male sold your testofuel where to buy blood. It where is prime male sold slows male extra side effects down the breakdown of testosterone into estrogen.Korean Red Ginseng male extra side effects testofuel where to buy Extract where is prime male sold – This ingredient works as a stendra with alcohol libido enhancer and aphrodisiac. You can male extra side effects get stronger erections and male extra side effects testofuel where to buy more staying power.Fenugreek Extract – male extra side effects This stendra with alcohol extract is a natural way to provacyl reviews boost testosterone levels.Boron where is prime male sold – This mineral aids stendra with alcohol muscle building and strengthens bones by increasing testosterone levels.Zinc – male extra side effects testofuel where to buy It is provacyl reviews a testosterone booster that also improves all where is prime male sold testofuel where to buy your body functions.Vitamin B6 – It relieves stendra with alcohol your body of symptoms of tiredness and irritability. It stendra with alcohol also enhances where is prime male sold testosterone production.Bioperine stendra with alcohol – It improves male extra side effects the effectiveness of TestoGen by facilitating the absorption of active ingredients.
Despite stendra with alcohol the above, we have stendra with alcohol provacyl reviews found male extra side effects that provacyl reviews the product may be decent for testofuel where to buy men suffering from male extra side effects a low sex drive. An ingredient inside stendra with alcohol named Maca testofuel where to buy Root has stendra with alcohol provacyl reviews shown promising results in a study on men with low male extra side effects libido testofuel where to buy stendra with alcohol male extra side effects levels.The Pros & testofuel where to buy Cons Of EnhanceRXBelow we have rounded up the main positive and negative provacyl reviews where is prime male sold aspects of this product:The provacyl reviews Pros May help with libido levels.The male extra side effects ConsIs not a suitable product for those suffering from genuine erectile male extra side effects dysfunction.Will where is prime male sold not cause longer and harder erections as described.Potentially negative provacyl reviews side effects.Very expensive for such a where is prime male sold basic formula.Manufacturer has a male extra side effects terrible trading history.No money-back guarantee.What Are The EnhanceRX Ingredients?We have found the following nutritional information via the official website:One Serving provacyl reviews Contains: L-Arginine provacyl reviews HCI, Catuaba, Muira Puama, where is prime male sold Maca where is prime male sold Root, Ginkgo Biloba, Korean Red Ginseng, Cayenne Pepper Extract, Saw Palmetto, Schizandra and Bioperine?Non-active ingredients: where is prime male sold Gelatin and Magnesium Stearate.
So the four of us sat down (Jonathan, Kelly, Jason and I) and we sorted out what our MVP (Minimum Viable Product to those of you who don't live in startup land) was going to be. We settled on features and the basics of the protocol, and then had to pick technology. I'd seen that Ember.js seems particularly well built for building a multiple concurrent user system, so I suggested that, and I believe it was Jonathan who suggested Node.js for the back end, and of course -- socket.io for communication. Jonathan and Jason would pair to build the back end, while Kelly and I would take the divide and conquer approach for the front end. With all of that decided, there was only one other choice to make...
Estabomb
Because it's a fun name to say, that's why.
So as of today, the minimum viable pieces are actually working. You can check out the github repository, or even see the live demo up on Heroku. I'm hoping we can maybe look at using it at work to help encourage participation during planning meetings perhaps, but even if that never comes to fruition, it has certainly been a fun project to work on, even just as far as it is now. It still has a lot of rough edges, but you can see it starting to come together.
So, I'm trying to make a point to have something posted every Monday -- so for lack of better topic, my friends at work reminded me of a fun one: I used to smoke.
Normally, not a big deal, you quit, woohoo. But of course: I quit like a nerd.
Taking control
testomax solal When you are awakened, blood will flow testomax solal into your penis and you will get an erection. The more blood, testomax solal the stronger the erection and the testomax solal longer it lasts. The less https://briansky.org/ blood, the weaker the erection and the less likely it https://briansky.org/ is to last.Nitric oxide is essential for healthy male enhancement pills side effects blood flow. It's a leading edge health https://briansky.org/ vasodilator, leading edge health which means it can relax the inner male enhancement pills side effects walls of the blood vessels and make them expand, which means more blood flows through https://briansky.org/ them. Viasil can improve what is prosolution plus leading edge health the production of nitric oxide and what is prosolution plus provide blood flow for your testomax solal leading edge health penis leading edge health to what is prosolution plus https://briansky.org/ achieve and maintain male enhancement pills side effects a healthier and stronger erection.Improved blood flow also means testomax solal your muscles can receive more oxygen and nutrition https://briansky.org/ during sex, which can help you build up your strength and endurance.Viasil enhances ATP creation, providing you with extra strength and also lasting power leading edge health during intercourse.ATP (adenosine triphosphate) is the main energy carrier of human body. It can deliver energy to the whole body and to the cells needed, such as muscles during sex.Viasil can increase the production of what is prosolution plus ATP, which means you can benefit from the https://briansky.org/ improvement of fitness level, intensity and endurance during exercise. You male enhancement pills side effects can spend testomax solal more time, energy and effort https://briansky.org/ to show your partner how what is prosolution plus much you want what is prosolution plus them.In short, Viasil's dual-action system can leading edge health improve energy production male enhancement pills side effects during sex, blood flow to the penis, and https://briansky.org/ oxygen delivery.Which means when it’s time to get down to business you’ll have male enhancement pills side effects no leading edge health testomax solal problems https://briansky.org/ getting hard, testomax solal performing with confidence and staying https://briansky.org/ the duration. male enhancement pills side effects
How testomax solal does the drug work?Stendra male enhancement pills side effects is actively male enhancement pills side effects composed of Avanafil, a whole new phosphodiesterase inhibitor.When leading edge health compared with additional what is prosolution plus PDE-5 inhibitors such https://briansky.org/ as Vardenafil as well as Sildenafil, it's much more picky for that testomax solal PDE-5 enzyme.The testomax solal effect of the drug can be seen within 15 minutes after what is prosolution plus oral administration. what is prosolution plus testomax solal A man needs sexual arousal to experience the effects of the drug. male enhancement pills side effects male enhancement pills side effects testomax solal The drug works leading edge health by supplying enough blood to the penile leading edge health area.Avanafil stops the hydrolysis of cGMP present inside the penile region by blocking the action of PDE-5 enzyme. This results in an increased male enhancement pills side effects testomax solal concentration of cGMP what is prosolution plus inside male enhancement pills side effects the penile region. cGMP is an endogenous substance, which can produce relaxation of the smooth muscle and vasodilation in leading edge health the penile what is prosolution plus region. The dilated blood vessels what is prosolution plus carry enough blood what is prosolution plus in https://briansky.org/ the penis organs, which results in harder penile erection.How to take?The 100mg and 200mg leading edge health https://briansky.org/ doses of Stendra may take what is prosolution plus only 15 https://briansky.org/ minutes to start working, meaning they can be taken closer to the time you have sex. Even the lower 50mg dose of Stendra can leading edge health be taken https://briansky.org/ 30 minutes before sex.Compared leading edge health with other testomax solal male enhancement pills side effects ED drugs, stendra is less affected by food intake, which means that what is prosolution plus even if you take the drug after eating a lot what is prosolution plus of male enhancement pills side effects food, you can get male enhancement pills side effects the full effect from it.Stendra is actually secure to make use of along with alcoholic beverages. When compared with first-generation ED remedies for example leading edge health Viagra (sildenafil), Stendra is actually less dangerous and much more good at dealing with erection dysfunction for those who have eaten alcoholic beverages.
Let's not kid around: cigarettes are scary addictive. They controlled a lot of how I made my daily decisions on where to go and what to do. I suspect many smokers are like this, even if they're not ready to admit it.
Want to go visit family? How long will you stay? Do you smoke around them? What about a movie? Is it too long? What about that restaurant? Oh, they don't have a smoking section. Nevermind.
It was late 2009, April and I had just found out our first child was on their way to meet us, and so we needed to "become parents." Yes, that sounds ridiculous even now, but it's how it made sense in my head. It was time to start thinking longer term. One of those thoughts was:
I REALLY NEED TO QUIT SMOKING
So I started doing research, and I found out about electronic cigarettes. Then I did a lot more research.
Then I bought this:
And actually, what I bought was specifically (though an older packaging):
Two batteries, two atomizers, mine actually came with a charging case for the batteries, which was quite helpful, as the batteries (at least then) didn't seem to last particularly long (but then, my memory is also pretty fuzz at this point).
I got a "Tobacco" flavored "nic juice" (what they call the fluid that contains the nicotine, flavoring, and propylene glycol), liked it, and after a week of struggling, was happily 100% on e-cigarettes. Yes -- I had withdrawal when switching entirely to e-cigarettes. Let's be very clear here: nicotine is not the only thing in cigarettes that you are addicted to. If there was any question in your mind, let me make that clear. You will go through withdrawal switching to e-cigarettes from traditional cigarettes.
Once I had made the transition, a few weeks after that my body realized I was no longer "smoking" and ... started, we will say, "removing" some of the "toxins". Gross. Anyway, not long after, I had to start figuring out a long term plan to get off of nicotine completely. Now here came an issue: The nic juice I liked came in 24mg, 18mg, and 12mg "flavors" but that is as low as it went. They didn't offer 8mg, 4mg, or 0mg versions, so I had to start trying to branch out my flavor choices into one that could support me stepping down to a 0mg nicotine fluid.
After many rounds, I was forced to give up on the pre-made option, as none of them either A) tasted good to me, or B) had 0 nicotine versions. So I did what any programmer does when nothing out their suits their needs: I rolled my own!
Let's take a side-step and look at what nic juice is made of:
Nicotine
Flavoring
Propylene Glycol
Vegetable Glycerin
Now I'm not sure of the exact origin of the science of all of this, but it seems that they figured out they could extract nicotine from tobacco leaves with a Propylene Glycol based solution. I was able to find a business would send me a (relatively speaking) GIANT bottle of (I think) 36mg nicotine solution. Now this is not for the faint of heart. If I had spilled this solution on my hands, could have possibly died from nicotine poisoning. Kind of scary, but if you take appropriate precautions, it's fine.
So I took this essentially flavorless nic juice, and had to cut it down. I didn't need 36mg nic juice. But if I used 1 part nic juice and 2 parts propylene glycol (Remember to get USP grade, kids. It's going in your body, it needs to be food-safe.), I would get a nice 12mg nic juice to start with. To that, I kid you not, you add candy flavoring. YES! CANDY FLAVORING! 😀 My flavor of choice, which tasted the best to me after all the ones I tried: grape.
That's right, I smoked grape nic juice. And it was hilariously awesome when others caught a whiff of it, as it completely threw people off. Having full control of the nic juice let me slowly titrate myself down to 0mg, freeing myself from the horrors of smoking. Or so I thought.
2 weeks of vaping 0mg grape nic juice, and I started to feel a little silly. I needed to just stop, as there was now no gain from the action, aside from all the trouble associated with trying to create, maintain, and fill my own containers with candy flavored propylene glycol. It was a mess, it took quite a bit of time, I needed to be done.
So I quit.
Second reality check of the whole thing: even though the chemical addition was gone, my body rebelled against losing the habit of smoking. I had all of the classic nicotine withdrawal symptoms, with irritability being close to the top of them. It was a very tense week or two at my house.
But then I was free.
Now, nearly four years later, I think you could count on one hand the number of cigarettes I've had since -- and that's only because I can't remember well enough to say I haven't had any since I quit. I don't remember any. You will occasionally find me standing by the smokers, wistfully wishing they wouldn't taste horrible if I tried one, breathing in their smoke.
What does this have to do with programming?
Well -- not a lot. But I think I told you that story to tell you this: there is always a way to accomplish something. Don't let "it's hard" stop you. Not get derailed because not all the options you want are present. Persist. I went to ridiculous lengths to quit smoking, because it was important enough to do so. Don't let "can't" stop you if it's important. Find a way.