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”

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”


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() {
            'account-form button[action]':{
                    /*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

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?”

SP/DIF Passthrough!

Its been bugging me… I’ve had this kick-butt system in the living room for years, but for some strange reason with Windows Vista (now 7) I lost my ability to pass pre-encoded digital audio out my SP/DIF port for anything other than DVDs and Recorded TV… which is a really annoying little hole in the setup.  My wife can attest, that every few months, I’ll interrupt our evenings with a little experiment to try to fix this “problem”… though, its only really a problem to those (like for instance: me) who care/notice the surround sound when its missing/down-mixed to stereo… so, no support for this little quirk. 🙂 Any ways… today, I FINALLY solved my problem. 😀

So, what is the solution? Continue reading “SP/DIF Passthrough!”

I have an itch to code…

There’s nothing quite like getting a new gadget that makes me want to take full advantage of it… and by that I mean write applications for it, or with it. 🙂 The Google notebook, CR-48, is a very nice machine. It has my imagination spinning with possibilities… for those that don’t know what this is, the Google notebook is a demo unit running Google’s beta ChromeOS. Which, is basically a very thin Linux system running ONLY the Chrome web browser…a very modern browser with early implementations of new technologies for the web… The idea is that almost everything you do on your computer is through the browser, so the browser IS the operating system, not an application that runs in it… pushing all the “hard work” to The Cloud…giving you only the user interface and the end-result/byproduct of “your” applications.

With a notebook like CR-48, I think it would be awesome to have a project that lived entirely on The Cloud… run in modern standards-compliant browsers (WebKit-derived, Mozilla/Firefox 3.6+, IE9+) as well as DEVELOPED in The Cloud…I’m talking about something like Bespin and putting it into something that offers an Eclipse-like environment, but accessible from anywhere. 🙂

This new notebook has me even more excited about the web and its future… I’ve been reading about the wonders of the new world of HTML5 and its vast improvements on what it will bring to the table. ECMAScript v5 (JavaScript) has some really awesome additions… and then there’s WebSockets with event-driven bidirectional data between the web browser and server…combine this with NodeJS…and holy cow! So fun…. the future looks so bright. 🙂 I’m so excited about the future of the Web.