Lessons Learned From Backbone.js

At a recent Software Developer conference, Codemash 2013, I had an opportunity to hear a talk on Backbone.js. Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface. Basically, it is an MVC framework for javascript. It allows you to abstract your data into models and your Document Object Model manipulation into views and bind the two together using events.

Chris Nelson, the presenter, spent the first part of his talk explaining the benefits of the Rails Asset Pipeline.  It bundles up and minifies the css and javascript and handles dependencies.  For .Net folks, the bundling and minification framework in MVC 4 has a lot of the same features.  These tools can help organize and optimize any project, but are especially useful in projects with complex javascript.

After gushing about Rails, he finally got around to talking about Backbone.  Backbone is basically an MVC framework for javascript.  Backbone doesn’t come with a template framework, but it is generally used with one, such as ECO(Embedded Coffee Script), HamlCoffee, EJS, Jade, or Handlebars.  It’s a very handy way to separate the app logic from the generated html.

He also brought up some issues with including a sub-view within a template.  If you try to just include a sub-view within a template, the event binding for the sub-view won’t get wired up right and it just won’t work.  You can work around this issue by passing the parent view to the child view and binding to the parent’s rendered event.  Then you create the event bindings for the sub-view events after the parent has rendered and everything will just work.

Another potential issue that was brought up is that in some cases, views that are created and destroyed frequently (like a scrolling calendar app) will cause memory leaks.  If the views are not bound to the model properly, they’ll hang around after they’ve been destroyed and still handle events and take up memory.  This is caused by binding the model to the view with Model.On().  The model holds on to the view, so it won’t go out of scope to be garbage-collected.  The easiest way to fix this issue is to flip the event binding and listen for the event from the view with listenTo().  There’s a neat Google Chrome feature called Heap Snapshot that can help debug run away memory leaks.  It lets you take a snapshot of the memory at a point in time and compare it to another snapshot.  You can see what objects are hanging around in memory and find potential problems.

Here’s another reason why Chrome is awesome: it has a built in javascript “prettifier” (it’s the button labeled “{ }”).

Gamification at aimWest

I love this topic because it brings a new dimension to building custom software.  Here are my take aways from the event:

The Presenters Were Awesome

OK, I am a little biased because Eric P. is one of CQL’s software developers, and he’s ranked as one of the top developers on Stack Overflow. Eric offered a great mix of technical expertise and end user knowledge.   He answered questions and gave great insight, which was a nice complement to the other presenters discussing products.

Games Must Be Obtainable To Every User

Gaming should be fun no matter what type of user you are.  Even if you’re a novice, you should be able to obtain goals similar to the expert.  Eric described how newbies, should be able to gain experience, have fun and feel included, but it should not be forgotten that the expert user will also be looking for that next challenge.

The Game Should Never End

Most of the time, they do end, and that’s a problem because once there is no longer a reward, people will stop using your game.  In order to keep them around, use a model like Stack Overflow where gamers are always in a competition with each other, instead of just reaching a level and then being done.

Give Them More

Users want more than just a badge…they want a story, achievable goals, and different scenarios.   Not everyone that uses your game will perceive the same value, so make sure you have options for them.  Maybe they want to compete against each other, maybe they want that gold badge, or possibly they just want to say they did it.   Make sure they can do all of that.

Gamification is a fun topic and something to which Grand Rapids software developers are paying attention.  With more and more businesses competing for a user’s attention, gaming can definitely be a useful way to achieve that objective.

If you’re interested in more information on gamification, you can check out my earlier blog here that described a similar event held earlier this year for MoMoGrandRapids.

 

CodeMash Blog 1 of 10

As a custom software development firm, CQL must constantly put our developers in a position to be exposed to the latest technology trends, not only within in the .Net development framework, but across multiple development platforms. Recently, CQL sent seven of its software developers to a large software development conference called Codemash. CodeMash is a unique event that educates software developers on current practices, methodologies, and technology trends in a variety of platforms and software development languages such as Java, .Net, Ruby, Python and PHP. Different than most conferences, this three-day event ‘mashes’ together ideologies and individual developer experiences to discuss, learn and even attack certain problems.

Having our developers attend this type of conference provides tremendous benefit to our customers. Even though CQL has the largest collection of .Net Developers in Grand Rapids, Michigan, we understand our approach with clients must be technology agnostic, and be willing to recommend the best platform and development language to meet the needs of our customers. Codemash offers excellent opportunities to tie together those areas of most interest to our clients, including Ecommerce, Business Intelligence, Content Management and custom web development.

In the next ten blog entries, we will provide some insights from our technologists who attended this conference on software development concepts that should be important to our customers (even if they don’t understand the underlying technology topic). Following is Codemash Installment 1 of 10:

Heroku (http://www.heroku.com/)

This was informative in a “here’s how an awesome deployment system could work” kind of way, perhaps made a bit sweeter because the presenter is a Heroku employee.  Heroku is a cloud environment that has lately been adding more languages/platforms that they can host.  Deployment is done using a git push, which then forces the system to recompile, test, and deploy the application.  Very interesting system, and I just read a blog post about someone getting a .Net app onto Heroku using Mono and a bunch of duct tape, but it wouldn’t surprise me if .Net were added in the near future.  Something to watch.

Why Our Customers Should Care:            Recently named the 2012 Technology of the Year, by InfoWorld, Heroku provides a platform as a service (PAAS) for building, deploying, and running cloud apps using Ruby. The platform includes tools for deployment and management, a runtime for scalability, fault tolerance, and an add-on system for extending the capabilities of our platform. In essence, it allows your software developer to more quickly develop and expand your software solution.

PhoneGap (http://phonegap.com/)

This was a pretty cool session.  PhoneGap lets you build an HTML + JS application that can then be packaged up and put on the various mobile app stores.  A few alternatives were mentioned (but not discussed in depth) – rhomobile, MoSync, SenchaTouch, Appcelerator.  The presenter also pointed out JQTouch as a way to make the app look and feel a bit more like a native application.  Also mentioned (very briefly) was Mulberry, which is apparently kind of like Rails for PhoneGap development.  Something to check out for sure.

Why Our Customers Should Care:            PhoneGap is an open source solution for building cross-platform mobile apps with standards-based Web technologies like HTML, JavaScript, and Cascading Style Sheets (CSS). Based on HTML5, PhoneGap leverages web technologies developers already know best… HTML and JavaScript, and provides access to native APIs. PhoneGap uses standards-based web technologies to bridge web applications and mobile devices. Something all of our clients should be considering.

CI++

This session was a bit disappointing for a few reasons totally unrelated to the content.  The presenter started out by discussing various bits of automation and testing going from standard practice up through “this-doesn’t-really-exist-but-who-knows (for example: Unit Tests for your Unit Tests and a Semantic code analysis tool that can find bugs to an impossible degree).”  He lost a few audience members while talking about some of the non-existent tools, probably still 5 minutes before he said “oh, and by the way I made up a bunch of those things.”  He discussed automating DB artifact deployment (by writing the scripts exactly like we do at CQL), and a few other parts of deployment, but then ran out of time before he could get into the stuff that I was looking forward to (although I have a feeling that his presentation was largely meant to lead into a sales pitch). Overall, it is an important topic, but the presentation simply missed the mark.

Why Our Customers Should Care:            In software development, continuous integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. Obviously, at CQL we take this topic very seriously, as we want our customers to experience the best results with the custom software applications we develop.

Check back for Codemash Installment 2 of 10.

Mobile Monday Grand Rapids January Recap

Last summer, I joined the Mobile Monday of Grand Rapids (MoMoGR) organizing committee because more of our clients want to learn about Mobile development and how it can help their business.  “MoMo” stands for Mobile Monday, and the Grand Rapids location is just one of many chapters that exist, globally. The MoMo organization brings together software developers and designers who practice their skills across many different development platforms. CQL is very engaged in developing custom software solutions across various mobile platforms (e.g., Apple, Android, Windows Mobile, etc.). As devices continue to become smaller and provide greater computing power, our clients find that critical (and non-critical) software applications need to be delivered through these mobile devices.

This week, MoMoGR held their quarterly event at Grand Valley’s Loosemore Auditorium.  This event was focused on Gamification, which according to our keynote speaker, Venu Vasudevan, means the use of game design techniques and mechanics to solve problems and engage audiences.

Venu is the Senior Director at Motorola Mobility and definitely had a lot of insight on where this mobile movement will take us.  He started his presentation covering the past and informing us on why TV, which has had very few changes in the last 10 years, has only been a one-sided media experience.

Example: Visual of a couch potato sitting hours with only the occasional bathroom break, or beer break.   Definitely a one sided exchange because the only entity that is engaging is the TV.

But what if you could engage your TV and were encouraged with Games?   It would revolutionize the way we currently watch TV.  Venu gave his opinion on what works and what doesn’t, explaining that gaming only works when you take it a step further than badges and leader boards.  When gaming truly works, a ‘rewards’ structure must consist of Intrinsic Motivation.

His Examples are:

Stack Overflow

USA Network

Seeking Alpha

Before the keynote, there were three short 4-5 minute talks from local people that have started to use games in either an application or a development practice.   The most unique was a Grand Valley State University grad student presenting what he calls “Pocket PT”; a suite of accessorized theuraputic iOS games being designed to help patients recover from traumatic brain injuries. The goal of this application was to use gaming as an incentive for repetitive exercises.  It is fully customizable and the clinics receive valuable feedback.   Check out the video below.

Get Microsoft Silverlight

It’s amazing how such a simple concept can change the way we’re engaging patients with traumatic injuries.

The event was great and I’m definitely looking forward to the next one (check out the MeetUp or our blog for updates).  What I realized is that gaming, whether on a Mobile application or not, is going to have a huge impact on how CQL builds applications.   In the future I see users more actively interacting with live televisions shows, advertisers, and much much more. Really the possibilities are endless.

 

Excited to Learn

Many technologists go into the field specifically because they love the ever-changing technologies and the constant learning that is forced on them every day.  Here at CQL we’re always investigating the next great coding languages and playing with the latest device (I am typing this blog from my iPad2).

Today is an extra special day for us constant learners…we’re among many of the greatest minds of the day.  We’re down in Sandusky, OH at the most exciting nerd conference on earth:  CodeMash.

CodeMash is a unique event that will educate developers on current practices, methodologies, and technology trends in a variety of platforms and development languages such as Java, .Net, Ruby, Python and PHP.  We’ll be spending the next few days hearing about new languages, technologies, operating systems, coding techniques, and even new management styles.

I bet you’re jealous. Maybe next year you should join us.

Top 5 Reasons to Develop a WP7 App for the New 2012 Year

The Windows Phone 7 platform has been out for just over a year now and promises to be an exciting new platform for both users and developers.  The user interface is fresh and new compared to the other existing platforms.  For developers, Microsoft has created a powerful and fun toolset with which to work, including an emulator with all the bells and whistles, for free.  The features of the phone and developer tools are rapidly improving and now are very competitive to other platforms.  After a year of personal development, I thought I’d share my top 5 reasons to start building a WP7 application for the new year.

5. Learn something new
There are tons of free resources provided by Microsoft and others to help learn this new platform, including tutorials, sample code/project, blogs, etc.  If you are a Silverlight or WPF developer, then you have a really good jump start on learning the platform and you will feel right at home with the XAML.  If you are an XNA developer, the gaming toolset will be easy to dive into.

4. Gain some work experience
Picking up a new technology can help you improve your development skills in general… and who knows maybe someday the XAML will come in handy for a work project, whether it be WP7, Silverlight, or a WPF app.

3. Make some money
Sign up for the marketplace and submit one or two applications.  Even if they are simple free apps, you can additionally sign up for the MS Adcenter and place some ads on your apps to make a few bucks.  For the first year (2011), if you created two apps, Microsoft even gave a rebate so your marketplace membership fee was free.  There are also plenty of contests to enter for prizes or recognition.

2. Good excuse to buy a new phone
Let’s face it, many of us are a bit cheap when it comes to cell phones.  With plenty of free choices out there, I always go for the deals and grab a free one.  As long as it makes calls, that’s all I ever cared about.  Smart phones, however, can be pretty fun.  Especially a WP7 phone if you are an MS developer.  There are deals to be had, but smart phones can still be pricey.  Creating a couple of simple apps gave me a good excuse to buy my HTC HD7 for “testing” my apps.  I was able to recoup the cost of the phone over time.

1. It’s fun
For me, the Windows Phone 7 platform has been all of the above, but also very fun and exciting.  It’s cool, new, and fresh to play around with GPS, accelerometers, and all of the other fun gadgets on mobile devices.  The tech is growing fast and it’s not just phones anymore (phones, tablets, etc.)  There are plenty of choices with which you can experiment.  Even if you never intend to join the market place and submit an app, why not spin the wheels, it’s free after all.  Just check out App Hub, read a few articles, first, and if you like what you read, then download the tools.  Have a blast this year creating the next Angry Birds, Mom’s recipe book, or a sports statistics app, whatever topic you love the most!

Ultimately, most of us work at CQL to provide client solutions. Our clients need to understand that everything is moving “mobile” at this time, and being a developer who can deliver solutions in these multiple platforms makes us more valuable.

Software Project Management — Insight from Tony Horton

Last year the crew at CQL got fired up about completing the extreme home fitness program, P90X. ® Not only did the program change our physiques, but it also had some direct correlation to how we go about completing our jobs. Some infamous quotes from the P90X ® guru, Tony Horton, also apply to my role as a Project Manager at CQL.

 

“Bring It”

Attempting to be great every day isn’t always easy. If you consistently work hard and strive to be patient, then hard-working software developers and understanding clients become the norm. Some days it takes extra effort, but isn’t it worth it in the end?

“Do your best and forget the rest.”

Checking in pages and pages of transcribed notes can be tedious and those exhaustive status reports may even go unread by our clients, but pushing through to make sure we are continually providing truly necessary information has its rewards.

“Tip of the day- Don’t smash your face!”

When you over-commit to a software project and promise the world, no one wins. That is why our team works to be transparent. Is the project behind? Is the team going to miss that deadline? CQL utilizes tools like Sprint burndown charts and Basecamp ® to keeps the Product Owner in the know and the team up to speed on where the project is currently situated.

“Don’t let your ego get in the way of your success.”

Is there a bottleneck in the project? The CQL philosophy is “make it visible” so the team can collaborate and work through it together. If it feels like the software architect is unclear, chances are the client does not understand it either. The non-ego approach asks, “What can I do to help? How can I make the message clearer?”

“I’m pushing my own personal pause button”

As a manager I ask the question: Is pulling six resources into a meeting worth interrupting valuable momentum? Is that two-hour meeting worth giving up two hours of code-writing? Sometimes it is best to just pause and think about what you are actually asking from co-workers before committing them.

“Imagine you gotta do a hundred of them”

We all have those days when it seems your inbox is over flowing, your calendar is packed and every time you handle one problem, ten more pop up. The key to this overwhelming moment is to pick priorities. What client needs your attention the most today? Who is going to be best-served by your email, post or phone call right now?

Now that we’ve applied Tony’s philosophies to our software project management style, I think Tony would agree we all deserve a recovery shake.