10 Reasons Why You Need a Programming Blog

Blogs have been around for a long time, but how many of us programmers have blogs?  And for those of us that do, how many are active and kept up to date?  Most people who start a blog find out it’s a lot of work.  For one, it might have been years since you’ve done anything in the way of writing other than send out some tweets or emails.

Writing long-form blog posts, in particular, requires lots of time with your butt in the chair.  There are no short cuts.  I think this is in part why platforms like Twitter — and other microblogging platforms — have become so popular.  It’s simply easier to maintain an active timeline in Twitter than to keep a blog current on WordPress.  With this post, I want to lay out some reasons why you need a programming blog.  There are many reasons but here are ten:

  1. Employers love them.  When you go looking for a job, which in this economy might be frequent, having a blog is the best marketing tool you can have.  The days where you showed up with a hard copy of your resume are mostly over.  Sure an employer can go to your GitHub profile and look at some of your open source code, but nothing compares to a few blog posts that describe your code.  Lots of new hires are surprised about how important communication skills are to employers and for obtaining upward mobility in the workplace.  For many jobs, they are crucial.  For programmers, this remains to be very important as well.  This is important, in particular, for those candidates who are to be tapped for leadership roles.  You might say, “I’m not interested in a leadership role.”  You might not be but your employers are going to always be looking for future leadership for their organization.  Finding a young person with strong leadership and communications skills, who also rocks it in the technical department, is the purple squirrel, which is so sought after by the hiring folks.
  2. You are forced to keep up to date.  Having a programming blog, as mentioned, takes some work, especially initially to get it all set up and to learn the ropes.  If you don’t have a programming blog, you can stay up to date on technology, etc., but you may be less likely to.  You would have to make a coordinated effort to buy some of the latest books on programming as well as attend programming conferences.  When you have a programming blog, you want to keep it fresh.  You start to get readers who are waiting to see what you have to say.  You don’t want to let them down, so you are going to be more likely to go out and get ideas to write on, read other blogs on the topic, read books and attend conferences, etc.  Again you don’t have to have a programming blog to stay up to date and sharpen the saw, but it will become more likely that you will naturally do it.
  3. You will end up networking with readers and other bloggers in your domain.  Most programming bloggers also write code.  Some of these people you may end up guest posting on their blog or vice versa.  Or you may even end up starting a company together.  To my understanding that is how Stack Overflow was formed (between Joel Spolsky and Jeff Atwood).  Even if you don’t end up starting a company with one of your readers or peer bloggers, you likely will help strengthen your professional network.
  4. You may be able to parlay your writing into a consulting or speaking gig.  If your ideas are sound and well laid out, you may find a company will contact you to interview you.  Or perhaps a conference organizer seeking out a speaker in the topics that you write about on your blog will contact you.  Many consultants and speakers started out as writers.  In fact, it can be difficult in some areas to find a consulting gig without having written at least one book on a given topic.  Think about people who are consultants in software management and software process related fields as well as those who speak on the topic.  Most probably published some of their work before they were noticed.  Many likely have a blog on their topic of expertise, as well, or at least they blog somewhere.
  5. … or you may parlay it into getting published with a brick-and-mortar publisher or perhaps as an indie publisher on Amazon, for example.  Nowadays before a publisher will even consider a new writer, in probably 99% of the cases, they are going to want to see that you already have somewhat of a readership.  They will want to see that your ideas have already resonated with an audience and that your writing is solid.  And guess what?  Likely you’ll need to go on a book tour, which entails giving a short speech about your book.  Speaking/writing and often even consulting go hand in hand.  Not that it’s to say you could never find a publisher to take you on without already having a blog and readership but it’s much less likely.  A publisher is not going to want to take a chance on a new writer without a body of work and a following.  They may take a chance but again not too likely.  There are simply too many quality writers/bloggers out there with readerships to take a chance on someone less established.  Besides, being an indie publisher (blogger), you show gumption and what publisher wouldn’t appreciate that.  The love of writing — a deep passion for the written word — is probably the number one characteristic shared be all writers across various domains.  And nowadays being a good programmer requires writing and promotion, or your software likely won’t get noticed.
  6. Keep abreast of web technologies, SEO and CMSs.  Before I started blogging, I knew about as much as the average techie about the web, which is to say a fair amount.  But now I’ve learned a lot more.  I’ve learned about static vs. dynamic sites and things kind of “in between” like Jekyll generated sites on GitHub, etc.  I’ve learned about the ins and outs of WordPress  … and Jekyll, too.  I’ve investigated other open source CMSs like Joomla and Drupal as well.  And I’ve learned more about the pros and cons of the different hosting options. But few of these things I would’ve learned by just reading an article or two.  I needed to roll up my sleeves and try out various CMSs, plugins, themes, etc.  I needed to try different hosting accounts, etc.   All of this is a learning process.  And as you learn, you just may start to explore more about web technologies, which would be a good thing.  I further explored by writing a web crawler in Python, wrote a static website generator in PHP, a webapp calculator in JavaScript and more … all for fun.  And sure it takes some time but the payoff is huge. To say nothing of what you will learn about SEO, social media and social media analytics, too.  You too will get hooked on the web and more excited about learning new things, which will benefit you both at work and with regards to your blog.
  7. Your writing will improve — likely even your speaking.  Before I had this blog, I thought writing s*cked … and it showed.  I had comma splices and run-on sentences galore.  I didn’t think it was a big deal.  Frankly, I thought it was a badge of honor as a techie to have less than stellar communication skills.  Before I got too far down the blogging path, I did a mental inventory of which blogs I enjoyed reading and why.  It quickly occurred to me as to what are the major ingredients of a good blog: programming-rich topics, well written and fun and/or at times entertaining, too.  Many bloggers whom I liked tended to also be a bit sassy/sarcastic and/or opinionated, too, although not too much but certainly not bland in their writing.  They had a specific topic or niche, but they also had some variety as well.  Well, in order to improve on your writing, you can start by getting a copy of Strunk and White’s book, the Elements of Style.  After you start writing your blog, you likely will notice holes in your knowledge, and you’ll need to go out and fill them.  You’ll start Googling grammar topics and probably end up buying a couple of more books on writing.  And when your writing improves, so in some ways will your speaking.  This isn’t obvious but if your writing skills are subpar your speaking skills will be less powerful.  As you learn to be a better writer, you’ll learn — or relearn — about active and passive voice, verb agreement, verb/subject collocation, subject/object differences, etc.  You just might even master the dreaded who/whom debacle to which formal English remains married (see how I used formal English there!).  So when you are preparing your slides or going over what you want to say for a meeting or speech, you’ll be able to say it with more eloquence, impact and power.  Think of some of the most powerful communicators in American politics (Pres. Obama, Pres. Bill Clinton, Sen. Ted Cruz, Sen. Marco Rubio, etc.)  All of the aforementioned speakers have very strong communication skills.  Think of MLK, JFK and Pres. Ronald Reagan, too.  Strong communicators can make big impacts in the world — even getting credit for shutting down the United States government (ha ha).
  8. You’ll be able to more effectively promote your code or open source projects.  Promoting your open source projects can be a challenge.  I don’t know how many times I’ve seen open your projects on GitHub or another similar platform and there are zero people who’ve downloaded the project.  And nobody but the original author appears to be working on the code.  An open source project that isn’t promoted to some extent will be severely limited in getting exposure and, hence, take off.  Just like what startup companies have to deal with, you need to market your product.  Even open source projects need to be marketed to be the most successful they can be.  Say you write a post about your new open source project, you may just find that one of your readers will want to help you build out your code base.  If there is any possibility for monetization, you might have just found a business partner, too.
  9. You’ll expand on your creative skills and have fun.  Coding has lots of need for creative skills.  There are often a hundred different ways to write code to solve a problem so creativity matters.  When you write blog posts, you likely will want to add some humor, tell a story or add what is called “flash fiction.”  This forces you to expand on your creative juices and exercise your brain in ways likely different than you’ve experienced before.  You’ll learn about similes, hyperbole, metaphors and other forms of figurative speech to add color to your creative writing.  You can quickly see when a blogger doesn’t introduce some story telling or figurative language; the writing is much more bland and dry.  A great example of an awesome technical writer/blogger is Joel Spolsky.  Although Joel is one of the fathers of tech/software blogging, others came before him, but none probably as good.  When you read Joel’s writing, you can really tell he is knowledgeable, smart and having fun with his writing.  Joel is, figuratively speaking, my writing mentor, an influencer.  I found out about him after seeing this video on YouTube a few years ago.  That’s when I discovered his blog and started reading his work.  (He also has some writing on Inc. as well.)
  10. You will learn more and clarify your thoughts on topics.  There is nothing like writing about a topic that forces you to flesh out your ideas on it.  There are many posts I’ve done where what I thought was going to be the gist of my argument ended up being rather different.  It was only after writing about it that I was forced to think about every angle more clearly.

Well, there you have it.  Those are just some of the ways in which having a programming blog may benefit you (beyond benefiting your readers).  It takes time to maintain a good blog, but the results are worth it.  If your writing skills are rusty, they will get a little better after each blog post.  Just develop a habit of trying to write at least one blog post per week.  Many people consider one blog post per week to be the absolute minimum you must have in order to maintain an active readership.  Some bloggers shoot for one post a day but that can be difficult to maintain, especially if you are working full time.  Just remember to have fun with it, blog consistently and your readership will grow in time — but be patient.

Advertisements

We Want ChromeOS Open on Chromebooks! An Open Letter to Sergey (TL;DR)

Dear Mr. Sergey Brin, I’ve now owned two Chromebooks: the Acer C710 and the Acer C720. I, in particular, love the C720 as it uses the Intel Haswell-based architecture, it’s rather fast, and consumes very little power too.

However, I couldn’t get access to the terminal (admittedly I wasn’t expecting that) nor could I load my preferred flavor of Linux in a way that made me feel happy (wasn’t expecting this either).

Sure I discovered developer-mode, which allowed me to install a version of Linux, but it was too kludgy for me. I don’t want to be in developer-mode just to get proper access to a terminal in order to write and compile code.

And, no, I don’t want to compile code over the cloud — not even on Google App Engine (GAE). Not all code is cloud-based. Developing native code is still very much alive. I want to compile code natively (like develop language interpreters, libraries and system utils, etc.) — call me old school.

I watched and read a ton of information from other devs who struggled with this same thing. In most cases, they just became “satisfied” with being in developer-mode — two clicks away from wiping out their version of Linux.

I can’t accept that. If you don’t hit the right key combination upon rebooting, you’ll be asked if you want to leave developer-mode. If you do, even by accident, your system will be wiped out. Any Linux-specific stuff you did during your install will be lost.

Sure the ChromeOS will kick in, but I can’t do anything but web development in that — and I’m not a web developer. I also don’t want to open up the machine (void the warranty), cut traces or make jumpers to allow loading of a custom boot loader — that is just too much work frankly.

I’ve heard of some people trying this and some bricked their system.  Besides who wants to void their warranty just to get Linux installed.  Argh.  (See final P.S. below for a resource on how a tech guru does it with the least pain possible.)

So what did I do? I was forced to buy a MacBook Air. I admit I love my new MacBook more than life itself. It is fast and also uses the Haswell-based architecture.

Apple doesn’t lock out devs from getting to the terminal. Hence, no need to install Linux when it runs a flavor of Unix right out of the box. I realize one of your goals is to diminish the influence of Microsoft and be masters of the cloud, and I think that is a valiant effort — competition is ultimately good for innovation. Microsoft is now playing catch-up.

Steve Jobs would be proud. However, I think even Steve Jobs would be concerned with locking down your OS and hardware the way you do. Don’t you want developers to be happy and want them to write apps for your platform? Instead we — at least I — feel slighted.

I’m writing to you because I assume your colleague and co-founder, Larry Page, is too busy being shuttled in a limo to and from work considering he is the CEO. I figure you still like to be in the trenches and might actually read or hear about my post.

I’m afraid you will write me off as a tightwad developer who should’ve just gone out right away and got a MacBook. Of course, the MacBooks are now more affordable since so many people use them now.

I got mine for $900, which isn’t too expensive. However, if I could’ve got the C720 working with Linux (only about $200), I would’ve saved $700. You might say, in the Pixel we open this up more (I’m not saying I know if this is the case) but that thing, albeit an awesome machine, is even more expensive than the MacBook.

The ultimate dream of a netbook for under $200 that you achieved is admirable. Also, I realize it never was intended to be a dev system. Your marketing clearly makes that obvious. But, can you honestly blame me when it comes with an amazing Intel Haswell-based system under the hood?

And I agree, 95% of people don’t need access to the terminal with root privileges. ChromeOS is based on Linux, so why not open it up and let us get access to the terminal so we can compile code? ChromeOS is probably the last chance of getting a Linux-ish system on the desktop for the masses.

If you’re afraid that this would be the death-blow to Microsoft, and you just can’t do that to poor little ol’ Microsoft, let me assure you Microsoft will be here in 100 years. With your backing this is possible. But, if all people can do is surf the web and update their Google+ page, this won’t be as meaningful.

Letting us developers, or anyone so inclined, get access to the terminal — including root access — will make the machine much more useful for many more people. Please don’t sandbox future versions of the Chromebook. Give us access to the terminal, please. Apple does.

Sincerely,
Jim Lavrenz

P.S. I liked your cameo in The Internship.

P.P.S. I have other Linux machines, although none run on the awesome Haswell architecture.

P.P.P.S. Tom Preston-Werner, co-founder of GitHub, documents how he installs Ubuntu on Chromebooks — process voids the warranty and is non-trivial but probably is the best way if you don’t mind rolling up your sleeves — and voiding the warranty.  http://blog.codestarter.org/how-we-turn-199-chromebooks-into-ubuntu-based/

(I still just recommend getting a MacBook Air.  It’s more expensive, but they are so amazing.  Stable and beautiful OS X, fast, high quality, amazing screens, lightweight, and long battery life.  Also has the Haswell architecture — in part, why the battery life is so good.  The MacBook Air really is the Cadillac of notebook computers.)

Can Windows 10 Save Microsoft

Windows 10 is expected to come out at the end of this month.  But will it be a dud?  I recall the excitement when Windows 8 came out, and the blogosphere went crazy ranting against it.  And for good reason, as it wasn’t ready for prime time.

Microsoft then came out with 8.1, which brought back the start button opposed to just the start screen.  Yet, the darn thing only opens up the start screen anyway — whoopdee doo.  Well at least for desktop users it will boot up to the old-fashioned desktop.

Most people felt even 8.1 was lacking.  Well, I think the disappointment came from the fact Windows 7 was so nice.  For desktop users, Windows 8 felt awkward. And Windows 8.1 didn’t make it much better.

A few years ago my wife’s company removed all their Windows machines and replaced them with Apple — mostly MacBook Airs.  The last Windows OS my wife used was Windows XP.  XP was a huge success for Microsoft.  For years, it was the defacto standard in most businesses.  Now, most mid-size to larger businesses probably are on Windows 7.  Likely they’ll be on Windows 7 for years to come, too.

Times are a changing though.   Like I said, the agency my wife works at switched to Apple, and most of the other agencies she works with have done the same.  Sure they’re agencies and not large enterprises where Windows still dominates, but the trend is real across the board.

Although I will admit I was recently in the Delta Sky Club lounge, hanging out with the alpha male and female execs, and noticed Windows-based machines were still very prevalent.

But I think you would have to be living in a cave to not realize how much Apple has “eaten” into the office computing market, especially mobile including notebooks.   So I think a lot is riding on Windows 10.  Microsoft knows the future is going more and more mobile and wants to improve its position in this area.

Yeah, the office workforce is more mobile now than ever.  Devs are often working on distributed teams all around the world, not just out of a central office or headquarters.  I think this will continue to become more popular with time.

But let’s face it, Apple iOS and Google’s Android dominate the mobile market (both smartphone and tablet).  And Apple dominates the high-end notebook market, too.  The Cadillac of notebooks is the Apple MacBook Air.

Spec-wise the MacBook is “better” than the Air, especially the Pro, but I believe the Air is the bestselling notebook for Apple.  I bought one of these last year and love it.  Sometimes they are called ultrabooks because they are so light and thin.

For years, many people thought the so-called netbooks, such as the Chromebooks from Google, would become mainstream.  Turns out people aren’t so quick to get rid of proper desktop programs and don’t want to do everything in the cloud.  Sorry Google.

I’ve had a couple of Chromebooks.  They’re nice but not nearly as functional as my Air.  After a while I loaded Linux on them, in developer mode, but it wasn’t as nice as opening a Bash shell on my Air.  I wrote a post about my frustration with the Chromebooks — check it out here.

(But back to Windows.)

If Microsoft is going to be successful with Windows 10, they need to better equip the desktop users and not just be a mobile OS layered on top of the old Windows OS.  Isn’t that kind of what Windows 8 felt like?  Basically like the desktop market no longer mattered to MS.

From watching some previews of Windows 10, it seems they’ve done a much better job in this area: integrating the experience between mobile and desktop as well as between apps and programs.

I think Windows 10 will be a successful release for Microsoft.  It looks amazing. I believe it will be years before most enterprises move away from Windows 7 though.  As more companies start buying their employees Surfaces, the tablet from MS, opposed to notebooks or desktops, the more Windows 10 will be adopted.  Well that and touch-screen notebooks becoming even more mainstream.

Also, most companies don’t want to essentially be the testers of Windows 10.  See, usually Windows releases the first service pack about 18 months after release.

Until the first service pack comes out, I think most companies will stay away from Windows 10.  I would.  So that would put us at nearly 3 years from now — assuming a late 2015 release date — before companies start adopting Windows 10.  And the adoption will probably be rather slow, too.

I say this in part because Windows 7 is so great, so the incentive to upgrade just isn’t there unless you have a very mobile workforce.  In that case, you may have already switched to Apple products as my wife’s company has.

With the latest OS X, you even get your Apple text messages delivered right to your desktop — completely integrated.  And FaceTime is completely integrated, too.  Also for presentations, you can use AirPlay.  Well of course Google as Chromecast, which works pretty well and is OS agnostic.  From my experience, I’ve had better reliability using AirPlay.

Also for us developers, Windows continues to present itself with challenges.  No Bash shell for starters.  The closest is PowerShell, which has made improvement over the years.  I tend to only use the PowerShell opposed to the command prompt or a GUI.

In particular, I spend most of my time within the Git shell —  a PowerShell program from GitHub.  It is an adaptation of some open source programs that were ported to Windows.  I believe the ports are called MSYS / MinGW?  GitHub seems to then add some specifics as well.

It basically gives you Linux-like features with GCC and Git integration with your GitHub account.  I can’t remember if Vim comes with it, or if I loaded it special.  Anyway, when you add Vim to your Windows box, you get a pretty sweet development environment.  I tend to also add Notepad++ as well as MarkdownPad 2.  I use the latter when writing Jekyll posts in markdown for my GitHub blog.

Using Git Shell, it almost feels like I’m in Linux, although a bit slower as the PowerShell uses .NET assemblies, which are rather slow to load.  The solution is to load it but not close it.

Of course, Eclipse and NetBeans both work fine on Windows, too, if you like IDEs.  Well, fine if you like slower Java programs that is.  Visual Studio is free too, of course, and probably is the best IDE ever made.  If I was doing Windows programs or apps, I’d be using it.

Obviously for Windows developers, you need Windows.  Doing development on anything else wouldn’t make sense to me.  As eventually you will need or want to at least test things out on Windows.

But for open source developers, or anyone starting a company, does it make sense to use Windows, especially to go forward with Windows 10?

Again if you are in the mobile market and plan to be doing apps, it may be a good idea to at least have some Windows machines around the office. Sure you could just write apps for Android and iOS, but most likely you’ll want to have apps for Windows, too.  I’m from the camp Linux is still the best OS for developers, then OS X, and lastly Windows.

However, if I were starting a development company nowadays, which I am, I would issue Apple MacBook Airs.  The battery life is amazing.  The notebook comes with all the most popular programs, too.  And what isn’t standard, just like on Windows, you can buy — like MS Office.

But the real beauty is you basically get BSD Unix under the hood — with all of Apple’s stuff added to it.  (Kind of like how ChromeOS, the OS on Chromebooks, is basically Linux with a bunch of Google’s stuff added to it.)

The facts are though, for several years now the different OSs have had near parity.  Usability is still best on Apple, functionality is best on Windows, and dev-centrism tends to be favored on Linux, but overall they are all rather usable, functional and dev-friendly.  Well, Linux isn’t generally as stable on the desktop and likely never will be.  Sans desktop, often called server mode, it is rock solid though and nearly as secure as Fort Knox.

For a while now, Windows even has package managers just like Linux.  OK, not as nice as APT, but close.  The one I’ve used is called Chocolatey — also similar to Homebrew on a Mac.

Obviously, Windows has a huge installed base and really isn’t in fear of going anywhere anytime soon.  Yet, again, more people have made the switch to Apple.  With Windows 10, I believe Microsoft will solidify itself for years to come.  It might not be the monopoly it was in the past, but I think it will still remain the biggest player, especially in the enterprise.

Essentially the market has become more segmented.  Geeks and computer science researchers favoring Linux, home or personal users as well as schools and creatives favoring OS X (and many start-ups and even Google), and larger businesses still tending to prefer Windows — well, add gamers to that list too.  Before this segmentation, Windows tended to dominate almost all of these areas.

So I think we will continue to see Apple gain more market share, but Microsoft is going to be just fine.  So Microsoft will remain a huge player for years to come.  Just not the monopoly of the past.  And I think we can all agree that’s a good thing!

Sent from my Windows PC.