Customer Service is STILL Important

In this day in age, with all the technological advancements from entertainment to dining, many companies seem to lose track of the simple fact that customer service is still important. I know first hand how many companies have (or are) letting the simple principle of “the customer is always right” be slowly outshone by the new principle of “the customer is privileged to do business here.” I worked retail for many years in different venues from shoes to computers, and I saw this slip first-hand when I compared the divergence between what was taught during training and to what standard management expected on the sales floor. Thankfully I now work for a company that still values the customer above all, and though I’m no longer in sales, I have had opportunity to sit with customer service for an entire day and watch first-hand how things are handled – and it makes me proud to work here.
Continue reading →

BackboneJS: Dynamic Override of sync() Method

As with any good solution, there needs to be a valid problem you’re trying to solve. In this case, I ran into a challenge at work and wanted to share the concepts of what I needed to accomplish in case anyone else has run into similar troubles.

I was assigned the task of integrating a new UI with a preexisting backend API, which is really not that big of a deal in and of itself. However, as I wanted to use BackboneJS as our client MVC framework and the API was by no means RESTful nor consistent, I quickly became aware that I would need to manually override the sync() method of nearly every one of my models in order to have things function properly. Again, in and of itself, this is not a problem, but working in an environment where maintenance and change are the rule, I wanted to figure out a way to extract the customization in such a way as to be extremely easy to manage.
Continue reading →

Nighttime Photography

On the street where you work

Well, the title might be slightly misleading, since this is actually early morning photography, but I wanted to share it nonetheless. I dropped my brother in law off at the airport at 5am one morning this week and decided I would take the opportunity to drive around downtown and look for something to shoot. Finally, I ended up just setting up at the end of the street where I work, and this was the result. I think I’m going to have to do more extended exposure stuff – it’s just plain fun!

Custom Event Management in JavaScript

If you have used any JavaScript libraries before, you are most likely quite familiar with the concept of binding functions to specific events within an object, but have you ever considered creating your own custom events for your JavaScript classes to allow users even more flexibility in implementing your code? Binding listeners to user events (such as click or mouseover) is a necessity for robust coding, but what happens when I want to allow developers to execute a specific bit of logic only when my library element has been rendered to the page? I need to build my code in such a way as to give “hooks” to the coder in the form of events for which they can listen.
Continue reading →

HTML5 Canvas Layering


I have recently begun to study a couple different ideas to ease the pain of more complex animations using the HTML5 canvas element. Primarily, I have been focusing on layering – stacking individual transparent canvas elements – to achieve a robust effect and help manage individual objects without having to redraw the entire pane with every refresh. In the orbit example above, the center sphere and background are drawn statically on the bottommost layer, while the animation of the satellites is calculated and drawn on a second layer. By clicking on the demo, you can toggle the visibility of the animation layer. If you cannot see the animation at all, you may want to consider picking up a real web browser: Firefox or Chrome are always good options.
Continue reading →

On Blogging and Google Plus

Blogging and Google Plus (hereafter referred to as Google+) may not be as mutually exclusive as one might initially think. Not only was it Google+ that brought me back to my blog after a six month hiatus, but the more technical contacts I make on Plus, the more intuitive it becomes to use a blog in conjunction with Google+ to have the most reach. For those of you still reading, let me outline the past week of relevant activities.
Continue reading →

Debug Logging in JavaScript

So, one of the repeat topics I’ve heard in JavaScript discussions both internal and external to work is that of tracing and logging JavaScript activities. What is the best way? How do you know in what order your code is actually completing? These are all valid concerns, and thankfully, there is a fairly easy way to help yourself out. There are back-end libraries to assist with this type of logging such as Apache’s log4j – which has been ported to other popular languages like PHP and C++, but what about seeing under the hood of your browser run scripts?
Continue reading →

Introducing JSWidgets

I have been, for some time, working on a concept that would allow the average JavaScript user to create robust, interactive applications with ease. A daunting task, I know, but having tried to implement so many bloated libraries for simplistic interaction, I wanted to create a way for the beginning or average web developer to create advanced modules quickly. One of the biggest things I have noticed in recent years is the lack of attention given by many to the client side code structure. With this project, I hope to help educate developers a bit more in the necessity of code separation, documentation and reuse of code.

I have been asked if I’m guilty of reinventing the wheel, and it is possible that you may think so, but I feel this offers a level of uniqueness not found in a library this lightweight. In fact, the purpose of this library is not to be a solution to the need in and of itself, but rather it is intended to lay the groundwork for developers to quickly extend their own widgets and have them working in no time. While I am introducing this library in its infancy, I am already in the process of overhauling the template structure to leverage Underscore.js, the most lightweight and robust JavaScript template engine I’ve found to date.
Continue reading →

On Birthdays and Photography

So, another year has come and gone, and I find myself another year older – and hopefully wiser. Whenever a birthday is rolling closer, there are always those who want to know what I would like to receive for gifts, and I’ve found that, especially in the past couple years, I’ve really had nothing to tell them. The older I get, the more I realize that I really have everything I need already. Sure, there are always cool little trinkets I could request that would end up gathering dust with all the other treasures from years past, but it seems a bit shallow to ask someone else to spend their money on something out of which I will get little to no use.

On the other hand, there are items on the other extreme of the scale that are in a price range I wouldn’t dare ask someone else to pay. Of course, if any of you readers have a stream of cash floating around just looking for a place to be spent, I’ll be more than happy to provide to you a wish list. Occasionally, there are mid-range items that are almost afterthoughts I mention in passing that my wife files away and surprises me with. This was one of those years.
Continue reading →

Through the Eyes of a Child

Through the Eyes of a Child

Through the Eyes of a Child

Sometimes, the wonder of the Christmas season is lost on those of us who get caught up in the hustle and bustle or life. It often pays to relax, unwind, and try to view life for a time through the eyes of a child. Remember the brilliance and wonder of everything new. Celebrate the little triumphs like being the winner of the globally-important “Race to the Car”.
Continue reading →