I’ll admit it: this made me chuckle.
Month: August 2012
President Barack Obama appeared on a Reddit “Ask Me Anything” (AMA) yesterday, making it the site’s biggest day ever. As of this writing, the AMA is closing in on 23,000 comments. The deluge of site visits also bogged up access; I must’ve received a half-dozen IMs alone asking me if I was able to access the site (I’m on holiday all week with my lovely lady friend, so I wasn’t even aware he was holding an AMA). Peter Kafka explains on AllThingsD how Reddit managed to get an AMA with the president — it turns out that there are quite a few Redditors at 1600 Pennsylvania Avenue.
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:
On a Short Break
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!
The Video
Earlier this month, I pointed to TshirtOS, the smart t-shirt designed by CuteCircuit and sponsored by Ballantine’s (yup, the whiskey company) and included a video of the shirt in action. They’ve posted a new video which takes a little dramatic licence in order to remind us that in the right hands — or the very, very wrong ones — technology can be a gateway to adventure:
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!
As I wrote in an earlier post, I’m now the CTO of Comprehensive Technology Solutions, a development shop that’s building mobile applications for medium to large businesses. I have three developer positions that I’d like to fill in September, and they’re listed below.
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.
Read reviews of Top 3 Best Hosting Companies and get the best web hosting
deals!
Learn C the Hard Way is Missing Windows Setup Instructions
A couple of readers who were inspired by my previous post, C, the Programming Language: Still Popular After All These Years, decided to give Zed Shaw’s free book Learn C the Hard Way a try. They ran into this roadblock in Exercise 0, which covers setting up your machine to do C programming:
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
You can get the installer from the Windows Installer for Ubuntu Desktop page, pictured below:
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.
- Kubuntu: This flavour of Ubuntu uses the KDE desktop environment.
- Xubuntu: This flavour of Ubuntu uses the Xfce desktop environment.
- 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:
sudo apt-get install build-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:
Have fun learning C the hard way!
Dennis Ritchie, creator of C, with Ken Thompson, creator of B, C’s precursor.
If you’ve ever been with me at a gathering of programmers, chances are that you’ve heard me play The Beatles’ Let It Be on my accordion while singing these lyrics:
When I find myself in hacking trouble
Dennis Ritchie comes to me
Speaking words of wisdom:
“Code in C.”And right there on my hard drive
gcc is there for me
Speaking words of wisdom:
“Code in C.”Code in C, code in C,
Code in C, oh, code in C
[insert high-level scripting language here] is for lightweights
Code in C.
C’s got staying power: even though it first appeared in 1972, it’s still popular today, sitting pretty at the very top of the August 2012 TIOBE Programming Community Index:
TIOBE Programming Community Index “Top 11” for August 2012 |
||
---|---|---|
Position | Programming Language | Appeared in |
1 | C | 1972 |
2 | Java | 1995 |
3 | Objective-C | 1983 |
4 | C++ | 1983 |
5 | C# | 2001 |
6 | PHP | 1995 |
7 | Visual Basic | 1991 |
8 | Python | 1991 |
9 | Perl | 1987 |
10 | Ruby | 1995 |
11 | JavaScript | 1995 |
Note the top five languages immediately after C: they all have C’s syntax, as do Perl and JavaScript. Java, C#, PHP, Perl and JavaScript programmers should be able to look at some C code and get the general idea, at least until it gets into more complex work with pointers. C++ is almost a superset of C; a C++ programmer should not only comprehend C code as easily as C++, s/he should also say “Not confusing enough”.
Objective-C is a strict superset of C, which means that any C code that compiles will also compile if fed to an Objective-C compiler. If you’re developing for iOS or MacOS, you’re pretty much a C programmer, albeit a very souped-up one.
C and Me
When I was a computer science student at Crazy Go Nuts University, I chose to do my programming assignments in C (the other language option was Turing, which made the choice rather simple). Since graduating, I’ve only used C for little hobby projects; I’ve never been paid to do any C coding. Still, it’s paid off in many important ways, from having a better understanding of the underlying machinery to being very comfortable with the syntaxes of languages like Java, JavaScript and C# to being of great help as I’m teach myself iOS programming.
Being comfortable with C paid off quite recently when I was interviewing at a startup in the San Francisco Bay area. They asked me to download and install an Ubuntu virtual environment and write a quick little program for the inPulse smartwatch emulator in order to demonstrate my programming chops. Their API documentation was barely that: a straight-up copy of the .h files for their API function library. Because I had the C practice, those header files and a quick look at some of their example code was all I needed to cobble together a quick app. The app became the basis for my inPulse programming tutorial.
Head First C
It’s unusual to see a new C book these days. Take a look at the C programming book listings on Amazon; most of them are at least five years old, and a good number of them have publishing dates in the ’90s. C’s old enough and small enough — even in the latest version, C11, approved only last December, it’s still under four dozen keywords — that most authors haven’t seen fit to write a new C book in some time.
Head First C is one of those rare new C books. Published in April 2012, it’s one of the newest in O’Reilly’s fun-to-read “Head First” series of books, which uses humour and whimsical graphic design to engage the reader. O’Reilly Radar recently conducted an interview with one of its authors, David Griffiths, about the book, the continued popularity of C and what it offers to readers.
When asked “Why write Head First C?”, especially when people still point to Kernighan and Ritchie’s classic book, The C Programming Language, as the go-to book, he Griffiths answered:
Kernighan and Richie’s The C Programming Language is one of most popular, if not the most popular, programming books, and it defined the ANSI standard. That book is still the standard, but through the language hasn’t changed, the audience has, and many learners are coming to the language from a different perspective and set of knowledge.
The C Programming Language was written in a time when it was very unusual to see a computer in someone’s home, well before the era of easily-accessible internet, never mind smartphones and tablets. Back then, C might likely be the reader’s first programming language, while these days, readers are likely to have had some experience with JavaScript, PHP, Ruby, Python or some other programming language, and they’re most likely not doing systems programming. Head First C has some interesting examples and even more interesting labs, featuring an Arduino-powered plant-watering alarm, a webcam-powered computer vision system and an “Asteroids”-like videogame.
Head First C is a pretty good book, and it’s worthwhile read. To find out more about it, check out the interview in the video above.
Learn C the Hard Way
Yours Truly and Zed Shaw
Also worthwhile is Learn C the Hard Way, a book written by the notoriously opinionated Zed Shaw. Based on his earlier book, Learn Python the Hard Way, a book written out of anger and frustration with Mark Pilgrim’s Dive Into Python (a book I rather liked, but hey, Zed’s got a right to his opinion). It’s also a worthwhile read, and unlike Head First C, it’s free-as-in-beer and online!