How to Create Great Night Long Exposure Shots

Recently, I’ve been spending a lot of time taking long exposure photos. I’ll be doing more daytime ones soon, but the easiest are night shots. If you spend enough time with your camera, you’ll quickly find that light is both your best friend and worst enemy. If your shutter exposure is too long, your photo will end up over-exposed and washed out. If your shutter isn’t open long enough, you risk under-exposing.

This is even more so true, on the underexposed end, at night. If you take a camera out and simply point and shoot, there’s a strong chance your photo will be too dark to make anything out.

Long exposures are incredibly easy to take if you have the right equipment. And the right equipment is incredibly cheap. All you need are:

  • A D/SLR camera capable of shooting “bulb”. I use a simple entry level Canon T5i.
  • A sturdy tripod. This works.
  • A remote release. You can get a cheap intervalometer, but frankly, I find the user experience to be complicated and unnecessary for night shots. I use a simple one button remote.
  • An eye. You can’t buy that on Amazon, but you can develop an eye even with your smart phone.

That’s all you need. And patience. It’s worth it to try and fail, if you learn from how and why you failed.

How I did it

You’d think photography, being an art, would follow a free spirit model of wandering and feeling a shot, then taking it, when it presents itself. I sometimes do that, but I am an engineer. There is a process.

HDR CM SN1

When I’m going to a new place, the last thing I want to do is travel and find out I don’t actually have the shot I hoped in my head. This is where Google Maps comes in to scout my location. You can use street view, often, to scope out a location and even pick the spot. When I was thinking about this shout, I went to Google Maps, found the location and looked for a place where a 6′ tripod could go and have the angle I wanted.

W_Mt_Royal_Ave_-_Google_Maps

This location was directly next to the Maryland Institute College of Art and I knew thatI could get right up in that driveway, setup and take a long shot there. This is one of the handiest tricks I have and has nothing to do with photography. I don’t want to waste my time.

I spent about 30 mins attempting different settings but the key to a long exposure is a tripod that keeps your camera steady and a remote so you don’t touch it. Even just touching the button can introduce shake. You have to have a remote.

Put your camera into Manual. Don’t be scared. Open up your aperture as wide as it can go. My 50mm lens can open up to f/22. On the Shutter side, crank it all the way up until your timing settings read “Bulb”. Point and shoots, or most of them, won’t have this setting. You’re going to need a dSLR. Turn your ISO to 100. This reduces the noise and makes the sensor more more sensitive to deep light. It won’t overexpose you and you’ll have richer colors with less noise.

Two more settings that you’ll need. Make sure your camera is on manual focus and you focus it before taking a shot. Allowing your camera to find the focus point in the dark is a recipe for pain. Trust your eye on this.

Finally, every camera is different, but find your shot setting. Typically this will be set to a single shot, which means you hit the button and the shutter opens and closes exactly one time. You can also have burst which will take three shots in a row. However, for this, find your setting that is designated as remote control. This will vary by camera, so check your documentation if you’re not sure.

Now comes the psychological side.

On my camera, there is a general ratio of one second of exposure for every second of writing to the card. A 60 second exposure will take 120 seconds to complete. You have to be patient and not rush these things. Good things come to those who wait.

This shot had a 63 second exposure. I tried longer and I tried shorter, but 63 seconds gave me the appropriate amount of sky (it was dark, but the sky has a nice blue glow) while capturing passing tail and headlights. This is a trial and error thing and will depend on your  location. It’s really important to be patient and not be in a hurry even if you find yourself twiddling your thumbs.

Finally, this particular shot has been HDR’d. That’s an entirely different lesson, but, frankly, everything I know I know from reading Trey Ratcliffe. Also, my style is an over-exaggerated one on purpose. But that’s me.

Let me know if this is fun. I really enjoy teaching opportunities and I do love sharing what I know. Get out there and shoot and don’t be afraid to fail.

Asynchronous WordPress

This morning, at WordCamp US, I will be giving a lightning talk to a room full of WordPress professionals from around the globe. This talk was given earlier this year at WordCamp Baltimore as a full 45 minute talk, but sadly, I don’t have that kind of time today. So I figured I’d provide those attendees and anyone who might be interested additional context.

In WordPress, there are a “event opportunities”, usually referred to as hooks, that occur throughout the loading of a page and execution of the WordPress code. Which hooks are fired depend on the context. If you’re publishing a post, one series of hooks trigger. If you leave a comment, another series of hooks fire. If you’re in the WordPress admin, a different set of hooks are executed.

All of these hooks exist without any sort of innate overhead. They exist to allow other areas of code, including plugins or themes, to attach events to them. We are used to these things. Plugins have created all kinds of things over the years that might get triggered by a hook.

Some examples:

  • When a post is saved, a third party service analyzes the content and provides a set of suggested tags.
  • When a post is published by an author, an email is dispatched to an editor for review.
  • When a new user is added, information from social sources is pulled in and added to the user’s WordPress profile

All of these sorts of events add liability to WordPress in the form of processing time or load time. In the case where many events are queued up to be executed or, particularly, third-party APIs are slow to respond or possibly even down, the execution time in WordPress will be increasingly long while the web server waits for responses. This is a bad user experience as the user may just be sitting there watching and waiting for something to happen. In extreme cases, this waiting may timeout resulting in errors.

Some time ago, 10up was engaged by TechCrunch to solve a long and lingering problem with the site load time. One of the bottlenecks discovered to performance was a series of events that were occurring, particularly around the Crunchbase API at the time, that was causing significant delays as every occurrence of the save_post hook also carried a call to the API to get information about investors, startups and key people mentioned in the article. and render the information in the article.

We created a library that TechCrunch open-sourced and that is the topic of this talk. This library essentially offloads events that would be on a hook like save_post and fires it asynchronously 1.

This WP_Async_Task class can be included as many times as wanted as it will ever only ever be included once thanks to a class_exists() check.

Once this core class is included, it’s time to get to work. For every hook (not event) that you wish to fire asynchronously, this class must be extended with a protected $action variable which contains a string identifying the hook name and two required protected methods – prepare_data() and run_action().

The prepare_data() method exists to take a numeric index of data passed into it. The purpose of this method is to return data identical to what would traditionally be passed into the hook you’re making asynchronous. The save_post hook takes three optional arguments 2 — $post_id (integer), $post (object of type WP_Post), $update (boolean).

The run_action() method accepts the returned array from the prepare_data() method as a $_POST superglobal, so normal sanitation should also happen in the context of this method. This method is where you would define your newly named hook “wp_async_save_post”. Code examples can be seen on the Github page.

Notes:

  1. More like faux-asyncronously since they are really just moved to the end of execution on the shutdown hook
  2. Despite some arguments, with some hooks, being optional to use, they should not be optionally returned in these classes, as any event from any plugin may or may not use all three arguments — return all data that is available to be used by the hook!

Letting Perfect Get in the Way

I’ve been contemplating a phrase for a few days now. It applies to writing code, as I do for a living, as well as a whole host of other things… from relationships, to home life, life goals and endeavors… the list goes on.

Don’t let perfection stand in the way of progress.

I know what some people are immediately going to think when they read that. You’re asking me to settle for less than the best, Aaron? Let me say, emphatically, no. In fact, settling is the opposite of what I’m suggesting.

You may have heard of the Lean Startup concept of building a new business or product. I’ve talked about it before. The basic idea is you don’t wait to be feature perfect… you build, iterate, gather feedback, iterate on that feedback and continue the process. That philosophy hedges your bets around building something nobody wants by not waiting for the final, polished product before launching into the world. It relies on the concept that you don’t have to have something perfect in order to release into the wild.

Too often when making engineering decisions in a product, the risk is that you will want to make sure everything is perfect right now. Make sure the classes are all structured perfectly. Perfect object oriented methodologies are in place. Every edge case considered. An entire code-base unit tested.

All of these are extremely important, but they are also things that can be iterated on. Sometimes you can’t write code that relies on code you haven’t yet written yet! So you write shitty code that does the job in order to get ahead, and then return to that shitty code to refactor later.

Sometimes in your personal life, you may find yourself in a relationship that doesn’t have all the ideology of “The One” (Note: What the fuck does “The One” even mean?). That person is perfect in every way. They get your hearts. Understand your twitches. Empathize and support you through all your difficulties and struggles. Yet there’s just a couple things you just can’t stand. Do you give up and move on to the next, expecting next time that you’ll find perfection? Or do you buckle down and realize what you have is pretty damn good and it will be even better than that later on?

Do you let perfection get in the way of progress?

You shouldn’t. You should release, iterate, get feedback and release again. In code. In life.

New Adventures with 10up

It’s such a weird feeling.

Since I began this blog in 2004, I’ve been able to say I was truly hired exactly one time.

That day was Jan 9, 2013.

In 2004, I was employed by Northrop Grumman. In 2006, I left NG to pursue the startup world, I took up residence at b5media as the CTO who never got the title. I did this on a contract basis. I worked for myself for a very long time, got hired in 2013, left that job in 2014 and went back to working for myself. I just realized, over time, that I wanted something different.

I’ve avoided agencies, though quite a few have wanted me. These usually boiled down to what I term as “web development sweat shops”… Usually in the political space. They ramp up for campaign season – presidential and mid-term. They have a bunch of sales people in suits driving deals with campaigns – federal, state and local – to build websites and promote whatever brand of ideology they adhere to and the developers are overworked, have no seat at the table, and generally are expected to perform and work at 200% or risk getting fired.

I’m not that guy, so I’ve avoided agencies.

Unrelated note: Republicans have the deepest pockets. They spare no expense and question no cost. Democrats are far stingier. Though I fall on the left politically, I’m a capitalist who wants to make money as long as my name isn’t on it. Sometimes leaving ideology behind is worth it economically. Redistribution of wealth to my pocket, as it were.

I have, however, encountered a number of agencies who do not work in the way I abhor. One, in particular, is 10up.

For the past month, I’ve been working full-time with 10up on a contract basis. I’ve been blown away by their drive and collaboration from top to bottom. I have gotten to sample the goods and ensure they meet my high expectations of “work”. I have been respected and valued, and that is how they treat their entire team.

We have seamlessly worked together to ensure that, in a distributed company, I could deliver on my commitments of chemistry, communication and charm (the last not being a real thing, but I needed 3 C’s to be a better alliterative writer).

Prior to this engagement, I recognized 10up as a high-level WordPress agency. They only do WordPress, unless there’s a supplemental solution that engages the WordPress ecosystem. They give back to the WordPress community. In fact, they actively participate.

But I really knew very little about the nuts and bolts and the extent of their work. Now I do and I’m proud to call myself a 10upper as of tomorrow morning.

Thank you, Jake Goldman and team for the opportunity and the last month of fun, work and amazing innovation. I’m looking forward to doing more.

Something that caught me early on was an engagement between 10up and the company I helped start, WP Engine. It happened in San Francisco this past Christmas season and you may have heard about it… GIF the Halls.

It so happens that I will be working on the team that pulled that engineering feat off. I refer to it as the DARPA of 10up. The team tasked with creating crazy stuff that nobody has tried. GIF the Halls was a crazy project my team did. It tied WordPress with cameras for video greeting messages at the holidays. As a photographer, that’s right up my alley.

Can’t wait to try new crazy stuff. Onward!

Dishonesty in Digital Marketing

$9.99.

We used to look at that number, scratch our heads and rationalize the price as a marketing tactic to make buyers believe a product was cheaper than it was. This is all based on the psychology that $9.99 looks cheaper than $10 visually.

$99.99 isn’t $100 because it’s not a 3-figure number. It’s a 2-figure number and change. It has more psychological impact with bigger purchases. $999 isn’t $1000 and subconsciously, we think, it’s cheaper.

The psychology works even if the facts don’t bear out.

But there’s a nefarious new plot twist in the digital marketplace: $19.98 isn’t greater than or equal to the minimum purchase of $20.

In the old days (of yesterday), if you go into a convenience store and tried to buy a bag of chips and a coke, you might be told that the credit card minimum was $5. That tactic is a based-on-data-driven-business reality. Credit card companies charge a per-transaction fee that is usually a flat rate, so the law of diminishing returns comes into effect.

But you could always add a pack of gum or similarly low prices item to get over that credit card minimum.

But the marketplace is different than these harsh business realities. In the marketplace, specifically digital, companies are forced into a profit-or-bust scenario where anytime they can get $9.99 more, they inch closer to profitability… And that’s a business reality too.

When I decided to try Drizly, the fantastic new alcohol delivery service that fashions itself a liquor-store-meets-pizza-delivery service concept, I placed two six packs of great IPA in my cart and went to close. Total: $19.98.

Store minimum: $20.

Mind you, pretty much everything comes in at a minimum of $9.99 so the closest you can get without going over? $19.98. To buy that pack of gum, so to speak, that gets you that extra 2 cents? Another $9.99.

This is, of course, intellectually dishonest.

If you cared about minimums, you’d make each six pack a penny more. And if that’s an artificial number to inflate profit, you force the user to spend another $9.99 for a real store minimum of $27.97. Plus delivery fee. Plus tip.

The 99 cent marketing tactic has evolved. Of course, I didn’t purchase anything from Drizly and they are, by no means, the worst culprit. But they are the most recent example.

Beware the 99 cent rule. And beware companies who sell their wares in sneaky ways in pursuit of that almighty dollar.

If I Had to do it All Again

As I sit here tonight, at a bar, typing on the WordPress app (which will undoubtedly make my fingers cramp typing long form), I’m thinking about my life. What has made me a man, a developer, a friend, and lover (I can even get in Oxford commas on the app!)

In exactly five hundred and fifty six days, I will be 40. FORTY!

I don’t look like an old man.

I don’t (usually) feel like an old man.

I don’t even behave like an old man.

Note: what follows may sound like I’m saying “Get off my lawn!”

Where were we? Oh yes, FORTY.

I just finished my first week on a new job. I’ve been doing WordPress stuff since 2004. I was learning PHP in 2000. I was developing coding chops in 1987 on an Apple IIc!

I’ve been married. Divorced. Had a kid. Owned a house. Chased the rabbit hole that is the American Dream™.

I’ve loved and I’ve lost. I’ve had dear friends pass away from cancer and heart attacks. I’ve watched national tragedy and personal tragedy, and even suffered my own.

My perspective has evolved. Sometimes willingly, sometimes not.

Take weekends and evenings. You may be single. You may not be. It doesn’t matter. Don’t work at all hours of the day and night. You’ll be less productive, because you’ll be less rested. You’ll also be better socially adjusted.

Get up early. Don’t sleep in until 11am. Your body wasn’t meant to do this. Don’t force it to. It will rebel. Related to this, and the last point, get to bed before midnight.

The man who cooks is the man who gets the woman. I’m happily involved, but my girlfriend and I both love to cook. And you know what? It got me ahead when I was single. No woman wants your idea for dinner at your place to be frozen dinners or delivery (there’s a time and place for delivery!).

Find passion that you aren’t aware of. Later in my adult life, I bought a camera and started learning how to shoot… How to visualize and see a photo. Do something, try something. Get outside your comfort zone and challenge yourself. Volunteer!

Always learn. When I started on WordPress, I was hungry. I was curious. I started learning the ins and outs. I admit that in more recent years, I’ve allowed myself to get comfortable. I’m working on some other interesting things that will stretch me even more. If you’re in tech, you have no choice but to move forward. If you don’t learn, you’ll be left behind.

Don’t take the world literally. Seriously, stop. I’m looking at you, political nerds. Stop parsing everything that politicians do. They do it because it’s politics and all the crazy is a vast, orchestrated act to get you worked up and supply them with power. Live your life. Change what you can and accept what you can’t.

Read. Everything. I’m not a book guy, but if you are, have at them. Spend less time on Facebook and Reddit and more time on sites with content that is written at a college level with an informed, intellectual audience. Read The Atlantic, Ars Technica and the huge variety of other excellent sources. Stretch your intellect.

You’re not right. At least some of the time. Give grace to others, even if you “know” you’re right.

That’s it! Or at least all I can think of after 14h of work and several beers. My hands aren’t even cramped!

Update: The dress is white and gold, you morons.

Weekly Blog Post Challenge

Back in 2004, I, like many other people in the WordPress community began blogging. We didn’t, I don’t think, get into WordPress because we wanted to write code or build a career. We got into it because we wanted to write. Our natural talent and curiosity took over, however, and we began writing code.

At some point, I broke this blog apart into other blogs… a personal blog, a photoblog, a sports blog, etc. All of these are spread around and in various forms of repair or disrepair.

I have nearly 1k posts here, down from 2k a few years ago when I did a purge. But I’ve only written 12 since January of 2013. TWELVE. Sadly, life takes over and work takes over and, at least for me, the artificial silos of “this blog is for professional writing, this one is for personal writing” and so on has kept me from deciding… I want to write again.

As Twitter became ubiquitous, most of my professional interactions began happening over there. Instead of my photoblog, I’ve leaned more on Flickr and Instagram. All of this has left my blogging in a sad state of disrepair.

My friends and colleagues, Brad Williams and Dre Armeda, have realized that they really want to get back to what they love doing and that’s writing more. Brad has committed to writing 100 posts in 2018 (a goal that is ludicrous for me).

Dre has begun a Facebook group (feel free to join if you plan on joining us in this exercise!) where members can encourage each other and share their content. Not everyone is committing to 100 posts. For me, I’m committing to one post per week.

I suppose now is a good time to explain that the invite to join me in this exercise does not mean you have to write about WordPress, or for that matter, any topic whatsoever. If you want to pick a topic (law, science, dating, oncology!!!), feel free. Or talk about any multitude of topics. But the exercise is more about the therapeutic exercise of writing and not so much about what you’re writing about. And it’s to give you (and me!) peers to keep us going forward.

This does count as the first post of this new commitment. I’ll have another one next week.

As part of this whole reboot, personally, I plan to consolidate my various blogs into this one. Since my online name is technosailor, it seems appropriate that technosailor.com should be the hub for everything else.

I’ll also be building a new theme that will accommodate all of this merged content and, frankly, WordPress has come far enough since I was blogging regularly, that it’s completely likely I can leverage new forms of content that I didn’t have access to before.

Anyways, I’m off track. Please do join me in this experiment. It will be fun!

Bad Job Board Titles

Human Resources personnel. You gotta love ’em.

They’re the people who make sure you get paid every week, or biweekly or however often you get paid. They’re the ones who you talk to when you have a complaint about another employee. HR personnel are also, generally, responsible for posting job reqs.

If you go to Dice.com, or Monster, or Career Builder, you’re going to see a whole lot of job postings that, as you scan the titles, start to blur together a bit.

The reason for this is because almost all job postings carry a cliché name based on the fact that generic templates (or more accurately, “loosely specific”) are used and common titles are used. This usually is because the HR person who puts together the job listing is not familiar enough with the minutiae of the specific position as, say, a hiring manager might be.

So you end up with titles like “Web Developer”.

What does it meeeeeeeeeaaaan?

Many of you know that, about three weeks ago, I lost my job to a reorganization at the company I worked for as a WordPress Developer (another loosely specific title). Since that time, I have been talking to a variety of companies that have proactively reached out to me, knowing my reputation and experience in the WordPress world. I have generally avoided the job sites because of the problem described above.

“Web Developer” as a title is misleading, vague and all-encompassingly wrong. Why do you say that, you might ask.

Generally speaking, a web developer job is listed like this:

Acme, Inc. is seeking a driven, highly talented candidate to fill our Web Developer position. In this position, you will demonstrate creativity as you work with others to accommodate our clients needs. Eligible candidates posses intimate knowledge of the following

  • HTML5
  • CSS3
  • jQuery, or similar Javascript framework
  • SASS or LESS
  • Grunt
  • Node
  • AngularJS

Please forward your portfolio to XYZ@ABC.com.

Etcetera, etcetera, etcetera.

This is, in fact, a valid “web developer” role.

A valid web developer role may also look like this:

Acme, Inc. is seeking a driven, highly talented candidate to fill our Web Developer position. In this position, you will demonstrate problem solving as you design, build, test and deploy a RESTful API and database cluster that can grow as needed. We prefer the candidate has some knowledge of algorithms and scaling. Candidates should possess intimate knowledge of the following:

  • NoSQL
  • MariaDB/MySQL
  • PHP/Python/Ruby
  • Vagrant
  • Agile and/or Scrum development environments
  • Moderate familiarity with Ubuntu or other Linux environment

Please forward your resume and a link to your Github account to XYZ@ABC.com

Very similar, and yet very different job listings. Yet they can both be referred to a “Web Developer” jobs, even though one is, more accurately, a “Front End Developer” role and another is “Back End Developer”.

By calling a job a “Web Developer” job, you have people who have only futzed around in Dreamweaver and only consider the user experience or interface looking at positions meant for data architects. And you have folks who know how to stand up an EC2 cluster and build and deploy Django applications with high redundancy and caching layers looking at jobs meant for the people who lose sleep at night over typefaces.

Everyone loses.

The candidate loses the opportunity to find the position she is really looking for because it’s buried under a bad title, or she gets so tired of looking for the real gold in the pile of rocks that she gives up.

The employer loses the opportunity because the signal to noise ratio on applications is terrible. Or, people just get tired of applying for mislabeled jobs.

So please, hiring managers, at least write up your “recommended” job req for HR. You know the job better than anyone. You know who you are looking for. Give it a proper name!

Entrepreneurial Priorities if You Don’t Want to Despise Yourself at Age 80

With the exception of a general, “We’re hiring” post a few days ago, my site has been largely neglected for the past year. It’s not that I don’t want to write. I do. And it’s not like I don’t have things to say because, if you know me, I do. I really do. And it’s not even that what I’d like to say isn’t all that important…. because it generally is.

I feel the need to write today, however, because it directly relates to why I don’t write as much as I used to. And it directly relates to why I, in the eyes of the typical startup founder or venture capitalist, am not a great entrepreneur. In their eyes. I’ll admit that I’m a terrible day to day running a business guy. I’m a terrible “take care of the basics” like health care and witholding taxes” guy. I’m actually a pretty decent entrepreneur though. Put me on the phone with a prospective client, and I can speak their language and close a deal. At the end of the day, being an entrepreneur is all about making money so you can live to play another day.

Or is it?

It’s also about life and lifestyle.

I feel really compelled to write about this because, though I sorta took a mental break from the tech startup world for a bit while I focused on my job and my new life back in on the east coast (and, you know, survival and keeping a roof over my head), I’ve dipped my toes back into the water.  I am as alarmed today as I was two years ago about the entrepreneurial scam that is peddled by basically everyone.

There’s an entrepreneurial scam?

Funny you should ask! Yes. And it goes something like this: “If you’re not willing to give 24/7 to build your startup or company, you shouldn’t be an entrepreneur”.

Jason Calacanis, famously, said in one of his listserv emails on September 27, 2008, eight days after the market crash of September 19, 2008 and two days after the FDIC seized Washington Mutual Bank, that the sign of someone (paraphrasing here) worth being hired/invested in in the startup world is the person who will gladly come in on Sunday. This was the actual passage from that email:

Hold an optional off-site breakfast meeting on a Sunday and see who shows up: If folks don’t show up for you to grow/save the company on a Sunday for a two hour breakfast, they probably aren’t going to step up when the sh#$%t really hits the fan. You need to know who the real killers on your team are and you need to get close with them now. Again, it’s fine to have 9-5ers on your team–if you’re the Post Office. You can’t have them at a startup company. Note: if you reading this and saying I’m anti-family, save it. Folks don’t have to work at startups and some of the hardest working folks I’ve met have families and figure out how to balance things.

UGH. So much wrong with this sentiment. This sentiment screams, “I am what I do” and that is simply the most self-loathing sentiment you can have. It is neither something to be proud of nor is it healthy mentally or physically. I have a lot of respect for entrepreneurs who will go to the Farmer’s Market on Sunday morning. Or who take their kids to the park. Or who go to brunch with their husband/wife/girlfriend/boyfriend. Not so much for the person who opts to work instead of doing these things.

Here’s what that mentality of roughly 2003-2008 got me. It got me a career, yes. It also got me a divorce and years of my life I will never get back. At nearly 38 years of age, that is a lot to bypass in the service of the almighty dollar, ego, prestige and “fame” (whatever the fuck that means).

While I worked my corporate 9-5, I was coming home and then working another 8 hours on client works, building a company or other nonsense. I neglected my son (who fortunately still loves me to death) and my wife, at the time, by working every night until 3am just to pass out exhausted and wake up at 6:30am to go to work again.

Those lost opportunities to be present were squandered because I bought into the charade that if I work longer and harder, I’ll succeed more and have a better life. Rubbish, hogwash, nyet, NO!

After my ex-wife and I split, I naturally did some soul-searching. Work wasn’t our only problem. But I’d say it was a contributing factor to all the problems I could see. I decided to do a 30-day “work cleanse”… For 30 days, work normal business hours – 9-5, 10-6, whatever… and then put my work down and find something to do to occupy my time. That was a hard thing to do since my work was my identity and my habit. However, after 30 days, I realized I was feeling more energized. I got more sleep. This enabled me to focus better on my work when I was doing it. It helped me get things done faster. I felt more alive.

By and large, this 30 day drill has become my lifestyle now six years later. I typically still work Monday through Friday, 9 to 5. I avoid after hours work or weekend work if I can help it. Though I still take side work, one project at a time in digestible portions, because… a little extra cash every month is nice. But, today, I spend time with my girlfriend, cook dinner sometimes, and do stuff that is fulfilling to my life (usually!) instead of investing all my energy into something that will ultimately fade away.

My greatest fear is that, in my latter years, I will look back on my life with regret, building something that doesn’t last while sacrificing the things that really matter on the altar of snake oil salesmen. You are not what you do. Your time spent does not define your character.

In the words of Trent Reznor Johnny Cash, three months before his wife’s death and seven months before his own:

What have I become 
My sweetest friend 
Everyone I know goes away 
In the end 
And you could have it all 
My empire of dirt 
I will let you down 
I will make you hurt

9 Years of Blogging: Lessons from the Trenches

It is May 20 today and that means two things. First, it’s the 5 year birthday of this handsome boy. Without a doubt, his day will be filled with belly rubs and snacks… as it should be.

But secondly, this is my 9th anniversary of blogging. It’s also the 9th anniversary of me installing WordPress for the first time and embarking on, what would become, a career change and my livelihood. This month, WordPress celebrates it’s 10th birthday which makes me a WordPresser for almost all of the time it has been around.

In that time, I have dabbled in everything from traditional blogging (evolving from political blogging to personal blogging to blogging about blogging to social media blogging to business blogging…. and on and on), to writing code for bloggers use to writing a book for developers to consulting on WordPress projects, etc.

I may have learned something or other along the way. From my 9 years, let me share some of my thoughts:

Blogging Never Killed Journalism

In the hey day, everyone suspected that “old media” was a dying breed and that blogs would overtake old media and replace it. While it is certainly true that old media had to adjust to the digital age, I think it’s more relevant (and healthy!) that blogging began to complement traditional media, as I noted in 2010. Today, most of the major news organizations maintain blogs and journalists wear the hat of traditional reporters and maintain more loosely structured blogs as well.

The same can be said about other forms of digital media – Twitter, primarily, but Reddit and other Social Media destinations as well. While it’s certainly true that breaking news travels much faster on digital platforms (including blogs) than traditional, the fact is that traditional publications still have a relevancy and can get a job done in a better way that digital sometimes.

This is particularly true for long form content. On the internet, there is an inherent ADD that causes many readers (including myself) to get distracted easily and not be able to consume long-form content as easily. If I had to back-of-napkin guess, I’m guessing the sweet-spot for online articles is between 300-700 words. This article will, of course, blow that number out of the water. It is rare that you see great long-form content from publications other than The Atlantic, Ars Technica, the New Yorker, etc.

Notably, it was Sports Illustrated’s print edition that carried the story, that has since been published online, about NBA Center Jason Collins coming out as gay. That was an important piece of journalism with far-reaching political and cultural fallout. And it wasn’t printed online first. It was printed in traditional media.

Get Rich Quick with Blogging? Fugghedabotit!

Oh boy, do I remember the days when everyone fashioned themselves a pro-blogger. Throws some ads up, write content and PROFIT!

While there’s a part of me that wished that model worked (Damn, that would be so easy… I’d never have to work again!!!), life is never that easy. First of all, the advertising bubble was just that… a bubble. The fact that usable metrics (that advertisers with real money wanted) around long-tail sites could boost income was (and still is) a farce. You need to be able to show some level of guarantee of traffic (CPM) or relevancy with a user propensity for buying (CPA). Otherwise, why buy the ad spots at more than “remnant” (i.e. cheap) rates. Remnants aren’t going to pay your salary, much less your coffee bill for the month. I abandoned advertising on this site a long time ago.

Protip: Affiliate advertising still can convert very well and, if handled properly, could potentially earn someone a living.

Data Portability is actually important

Data portability – the ability to take all your content and pick up and go somewhere else – used to be the domain of radical, technarchists like Dave Winer. However, with recent acquisitions of companies like Instagram by Facebook or the very recent Tumblr acquisition by Yahoo!, where reportedly 72,000 Tumblr blogs were moved into the WordPress.com silo in a single day, the ability for users to take their content somewhere else is actually a primary concern these days. It didn’t use to be like this, but notably enough of these events have scared users into wondering what happens when their platform of choice goes out of business or is bought.

Personally, for these reasons as well as things like SEO and domain canonicalization, I’d always recommend people have their own site and use open source self-hosted solutions like WordPress.org or even one of the (in my opinion) inferior open source content management systems out there. Control your own destiny.

Journalistic Integrity

Many bloggers fancy themselves as journalists. They’ve never gone to J school. Never got a degree. Never learned the art of sourcing. All they have is a laptop, a loud mouth and something to rant about.

To be fair, there have been hundreds of bloggers who have turned into amazing journalists in their own right, broke stories, developed sources, protected their integrity with confirmations, etc. Then there’s the rest of bloggers who hear something, run with it, write a story that is poorly sourced (“a source inside Congress told me…”) with little to no confirmable facts and want to be respected as journalists. There’s a reason why real journalists look down their noses at bloggers like this. And rightly so. Also, why everyone looks down their nose at CNN… ahem *cough cough* )

Not to mention the spate of bloggers who have historically expected freebies for “review” or otherwise. Another thing separating real journalists from bloggers.


There are probably dozens of lessons learned from the past 9 years. Don’t hold yourself to a posting schedule… write when you have something to say. I do that here. Maybe a lesser known thing… write drunk, edit sober. Yeah, I have some of my most creative time when drinking. Dumping that stuff onto the proverbial canvas while in that state and hitting “Save Draft” instead of “Publish” means I can come back later and review what I wrote with a clear head.

What tips would you give?