Given the libertarian bent of a significant number of geek-types, there may be a Ron Paul AMA sometime in the near future. As for Tea Party favourites, it’s anyone’s guess as to whether or not their favourite candidates will make an appearance — after all, this may be their attitude to computers:

Global Nerdy — which actually refers to me — is on a short vacation with a lovely young lady from now until Tuesday, September 4th, when we — which means I — will be running full bore with tech articles aplenty. See you then!

In case you don’t believe that a gadget in the right hands can turn an ordinary night out into an extraordinary one, allow me to present some proof starring Yours Truly in The Best Accordion Picture Ever:

Naturally, with either TshirtOS or an accordion, your mileage will vary.

The T-shirt’s Tech Specs

Here are TshirtOS’ tech specs, straight from the folks at CuteCircuit:

LED Screen resolution

The LED Screen has a resolution of 1024 pixels, spaced 1cm apart, in a 32 by 32 pixel grid embedded into the fabric of the t-shirt. Each pixel is RGB (Red Green Blue) to make a full colour display. The LEDs used are ultra thin (like a sheet of paper), the brightest full colour discreet LEDs in the world at this thinness and only 2 by 2 mm wide. The screen is controlled by 32 ultra thin microprocessors, managing the screen control software “Q” by CuteCircuit.

Camera

The camera is an Omnivision Camera Cube. The Camera Cube combines the full functionality of a single chip image sensor, embedded processor and wafer- level optics in one compact, small-profile package. Boasting the industry’s smallest footprint and z-height (2.5 x 2.9 x 2.5 mm), it is ideal for today’s ultra-slim applications, such as wearable technology. Unlike traditional camera module designs that combine image sensors and lenses in a barrel, OmniVision devices are assembled using wafer level alignment tools. The lens can be placed directly onto chip scale packaged (CSP) image sensors, which eliminates the need for flex cables and interposers. Elimination of image contamination issues such as fixed pattern noise, smearing, and blooming produces a clean, fully stable colour image, which in the case of the tshirtOS is scaled down to 32 by 32 pixels to be displayed.

Accelerometer

This is a small, thin, low power, 3-axis accelerometer with high resolution up to ±16 g. It detects a person’s jumping motion (the momentary absence of gravity or free fall detection) and activates animations on the tshirtOS. This accelerometer is the latest generation triple-axis, hi resolution digital, micro mechanical inertial sensor.

Headphone Jack

This is a generic 3-poles stereo jack. We have 2 on tshirtOS – one for the headphone and the second for a headset/ microphone option. The headphone jacks fit all types of headphones.

Circuit board and processors

The Brain circuit is an ultra slim PCB that snaps into the tshirtOS hub to provide it with BlueTooth capability. The Bluetooth is CE and FCC certified, with an integrated micro-antenna, and it supports both the HFP, SPP, and A2DP profiles for hands-free and serial port use. The Brain is chargeable via USB simply by plugging it into a computer USB port, and the tiny Li-Po battery recharges in about 1 hour. The accelerometer and the micro- controller reside in the Brain. The micro controller controls the LED screen. We have 2 versions of the Brain where at the heart of the system is either an 8-bit processor from ATMEL or a 32-bit ARM Cortex processor, the latest ultra- powerful and energy efficient ARM processor, also from ATMEL.

iPhone and iOS support

The application will only be supported on iPhone4S and iOS5+ in its initial release.

Register Your Interest

I’d love to get my hands on one of these and both hack on it and take it out on the town, and I suspect you might too. If TshirtOS sounds appealing, go ahead and register at tshirtos.com!

Where We’re At and What I’m Looking For

Get it? Enterprise? Blueprint?

My job is to give you some of the most awesome specs to work from, and I do mean awesome. Nobody can describe an application using words, diagrams, statecharts, wireframes, prototypes, balloon animals or whatever else is necessary quite the way I do, so you’ll have a very clear idea of what we’re trying to implement. Yes, I’m aware of the dangers of Big Design Up Front, but you’ve got to have some kind of roadmap to follow. I prefer to call what I do “Just Enough Design”.

I’ll also be doing any necessary background research, which you’ll need, as the apps we’re writing will likely be covering stuff that you haven’t dealt with before. In return, I’ll need you to turn the specs and research into living, breathing apps.

The fact that you’ll be working from thoroughly-written specs doesn’t mean that you’re absolved from having to think. I want your input on the design of the application. I don’t want assembly line workers who’ll simply take a spec and implement it, I want software builders who’ll look at “the big picture” of the application and help out with the design. Software evolves as you build it, and I’ll need you to help with that evolutionary process.

If you’re looking to build consumer apps, such as games, social networking software, or something that will let you share pictures of your cat or lunch (or if your cat is lunch, both) with your friends, these jobs won’t be for you. We build apps for corporate customers in order to help them get work done. These apps will have a lifespan beyond your typical throwaway amusement app, and there will be security and privacy requirements, because money and sensitive information will be on the line.

Speaking of “on the line”, you’d better be comfortable with putting yourself on the line. We need developers who get stuff done. Unlike a large organization, there’s no room for people who are content to merely coast.

(You’ll note that so far, I’ve avoided saying that I’m looking for a “rock star” or a “ninja”. I think it should suffice to say that I’m looking for someone who’s ambitious and competent.)

I’d really prefer it if you either lived in or spent the majority of your time in the Toronto area. If you don’t live in the Toronto area but really want this job, give me some reasons and I’ll consider — I’m a very reasonable guy.

If you think you fit the bill and would like to work for a really smart and cool boss — namely, me — drop me a line at jdevilla@ctstech.net and let’s talk!

For the Back End, an ASP.NET MVC Developer

You heard me right, I said ASP.NET MVC. You might be able to talk me into ASP.NET if you have a really convincing argument, but I’m an ex-Microsoftie, and I have my reasons for going with MVC.

As for why we’re going with Microsoft-based server technologies rather than something Unix-based, it’s simple: our customers are using Microsoft technologies such as Windows Server, IIS, SQL Server, Active Directory and so on. We need our software to play very well with theirs.

Hence our search for an ASP.NET MVC developer, whose job will be to write the back end applications for our mobile apps for business. The mobile apps will be making calls to an API, which you’ll implement. These apps will also have some kind of administrative control panel to manage all the people using our mobile apps, and you’ll have to implement that too.

You should have experience with the following:

ASP.NET MVC

The C# programming language / .NET framework

Entity Framework

SQL Server

HTML5 / CSS3 / JavaScript

jQuery / jQuery mobile

Test-driven development

Implementing APIs

Writing secure applications for business

Contributing to the design of applications

Researching new and rapidly-changing technologies and then implementing features to take advantage of them

Making judgement calls and being able to explain them

Venturing into unfamiliar territory and getting stuff done

For iPhones and iPads, an iOS Developer

We’re also looking for an iOS developer to build native iPhone and iPad clients for our mobile apps for business. Yes, we do mean native iOS apps and not HTML5-based ones, because some of the functionality we’re going to need will require the kind of low-level access that you can’t get with an HTML5 app.

You should have experience with the following:

iOS 4 and 5 development

The Objective-C programming language / core iOS frameworks

Test-driven development

Making calls to various APIs

Writing secure applications for business

Contributing to the design of applications

Researching new and rapidly-changing technologies and then implementing features to take advantage of them

Making judgement calls and being able to explain them

Venturing into unfamiliar territory and getting stuff done

For Android Phones and Tablets, an Android Developer

We’re also looking for an Android developer to build native Android phone and tablet clients for our mobile apps for business. As with the iOS developer, we do mean native Android apps and not HTML5-based ones, because some of the functionality we’re going to need will require the kind of low-level access that you can’t get with an HTML5 app.

Android 2 / 3 / 4 development

The Java programming language / core Android frameworks

Test-driven development

Making calls to various APIs

Writing secure applications for business

Contributing to the design of applications

Researching new and rapidly-changing technologies and then implementing features to take advantage of them

Making judgement calls and being able to explain them

Venturing into unfamiliar territory and getting stuff done

Once Again…

…if you think you’re up to one of these tasks, or if you have any questions, contact me at jdevilla@ctstech.net.

1.3 Windows

For Windows users I’ll show you how to get a basic Ubuntu Linux system up and running in a virtual machine so that you can still do all of my exercises, but avoid all the painful Windows installation problems.

… have to figure this one out.

Learn C the Hard Way is a a work in progress, so it’s not surprising that parts of it are incomplete. That being said, it’s an amazing working in progress spanning 55 chapters, 49 of which appear to be complete. It starts your C programming journey with “Hello, world!” and then takes you to all sorts of places, including pointers, rolling your own simple prototype-based object system, Zed’s handy-dandy debug macros, Duff’s device, grand tours of data structures and debugging tools and more. Given the amount of ground that the book covers, it’s very likely that Zed put a higher priority on those parts that covered C programming in general rather than dealing with platform-specific issues. Luckily, I can help.

For those of you who are Windows users who’d like to do the exercises in Learn C the Hard Way, this walkthrough is for you. In it, I’ll cover the process of using the Windows Installer for Ubuntu Desktop, also known as Wubi (short for “Windows UBuntu Installer”). With it, you can install Ubuntu Linux on your Windows Vista, Windows 7 or Windows 8 machine and easily switch between Windows and Linux, without having to fool around with disk partitioning software or doing anything more complicated than making a couple of selections in an installer program.

Using Windows Installer for Ubuntu Desktop

When you run the installer, you’ll be presented with the window below:

All the installer really needs to proceed is for you to provide a username and password for an administrator-level account which you’ll use to log in.

The installer automatically chooses the amount of disk space to allocate to Ubuntu, but you can change this value. I decided to be generous and give Ubuntu the most space that the installer will set aside for Ubuntu, 30GB. This may seem tiny, but the resulting Ubuntu installation will be able to access not only its files, but the files in Windows’ filesystem. Unfortunately, the reverse does not apply: you won’t be able to access files in Ubuntu’s filesystem while running Windows.

You also have the choice of desktop environment. The options are:

Ubuntu (the default): This flavour of Ubuntu uses the Gnome desktop environment with the Unity shell interface. If you’re new to Linux (or haven’t used it in a while), start with this.

Mythbuntu: This flavour of Ubuntu is meant for setting up a standalone MythTV-based PVR system.

Once you’ve provided a username and password and you’re satisfied with your choices (or the defaults), click the Install button. The installation process will begin and you’ll see a window showing the installer’s progress as it downloads files, as shown below:

Once the installer has downloaded all the files it needs, it will start expanding them. The installer window should look something like this:

Once the installer has finished expanding the files it downloaded, you’ll see the Completing the Ubuntu Setup message (pictured below), which notifies you that you need to reboot your computer to complete the installation process. You’ll be given the option of rebooting immediately or doing it manually later:

When you reboot your computer, the Ubuntu installer will go through its final steps. You’ll see a screen that looks like this:

Once the installation is complete, you’ll be taken to the login screen. The username you provided should be automatically selected, so all you have to do is enter the corresponding password, which you also provided on the installer’s first screen.

Once you log in, you’ll be in your new Linux environment.

You’ll have one more step before you can start the exercises in Learn C the Hard Way: installing the required development tools. You can do this by firing up a command line and installing them with apt-get.

If you’re new to Ubuntu or have been using an older version, it may not be obvious how to start an application that isn’t in the Launcher (the taskbar/dock-like collection of icons on the left side of the window). The Dash Home icon is similar to the Start menu in Windows 7 and earlier, and you can use it to open a terminal window as shown in the diagram below:

Once you open a window, enter this at the command line:

Swift

1

;html-script:false]sudoapt-getinstallbuild-essential

You’ll be prompted to enter your password, after which the required developer tools will be installed. You can now start the exercises in Learn C the Hard Way.

When You Restart Your Computer

The next time you restart your computer, you’ll be presented with a menu giving you the option of booting into Windows or Linux. If your OS is Windows 7 or earlier, the menu will look like this:

If you’re running Windows 8, the look will be more like the interface formerly known as Metro:

See the photo above? That’s me, and it was taken at noon yesterday. I’d just come from a presentation with a client, and I think it went pretty well. I don’t think I’ll wear a tie to work every day (I’ll wear a blazer or sport jacket reasonably often), but it’s a nice way to mark the start of my run as Comprehensive Technology Solutions’ CTO.

You read that right: my new job title is “Chief Technology Officer”. If the thought of me being a CTO scares you, you’re not alone. I’m a little worried myself.

It’s a far cry from my last job, and how I got here was an interesting story.

The Evangelist’s Lament

For the longest time — most of the past dozen years — I’ve held the title of “Developer Evangelist”, “Technology Evangelist” or “Platform Evangelist”. The term “evangelist” was coined by Mike Murray, who worked in Apple’s Macintosh division during the Mac’s early days, and it was made popular by Guy Kawasaki. The best way to describe my line of work is probably “platform evangelist”, where the goal is to promote a platform — an operating system, software, service or tool — to technologists who would create new software and services using the platform. For example, in my developer evangelist job at Microsoft, it was my job to ensure that software developers were aware of Windows Phone 7 and had access to information on how to build apps for it. I ran tutorial sessions, wrote articles and documentation, provided example code, introduced developers to each other, provided them with app ideas, and so on — anything it took to get more people to wrote more Windows Phone apps (and yes, given Windows Phone 7 getting into the game a full three years after the first iPhone, it was often an uphill battle).

Being a tech evangelist lets you get up close and personal with the technology you’re evangelizing. At Tucows, I got up close and personal with a big software project that never saw the light of day, but from which I learned a lot of lessons, both in programming as well as project management. At Microsoft, I got to play with their most expensive toys (Visual Studio 2010 Ultimate, which retails for more than $10,000 a licence) and with other tools, frameworks and operating systems (including Windows Phone 7) well before they were available to the general public. At Shopify, I got access to their source code in order to better write documentation, which gave me a window into how top-notch developers write commercial-grade Ruby on Rails software.

Tech evangelists’ number one job isn’t writing software. It’s encouraging, assisting, and promoting development of software on the platform, software or tools they’re promoting. I was generally measured by the software I got other people to make as well as the general activity in the platform ecosystem.

Most of the places where I interviewed didn’t see things that way. By and large, they were startups looking for their first evangelist, and it seemed that their ideal evangelist was a programmer who just happened to be an extrovert. That’s a perfectly sensible thing to do when you’re hiring a programmer, and especially at a startup, where everyone has to be an A-player at what they do. It’s the wrong criteria when looking for an evangelist, a job at which I happen to be an A-player.

The story ended up being the same: I’d be invited for an interview based on my reputation, after which I’d pass the “people skills” litmus tests with flying colours. Then they’d look at my software output, which aside from all the tutorial and example code I’ve written over the past few years, was pretty much nil. I’d been meaning to do some after-work side projects, especially at Microsoft, but I was putting some extra effort into trying to fix a faltering marriage (for what little good it did me), so those had to go by the wayside as well.

“I’ve been an evangelist all that time,” I’d say, “Don’t measure me by my software output; measure me by the software output of the people I evangelized to.”

Unfortunately, software output is a very easy yardstick to use. Evangelism effectiveness isn’t. While many organizations have come up with criteria for separating the good developers from the bad, few have any idea of how you tell a good evangelist from a bad one. As a result, this refrain became more and more familiar: “We’re looking for someone a little more technical.”

Well, I thought, at least I’m not as badly off as the guy who got this rejection letter:

As Mobile As It Gets

When I graduated with my computer science degree from Crazy Go Nuts University in 1994, most of the developer jobs seemed to be for banks and insurance companies, and they didn’t interest me. Instead, I opted to join a little upstart interactive multimedia company run by art school grads: Mackerel Interactive Multimedia. It was a different time, an era when CD-ROM drives and sound cards were optional computer accessories, connecting to the internet (if you could get a SL/IP or PPP connection) meant using phone lines and a modem, and Apple was in danger of going under. What we called “multimedia” — computer programs featuring lively interactions with the user as well as graphics, sound and video — was cutting-edge back then, and I wanted to make it too. Coming from a C and command-line background at school, the transition to the art-heavy, GUI-driven world of multimedia was a venture deep into terra incognita. I remember sometimes getting stuck on some thorny programming problems, but I also remember that I was invariably able to come up with some kind of solution or workaround .

We’re in a similar era again, but instead of multimedia applications on CD-ROM or even floppy disks, we’ve got smartphones and tablets. The iPhone hit the scene only five years ago, and the iPad is a little over two years old. They pack a lot of computing power into a small space, and unlike desktop or laptop computers, they’re bristling with all sorts of sensors (touchscreen, microphone, camera, accelerometer), they can network via either wifi or using mobile data and they’re the computing devices that people keep in their pocket or within arm’s reach most of the time.

The set of Windows Phone 7 prototypes that were under my care back in 2010, charging up.

Mobile tech really interests me, and that’s why I pushed hard to become a Windows Phone Champ when I was at Microsoft. It’s also why I shifted Global Nerdy’s main focus to be mobile. If you Google mobile developer news roundup (without quotes), this blog owns the first page of results; if you shorten the search terms to just mobile developer news, it’s still on the first page of results. I’ve been teaching myself iOS development and plan to do the same for Android; on the off chance that Windows Phone 8 takes off, I’ll have my WP7 skills to fall back on as well.

Once again, I have the same problem: I don’t have a single mobile app in my portfolio. How was I going to get into mobile development?

The Opportunity and the Risk

So when my old high school buddy Jesse Singh approached me about being the tech lead for Comprehensive Technology Solutions (CTS), his new mobile development company, I was intrigued. CTS’ first product is SafeMDM, a set of tools that allows enterprises to better manage mobile phones and tablets. MDM — that’s short for mobile device management — is something that interests a lot of businesses, who are feeling the pressure from employees to allow them to use smartphones and tablets, whether their own or company-issued, to get their work done. Businesses are worried that these new devices, which don’t have all the management tools that desktop and laptop computers have, will expose them to all sorts of risk: security breaches, loss of confidential data, breaking regulatory requirements and so on. It’s an interesting problem that organizations are only beginning to think of discussing, and only a small number of development shops are working on solutions.

It’s a big gamble. If I had a family to feed, I probably would’ve said “No thanks.” But at this point in my life, as a (relatively) newly-single guy with no debt and whose biggest expense is a monthly contribution to a retirement savings plan (it’s bigger than my rent), I can take a chance on this sort of opportunity. The job also lets me work from Tampa a third of the time, which lets me maintain my long-distance relationship while I’m there and put in the necessary extra time while I’m here. Freedom-wise, I’m on the same footing as any twentysomething at a startup, so I might as well make the most of it.

Since I’ve always wanted the title, I asked if I could be CTO. Jesse said “yes” immediately. He knows that I’ve been programming since 7th grade, and he knows what I can do.

The title should go a long way toward fixing my apparent “not technical enough” problem.

As CTO, I’ll be leading CTS’ development team, writing specs, reviewing code, doing a little coding myself, researching technologies, schmoozing on behalf of the company, writing docs, writing the blog and doing whatever else it takes to help the company become successful. We’ve got some great connections who’ve already been hard at work lining up meetings with clients, including one where I wore the suit in the photo at the top of this article.

One of my first tasks is to get a small development team up and running. I need developers in the Toronto area who not only have solid skills, but who are also willing to venture into unknown territory and deal with the moving target that is mobile development. If you can develop iOS or Android apps, or if you build back end stuff, I’d like to talk to you — drop me a line at jdevilla@ctstech.net and we’ll talk!