...

In Software, Be An Advocate, Not A Fanboy

August 9, 2010 in Programming & Software

In software, everyone is a fan of something. Common favorites are operating systems, hardware vendors, or programming languages. Different people are more zealous about their favorites than others. On the scale of zealotry, there are the zealous, the over-zealous, and then there are fanboys*.

In its most basic form, being a fanboy is usually about having strong, often emotionally-tied biases for (or against) something. In software development, the fanboy mentality can sometimes be counter productive to productivity.

Fanboys, Reverse Fanboys, And Software Teams

Wikipedia says a fanboy is someone “who is highly devoted and biased in opinion towards a single subject or hobby within a given field.” Similarly, I consider a fanboy someone with notable bias against criticizing his or her topic of interest to a fault. I’m referring to the true, “die-hard” fanboys many of us have met before.

Source: bluelephant under CC-NC-SA 2.0

There are also “reverse” fanboys. Just as someone may be a fanboy of a specific topic of interest, it’s also possible for someone to have an unreasonable bias against something when it comes to software.

In software, dealing with fanboy’s biases adds another layer of complexity to the development process. Team members and decision makers need to deal with opinions based on logical arguments and facts, not a person’s fanboy-like sentiment for or against an idea. This adds unnecessary complications to the design or decision process. Reverse fanboys hamper the development and problem-solving process in almost the exact same way. Because of their explicit (and implied) biases, true “die-hard” fanboys often deserve less credibility in software development environments.

Be An Advocate, Not A Fanboy

Somewhere on the scale of “fandom” of technology and software are “advocates”. An advocate is someone who “cheers on” a topic of interest, but is cognizant that the topic of interest may not be the best fit for everyone, may not be the best solution to all problems, and may even have flaws. They still love, support, and are passionate about their topic of interest – after all, they really enjoy or believe in it. Being an advocate is being the healthier version of a fanboy.

In contrast to fanboys, advocates often bring value to their teams because they offer specialized knowledge on the subject they are passionate about, but also are more likely to offer a balanced, reasonable perspective on the topic. For the advocate, finding a strong solution comes before finding a good solution with a specific technology. Advocates, like any quality software engineer, are not set on a solution.

Advocates are the credible counterparts to fanboys – and in contrast to fanboys, their involvement in their topic of interest tends to enrich teams and the development process.

*Sometimes people like to call themselves fanboys, but I think it’s important to note that under my definition, many people around the web who claim to be fanboys are simply having fun with the term. For example, most people who claim to be “Apple fanboys” are simply fans of the brand and don’t fit within my definition. Apple, or any other topic of interest for that matter, does not have any sort of monopoly on fanboy-dom.



Tags: , , , , ,

...

How I’m Learning Haskell; Or How To Learn A New Language When You Have No Clue

July 21, 2010 in Programming & Software

Some time ago I decided to learn Haskell, and this post, I’m explaining how I’m going to do it. Haskell (and many of its design concepts) are almost entirely new to me, and I’ve developed strategy which I feel will help me reach my long-term goal: zen-like command of the language.

I’ve been told – again and again – that Haskell is very different from most languages I know, and I should “let go” of many of the habits and programming practices I use with those languages. I like the way this blog post puts it:

Unlearn and free yourself to embrace a new world. Take a deep breath and forget all those idiom/design-pattern/concepts/OO-coolness in your old language. Why? because “class is not class, instance is not instance, function is not function, return is not return, blah is not blah any more”.

Apparently learning Haskell is like Neo taking the red pill.

When it commes to materials, ”Learn You A Haskell Great Good!” is the most fun guide for learning Haskell I’ve found. Inspired by Why’s (Poignant) Guide to Ruby, it’s a straightforward introduction to language. Equally accessible is “Yet Another Haskell Tutorial“, another great resource. I’m going to read through both of these, interchangeably, depending on the depth and strength of each tutorial on the topic at hand. And these will go hand-in-hand with the official documentation.

The Long Road, Or How I’m Starting From Scratch

When I first started programming I felt one the “best” (and most tedious) ways to learn a language is to find a book and copy (e.g., manually type out) every example, execute the results, and experiment with the code as you go. For experienced programmers – even intermediate and many beginner programmers – this is overkill. Such a method of learning just isn’t practicle or necessary. But if you are truly new to coding I feel this is not a bad way to go.

One of my very first exposures to programming was HyperTalk; this approach helped me become very proficient with the platform. I began to understand it like a “spoken” language – at least, as much as one can internalize programming languages in such a way. I began to memorize, and then understand, how to do things.

Because Haskell is a very different platform compared to most languages I already know, and its principles and design are so different than what I’m familiar with, I feel this approach will be effective.

Most programmers have heard that “understanding is much better than memorization” when it comes to learning a new programming language. I agree, but sometimes they need to hand-in-hand, and as I learn Haskell, I expect understanding and memorization to help one another as I grow my skills in the language.

And hopefully – if all goes to plan – I’ll be a Haskell guru soon enough.

Tags: , , , , , ,

...

The Blog Project

July 14, 2010 in Blogging

Today I announce RyanPeterson.me!

A few months ago I decided to it was important to me to start a blog. For a while have been blogging about a martial art named “Brazilian Jiu Jitsu”, but I wanted to do something totally different. I wanted a true personal blog.

Since that decision, I’ve been working to unify much of my online presence. I got a new domain, ryanpeterson.me – and I began to put together this blog. I also decided to move my martial arts blog – which lived at jiujitsukit.com – to a subdomain. It now lives at JiuJitsu.RyanPeterson.me. And lastly, I moved my Tumblr-powered Tumblelog to tumblelog.ryanpeterson.me.

Anyway, it’s been quite the undertaking, but I’m very excited to get started. Tara has been great to give advice and support, which I’m thankful for.

So then…welcome!

Tags: , ,

...

Where is Skype’s Official Android App?

July 8, 2010 in Technology

Android is growing fast. I feel Android has strong potential to become the “de facto” mobile platform. By some accounts, 160,000 Android devices are sold each day – and this amount is growing 60% each month.

I am a late comer to Skype; only recently did I need to use Skype for personal and business reasons. So I went to skype.com and signed-up.

Skype – as we all know – is a popular VOIP provider and application with versions of its software for Linux, Mac, Windows, and a host of other mobile devices and OSes, such as Symbian and iPhone OS (iOS). After having some issues with their official Linux client on both OpenSuse and Ubuntu, I looked to my Android-powered mobile device for a solution. I was disappointed: there is no official Skype client for Android.

There are a handful of other VOIP applications for the Android platform, but for many of them, it seems tricky to get them to work with Skype 100% correctly. I don’t place the blame on this to the application developers – Skype’s protocol is closed-source and proprietary, so it’s harder to engineer clients for it.

For example, Sipdroid, one of the more complete and mature VOIP clients for Android, requires the Skype user you are calling to accept anonymous calls. Shortcomings like this are not insurmountable – they are just annoying.

Given the growth and momentum of the Android platform, it’s unbelievable Skype does not have an official Android client. At one point they where supporting a client called “Skype Light” – but they announced in February they where no longer supporting it.

In the interest of their own business success, and for the experience of their customers, I find it unbelievable for Skype to not have an official Android app.

Tags: , , , , , ,

...

Why You Shouldn’t Launch A Naked Blog

July 1, 2010 in Blogging

Somewhere along the way when I was learning about blogs I read an opinion that it is preferable to launch a “clothed” blog – meaning a blog with some posts already published – as opposed a blog without any content, a “naked” blog.

There are a couple reasons why it’s better to launch a clothed blog. First, it gives search engines more context to better understand your blog and its intentions. Having content helps Google and friends because examples of your content is better than an empty blog that describes your future content.

I think it goes a little beyond this for human visitors to your blog. I feel that launching a clothed blog implies a greater amount of trustworthiness to the reader because the blog author has already produced some content. Naked blogs proclaim an intention to show and share content; clothed blogs already have. I think this approach adds touch of credibility to human readers.

I encourage anyone to have a few (3 more) blog posts “published” before you launch your blog. When decide I want to launch a blog, I begin writing (or blogging, to be more precise). As I finish these entries I make note of the post’s last edit. This “last edit” is the “publish” date I set for the post.

Then, when my blog launches, the blog already has some content under its belt.

Tags: , ,

...

COL Reminder Is One Of My Favorite Android Apps Right Now

June 28, 2010 in Technology

One my favorite apps I’m using on Android at the moment is COL Reminder – an Android application that reminds or alerts of you of things. It’s also free.

I found it because I was looking for an alternative, more effective way to remember various ideas and to-dos I want to address a later time. My first (and naive) attempt at this was sending myself texts or email messages, a technique that harbours back to the days before smart-phones. My second attempt was 3banana by Snaptic. 3banana is a great, solid app, but it’s not designed to remind of you things.

COL Reminder’s interface is pretty straight forward. There where a couple of settings I changed that made the application to more of my liking; the most notable is that the application will ping you take a make a note after a call is over. I disabled this because I thought it was little overboard (and annoying). To disable, go to Settings->”Add a telephone call reminder” and uncheck the box.

If you have an active mind with a lot ideas, or just don’t want to forget stuff, I reccomend checking it out. I highly recommend it.

Tags: , , , ,