Review: Sencha Touch 2 Up and Running by Adrian Kosmaczewski (O’Reilly Media)

I’ve taken a couple of web development courses which required the use of HTML, CSS, and JavaScript to create interactive web sites (no frameworks).  I also have experience in C# and C++.  The difference between procedural JavaScript programming and OOP is huge.

Sencha Touch 2 addresses this by wrapping JavaScript in an Object-Oriented framework.

Sencha Touch 2 Up and Running  by Adrian Kosmaczewski is “intended for mobile developers familiar with  either iOS or Android who have an intermediate or advanced level of knowledge of JavaScript”.  Check.

The first chapter walks the reader through a “HelloWorld” experience, and an auto-generated framework example. In order to run these in Windows 7, I had to:

Install Apache Server

– Copy the Sencha Library files to the root directory of the Server

– Install Sencha Cmd

– Install Ruby

– Code the .html and .js files as described in the example.

The initial experience wasn’t seamless, but I was able to run these demo apps from mobile Apple and Android devices, and my desktop (Chrome, Firefox and IE 11).

After the HelloWorld exercise comes the task of understanding how to use Sencha Touch 2 to do real work.  In Chapters 2 through 6, the author leads the reader through the architecture of the framework (Classes, Views, Data, Forms, Controllers) in order to implement a Model-View-Controller based Design.

Chapters 7 through 10 cover Styling, Debugging, Sencha Architect, and Deployment.

I’m currently working through Chapter 6, with the goal of implementing a MVC design.  The book has provided me with a good overall understanding of the the Sencha Touch 2 architecture.  Like every programming methodology, the devil is in the detail.

 

Posted in Uncategorized | Leave a comment

Review: Getting Started with Raspberry Pi (O’Reilly Media)

  • If your goal is to use your RPi board as a tool for exploring Python, Getting Started with RaspBerry Pi seems ideal.
  • If you want an introduction to Linux and RPi configuration, this book should save you time and effort.
  • The book also provides a good introduction to bit-banging (I/O).

Raspberry Pi (RPi) sales began in late February of 2012. Demand exceeded supply for months; I missed my chance to buy an RPi during its early introduction, but continued to check with online distributors in the U.S. I finally got my hands on one in December of 2012.

I received the RPi board, cables, power supply, and an SD card containing the Linux distribution… After that point, the hacking commenced; reading blogs and websites for configuration and programming information.

When it comes to Linux, I’m neither a noob nor power user; I had a general idea of the projects I wanted to try with the RPi. But, Getting Started with Raspberry Pi would have helped me get up to speed faster in the following areas:

– The first two chapters describe RPi and Linux configuration issues
– Chapters 6 and 7 describe Arduino and I/O interfacing

The remainder of the book describes several (cool) Python-based applications, using SimpleCV for image processing, and a Scratch tutorial.

FWIW, It’s hard to overstate the capabilities of the RPi. Here’s a list of the configuration changes and projects I worked on during the first couple of months:

– Keyboard reconfiguration(wha?) //UK to US mappings
– Samba //file sharing
– WiringPi libraries //hardware control
– Node.js //javascript-based web server
– VNC Server //remote RPi access
– Image Cloning //backup…
– GertBoard-based hardware control //more hardware control
– Solid-state laser pulse width modulation
– Mosquitto message broker //packet based IoT test

Posted in Uncategorized | Leave a comment

Review: Make an Arduino Controlled Robot by Michael Margolis (O’Reilly Media)

This how-to book is really well done. In the first several chapters, it presents short conceptual descriptions of the capabilities that will be implemented in the robotic software, and walks through the robot assembly process thoroughly. The author describes two robot platforms – a 2WD robot with caster, and a 4WD skid-steer version. Both are available in kit form for under $200 on MakerShed.com (search for Rovera). The kits seem to be the way to go; a link to a parts list is also provided.

After the sections on robot assembly, the author walks the reader through a series of programs that illustrate increasingly sophisticated capabilities of the platforms – speed/direction control, sensors, edge detection, autonomous movement, etc. The software presented is clean and well-organized; the author also describes the examples, and provides troubleshooting tips. (Links to Arduino / programming references are provided).

In summary: the book and the Rovera kit(s) provide a low cost, hands-on introduction to Robotics.

(Disclaimer: I participate in the O’Reilly Blogger Review Program).

Posted in Uncategorized | Leave a comment

Review: Node Up and Running by Tom Hughes-Croucher & Mike Wilson (O’Reilly Media)

This is a review of “Node Up and Running by Tom Hughes-Croucher & Mike Wilson; O’Reilly Media.

To quote Nathan Thurm (~46 second mark):  “Is it me? It’s him right?”

Writing a book about a programming language must be difficult: Who’s the intended reader? Take a hands-on approach or a conceptual one? How to mix the two approaches?

After a very brief description of the goals of the language, the authors present a series of hands-on examples.  After installing Node, I jumped in:  coding/running/modifying many of the examples in Chapter 2.

However, I found the experience frustrating; I ended up with more more unanswered questions about the “hows and whys” of each example as I went along.

After a (long) break, I went directly to Chapter 3, “Building Robust Node Applications”, looking for a better understanding of Node’s architecture.  It contained several detailed analogies, followed by solution descriptions of several Patterns.  I found these to be helpful.  They focused on efficient design for different I/O scenarios, error handling, and multi-core issues.  In retrospect, I should have read this chapter first, before doing any coding.  It helped to clarify many of the questions I had about the earlier examples.

However, after reading that section I reviewed several other examples that revived my frustration.

In my opinion, the book alternated between reasonable conceptual explanations and incompletely-explained and/or ill-advised examples (e.g. many examples using nested anonymous functions – they work, but the authors discourage using them for production code).

The Big Picture: by using a non-blocking callback-based architecture, Node offers a different way to solve several types of design problems. Got it. The Details: I found it difficult to learn how to best apply Node’s features by reading this book.

(Disclaimer: I participate in the O’Reilly Blogger Review Program).

Posted in Uncategorized | Leave a comment

Disappearing WindowBuilder Widgets & Objects in Google Web Toolkit

Google purchased and open-sourced WindowBuilder Pro late in 2010.  I’m using it as an Eclipse plugin to develop applications for Google Web Toolkit (GWT) and Google App Engine (GAE).  With WindowBuilder Pro, the developer can just drag & drop GUI elements (Widgets) into a Components Structure Panel in the Design window; another window in the IDE shows the resulting layout in real time.   The experience is similar to using MS Visual tools to develop a GUI.  By switching from the Design View to the Source View, the automatically-generated GUI source code can then be modified to add functionality.

Unfortunately, some source code modifications can cause the Design View to disappear, become uninterpretable, or only display fragments of the GUI layout.  In my case, authenticating User login via the Google loginService broke my WBPro design view:

LoginServiceAsync loginService = GWT.create(LoginService.class);
loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>()
{
public void onFailure(Throwable error) {
Window.alert(“Login Failed:\n” + error.toString());
}
public void onSuccess(LoginInfo result)
{
loginInfo = result;
if(loginInfo.isLoggedIn()) {
initGUI();
}
else {
loadLogin();
}
}//onSuccess()
}); //loginService.login()

Why?  WBPro can’t (yet) parse dynamic GUI code based on runtime calculations

The code above, which uses Google loginService is dynamic; it won’t display the GUI unless the User is logged in.  My workaround for now?  Now that it’s debugged, I just commented out the loginService code block, and the Design View of my project magically reappeared.

It would be helpful if WindowBuilder Pro provided some feedback to the Developer when this happens – like a link to the FAQ – It would have saved me hours.

Posted in Uncategorized | Tagged , , , , , | Leave a comment

Samsung Vibrant Finally Gets Froyo – but not OTA

After many rumors and accusations T-Mobile provided a means to update Samsung Vibrant Android phones to Froyo on 1/20/2011 (old news for many).  After news of the update was announced, I waited a week for the update to be pushed to my phone; nada.  I finally did some searching, and found this – the instructions necessary to download the Mini Kies installer, and upgrade my phone.  So much for patience being a virtue.

The upgrade went smoothly, and the phone seems faster.  As for *why* T-Mobile didn’t push the upgrade OTA – possible reasons include cannibalization of new 4G Android phone sales, and the technical support headache that might have occurred from failed updates on some phones.

Posted in Uncategorized | Leave a comment

Review: HTML5 Mobile Web Development (video series) by Jake Carter

During this video series, the instructor provides a thorough introduction to HTML5/CSS3
development.  In the first part of the course he walks us through development of a
mobile Twitter application.  In my opinion, the course is better than a “live” class (I can
do the examples at my own pace) – but there are some issues to consider:

– The material is Apple-centric.  While he uses iPhone/iPad simulators and an Android
Emulator to test each new feature in the Twitter app, Jake develops on a Mac, and emphasizes Apple mobile devices. I’m not sure how efficient and/or distracting it would be to do the labs in a Wintel/Android environment.

– Browser HTML5 compliance varies greatly; only the newest devices are compliant enough to render the html5/css3 content as one would expect.  The course uses an Android 2.2 Emulator and iPhone/iPhone4 Simulators.  They had no problems rendering the html5/css3 as expected; when I used an Android 2.1 phone or Firefox to browse the same files, they rendered incorrectly.

This last issue highlights the fragmented nature of today’s Smart Phone market.  And in fairness, it is beyond the scope of this video course.  But, choosing a toolset is a strategic challenge for the developer:  Least common denominator? Native Applications? HTML5?

Given the half-life of Android OS versions, Mobile HTML5 will be ubiquitous in two years.
If your goal is to develop for iPhone/iPad and Android 2.2+, then html5 seems to be the path forward.  However, if you need to consider the millions of 1.5, 1.6, and 2.1 Android devices as well, then html4/css2, native app programming, or a framework (Appcelerator) are necessary.  In either case, this course provides a great hands-on introduction to this technology.

http://oreilly.com/catalog/0636920015109/

Posted in Uncategorized | Leave a comment

Review: HTML5 Up and Running (O’Reilly | Google Press)

As an Embedded Software Developer with experience in writing networking code, HTML5 may seem somewhat tangential as a topic for study.  However, as “embedded” has come to include devices with 512+ MBytes of memory, GHz processors, and gigabit Ethernet connections, the range of devices has expanded considerably, even at the low end of the embedded device spectrum.  There’s an expectation in the marketplace that the latest embedded widget will have a web interface to support user interactivity.

I recently read “HTML5 Up and Running” by Mark Pilgrim (O’Reilly | Google Press) in order to come up to speed on the technology.  A brief review follows.

Pilgrim begins the book with a review of the history of HTML from the early 1990’s until today.  The description of HTML’s evolution was supplemented by mailing list excerpts from its major developers – the process was depicted as collaborative and practical.  The ideas developed in parallel with the standards that documented them; compromises were made as required, allowing HTML to deal with imperfect (not well-formed) code, rather than trying to develop a perfect protocol.

The new HTML5 standard is a collection of improvements to the existing 4.x standard.  Since HTML5 is actually a collection of capabilities, current browsers are likely to be only partially compliant.  So, the following chapters describe the individual components of the new standard, and how to detect whether the web client (browser) implements them (examples use Modernizr to query the client).  The new features covered include Canvas, Video, Local Storage, Web Workers, Offline Web Applications, Geolocation, and several others.

Some highlights of the most interesting HTML5 features described:

– Video Support: A new <video> element that a complient browser can use to select  a video format that it is able to render. This eliminates the need for 3rd party plugins.

– Local Storage: A means to allow websites to store larger quantities of information on the client computer for subsequent retrieval.

– Web Workers: A method to spawn multiple javascript-based worker threads.

– Offline Web Applications: the ability to cache online content for later retrieval.

– Geolocation – To be expected, given the proliferation of web-enabled smart phones.

This book is a great read. It provides the “back story” on the evolution of HTML, and a practical guide for using HTML5 for modern web applications.

Posted in Uncategorized | Leave a comment

Connecting the Android Galaxy S to the DDMS in Win 7 64 bit

For whatever reason, the Samsung_Android USB driver would not install properly on my Win 7 64 system.  Click here for the manual driver installation procedure.  It seems to be working with my Eclipse/Android installation so far.

(thanks to raynjarre on SDX Developers)

Posted in Uncategorized | Leave a comment

On Geekiness

The first entry in Wikipedia for geek is: “One who is perceived to be overly obsessed with one or more things including those of intellectuality, electronics, etc.”  Works for me.

Posted in Uncategorized | Leave a comment