Tuesday, February 21, 2012

Friday, February 17, 2012

Phone App Development: Windows Phone 7

I attended a presentation at GLUG.net East Lansing & Flint last night on the Seven Deadly Sins for Windows Phone Developers presented by Samidip Basu. Thank you GLUG.net and Samidip for the great introduction to Windows Phone development.

Windows Phone 7 has some really great features. If you are a .Net developer, it doesn't take much to build a WP7 application. But that's not what blew my mind last night.

It's all about the infrastructure!

I've been teaching myself hybrid phone development for a couple of months. Since I cannot learn everything at once, I've focused on the phone application itself. I really want to have a single code base that is cross platform so I've been looking at hybrid development with PhoneGap. I know that eventually I'll bump into limitations this way and end up writing native applications. But you've got to start somewhere.

The throw-away application I'm using to learn is an "X Shop" application (where X is a coffee shop, pizza store, bakery, ...). It would give customers a mobile app to view the shop menu, select favorites, and place orders. The shop owner could push information like the coffee flavor of the day or other promotions to the customer. While brainstorming the features I'd like, I've started to consider how I'm going to implement the needed infrastructure for these features. Eventually, the mobile app would need to be part of an integrated solution. I think my code base just grew rather large.

The actual phone application has become the easiest piece of the puzzle. How am I going to interface with the point of sale application? Should I offer one? What about inventory?

Microsoft has created a really great enterprise infrastructure behind their phone. In future posts, I'll flesh out how this can be used to support my "throw-away" coffee shop experiment.

Thursday, February 9, 2012

iOS App Development with PhoneGap and Spine Mobile: Coffee Shop App

After looking at several mobile application frameworks I’ve finally decided to use Spine Mobile and PhoneGap to build an application.


Most first applications should be tossed out. I'm learning new stuff and whatever I create in this first application is guaranteed to have, at best, a whiff of code smell (if not reek of it). I don’t want to be saddled with an application that will most likely be mangled by the time I’m done. It’s a proof of concept prototype, or at least it should be. This also takes away the pressure to make it perfect.


I need something more than a sample application, but nothing too complex. It should be something I can start small and build on while still being somewhat useful. I’d like it to perform at least the following functions:
  • CRUD operations
  • Navigation between modules
  • Local data storage
  • Auto-magic data updates from the "cloud"
  • Some form of membership or identity
I think a simple coffee shop application should fit the bill. It can start out small, a simple menu for users to browse what’s available. Then I’ll add features as I go.


Version 0.1

  • A home page with a logo
  • A menu of available beverages
  • Location and hours of operation information

Version 0.2

  • A list of “my favorite” beverages
  • Loyalty punch card
  • Build a beverage (size, to go, flavors, etc.) 

Version 0.3

  • Order a beverage and update my loyalty card

Version 0.4

  • Coupons and/or promotions
  • Management of coupons and/or promotions
and so on...


Wednesday, February 1, 2012

JavaScript Frameworks: Still looking...

So many choices!

There are so many MV* frameworks and libraries available for client side JavaScript application development it’s nearly impossible to give them the proper amount of time to investigate them.

I’ve looked at Backbone.js, Knockout.js, Spine.js, Ember.js, Zappa, Express, JavaScriptMVC, Require.js, jQuery, jQuery Mobile, Handlebars.js, Jasmine, Angular.js, the list goes on.

For the server side I’m looking at Node.js and possibly MongoDB or CouchDB. Not sure…

I’ve also learned just how much I don’t know about JavaScript and how far it’s come. I had no idea what a REPL was until someone mentioned jsFiddle on Twitter.

Then there’s the whole JavaScript or CoffeeScript thing. I think it’s important to learn JavaScript before jumping into CoffeeScript, but it sure looks inviting…

At the moment, entirely subject to change, it looks like either Knockout.js or Backbone.js. I like the MVVM-like nature of Knockout.js data binding. But, Backbone.js has a very active community behind it. I’m nearing the point where I’ll just have to bite the bullet and pick one or I’ll never get going.

More examples soon. I promise!

I’m cursed, but I love it. May you live in interesting times or something like that…

Monday, January 16, 2012

Open Handed Blocks - Lesson Learned

Feels worse than it looks!
Update 2012.01.23 


My wife convinced me to have it checked at the clinic. It's a bit more than a sprain - it's fractured at the knuckle. Other than a longer recovery, there isn't really anything I can do about it.


Managed to sprain my middle finger with a poorly executed open handed block at Friday night's lower Kyū belt grading. It hurt as much as rolling my toe on the old dojo's mats. I could tell my partner didn't much care for me trying to drive my finger through his arm either but we both shook it off and continued. Lesson learned. 


First time I've jammed my finger. It really should not be surprising how hard it is not to use your fingers. Especially when they are on your dominant hand. Fortunately, it's not broken, but try typing and using a computer mouse. 

Computer mouse and Ice rig
I've been applying ice, taking Advil, and using KT tape at night. It helps. I'll buddy-tape it for tonight's karate class.


Once it heals, I'll have to work on those blocks. Obviously I'm not practicing them enough.




Saturday, January 7, 2012

Javascript Frameworks: turing.js

While looking for resources for learning Javascript I ran across a great series by Alex Young at dailyjs.com called "Let's Make a Framework." In it, he creates a framework deliberately designed for learning Javascript and frameworks called turing.js. 


On the second post, Let's Make a Framework: Classes, Inheritance, Extend he mentions Douglas Crockford's excellent discussion of the classical and prototypal inheritance models. 


These are really great references for someone learning Javascript and why the language is the way it is. There is a long and dramatic history to Javascript. It's been tested by fire and made stronger for it. I think I'm going to really enjoy learning it.