Mark Twain Quotes

Tuesday, July 14, 2015

Rockstar Developer

Most days my wife asks me, "were you a rockstar at work today?".

Well lets see.  Did I perform an amazing set of music while intoxicated, only to follow that with more drinking and partying with groupies backstage?  Was I overbearing and egotistical because I really think I am "all that" and more?  Was I allowed to get away with being a general asshole because I'm just so damn good at what I do that people are willing to put up with me?

By that definition, which is what most people think of RockStars, no.

Is that what most Rock Stars are, though?  Yes, a lot are, but not the really truly good ones.  The ones who have staying power, the ones who really do justice to their art, are much more than this (though they often go through this as a phase).

I keep hearing about the Rock Star programmers, who are uber nerds lacking in social skills but so talented they are allowed to essentially be assholes, or at the least so socially dysfunctional they have to be kept separate from the "normal" folk in a company.

And I think to myself, am I good enough to be considered a Rock Star?  Am I a big enough jerk to be considered a Rock Star but talented enough to get away with it?  Do I want to be this kind of Rock Star anyway?

What about those who are not Rock Stars?  Does this mean you are just relegated to being a "Code Monkey", cranking out code like an assembly line robot, counting the hours until the day is over and being bored out of your mind?

Lets take this analogy all the way and actually look at what good Rock Stars do, and musicians more generally.  You have your band, consisting of the "Rock Star", usually the "Front Man/woman" who is generally the public face of the band, who probably writes a good amount of the music and lyrics and performs most prominently.  The other band members may also be Rock Stars too, in varying degrees.  Depends on the band, of course.

Almost every Rock Star or band of Rock Stars also makes use of what are called studio or session musicians.  These are people who are also very talented at what they do, but they don't generally get the public recognition that the rock stars get.  They do their work more behind the scenes but are also integral to the sound and production of polished music.  They may also perform with the band as backing musicians, and are often no less talented than anyone else, they just aren't "Rock Stars".

This applies also to programmers.  "Code Monkeys" are like session musicians and are just as important as the Rock Star.  However they get little respect.  A rock star programmer often has many other programmers contributing to the project, and wouldn't be able to be a rock star without their support.

So what makes the rock star programmer a rock star?  Its not just being excessively talented at that one thing, and its not about being a diva.  Being a rock star means being talented at a number of disciplines, and being disciplined in general.  A good rock star is actually appreciative of the support network that allows the rock star status.  It means being a professional about the work, and even loving what you do.  A rock star is more than just being technically proficient but also having creative insights into what you are working on.  Being an architect, and not just a construction worker.  A rock star should also raise everyone up with him, because he knows he used to not be the rock star.  A rock star knows when to be a leader and when to follow and does not let his ego get in the way of the right choice.

Every session musician or programmer has the ability to be a rock star some day, but loves what he does enough that it shouldn't matter, because he knows both roles are important.

So, some days, I am a rock star.  And some days I'm a session musician.

Imagine Dave Grohl vs Kanye West.  One of them is a consummate musician who loves what he does, shows appreciation to others, and is just a generally nice guy and very successful at what he does; and the other one is Kanye.  Just sayin.

Wednesday, April 29, 2015

How to be miserable at your dream job

Twice in as many years I thought I had the perfect job.  At least, I tried to convince myself of this fact.  Who could complain?  The pay was good, the people were nice, the product/service was admirable.  I wasn't just dealing with e-commerce selling widgets, I was working on software that by all rights should be making people's lives better.  There were perks like free sodas, business trips to cool places, full medical benefits at no cost.  The first one even had flex time and partial telecommute.

But I was not happy.

Turns out I am just not a good fit for certain types of companies.  Namely, larger ones.  As in, larger than I can count on my fingers.  This is not to say I am not a "team player" or that I was not "invested" in the company.  But I am finding out that working for a really small company (or being a really small company) is where I excel.

I can't be a cog in a bigger machine.  I have to be a more important, integral part of something, or I loose my passion for it.  At a small company, I am the expert.  I can make choices and evangelize for them.  I don't have to deal with bureaucracy.

The second of the two companies, I took a chance and jumped into a development stack I had no experience with (.NET and Microsoft).  Turned out I just wasn't very good at it, and I was miserable working with it.  I should have never let my standards down (sorry MS lovers).  I took the job because of the company and their product alone, ignoring the lack of experience and the fact that it was a bigger company.  That was a mistake.

I had offers from larger companies, willing to pay a whole lot more than I was making, offering amazing perks, etc.  I turned them down.  I wasn't willing to work somewhere I knew I would hate, just for a lot of money (never mind the commutes were hell).

The job I finally accepted, I told him straight up, I am not too concerned about money as long as its enough to pay the bills. I am more interested in a good company where I can be myself and be happy working with the tools I know best.

I think I've learned my lesson.  Small is beautiful. Which is the way I've always approached anything creative.  

Wednesday, April 1, 2015

An exercise in misdirection

Did you know we spend billions in foreign aid yet we have homeless people, veterans without benefits, and elderly without medicines?

Oh that's terrible!

But the biggest chunk of that foreign aid goes to Isreal, thats over $300 for every citizen there.

Well, thats good then, Isreal needs it!

However, the total amount of foreign aid is still only a mere 1% of our budget.

Heck we should be sending MORE money to Isreal!

And we only spend 3% on educating our children.  Israel spends more than 6%.

Yeah thats why we're falling behind!

19% goes to our military though.

Well then, go USA!  Get those terrorists!  We're number 1!  Support our troops!

Only 4% goes to our veterans...

Oh, uh.. well, support our troops.. er, um.. stand with isreal.. or.. uh..

Tuesday, March 3, 2015

My next computer will be...

So I've decided to build my next computer.  

No, I'm not talking about just buying a case and stuffing a generic motherboard with Intel CPU into it.  I'm talking about a portable, laptop like machine.

With the availability of alternative options like the raspberry pi, you can build interesting computers.  Yes,we're not talking powerhouses here.  But we are talking a level of flexibility and variety not seen since the early days of personal computers.

Now the PI is a little weak, even though it now sports a quad core at 900mhz.  But it is only $35.  For around $100 you can get an octo core at around 2ghz, with the ODROID.

Using an HDMI to LVDS board I can hook up almost any LCD screen, and I've got a couple old laptops I can salvage from.

Add in a MoPi power HAT and a handful of battery cells and I've pretty much got everything I need to make a decent little machine.

The question then remains: what do I put it all in.  There is the Pi-top project that has a 3d printed laptop case.  But I want something more unique.

The first generation will be a prototype made from recycled cardboard.  Then I will make a more elaborate design using Lego.  Finally, I make a permanent design using wood, metal and leather in a steampunk style.

I may not be fastest but I bet I'll get some heads turning.  Stay tuned...

Thursday, November 20, 2014

Hands off my internet connection

If you don't know what Net Neutrality is about, let me explain it to you.
Do you like the internet? Do you like how you can find things from the most obscure to the most popular? Do you like how its getting faster all the time, and that speed applies to whatever you like to do on the internet, no matter how obscure or weird it is?
Net Neutrality is the Internet equivalent of "If it ain't broke, DON'T FIX IT!"
Net Neutrality means don't f*ck with my internet!
Net Neutrality means keep big businesses from changing something that already works just so they can make more money.
Net Neutrality means equal access for everybody -- isn't that what America is supposed to be all about?

Monday, September 8, 2014

Modern development hardware needs.

So its coming up on the time when I'm thinking about what kind of computer to upgrade to.  Our existing machine is a Macbook Pro that, when we got it 5 years ago, was top of the line.  Its taken a beating, going through 2 batteries, both fans, being dropped on a corner so the case is a bit warped, a hard drive death and the dvd drive dead (but never replaced) and now the power brick.  But all in all, a very solid reliable performer and still going.

So I'm thinking, this is still a pretty decent computer.  The last time I upgraded, the difference was pretty amazing.  For the last year and half, I had a company Macbook that was brand new with quad core processor and a huge harddrive.  But it wasn't hugely noticeable performance.  If I got a brand new Macbook today, I don't know that it would really seem that much faster.

Even though I am doing software development.  More specifically, web software.  So I'm running web servers and messaging queues and databases, browsers and editors, etc.  That's more than most people run, however, its not necessarily computationally intensive most of the time.  Do I really need a spanking new, blazing fast multicore monster of a laptop?

My first thought was, it would be cool to have a portable server box.  Like, really portable.. couldn't you pack a fast CPU and an SSD into a little box running linux and use that for dev?  Wouldn't that be better?  Then you wouldn't need all that running on your laptop.  Also you could then plug that into another machine and work if you wanted to.  And you could have a less beefy laptop.

Or, what if you just went all cloud based and have all your dev in the cloud?  Heck there's even a service that lets you have a Mac in the cloud ( never mind all the other services like bitnami and heroku etc.  And if you don't like that, you could also build your own server at home and use that. The only drawback there is having a good internet connection, which might limit you if you like to work from Starbucks or something.

Either way, you wouldn't then need such a powerful laptop.  I'm thinking my next laptop will be less of a do-it-all expensive monster and more of a sleek portal into my cloud connected development envirionment.

And with the money I'll save, I can restore my kit car.

Thursday, August 14, 2014

Damn it jim, I'm a programmer, not a data manipulator!

Ah but really, I don't feel like a programmer most of the time anymore.  And yet I write code.  But it seems most of it, like 90% of it, is just boilerplate code to transform data from one form into another.

Throw in filters, validation, and access permissions at different points along the transformation chain, and you have 99% of most web applications.

Why are we writing so much code for all of this all the time?  For a project I am faced with a decision.  Do I write code?  Or do I use some service which allows me to not write code?  It seems lazy, it seems like the way out for people who just don't know how to program, why would I as a seasoned programmer make use of such a tool?

But then, why not?  If I can use Dreamfactory to create a REST API to a database (complete with auto-generated documentation, authorization and permission checking, etc) and then use Appery to visually design a mobile app, and connect to the REST API, all without writing any code.. why not?

Granted there's still some edge situations that require some coding.  But the rest is just thinking about the data, how to present it, and how to store it.

I'm not really a programmer anymore.  I'm a data manipulator.

Or maybe I can put a nicer spin on it, and say I'm a "web application architect" - because there's still the process of defining the data, deciding how best to present it, and choosing the best tools and infrastructure to support it.