Skip to content

Why you should blog

This is something I tell everyone I run into (because I think everyone has an interesting story to tell), so I wanted to outline my thoughts once and for all.

If there is any area of your life (professional life, hobby, future career) that you care about and of which you want to improve your understanding, you can do no better than to blog about the topic as regularly as you can.

Now, this isn’t the golden age of blogging, when you could be the only tailor/wine merchant/banker/etc blogging, and blog your way to fame, conferences, and riches.  There are countless blogs out there now (almost 1.3 million, according to technorati).  But you can still differentiate yourself from most by blogging.

I believer there are many many reasons to blog, but the strongest are:

  • you demonstrate tremendous credibility when you blog.  This credibility isn’t earned immediately, but after you invest some time (a year or so), you’ll have credibility when someone searchs for you on the web, or when you tell a prospective employer/customer/client “oh, I encountered that problem, let me send you an article about that” and you do.  A blog works for you even when you are sleeping–I’ve had random people contact me about a blog article, and I’ve had people I know say “I was searching for topic yyy and ran across your blog”.
  • you will learn more about the subject you are writing about than you thought possible.  I never know something so well as when you can explain it to someone else.  In addition, as you write post after post, you’ll find new dimensions to your subject, new people to interview (a great way to build content for your blog and to make connections), new questions to ask, and new organizations or companies relevant to you.
  • it is free, except for your time.  Other than opportunity cost and some thought, a blog doesn’t cost you anything.  This makes it a low risk marketing effort.

One bonus benefit: you own all the content you create!  Unlike what you post on twitter, which is ephemeral, or what you post on facebook, which is hard to export, most blogging software lets you import and export with relative ease.  There are services out there that will help you package your blog as a book.

Here are three objections that you may have to blogging.

  • Aren’t I giving my knowledge away for free? — Well, yes, if you solve the exact same problem that someone else has.  In my experience, it is much more likely that someone will have a similar problem, in which case your post is an advertisement for your services instead.  And if you solve someone’s exact problem and never see a dime for it, that’s good karma.  Now, I wouldn’t encourage someone to blog about a trade secret or an entire idea for which they are trying to get a patent, but they might blog about the process of getting there, or about a similar idea that they investigated but found lacking.
  • I can’t write — This is a two part answer.   One, you should get better at writing, since it is a key part of business today.  And practicing on a blog is one great way to do it.  Two, if you can’t write or don’t feel it is applicable to your skill set (you are, say, a photographer) and I can’t persuade you that it is *still* a good idea to write well, then you can blog using other media.  Video blogging, photo blogging and audio blogging are all options to which all of the good points I’ve made above apply, and none of them require you to write a word (I don’t have experience with those typs of blogging, but a quick search should help you find a platform).
  • I don’t have the time — Ah, finally, a good objection!  A blog does not have quick payback; it can be a year of writing a post every ten days before you get 20 visitors a day.  If you choose to invest in your career in another way (writing open source, if you are a programmer, toastmasters if you are a salesman, volunteering at a daycare if you are interested in childcare, etc, etc) I admire you.  I think these other investments shine in other ways, but they lack the scalability, reach and timelessness of a blog.  So, consider your priorities, and if blogging’s benefits aren’t enough to justify a time investment, I wish you well.

Ok, I have convinced you to blog, right?  Three next steps:

  1. Sign up for an account on blogger or wordpress.com.  Spend 10 minutes picking a look and feel and setting up an about me page, but don’t spend more than that.  It’s very easy to get obsessed with how your blog looks and ignore the content!  (You can always go back in six months and change your look.)
  2. Write your first blog post!  Don’t have it be an ‘about me’ post; jump right into the meat of what you want to explore, be it Tanzanian politics, the economics of ‘How I Met Your Mother’ or space technology.
  3. Decide how much time you want to spend on your blog going forward.  How much time should you devote?  Enough so that your blog is active, which I define as a post a week (your mileage may vary).  More if you have time.  Also, realize that you will have good months and bad months.  I’ve been blogging for over 8 years and have had months where I struggled to get one post up (and sometimes failed–I’m looking at you, November 2011), and others where I posted every other day.  I also suggest writing a bunch of posts when you have the time and/or urge.  These you can then schedule so that when you don’t have time, you can still be putting new content out there.

And a bonus step: find other bloggers out there, using Google or your search engine of choice, and comment on their blogs.  This brings you into a conversation and avoids ‘shouting into the wilderness’ syndrome of a blog that no one but you visits, which can be so disheartening.

Go do it!

Calling GWT code from javascript

There are lots of snippets out there on the internet telling you how to run GWT code from javascript.  Here’s the canonical one.

I recently did a fair bit of this, calling GWT code from jquery.  Two things jumped out:

  • Make sure your jquery method is run in $(window).load(), not $(document).ready(). If you use the latter, your GWT code will not have executed and exported the javascript method to the window object. More on that.
  • I couldn’t find a list of valid java type signatures (even in the JVM book) for the longest time, but here they are, at long last.

Update, 2/26: I ran into some issues with using $window.load().  What you have to do instead is create a gwtonload function and call it from your gwt loader via jsni.  This ensures that GWT code is fully loaded, which $window.onload() does not.

Using Munin To Track Business Values

Munin is a great piece of software that we use at my company to track overall trends in disk usage, CPU and other system purposes.  Now, we don’t have a ton of servers, so I’m not sure how munin scales for many machines, but it has been invaluable in troubleshooting problems and giving us historic context.

One thing we’ve started to do is to incorporate business specific metrics into munin.  This is good because it ties the technical operations more tightly to the business, making us aware when there are issues.

Anything you can run a sql query or do a wget for, you can graph in munin.  (Here’s something I wrote about writing munin plugins a year ago.)

I don’t think that munin is acceptable as a general purpose dashboard.  I’d probably look at Google Analytics if I was web drivingdriven (updated Feb 25 2012), and at statsmix if I needed to integrate a bunch of disparate services.  But for bringing additional business awareness to a technical team, writing a few custom munin plugins that will graph key business metrics can be very useful.

Hiring Tips

I’ve only hired a few times, but I just wanted to jot some notes about what worked for me in this process.

  • Use a bug tracker or issue tracker to keep track of resumes, emails and interactions
  • Respond to every person – there were some outsourcing firms that I didn’t respond to, but every other person got a response from me
  • Use Craigslist.
  • Use an email alias on your Craigslist post
  • Use other mailing lists (rmiug-jobs, cu cs jobs, even local neighborhood lists)
  • Ask your networks for candidates, but don’t expect too much of them
  • Pre-screen with a set of email questions if possible.  Don’t ask candidates to do too much, but asking them to do some work will allow some to self select out
  • When doing an interview, set the candidate up to succeed, by telling them what you are planning to ask them to do
  • Set deadlines for yourself, and share them with the candidates
  • Follow up with every candidate when you make a decision – I don’t think that it is fair to do otherwise
  • If you can point job seekers at another position, do so.  I recently did this with a QA position – in my search, I discovered another firm that was looking to hire, so I pointed all the candidates that didn’t work for us to that firms job posting
  • The web is full of sample job interview questions – use them!

 

Moving away from Google Maps

A while back I wrote about Google Maps charging.  This caused an uproar around many map dependent sites.   (Brian Timoney, ever reliable, delivers snark on that front.)

I, for one, don’t begrudge Google the chance to charge for their excellent product.  What that does, however, is make certain business models that were previously viable now unviable.  That is, if they remain with Google Maps.  In my previous post, I went over some alternatives.

The company I work for, after evaluating all the alternatives, including paying Google for a license, has decided to go with Mapquest.  While the API is not as gorgeously documented (both on the company site and on the web), it has the same licensure as Google Maps used to (free for any publicly accessible website), with much of the same base functionality.

I’ll be very interested to see how many people are doing such high value work with Google maps that they can afford to pay for licenses or per use.

On Being Disrupted

This is a tough post to write.  I’m at the tail end of an evaluation process for my company that ended up with us deciding to go with a third party vendor for software which powers key area of our business.  It is augmentation rather than replacement, but still.

It was hard for me, because this particular key functionality was previously provided by custom software that I helped build over years.

I like to build things!  Like most other software developers, I get excited about building stuff.  One of the unmentioned frustrations of many software developers is building something and then seeing it shelved.

However, it was clear from the survey of solutions that there were three choices:

  1. buy something off the shelf
  2. get better as software developers and really, really accelerate our development
  3. have the business be negatively affected by this piece of software

Now, #3 is obviously not a good solution.  #2 is a great solution, but is hard to put into practice, especially in a short time frame with a large code base (though we are trying to use some of the agile methodologies to make our software development more productive).

#1 it is.

Was this a wise choice?  Talk to me at the end of the implementation, but I am hopeful.  We did take several steps to protect ourself (after all outsourcing core business functionality can be deadly), including:

  • a long, laborious evaluation
  • engagement with multiple vendors, and
  • building a set of criteria to help us determine if this outsourcing is meeting our needs

One thing that helped me take this decision a little less personally is to redefine in my mind the value of software to the company.  It’s not the particular implementation of the software that provides the value.

Unlike a software company, my company doesn’t exist to write software (see Five Worlds for more on different types of sofware development).  Instead, software exists to serve the company.  Having something off the shelf provides the similar functionality for much cheaper.  It also allows me and other members of the software team to write software that is unique.

Having been a contractor and having worked for a startup and consultancy, I’m used to being the disruptor.  In this scenario, I was the disrupted (ht, David Skinner).  It’s a humbling place to be, even if I wasn’t disrupted out of a job.

Word to the Wise

I recently read this post about startup team success from Paul Graham.  Always fun to read Paul–I have a few sites I remember and type in periodically (haven’t used an RSS reader since Bloglines), and paulgraham.com is one of them.

The older I get, the more I see that being resourceful and having follow through are very very valuable traits.  This post just confirmed that.

The corollary to that is, if you don’t think you are going to follow through on a suggestion or a favor someone asks of you, it’s far better to say no up front than to fail to follow through.  That is going to be a tough lesson to integrate into my life, but it’s the flip side of that coin.

Building A Site With Google Sites

I recently built out a site for a local tax firm, Cahill, O’Kelly and Associates using Google Sites.  I’ve already talked a bit about using Google Sites for your web presence, but I wanted to share a bit more about my experience.

The reasons I chose Google Sites over something more flexible was pretty much based on what I determined was best for the client.

  • the client is not super technical and was wary of a website
  • I wanted the client to be able to update the site so they wouldn’t have to pay me to
  • they were not super picky about design of the site, so were willing to pick from a template for look and feel
  • site was small and functionality desired was limited (brochureware)

All of these added up to doing something that was quick, cheap, low risk, and easy.  If any of these decision points had been different, then Google Sites would have become a less attractive choice.

Good things about Google sites

  • easy to get going
  • easy to integrate with all of googles other services (analytics, webmaster tools, google forms, etc)
  • lots of templates to choose from
  • hosting is free

Things that suck about Google sites

  • the footer links are out of your control
  • some of the templates require photoshop knowledge to customize (background images)
  • no easy way to roll back changes to your site
  • some of the admin UI is clunky
  • scrolling around the look and feel customization page was difficult

Tips for developing on Google Sites

  • make sure your customer fits the profile mentioned above
  • educate your client on the limitations
  • make backup copies of your sites before you do big look and feel changes.  That way you can manually view the differences and roll back if needed
  • get to know google forms, as that is the only way to do interactive forms that I found
  • be prepared to spend some time tweaking the layout
  • be prepared to do some training on how to edit the site

All in all, Google Sites is a great solution for a certain type of client.  Consider adding it to your toolbox if you do site development.

Using Google Apps to generate a simple site from a form

I was blue skying with a friend the other day and came up with checklist to build a simple canned website from a form submission, using Google Apps and Google Apps Scripting.

  1. User goes to a form.  (More on creating a form)
  2. User submits images, video links, text, email, background color, etc.
  3. That all goes into a google spreadsheet, which triggers the building of a site.  Here’s trigger info.
  4. You can automatically build a google site.  Here’s the api: site creation, page creation.  If you want your own domain name (example.com) I think you can do that, but you’d need to integrate with a DNS service to set that up–this part bears a little more investigating.
  5. If desired, you can generate the QR code for the site.
  6. If you need to tell the form submitter that the site is created, you can email them a link to the QR code so they can print it out.
  7. You can even remove content from the site via cron (see triggers link up above), though you can’t automatically delete the site.
  8. It’s conceivable you could even use google checkout to charge users beforehand (though this is a bit less supported).

What’s great is that you don’t need to have any tool other than a browser to build this entire stack.  Google is truly creating a toolkit/macro language in the cloud.