Come Hang in the Treehouse
December 27, 2011 by dave@kiwiluv.com · Leave a Comment
I
I’m a developer, not a designer. I’ve always aspired to improve my front end skills. I have very strong opinions on how things should look, how site navigation should work, etc. Sadly, I have absolutely no ability to code any UI except for an unstyled steaming pile of HTML. I started watching the DOCTYPE podcast, hosted by Nick Pettit and Jim Hoskins in an effort to get some insight into the mysterious world of design. I had just caught up on their back catalog when I noticed that the last episode was posted back in March of 2011. Hmmm.
Like any reasonable person, I simply assumed that Nick and Jim had been abducted by aliens and went on about my business. Then, in one of the numerous podcasts I listen to I found a clue to their whereabouts. Turns out the alien abduction thing wasn’t far off. They’re both being held captive at Carsonified, I’m sure being subjected to strange medical experiments, probing, etc.
More importantly, when not being researched they are contributing to Carsonified’s latest creation, Treehouse (teamtreehouse.com). This used to be know as Think Vitamin Membership, but they’ve apparently re-positioned it, pumped some more resources in it and got Jim and Nick on-board to produce instructional video content.
Basically, Treehouse is an online subscription service with some pretty high production quality content on web design, web development and iOS development. Having been deprived of my instructional video fix, I joined up and am now addicted. Like a video game, Treehouse awards you badges for successful completion of quizzes and code challenges. Being the completionist I am, I’m going through all of the content even if I know the subject well. In doing so I’m finding out that the things I know well, maybe I didn’t know as well as I thought I did. Even if you’re experienced in any of the tracks the offer, it’s worth going through them again.
Although new and a work in progress, the content and site is very polished. Some of the videos haven’t been changed to the new Treehouse branding, but who cares? I’m sure they’ll get to it. The code challenges work well and the quizzes are somewhat evil in that if you get one wrong, or go review the material, the quiz resets so you have to answer all the randomly selected questions again. I did encounter a bug. One of the initial code challenges was to add a simple <div> to the body of an HTML page. I did it correctly, but Treehouse didn’t agree. I then pasted the example code into the box and it still thought it was incorrect. Refreshing the page and starting again fixed the problem though.
Treehouse starts at the absolute beginning for all topics, so if you’re a more experienced developer you might not find the initial stuff useful. If so, just take the quiz without watching the videos. Word on the street is that Facebook is looking at the Treehouse profiles and badge collections to identify potential recruits, so your Treehouse badges might turn into good resume bullet points at some point.
One thing that bothers me about Treehouse is that their mascot is a tree frog. Tree frogs creep me out. They never blink. What’s up with that?
New eBook – Google App Inventor
December 12, 2011 by dave@kiwiluv.com · 1 Comment
I was given a nice opportunity recently to have a look at a review copy of a new book on Google App Inventor that Pakt Publishing kindly provided. The book, Google App Inventor by Ralph Roberts, is deadly serious about teaching you just about everything there is to be known about Android development using Google App Inventor.
The book weighs in at 356 pages for the PDF version (ePub and print also available), so although it’s a beginner’s guide it takes you pretty far down the path.
Last year, I posted my take on the App Inventor beta. A lot has happened in a year with App Inventor, but first the book…
In The Beginning
The book starts out with the obligatory installation sections. However, the level of detail is excruciating, so there is absolutely no chance that you won’t be able to install the App Inventor applications on your computer. It’s also refreshing to see that all three of the major platforms are given equal footing (I admit that some of my own stuff may be a bit Mac/Linux centric).
Moving on, the basics of blocks and the available components are presented. There is definitely no glossing over subjects, so the introductory chapters will give the reader a firm grounding in what you can do with the App Inventor environment. It even has a “Not Ready for Prime Time” section to tell you what parts of App Inventor may not yet be fully baked.
In the Part Just After the Beginning but Not Quite the End
From there, the author divides the topics up by flavors of app, which I quite liked. Those are…
- Apps that Communicate
- Apps that Remember
- Apps that Surf the Web
- Apps that Know Where They Are
- and finally Games and Animation
If I had written this book there would also be an “Apps that Mysteriously Crash” section. Fortunately I didn’t.
In these chapters, the reader is guided through building apps that fall into these categories. For example, an “App that Surfs the Web” that is built is an eBay link app which shows how to use App Inventor to fetch and present web content. Although a specific example is presented in each of these chapters, they are great examples of the techniques to use in each specific problem domain.
The Appendices
The problem with books is that inevitably when you publish them, something changes. Packt and the author were not shy about tacking this late breaking information onto the book to ensure that it’s as complete as possible. There are also pointers to a load of resources for the aspiring App Inventor guru in the appendices.
But didn’t Google Kill App Inventor?
Nope. It’s true that under Larry Page’s new regime Google is cleaning house and ridding themselves of products which are not core to where they want to go (wherever that is). Yes, App Inventor is one of those, however Google did not shut App Inventor down. Instead they handed stewardship of App Inventor to the Center for Mobile Learning at the MIT Media Lab. That’s a good place for it. The center is brand, spanking new having been launched in August of 2011.
The book includes this late breaking tidbit in the “Final Last Minute Update” appendix (not to be confused with the earlier “Last Minute Update” appendix and presented the full text of the App Inventor news from Google, which I also received as an App Inventor developer. Here it is.
Dear App Inventor User,
As a result of the recent changes to Google Labs and App Inventor, effective immediately, the URL for App Inventor will change from appinventor.googlelabs.com to appinventorbeta.com. This URL change will not have an impact on your projects stored in App Inventor. All data that you see in your appinventor.googlelabs.com account, as well as documentation and e-mail forums, will be available at appinventorbeta.com.
As we announced on the App Inventor Announcement Forum, Google will end support for App Inventor and open source the code base at the end of this year. Additionally, in order to ensure the future success of App Inventor, Google has funded the establishment of a Center for Mobile Learning at the MIT Media Lab, where MIT will be actively engaged in studying and extending App Inventor. This transition will happen at the end of 2011. At that time, you will need to download your data from appinventorbeta.com in order to continue working with it in the open source instance of App Inventor. In the coming months, we will send
you detailed instructions on how to download your data. Please visit the App Inventor user forums to get future updates on App Inventor.
The App Inventor Team
I’m pretty sure App Inventor will find a good home at MIT.
Summary
My previous stand on App Inventor hasn’t changed. I think it’s a great platform for learning programming and getting into Android development. As a teaching tool, it illustrates flow control and other aspects of programming logic without the burden of having to choose and learn a specific language. I still prefer the ancient ways of typing in code, however for those willing to embrace the new and shiny, this book is probably the most thorough grounding in App Inventor available.
Weinre for Mobile Web Debugging
May 11, 2011 by dave@kiwiluv.com · Leave a Comment
This is a video on Weinre from Jonathan Stark. He used this in a demo at Philly ETE which was very impressive. More importantly, while most people pronounce this “Winery”, Jonathan pronounces it “Weiner” which I find hysterical. I found this while checking out his blog. I’m in the middle of his book “Building iPhone Apps with HTML, CSS and JavaScript” which, so far, I highly recommend.
I’ve decided to switch one of the apps I’m working on from a native Objective-C implementation to this approach using PhoneGap to package it natively. The app in question is very content heavy, so I think it lends itself to a web-centric approach.
As soon as I’m finished, I’m going to put a post comparing the process between Objective-C native development and PhoneGap. I plan on making many inflammatory statements and then posting the link to Hacker News (the finest spelling and grammar checker on the planet). I can always rely on HN readers to correct my punctuation, and if I’m lucky call me an idiot (see last post).
More importantly, if you’re trying to debug a web app on an iPhone you’ve got to give Weinre a look. It’s way better than the alternatives!
HP Veer – How Dead is WebOS?
May 8, 2011 by dave@kiwiluv.com · 14 Comments
I got this in an email the other day. Since the demise and assimilation of Palm by HP, I’d largely forgotten WebOS. However, this triggered a few thoughts (I have fewer than you would think).
I’ve been noticing how frameworks such as PhoneGap (a popular HTML/CSS/JavaScript framework) are becoming popular for cross platform mobile development. I remembered that WebOS was actually one of the first platforms to adopt that approach. I also remember that, at the time, it was criticized for being hard to develop for. Times are definitely changing…
I followed the yellow brick road to the HP WebOS developer center. I have to say, a couple of things impressed me.
The WebOS Product Lineup
Remember when it was just the Palm Pre? Well, it’s not much bigger now but doesn’t look bad.
Now that I’m lugging an HTC Thunderbolt or iPhone around, I really miss smaller phones. Charging the battery every four hours is also a big downer on that damn Thunderbolt.
The Veer is just my size. I check email, Twitter and Yammer frequently. Sometimes I text, but I rarely watch a ton of media so the big screen on these larger smart-phones is just a nuisance. But I digress. HP has a small, medium and tablet form factor. If they’re serious I’d be surprised if an iPhone-esque form factor weren’t also in the works.
The Development Suite
They provide a complete SDK which integrates with Xcode for OS X users. For mainstream app development, PhoneGap seems to be the weapon of choice. Also included in the SDK is a Plugin Development Kit (PDK) which allows native (compiled) development for OpenGL/SDL in C/C++. This is intended for high performance graphics for games, etc. but is also useful for more intensive processing which may not be JavaScript’s forte.
Another Smartphone Platform, Seriously?
Does WebOS matter anymore? To be clear, we see this as a race for third place in the smart-phone market (sorry RIM/Blackberry…the PlayBook won’t save you).
Personally, after Windows Phone 7‘s recent missteps (phone bricking, lolly-gagging over updates, etc.) I’d put my money on WebOS. iOS and Android will continue to dominate for the foreseeable future. WebOS may get traction depending on how skillfully HP markets it and to what degree they provide compelling devices. It’ll be a tough road for them.
From a developer’s standpoint, this proliferation of smart-phone platforms is maddening. Each has its own tech stack for developers to deal with. That fragmentation is driving developers to embrace frameworks such as PhoneGap, which WebOS has wholeheartedly adopted. In other words if you’re producing iOS and Android apps with PhoneGap, supporting WebOS devices isn’t much of a stretch. Supporting Windows Phone 7 is a completely different story at the moment. Even iOS, which ordinarily has to be programmed in the unholy spawn of Smalltalk and C (Objective-C), is supported by these frameworks less some of the stranger native controls (I’m looking at you UIPickerView).
What Now?
I don’t know about the rest of you, but here’s our evil plan:
- Stay focused on iOS (I have to take horse tranquilizers to cope with Objective-C) and Android.
- Get up to speed on PhoneGap and other HTML/CSS/Javascript platforms.
- Keep an eye on the market acceptance of the new devices HP is introducing.
Like I said, my bet is on WebOS over Windows Phone 7. WebOS even beat Windows Phone 7 in the single most important determination of the success of any mobile platform.
The availability of Angry Birds.
======================================================
Update 8/24/2011 – Following a fascinating earthquake that started in Virginia, shook Philly (even I felt it napping in my office) and heading west, HP announces that they are ceasing operations of the WebOS business unit. That means one of two things:
1. Yep, it’s dead.
2. HP has other sinister plans in a software-only realm.
Either way, if you’re a WebOS developer I urge you to use those skills and pump them into another platform. Things are going to get ugly.
The Great Zombie Migration of 2011 – to Code School
March 23, 2011 by dave@kiwiluv.com · 2 Comments
I got an email this morning that Rails for Zombies (a cool introductory tutorial by the guys at Envy Labs) was now hosted at Code School (an Envy Labs product actually). Naturally, I was lured by the promise of fame and glory, so I went over and got my OZ (original zombie) badge which I felt I had earned at great personal risk (zombies). I had test driven it a while back for fun…and because zombies are so damn cool.
It looks like the evil geniuses at Envy Labs are broadening the original Zombie concept with more course material on Code School which is nice to see.
Guys…please do a general Java Script course. My Java Script Fu is weak.
Pivotal Tracker – Still Awesome…No Longer Free…:(
January 20, 2011 by dave@kiwiluv.com · Leave a Comment
The gang at Pivotal Labs have chosen to give back by letting the vast unwashed masses of developers use their excellent agile project management tool, Pivotal Tracker, for free for the last 2 1/2 years. I woke up to this email today (also posted here). Since the popularity of this tool has probably driven Pivotal to host an entire data center for it, they’ve got to start charging.
Not sure about the rest of you, but we’re going to keep using it. The prices look completely reasonable and I’ve got no problem at all paying for stuff that provides value.
Thanks to the guys from Pivotal for almost three years of leaching off of their great tool and finding a way to keep it available to the folks who’ve become dependent on it!
Rubular – Cool (but Scary) Website for Regular Expression Cowards
December 24, 2010 by dave@kiwiluv.com · Leave a Comment
If you live in fear of regular expressions, as I do, I’m afraid there is no cure. However, there is some help. Rubular lets you check your regex’s as you construct them and has a handy reference guide as well so definitely check it out if you need to use this strong magic in your applications.
However, if “\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z” starts to make sense to you, you should lay off the hallucinogenic drugs and seek help immediately.
Aptana Studio 3 Beta
November 23, 2010 by dave@kiwiluv.com · Leave a Comment
I’m, like most Rails developers, am guilty of bashing Windows as a development environment for Rails. Most Rails folks also aren’t proponents of big IDE’s, but in Windows those, or packages such as Instant Rails, are often the least painful ways to go because they take care of much of the environmental setup that needs to be done.
A while back I tried to get Aptana Studio to work and was unable to do so. I failed miserably as you can see. That frustration drove me back to my Mac’s loving embrace. Today I noticed that Aptana had released a beta of Aptana Studio 3, so I decided to give it a shot since I have a Windows machine at work and need Rails and a variety of other frameworks on it for my daily activities. Installation of Aptana went without a hitch. I fired it up, and was greeted with a pleasant looking, unix style terminal window! I was able to create an application with a simple New->Project->Rails (Aptana supports a ton of development languages and frameworks). My only hitch was the installation of sqlite3 on Windows (always a pain in the rear). In the end, I wound up copying the *.exe, *.dll and *.def files into EVERY bin directory for installed Ruby versions. Apparently having the Windows path pointing to it isn’t enough.
But I digress, once the sqlite3 installation was working, I returned to Aptana. I was able to install gems through bundler or the command line with no problem. Aptana provides menu options for all of the common Rails commands (script generate, etc.) but I find those slower than the command line if you know what you’re doing. Still, it’s nice to see all the options there in case you forget.
I added a few models with scaffolding to my new app and everything worked beautifully.
The Aptana Studio 3 beta looks awesome so far. If you’re trapped on Windows it looks like a great solution and compared to some other IDE’s (I’m looking at you Eclipse and Netbeans), Aptana studio is fast, intuitive and easy to use. Here’s the intro video for Aptana Studio 3…definitely check it out.
RadRails 3 Sneak Peek 1 from Aptana, Inc. on Vimeo.
kiwiPomodoro in Android Market
November 13, 2010 by dave@kiwiluv.com · Leave a Comment
We decided to throw the pomodoro timer application I put together during my recent flirtation with the Pomodoro Technique (here’s the post). It’s there, it’s free, so give it a try. If you don’t like it, there are a few more there to choose from. Feel free to give us any suggestions or critiques and enjoy pomodoroing!
MonoTouch iPhone Development
November 7, 2010 by dave@kiwiluv.com · 1 Comment
In general, and this is not a universal truth, but in most cases products with obnoxious monkey’s in their logos are pretty good. Despite this hard to dispute observation, I have been reluctant to try MonoTouch out. MonoTouch is a development enviornment for iPhone which allows you to develop in C#/.NET.
Recently, some respected colleagues prompted me to give it a shot. I didn’t need much motivation aside from their assurances that it didn’t suck, because after years of trying to peacefully coexist with Objective C, I’m about ready to give up. When OS X came out, I recall thinking “Cool…now I can teach myself to program for this…what fun.” Then I cracked open the Objective C book and had to be put on oxygen. This is my impression of Objective C…
Yep, NeXT took C, a perfectly serviceable computer language and grafted alien DNA into it to make it Object Oriented. Ever see the Telepod accident in the movie “The Fly” that produced Brundlefly? Objective C is the computer language equivalent.
My next confession is a difficult one to make. I like C# and .NET. I’m comfortable with C# having been a Java developer back in the 90′s when Java was cool and not funded by the Yahoo Toolbar (what’s up with that Java?) and spent a few years doing ASP.NET. C# was a very skillful ripoff of that highly successful, but aging, language. All in all, a decent language. Yes, I make fun of .NET developers, having been one myself, but the thought of coding for iPhone in C# rather than Objective C (shudder) had a lot of appeal. So off I went to download MonoTouch.
Installation
I thought a good first step would be to install it. I don’t read instructions, so I downloaded the trial package, installed it, then could not find it. Eventually I realized that MonoTouch requires separate downloads of the Mono SDK and MonoDevelop IDE. Probably should have read the instructions, but eventually I got everything installed. MonoDevelop 2.4 elected to annoy me by informing me that a new version was available…which prompted me to download MonoDevelop 2.4. I went through that about 8 times before I caught on….
On to the Code
With everything installed, I decided not to stray too much from the introductory tutorial. It is a bit out of date, but hopefully not too many pitfalls. I was presented with an easy to follow create solution wizard.
Hitting the ‘OK’ button caused it to crunch and grind and produced the following code framework.
using System;
using System.Collections.Generic;
using System.Linq;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace HelloiPhone
{
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args);
}
}
// The name AppDelegate is referenced in the MainWindow.xib file.
public partial class AppDelegate : UIApplicationDelegate
{
// This method is invoked when the application has loaded its UI and its ready to run
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
// If you have defined a view, add it here:
// window.AddSubview (navigationController.View);
window.MakeKeyAndVisible ();
return true;
}
// This method is required in iPhoneOS 3.0
public override void OnActivated (UIApplication application)
{
}
}
}
I can actually read this…because it’s not Objective-C!
Building the UI
The wizard had created a MainWindow.xib file. Double clicking on it launched the old, familiar Interface Builder. The tutorial prompts you to create a button and label on the blank window and wire them to the app delegate handlers. I won’t go into it as we’re focusing on MonoDevelop, but it’s done in the usual way for iPhone development.
Adding Behavior – First Glitch
We have our connections to the UI elements, but not much is going on now. The tutorial makes the following statement…
“We are going to create two class outlets in the application delegate. Each outlet that we create in the user interface will be reflected as a property in a partial class in the MainWindow.designer.xib.cs file.”
Hmmm…mine didn’t. I don’t have references to my new button and label objects anywhere in the C# code, so needless to say I can’t proceed to adding any behavior. Remember what I said about reading the instructions? The installation section of the MonoTouch documentation also said this in large friendly RED letters:
“* You MUST install the latest release of Mono before installing MonoTouch“
Bummer…I was really hoping to blame the tool rather than my own stupidity…:(.
Adding Behavior – Next Try
Here we go again. After reinstalling the MonoTouch package AFTER having installed Mono, I recreated my steps from before with the new solution name RTFM. EUREKA! Just kidding, the %#$%!^* still didn’t work! Still highly motivated to avoid Objective-C at all costs, I re-read the various installation commentaries for both Mono, MonoTouch and MonoDevelop and found this critical, but well hidden, pearls of wisdom again in large friendly RED letters.
“* You MUST use the MonoTouch version of MonoDevelop from the above link, or the version from MonoDevelop’s built-in updater, since it may contains fixes that are not in MonoDevelop 2.4.”
There’s no easy way of determining if you have installed MonoDevelop 2.4 or MonoDevelop 2.4 iPhone enabled. I followed the link from the MonoTouch page and reinstalled MonoDevelop. I created RTFMPartDeux and…gasp…something was different. Like Groundhog Day…different is good. The MainWindow.xib.designer.cs file was in a heirarchy under MainWindow.xib!
Sure enough, when I retraced my steps the MainWindow.xip.designer.cs file created references to my button and label objects which I could use to add some behavior in the ApplicationDelegate.
Adding Behavior – Finally!
Ok, with all my prior screw ups rectified, I added the following handler to the app per the tutorials instructions.
int ntaps = 0;
button.TouchDown += delegate {
label.Text = "I have been tapped " + (++ntaps) + " times";
};
This time, building and running it worked fine with the finished masterpiece looking like this…
The Verdict
Too early to tell, but I’m impressed so far. All of the problems I encountered were self inflicted so I can’t really blame MonoTouch for anything other than having instructions which are not idiot proof (I’m an exceptional idiot). Now that I’ve got an app that counts upward when you hit a button, I will implement a gene sequencing application to reverse engineer the human genome complete with 3D molecular rendering to see if it really is a solid solution.
My only reservation at present is any hidden quirks that would not surface after man weeks of development. I’ll be test driving this a bit more in upcoming days to stretch it’s capabilities a bit and see what I find.











