Life over the past year

I’ve been out of school now for one year, and it has been an incredible year so far. I feel like I’ve been everywhere, done everything, and am still just as busy as I was during school. There are always good and bad times, but I am so blessed to be happy and view life as good. Life is about experiences, and I have enjoyed the trials and tribulations to the fullest. That’s what it means to truly live. I flew back from Oshkosh 2013 today, so that is the subject most readily on my mind to start out on.

On July 24, 2013, I passed my IFR practical test and received my instrument rating in the Piper Tripacer. OSU Avionics did a fantastic job of installing the Garmin 430W in our panel to enable this to happen. This was probably my most heavily ingrained desire that’d been burning for years. With the incredible instruction from John Wilson, I was able to finish my rating in less than two months. I passed my IFR written test with a score of 90% just one week before I took my practical test. I intend to have a future couple of blog posts in the coming weeks that go into more depth of this endeavour.

Earlier in March, I had the privilege to demo our SignWave hand-based biometric login application at SXSW. SXSW was one of the coolest places to be ever if you love Music, Film, or what they call “Interactive”. Interactive means anything from gaming to entrepreneurship, changing the world, or just changing our perspective of it. There was so much stuff everywhere. I even got to see Coolio and deadmau5. One of the downsides of the life happened shortly after when my car got broken into the day after St. Patricks day. My work laptop and flight bag were stolen from my car. About a month later, they stole my radio and my 12″ JL Audio subwoofers. Yikes. After a few weeks of not having a radio, you don’t really miss it. It’s pretty interesting to see how you “think” you need things (like cable), but when you are without them for a few weeks you don’t really miss them all that much. Humans have survived many thousands of years without the internet or smartphones.

Soulfire Software is still cooking. We’re still working on our first released 3D game. We hope to finish it by early next year. I’m really excited to see where that leads. Scott should be graduating by December, and that should help spur our progress tremendously. We’re using the Unity3D game engine, which has enhanced our development pipeline significantly. Our team did a gamejam a few months ago which was ridiculously successful. We hadn’t ever built a working 3D game yet to that point. In 48-hours, I think we nailed it. I’ll try to post a link to the version on the Soulfire website soon.

Work at Battelle has been going well. I’ve been working on some neat projects and learned an absurd amount about working with a team of engineers. At Soulfire, almost everyone is an artist. Everyone is a programmer at work except for one UI designer. It’s fascinating to see all of the pieces that need to fit into place to release a product into the consumer market. I’ve released/shipped over a half-dozen medium-scale projects to consumers. I have a love and passion for crafting fun, high quality product experiences for customers. I’m not a computer-scientist, I’m a software engineer. I know how to get things done, and I enjoy that immensely.

This last year has been an adventure. In fact, every year has been an adventure. This was the first year that I’ve been able to do things that have been useful other than spending time in school. Just because I’m no longer in school doesn’t mean I stop learning. I hope to never stop exploring and learning. This concludes my sixth yearly blog post. Cheers to another year!

Oh how I love technology

I really like my job.  It allows me to try out new things and I am always learning.  The one thing about technology these days is how one thing evolves into another so quickly that we rarely step back and think about what is actually going on.  I thought I would show how a few cool things working together can make some REALLY cool.  Microsoft has made such an excellent product that truly is an integrated development environment.

For the airport’s intranet site, I created a CodedUI test using Visual Studio 2010 Premium to exercise the user interface for a particular page.  It consisted of opening up the browser, clicking on links, Assert()ing that they existed and that everything is working as it should.  A CodedUI test can then be “played back” when the tests are run.

Now on to the next bit.  I am using Team Foundation Server (TFS) 2010 for Source Control, Work Item management, and Building.  What’s really slick is being able to utilize the TFS server to build the project.  I defined a build specification so that it would work like a Continuous Integration (CI) system.  Whenever code is checked in, the server will build the code and copy the binaries to a directory.  If the build fails, the code is rejected.

So what makes this even more awesome, is that with Visual Studio Test Agent, I can run CodedUI tests on a separate test machine from my Visual Studio instance.

Recently, I have been granted access to the network over VPN.  VPN is Virtual Private Networking.  Basically, anywhere there is internet, I can access the servers on the airport’s local network without physically being there.

So there I was, sitting at home drinking coffee.  I pull out my laptop at the kicthen table and connect through VPN (no wires or anything, wireless is cool beans), and decide to make a quick change to the code of the intranet site.  When I check in my code, the TFS server all the way over at the airport builds the code, copies the build to the test machine, runs the CodedUI test on the test machine, delivers the result to the build server and then TFS accepts the new code (Changeset).

I think that’s really slick.  It’s truly mind boggling to think of all the underlying technology it takes for that to just “work.”  And this is why I really love technology.

Dynamic Script tags

It must be the future!  People have used a certain term, AJAX recently to make stealthful requests only the same domain.  This doesn’t work in my case because and can not access each other via AJAX.  One option down, and a Google search to go.  I was looking at something called a dynamic script tag that used something called JSON which was all really complicated and I still don’t understand most of it.

I’ll try to explain the best way to bypass security policies of AJAX.  Lets say you want to pass on a variable to a PHP script.  You could use GET parameters from the URL that looks something like this
The final goal is to pass kanno41 or some variable to a PHP script unobtrusively.  What a dynamic script tag does is that it creates a script tag which can access a source file from ANY domain.  Here is an example of what the script will put on the page:

When this script is loaded, the “woot” variable with the value kanno41 will be passed onto the index.php file. Now, what if you don’t know what variable you want to send yet on page load, or you want someone clicking on something to send that data? This is where the dynamic script tag comes in. It is merely simple javascript.

When we run this function and pass a URL to it, it will build the script tag which we mentioned earlier. To run a function, let’s do something like this, for something simple:

This will cause a script from any another server or domain to be loaded right when you would click on that button. In my case, since I am making the script’s source be a PHP script, I pass on the “woot” variable with the value kanno41. When this is loaded, the PHP file will be able to get anything passed to it through the GET parameters.What if you want to pass on something which could change all of the time? Just make a little script like this one for example:

To me, this is a revelation. I can now send any variables to a PHP script through this method.

For me, I would have the PHP script return some javascript back, maybe something like

I hope you’ve enjoyed reading this and maybe you learned something, or maybe you didn’t. Feel free to ask questions about this. Some stuff may not wrap correctly, but there’s nothing I can do about that.