Web App Developer Resources

A few friends and acquaintances have asked me for some pointers and resources for learning how to become a web app developer.  Since this has started to become a rather frequent request, I thought I’d share some thoughts here. I’ll probably update the links as I come across more, or decide I don’t like some of the ones I have.  I’m pretty picky about where I send people, so expect changes and/or additions. Continue reading “Web App Developer Resources”

New article!

If you liked my previous posts, then head over to the ExtJS docs for my more in depth tutorial on testing applications written with ExtJS using Jasmine: http://docs.sencha.com/ext-js/4-0/#!/guide/testing

Jasmine & ExtJS’ MVC: A Love Story

ExtJS' MVC + Jasmine: A love store

I’ve been looking for a way to perform unit tests on my new project’s UI code. The projects I worked on before were practically prepackaged and handed to me — Java has a pretty mature testing and build suite: JUnit and Maven. My current project is 99% JavaScript, and there isn’t a defacto test suite for that. Googling around has led me to several testing tools, such as Selenium and JSpec. I even began digging deeper into some of them, but then I discovered Jasmine, and that Sencha developers use Jasmine. It was a sign. Continue reading “Jasmine & ExtJS’ MVC: A Love Story”

OMG: ExtJS4 MVC = OSM

WARNING: This post is all JavaScript, ExtJS, and programming… 🙂 very nerdy. You’ve been warned.

I just want to gush a little bit about this new feature in ExtJS 4. The new Model View Controller architecture is a pure joy to work with. Now we can create components that render the various visual elements of the UI and defer the behavior to something else.

Before (in pre-MVC-land), buttons, form elements, and controls emitted events that you wanted to handle. The only problem was that the quickest, and often shortest, route was to make the owning component deal with the events from its children. This often led to very spaghetti-like code, i.e. Panel B wants to react to Menu Item 2’s click. Panel B would have to get a reference to Menu Item 2 and register a click event handler. Sounds simple, but multiply that by several hundred, or thousand, times and it starts to get a bit unruly.

Thankfully, the geniuses at Sencha have come up with a very beautiful solution: The MVC. With the MVC we can just throw up the UI with all its panels, menus, buttons and what have you and then, once it looks awesome, we create the “Controllers” that stitch it all together. The controller can be as simple as this:

Ext.define('app.controller.Main', {
    extend: 'Ext.app.Controller',

    views: [ 'AccountForm' ],

    init: function() {
        this.control({
            'account-form button[action]':{
                'click':function(){
                    /*do something when a button with a property action is clicked in the account form*/
                }
            }
        });
    }
});

Check out the full documentation on the MVC here.

Over the last several months, I’ve been building up a new application and doing my best to make it true to the MVC. Though, I have to admit, I jumped in with the ExtJS3 mentality so my first set of components did have ‘controller’ code meshed in them, but as I’ve learned the “new way” I’ve been going back and “fixing” those in order to soar in the MVC. 🙂

Next up: how I setup Unit Testing with Jasmine & the ExtJS MVC.

Enhanced by Zemanta

Sasha Gets a Boob Job

My wife (who names things) anthropomorphized my car last week:

Sasha has decided she doesn’t want to be called “Sasha” anymore. She wants to be known as Nicolette. I’m worried that when she turns eighteen she’ll actually do it.

While I let my wife worry about what “Sasha’s” cosmetic surgery will do to “her” adolescence, I sit back and enjoy the ride.

Cars are not generally considered to get better with age, actually depreciating in value over time — not like a fine wine… or, in my wife’s opinion, the male half of this marriage — however, my three year-old 135i just did.

Continue reading “Sasha Gets a Boob Job”

Anyone remember Simply Transparent?

It was my first public offering to the world of freeware! My high school after-hours project is now on github.  I don’t know why I haven’t done this sooner, but I thought it would be a fun git-to-know git activity.

Just looking through all these files brings back memories — my, how far I’ve come. My first rendition of this project mostly used the MFC classes Microsoft shipped with their Visual C++ 5/6 projects (this was before Visual Studio .NET).  I eventually released this gem as Simply Transparent 6.5, and was the version that was honored as the “Free file of the Day” on TechTV’s “The Screen Savers” with Leo Laporte and Megan Morrone, post Kate Botello era.  Right around that time, I kicked MFC to the curb and rewrote the entire program with nothing but the Windows bare API at my mercy.  I had grown as a programmer and found a new love of strait-up-no-hand-holding raw C++.  Those were the days… learning something new every day, and digging for more — constantly digging — knowledge in software development and the art of UI design. Continue reading “Anyone remember Simply Transparent?”

So, What’s new?

To say that this has been a busy year, would be a gross understatement. I began the year as the point-man on a rockin’ team where we developed & maintained RiskManager 4 — a financial risk management application built atop a fantastic platform, an in-house project at RiskMetrics. However, the changing atmosphere at the company (RiskMetrics was acquired by MSCI mid-year in 2010) left much to be desired.  Loyal to the core, I stuck it out and even plowed ahead with re-architecting the user interface; moving from an in-house server-side HTML/Widget generation toolkit to ExtJS.

Around the beginning of the second quarter of this year, I was invited to join a few colleagues that had left the company to start a new company, and I couldn’t resist the opportunity to start something – something BIG.  It was just too enticing.

Continue reading “So, What’s new?”