I once watched a TED talk where the speaker was discussing the fact that generally, we approach things the wrong way when we communicate. We will tell others about what we are doing. We will tell them about how we are doing it. The thing which we do not do enough, though, is talk about why we are doing those things. I thought it might help everyone to understand me, and where I come from, a little better if I told you about my whys.
Why do I work on the web?
The Internet connects us in a truly unique way. It’s like a technological worm hole. Suddenly, because of the Internet, the distance between any two points becomes almost negligible. In a world where we measure commutes in minutes, hours, or sometimes days and weeks, the subtle difference between 50ms to a local point and 200ms to Bangladesh seems quite trivial. It connects us, across the globe. The web, then, takes our new connected society and gives it a (mostly) unified way to read, create, and share. And boy do we love to share. We love to share videos. We love to share music. We love to share cats, and babies. We especially love to share cats and babies with little witty sayings stamped out on top of them. The thing we love to share the most, though, is ideas. Sometimes those ideas are bad, sometimes they’re hateful, sometimes they’re beautiful, sometimes they’re funny, and sometimes, every once in a while, they’re magic.
Why do I care about building software?
Software has the unique power to change how we, as humans, interact with the world. Software, of course combined with the hardware it enables, allows us, as a people, to affect the world in amazing new ways. Whether you are writing code for a bank that helps ensure money transfers work efficiently, writing for a startup who has found a new way to deliver cheese, or writing software that enables better communication in third world countries: you are changing the world.
When you learn to program computers, you are teaching yourself that nothing is as it appears. Everything is moldable, variable, able to be adapted and adjusted. Fluid. You stop seeing the world as a finite set of things, and start to see it as a current, but changeable state. The world is a set of problems that has yet to be solved, and I want to help solve them. However, I can’t do it alone, there’s just far too much work. I need help. I cannot do it alone.
Why do I place so much value on community?
I see community as the heart of software, really. Everything we do is iterative. Everything we do today is built on the shoulders of giants which came before us. Everything the next generation of software workers will do will be built upon our giants’ shoulders. However, most often, giants do not grow in isolation. The giants I speak of, to be clear, are ideas, not people. Mostly small, many trivial, but ideas none the less. Inside each one of us is a giant, waiting to come into being. It just takes the right set of circumstances, the right set of knowledge, the right environment, to bring them to life.
I see community as a way to feed those budding giants. I see community as way to take a junior developer, show them the ropes, show them how … squishy … the world actually is, and seed them with passion. I see community as a way to take mid-level developers and fuel their passion with ideas. Finally, I see community as a way to take senior developers and give them an outlet where they can refine their ideas, vet them with peers, and share them back to the community, fostering growth and innovation, spurring more passion and ideas.
I love PHP for so many reasons, but the reason I love it most in this context is because I consider PHP the “starter drug” of web development. Open almost any basic shared hosting account, upload an index.php file, and you’ve just taken your first step towards changing the world. Within the PHP community, we have the unique opportunity to catch these new developers just as they’re dipping their toes in the lake. It is incumbent upon us to welcome them, teach them how to swim, and more importantly, show them how to teach themselves to swim better. Faster. Farther. Even more, we can show them passion. Passion isn’t unique to PHP, but our proximity to those who don’t yet know that it exists is.
Why any of this is relevant?
I have an overwhelming desire to do. To create. To build. To teach. To do. But I want to do so many things, I’ll never get any meaningful amount of them done. The only way I am ever going to make any dent in my to-do list is to get some help. I’ll need more than some help, though. I’ll need an army. An army of ruthlessly competent individuals who believe they can change the world. An army who believes they will change the world. An army equipped with budding giants, prepared to tackle anything. Software is the great equalizer. Anything is possible. The solution may not be cheap, or the solution may not be practical, but there is always a solution.
Stay tuned for more! In the next installment of “The why of the thing” I will detail my ideas on how to build this army of ruthlessly competent individuals, and how that differs from the way we teach people how to program today.
So one of the things I have been seeing more and more are meat-space kiosks that are enabling (and encouraging) you to interact with them by sharing the activities you participated in via your social media identities.
How are they doing this? By having you type your credentials directly into the kiosk. Not only is this a Really Bad Idea(tm) but even the act of encouraging the generally non-security-savvy population that this is a “thing” is horrifically scary. No longer do you need to click on a phishing email to lose your password, all you have to do is buy something from a kiosk which has this configuration in it, from a kiosk which has been hacked. Oh wait, it’s not like that ever happens, right? Certainly Target would never get hacked, and if Target is safe, well, maybe the little guys will be fine too.
This is a patently Really Bad Idea but I don’t think it’s going away, so what I propose is this: sites and services that consider themselves identity providers (a.k.a. you offer OAuth login credential verification for third party sites/apps/projects/whatever), with their mobile app, should provide an easy way to generate a limited-time-use OAuth token, and then provide a way to display it via QR code, or similar.
Granted, this would require adding a webcam to the kiosks, but webcams are dirt cheap, and the net positive for everyone involved. Heck, I bet it turns out to be so much more user friendly that the rates of those social participation options becomes more frequent. Imagine Retailers could even, with this new, nearly painless, option, even offer users a chance to tweet, or post a status, about their in-progress transaction to receive some sort of discount, or special offer.
Bottom line: let’s get real and not encourage the general population to foster insecure password management choices. Entering your password (which is statistically likely your password to everything) into a public kiosk which exists in an unknown state of security is a bad idea, every time. Making it normal is an even worse idea. Let’s wrangle this under control before it becomes even more wide spread.
Would you believe that a year and a half ago, today, I don’t believe I had even considered actually attending a conference?
Then through a twist in fate, I ended up at Symfony Live 2012 in San Francisco, and something clicked.
In the 6 months that followed, I became co-organizer of the Ann Arbor PHP user group, went job hunting, and accepted a position at Mashery. Exactly 1 year ago yesterday, my wife and I said goodbye to the house we bought to build our family, and my daughter said goodbye to the only home she had ever known. Exactly one year ago today, we arrived in California, in the Bay Area, our lives changing, irrevocably. We knew it would be an adventure, but we didn’t know quite what we had in store for us.
Nothing symbolizes that change more, actually, than how we ended tonight. For those of you who don’t know, I am traditionally a very, very, very picky eater. Vegetables were the enemy, and trying new things was extremely rare. Through very careful introduction and an enormous amount of patience, my wonderful wife has gotten me to (relatively) vastly expand the range of foods I am willing to eat and try. So how did we celebrate tonight? We walked down the street to the local indian restaurant, where I enjoyed some Chicken Tikka Masala. Ok, actually I enjoyed a lot of it.
My family and I eating at Sargam Indian Cuisine
I also ended up going to a lot more conferences, speaking at them, even – which unfortunately puts extra stress on my wife, who has consistently been above and beyond far nicer about how that deal works for her than I would be in her shoes. Raising a child with someone is hard enough all on it’s own. When one of them is out of it completely, not only does your only backup go away, but the child may get upset as well. I’ve watched my daughter alone for at most, I believe 4 days straight. My dear wife has had several multi-week stretches, one of which lasted for 6 weeks. I just landed Thursday from 5 days away and I’m headed out for nearly a week and a half on Thursday. I say near enough because I get to see them over-night next Wednesday. Woohoo!
The one constant in all of this is my wonderful wife, backing me up, and constantly performing amazing feats of ex parte parenting. I’ve heard stories that leave me surprised I even have a daughter still.
One year ago today we leaped, together, into the future. It’s amazing how fast the time has gone.
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.
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):
Titan 510 Starter Kit
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:
- 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.