Blog

A blog from Brandon Moser, a Senior Web Developer. Mostly code, sometimes I post about drumming, UX and/or loyalty.

Backing up your digital life

Be honest, you wish you had a better handle on your digital life and data. We want to keep it all and keep it organized, but there are so many options and they all seem very complicated. Here is what I'm doing and some options I found in my research to get my digital life backed up at all times.

Remember, in the IT world, data doesn't exist unless it exists in three places: live data, local backup, and an offsite backup

Read More

What I've learned about many of the Healthcare websites

After reading a few articles (like this one and these ones) about the implementation issues many of the Healthcare websites, MNSure & the Federal Healthcare.gov sites for example, is that many people are learning how difficult it is to build these systems. Software engineers, project managers, infrastructure engineers and the like are required to build systems in ways that many are unfamiliar with. For example, how many companies actually build interworking sites between 4-5 parties? How many companies build sites that can handle unknown amounts of traffic on these SOA-style (service oriented architecure) sites?

The public (and politicians for that matter) just assume that all websites should work 100% of the time and be able to handle unlimited traffic. Inclusive of this fact, if these systems fail to meet the requirements, the head of the group will be held to a standard no one could achieve. If we held politicians to a similar, yet stringent, standard, not one if them would have made it past the shutdown, or at least the head of each party would even fired.

I see this level of expectation often (without the firings) and it does not bode well for many. Having built a few sites that handle a bit of traffic and continue to build SOA-style sites, it is increasingly important for us to discuss the users' experience over many of the common first discussions, like architecture and platform.

Anyway, I think the most important thing that is coming out of this is that our governments are spending an enormous amount of money on these sites and are not receiving the best return on investment. Instead if they had asked ~10 large-scale website developers to build this, the site would have probably had a much larger success.

There are 2 things that I think ultimately failed:

  1. Government contracts are absurd by having too many restrictions on how to implement
  2. Govenments need to stop throwning large sums of many at projects, it looks worse when it fails

Tracking Page Views in CFWheels w/Google Analytics

Today I was tasked with tracking page views and email campaigns in Google Analytics (GA) within our CFWheels application. I found a great option in GA to track events. Thinking about how the framework is designed, we essentially are using Events (like most frameworks) to control the application. Within Event Tracking in GA, you define a Category (controller) for the Event. Then,  define the Action (action). The _trackEvent() method also accepts 2 other parameters, opt_label, which is an option descriptor for the event and opt_value, which is a number (positive integer).

To add this to your GA script snippet, just add the following line:

_gaq.push(['_trackEvent', '<cfoutput>#params.controller#</cfoutput>', '<cfoutput>#params.action#</cfoutput>']);

Once you have added this snippet to your GA script you will find the report under Content >> Event Tracking. From here you will be able to determine the usage of your app without having to create Custom Reports.

Speaking at cf.Objective() 2011

So, it a bit of unexpected news, I received an invitation to speak the cf.Objective() conference in May 2011. The topic is titled, "SQL Performance for the Common Man." It will cover basics of set operations vs. functional programming, intros to how to run a SQL Explanation in MSSQL, MySQL & Oracle, understanding Transaction Isolations and some basic design tips. There is another session on Database Tuning, so my topic will be more of an intro to SQL Performance versus getting down in the trenches and really making huge changes in your SQL.

First Github project: CF.Objective Badger

 With a little reminder/push from @markdrew and @cfjedimaster, I created and submitted my first project to Github.com and RIAForge.org. When I created the plugin, I thought about what I was going to do for versioning, but didn't think about hosting it on Github.com. It should have been an obvious choice. Getting the project setup was really easy. I just followed the walk-through from Github.com and immediately saw my project come to life as an OSS project.

Here are the steps I took:

  • Register for Github.com (I did this months ago to watch and fork other projects)
  • Install GIT
  • From the Dashboard, click New Repository
  • Enter the Project Name, Description and Homepage URL (link back to my projects)
  • If you don't have an SSH key for your Github.com email login, you will need to create that key, here are the commands:

ssh-keygen -t rsa -C "[email protected]"
cat ~/.ssh/id_rsa.pub | pbcopy(this will copy your new key to the clipboard)
  • Add your key to the Github.com SSH Public Keys in the Account Settings
  • Open Terminal (Mac OSX), run the following commands:
    (You might want to create the README and LICENSE files prior to committing the project)

cd [project directory]
git init
  • Make sure you have a README file, with contents

touch README
  • Make sure you have a LICENSE file if you are going to submit to RIAForge.com, but a good idea either way

touch LICENSE
  • This adds all files that are uncommitted

git add *
git commit -m 'first commit'
git remote add origin [email protected]:[username]/[projectname].git
git push -u origin master
  • Click continue on the screen with the instructions, if your project was pushed correctly, you should see the homepage for your project with a listing of the files.

Next I went to RIAForge.org and submitted my project for inclusion, since it is ColdFusion related.

I need to add to my Github.com project the language, so that it is included in the ColdFusion projects, but I haven't figured out how to do that, yet.

First Mango Plugin Created

 I created my first plugin for Mango Blog. Wow, that was super easy. The plugin is really simple, just adds a cf.Objective 2011 badge to the sidebar. I used another plugin, SOTR2010, from Guust Nieuwenhuis as a template. I'm not sure the documentation on the Mango Blog site would have been enough, but the fact that plugins are open source, it really makes it easy to learn from others.

Here is the link to the plugin and my new projects page, now required as I have a project to maintain.