Stories about Software


DaedTech Digest: Hosting Woes and Unit Testing Studies

Happy Friday, folks.  Time for another installment of the DaedTech digest, wherein I link out to a bunch of technical posts I’ve written for other sites.

This week, I don’t have any specific personal narrative to relay, per se.  That’s largely because I’ve been working like a dog as we onboard additional clients to Hit Subscribe.  Oh, speaking of which…  we’re opening up the author rolls again, but looking for certain specific column types and topics.  If you think you might be interested, here’s the page where you can get started.

The only other item of note is that I have now successfully switched hosts.  My old hosting provider, Hostmonster, had my site on a server that must have become overloaded several weeks ago.  After seemingly endless support tickets and runaround from their tech support, they settled on three rotating and competing verdicts:

  1. You’re right, our server is overloaded and we’ll fix it.
  2. Actually, no, it’s probably WordPress or plugins or internet or something, whatevs, good luck, %#$& you.
  3. Ah, actually, it is our server, but that’s life and you need to pay more if you want us to fix it.

I got tired of pleading my case for them to listen to the techs that said it was (1), so I gave them an ultimatum: migrate me to a new server, or buh-bye.  They made their choice, and so did I.  I’ll get to the new provider in a second in my picks, but suffice it to say that I’ve measured page load times on GTMetrix, and my identical, migrated site now performs substantially better than it even did on Hostmonster, even before they overloaded the server.  And I’m paying less!

I’ve installed no new plugins on my site or changed its configuration in months. But you’re probably right Hostmonster, this massive uptick in intermittent server errors and timeouts… probably because I wrote a long blog post or something. Couldn’t possibly be a resource issue on your server.

I’m planning to migrate a couple of my other sites as well in the coming weeks.


  • On that note, my first pick is the new hosting company, Siteground.  It’s too early for me to speak to their long term performance or even support quality.  But, for someone who is too busy to deal with the mundanities of website administration, they are perfect.  I just had to give them my login credentials to Hostmonster, and they took care of everything — not just migrating the site over in its entirety, but taking care of the SSL cert, redirection, moving my DNS, and even taking over supporting my email.  I didn’t see any downtime, and I expended almost zero effort.
  • Also related to this saga, I want to throw a nod out to isup.me, which is a great way to see if a website is down for everyone or if you’re just having a problem.  I took advantage of the “check my site for malware” option (to throw it at Hostmonster support, if they tried that excuse) and wound up chatting with the site owner.  He’s getting into hosting recommendations and other value-adds, so bookmark it and keep your eye on what they do.
  • Speaking of things that abstract ugh IT issues away from me, I also pick LastPass.  I’ve used them for years now and it’s incredibly convenient.

The Digest

And, on that note, have a great weekend!


If You Want to Matter in the Software Industry, Stop Being a Laborer

Alright, first things first.  I’m going to do a bit of housekeeping.  My apologies for the sluggish performance of the site lately, and the occasional 500 errors you may have noticed.  My hosting company’s physical machine has been having some issues and they’re trying to figure out whether they can fix it in-situ or whether I need to take an outage while they migrate me to another machine.  Also, my apologies for missing reader question Monday.

Fate has conspired to sentence me to a couple of poor nights of sleep in a row.  So I don’t really have the energy for a rant.  Instead, I’m going to go the more zen route and continue with the “developer to consultant” series.  Today, I’m going to focus on the mindset shift you need in order to go this route.  You need to stop being a laborer.

The Phases of Problem Solving

In a post where I first mentioned this idea of guidance on how to transform yourself into a consultant, I referred to the phases of problem solving.  Roughly speaking, these are the following.

  • Diagnosis of a problem.
  • Prescription of a therapy.
  • Application of the therapy.
  • Re-application/maintenance of the therapy.

When you’re sick, you go to the doctor.  The doctor furnishes a diagnosis and writes you a prescription, and then exits the equation.  An unskilled laborer (i.e. you) then applies the therapy of taking the pills.

A similar concept applies in other sorts of knowledge work.  A lawyer, for instance, figures out which precedents to cite and then hands it over to a law clerk to write up or to an admin to make copies.  Or take a tax accountant.  The accountant herself figures out whether you should file as an S-Corp or pass through the taxes and then turns the paper work over to a less skilled assistant.  You get the idea.

But to tell you how this relates to us and to software, I don’t want to compare us to these people.  I want to compare us to an arch-criminal.

Winston Wolf, Master Consultant

In the movie Pulp Fiction, a couple of gangsters named Jules and Vincent are driving with another guy, Marvin in the backseat.  Gesturing with his gun during conversation, Vincent accidentally blows Marvin’s head off, creating quite a horror show in the car, right in the middle of a public roadway in broad daylight.

Vincent and Jules, hardened criminals though they may be, panic and duck into a nearby associate’s house, and call their boss who sends his “cleaner” — one Winston Wolf.  Wolf is a consultant.  You can watch the (graphic) scene here if you want, but suffice it to say Wolf helps.  He quickly and efficiently sizes up the situation, diagnoses all problems, and lays out a solution.  He then dispatches Vincent and Jules to execute the details of the solution (“apply the therapy”.)

Despite some grousing from Vincent, who doesn’t like being told what to do, Jules and Vincent oblige, and they set about the grotesque tasks of cleaning viscera out of the car, placing liners over the seats, etc.

In this episode, Wolf’s diagnoses and prescription are valuable.  The cleaning/scrubbing/etc tasks of execution are important, but only valuable because of the circumstances.  Without Winston, Vincent and Jules go to jail.  Without Vincent and Jules, someone else could always do the labor.

Read More


DaedTech Digest: Delays, Risk, Visualization and Gigantic Log Files

Another week in the books, marked, as always, by a DaedTech digest post.  Another week here in sunny San Diego, marked by a predictable mix of work and fun.

On the work side, we’re building out our tech content agency at what feels like a fairly furious pace.  I suppose at some point, I may write DaedTech posts about business and growing an agency, but that seems a little off mission at the moment. (Weigh in if you feel otherwise.)  I’m also keeping the dream alive with our boutique codebase assessment practice, so a lot going on.

On the fun side, we spent a great weekend exploring Pacific Beach and La Jolla Beach in San Diego.  This included a ton of walking/hiking, sampling meals, appetizers, local beers, and desserts at local establishments, and just generally being outdoors.  As someone born and raised in the US Midwest, I can think of nothing better than a winter where it’s perpetually 70 degrees and sunny.

To include you in my joy, here’s a picture of some sea lions we came across while exploring.  Don’t let the apparent peacefulness fool you.  These things bark like crazy, stink like crazy, and spend most of their time banging their heads against one another.  It’s an endlessly amusing spectacle.


  • In case you missed it, DaedTech has a new direction and I’m gaining steam with it.  Here’s a category tag for this series I’m going to be working a lot on that basically lays out a guide for how we, as software developers, can take over the software development industry, rather than serving as perpetual grist in its mill.
  • I’ve been creakily easing my way back into software development, and Newtonsoft Json.NET provided a nice, gentle landing for not having to bother writing my own logic to parse JSON.
  • Speaking of software development, you know about Alexa site rankings?  Well, if you want to get that data programatically, you might think you have to deal with AWS’s byzantine SOAP API, public and private keys and all that.  Nope.  Check this out.  That link is a neat little XML payload containing DaedTech’s Alexa rank.  Just swap whatever URL you’re curious about for daedtech.com in the URL parameter.
  • On the personal front, I pick La Jolla beach, which is where we encountered both the sea lions pictured above and harbor seals.  If you’re ever in southern California and you like outdoors/nature, it’s worth a trip.

The Digest


Positioning Strategy for the Aspiring Consultant

A couple of weeks ago, I wrote a post in which I announced a new flavor of posts for DaedTech.  I was going to do this as a book or video product, but I tired of analysis paralysis.  So I’ve decided to just start teaching anyone reading the tricks to becoming a consultant. (Follow along with a new category).  This is the second post in that series, and it concerns your positioning strategy.

Figuring out your positioning strategy should be the very next thing on your list after figuring out that all software developers should become consultants.

If you just said, “wait, my what?” don’t worry — I’ll get to that.  But first, a bit of tough love.  I have a tactical rant lined up before I can get back to being helpful and upbeat.  It’s for your own good.

The Harsh Truth about Your Current Positioning Strategy

If I ever turn this “from developer to consultant” series into a book or something, I’m not sure if this post from last week will make it or not.  It’s not specifically related, but I’m going to build on it here today.

The Craftsman Positioning Problem

In that post, I talked mainly about our industry’s bemusing fetishizing of medieval craft guilds, and about how letting yourself get sucked into that trap hurts your career.  Toward the bottom of the post, if you’ll recall, I began to talk about positioning.

When you position yourself as a “craftsman,” you’re boasting about superior quality, but competing with cheaper prices.  People who do this fail to understand why people pay them.  But, in all honesty, self-described craftsmen aren’t even the worst at this.  The entire journeyman idealist set gets it badly wrong.

The Broader Developer Positioning Problem

Don't sacrifice your positioning strategy to code-jousting sites, as illustrated by this joust-ready knight.

We as software developers, enabled by opportunists around us, cheerfully ignore the real reason that people pay for us.  It’s fun for us.  We go to sites that let us “joust” or “duel” or “ninja each other” for badges and tokens and stuff, demonstrating that we can write a sorting algorithm 0.01% faster than the runner up.  And then we think that’s our value proposition to employers.

“Why should I hire you?” a non-technical hiring manager might ask.  And you might respond, with something that, in his brain, translates to, “I keyboarded in the stuff with the things and it was 4 nanoseconds faster than the what’s-it by the other guy.”  And then you think that helped you land a job.

If you make $100,000 per year, you might look at a “more senior” developer making $130,000 per year and assume that she’s 30% more awesome than you.  If you suddenly discover that she only knows 4 GOF design patterns off the top of her head to your 14, you might then start railing about the injustice of it all.  The industry meritocracy has failed!  (But not systematically and in a way that invalidates algorithm jousts — just totally in this one isolated case!)

Here’s the thing, though.  To your employer, assuming the employer is larger than “tiny” your two salaries are an inconsequential rounding error.  $100K is $50/hour and $130K is $65/hour and both of those rates line up with low end US contractor talent or good offshore talent, if they’re looking for geographic arbitrage.

They’re not hiring you because you’re “better” at code jousting.  They’re hiring you because you’re the fungible person with the desired citizenship/work status that the interview process spat out the other side.

Read More


Freelance Tax Implications for Side Hustlers: How to Handle It

Alright, time for a reader question Monday post.  I’m sure nothing takes the edge off of the end of your weekend like me answering reader questions.  So, let’s do that.  I’ve talked before about taxes for people going fully independent and hanging our their shingles.  But this one is all about taxes for side hustlers.

Here’s a composite of the reader question, since several folks, some from different professions, have asked me about this.

How should I handle taxes when I have a full time job and I start moonlighting?

In all likelihood, this will be a fairly US-specific post.  But there are commonalities with other tax systems, as I’ve learned by having an increasingly global set of colleagues and folks that I talk to.  So, hopefully, even those of you not in the US can get some value out of this.

Wait, Why Is This an Issue at All?

I’m going to really start from first principles here, in this discussion of taxes.  In other words, I’ll assume that you not only didn’t know how to handle taxes from income when you moonlight, but that you didn’t know you needed to do anything to handle them.

Alright, so here’s the thing.  Let’s say, for the sake of easy math, that you earn $52,000 per year, paid biweekly.  This results in paychecks of exactly $2,000.  At least, that’s what it will say under the “gross income” portion of your paystub.  As you well know, Uncle Sam has his fingers deep into your pockets before the direct deposit ever hits.

For the sake of more easy math, let’s say that your overall tax rate is 25%, meaning that you take home $1,500 per paycheck.  (This is extremely facile, since the US has a graduated income tax system.)

So every paycheck, the government (actually, your employer, but forget that for a moment) hangs onto $500 and you bring home $1,500.  At the end of the year, when you do Turbo Tax or drag your receipts to H&R Block, you neither owe money nor receive any.  Why?  Well, because, in a rather unusual circumstance, your employer has withheld exactly what you owe.

But what if you now start earning $1,000 per month moonlighting?  When you moonlight, nobody withholds income.  So now, at the end of the year, you have something of a problem.  Your total earnings are now $66,000 (52K + 12 months of 1K), but you’ve only paid $13,000 of the $16,500 that you owe throughout the year.  You’re going to need to pay the IRS $3,500 at tax time.

Oh, and they’re going to penalize you.  But let’s worry about that part later.

Read More