Adventures in Programming: Steam API

August 24th, 2009

I am rolling out my most recent and largest project in for my portfolio yet, a 3rd party Steam interface.  Take a look here.

I created the project based around a Steam Community API class that I have written to add some XML examples to my portfolio.  The steam class uses the built in PHP simpleXML and xPath functionality to parse various XML and HTML pages and return relevant information for a given steam user.  The Steam API class currently supports profile information, purchased games, friends, and achievements.

If there is any interest, I will add proper PHPDoc and make the Steam API avalible to the public.  If the demand is great enough I may continue to add more functionality as well.

Rss Aggregator is Live

August 4th, 2009

I have finished up a new code sample for my portfolio this week.  It is a web based RSS Reader.

The reason I made this project was to solve the problem that I hate all the existing ones I have tried to use.  I always get caught up on zeroing out the number of unread stories instead of actually reading them.  I also prefer having the ability to read and skim over the stories than clicking on a title to load the body of the story.  Thankfully as a developer I can work around this issues by writing my own software.   A special thanks goes out to jQuery UI and MagpieRSS for making this project so easy to pull off.

Feel free to take a look at the example that I have on my site here and let me know what you think.

Q2 Award

July 17th, 2009

Today at work I was awarded the ‘Ninja of the quarter award’ (My work team mascot is Ninjas) for my contributions to our platform at work last quarter.  I don’t normally post about work related things here, but it is an honor to be the first developer on our team to receive the award.  I am very fortunate to work with a group of strong, forward-thinking developers who are equally worthy of receiving the award as well.

The changes that our product has gone through in the past two and a half years that I have been working for this company are pretty amazing.  It has changed from a static web app into a full-blown, rich JavaScript experience.  I have learned a lot on the way, and I now know more about character/stream encoding that I wanted to…Kudos to the entire team for the hard work they put in every day.

-Blurry iPhone photo below

Sad Story About a Bike

July 3rd, 2009

Right after I started High School my bike was stolen.  I didn’t leave it out in the yard or have it out in the open asking to be stolen.  I rode it often and always stored it away in the garage when I was done riding it.  Even taking this precaution and growing up in a safe suburb was not enough to save my bike.  Someone had the nerve to go into the garage and take it from me.

I wasn’t overly upset about the loss of my bike; after all, this was not the first time that I had been stolen from either.  It was however, the first time I was really old enough to begin thinking about the sense of entitlement that thieves must have to steal things that do not belong to them.  It made me think about people much more cynically than I did before.  Who are these these people?  Why do they think they have the right to take my bike?  I asked myself these questions but never found the answers that satisfied me.

This story does have a happy ending however. Now that I am a twenty-five-year-old young man with a good career path ahead of me,  I can afford a very nice replacement (and a lock).  Meet my new Bike:

It is a Specialized Hardrock Sport mountain bike.  I rode it home from the bike shop and around the neighborhood and so far am loving it. I can’t say I remember the last time that my legs have burned this much, but it has been over a year and a half since I last hit the gym so that is to be expected I guess.

I can now close the tragic chapter of the stolen bike from my youth.  Let there be much celebration and cycling!

Meebo JavaScript Puzzler

June 30th, 2009

*If you haven’t already viewed the solution on the second link, take a look at the first one and give the puzzle a try!*

I was recently featured as a correct respondent for the most recent meebo puzzler in this post the meebo blog.

Out of 300 respondents, fewer than half of them submited the correct answer.  I would have assumed the results to be higher overall since the reason why I started reading the meebo blog to begin with was to pick up interesting javascript tips and tricks that they would post from time to time.  I guess not everyone who reads the blog enjoys the finer points and elegant code that can be be create by the language though.  I know my eyes were only really opened for the first time two years ago when I first learned about JSON.  I hope this puzzler has inspired programmers to learn more about JavaScript!

Incoming: Queso Review Entries

June 29th, 2009

I find it very hard to focus my efforts writing only about very technical subjects.  I have five drafts of blog posts that I have been ignoring since last August because the amount fact checking and time I like to spend on a  (somewhat) quality post almost almost makes Blogging feel like work.  Because I do want to keep content coming, I am planning on expanding the scope of my Blahog beyond technical subjects and start including other types of posts as well.

Queso is one of my favorite snack foods of all time.  While I may not be any more qualified than the next guy to judge its quality, I have always played around with the idea of blogging queso reviews.   For me, it is easy to qualify what makes a good bowl of queso.  I like to use the following Metrics:

Flavor  - I know this sounds a little obvious, but I am planning on taking this beyond the realm of if it tastes good or not.  The key to flavor is in the name — Cheese.  A good queso should have a stronger cheese flavor than anything else.  I have had a number of bowls of queso that had an overpowering meat or bean flavor. These both would receive a poor rating for masking the true essence of a clean cheese taste that defines the delicious appetizer.

Consistency -  Eating your chips and queso should be an enjoyable experience and should not feel like work.  When queso is too watery it feels more like a race between gravity and the person trying to enjoy their food.  If it is too solid, it often makes me seems like it has been sitting out.  Who wants feel like they are eating old queso?  NOBODY

I have found the best test for queso consistency is the “Chip 2 Flip Test” (TM).  To execute this daft maneuver, you need only to follow these simple steps:

1)  Pick your favorite chip from the bowl/bag.
2)  Insert chip into queso with questionable consistancy.
3)  Remove chip from questionable queso.
4)  If the cheese is moving ever so slightly moving down the chip and not staying still on the chip then things are looking promising.
5)  Flip the chip over once (180 degrees people).  If the cheese has stopped running, you are golden if not continue to step 6.
6)  Flip the chip over once more.  If you cheese has not settled then you got watered down queso…Your night and by extension everyone else’s IS RUINED!

Quantity / Value -  When ordering a bowl of queso you need only ask yourself one simple question:  Could I enjoy a bowl of soup in this same sized container?  If the bowl is too small to leave you satisfied if it was filled with delicious potato soup instead of delicious liquid cheese then chances are that your $5 to $8 are better spent somewhere else.

Be on the look out for my review of the queso from The Flying Saucer (Addison) later this week!

Adventures in Programming: GBA Homebrew

October 19th, 2008

I was clearing out some old files from my old laptop earlier today and discovered some of my old game programming work that I did for fun during college.  The most ambitious of the projects was a console based roguelike game that was one of my finer examples of organized code, but my personal favorite projects where some of the hackish Game Boy Advance homebrew programs that I worked on.

GBA Pong

gba homebrew

My first project was mainly just to wrap my head around the concept of developing for a device without any sort of sdk and only a technical spec showing what memory addresses related to different functions.  It took me a very long time to be comfortable enough to get into GBA development, but thankfully I was able to learn a lot of the basic environment set up  needed from this tutorial.

The gameplay is simple but I was pretty happy with how this turned out overall.  First to five points wins and pressing B will restart the game when it is over.

Project Good Game

Project Good GameProject Good Game was my first attempt to create something a little bit more complex.  While it never made it far enough to have a visual pass, the technology that controlled the level loading was by far my greatest technical achievement on the system.

While there are a few ways to manage memory on the GBA, the one that provided the greatest number of layers only gave the developer slightly more than one screens worth of memory per layer.  To get around this, PGG dynamically loads chunks of the level into the memory as needed.  This means the only real limit to the size of the map is the storage size of the cartridge.

Ok so It is not that high-tech, but the method has been used in professionally released games for the GBA so I know the underlying idea is sound.  The game is far from finished and is more of a basic tech demo than anything else, but I still think that it is a cool thing to show off to people who are interested in game development.

Affine Sprites Demo

AFFINE spritesAs I worked on Project Good Game, I often created various testbeds to test new functionality that I wanted to add to the game.  Most of my information of advanced hardware knowledge was coming from this site.

This demo shows off some of the built in hardware sprite functionality including: scaling, rotation, movement, and mosaic blurring.  Nothing too special about it, but I always thought it was interesting hands-on way to view some of the limitations that developers have worked around when creating larger sprite characters on the system.

Download

I have compressed the above demos for download here:

GBA Demos

They should run fine either on an emulator or on the native hardware itself.  Enjoy!

Rant: The Ipod Touch Post 2.0

October 3rd, 2008

When iPhone 3G fever hit the web, I took notice and brushed the dust off of my old 8 gig touch.  The device had been reduced to nothing more than playing music in my car before I started listening talk radio in the morning to help wake me up on the way to work in the morning.  As time went on, I used the thing less and less but that was about to change!  I could make much better use of it via the appstore!

At the initial launch, many of the free apps that had caught my attention were associated with different web sites and services. Since most of the value of the 2.0 firmware for me came from these apps, The internet connectivity of the iPod Touch has suddenly became much more important.  That was only the start of the issues though.

Unlike the iPhone, the iPod touch has no speaker, no mic, no camera, and a full breadth of other missing features.  Instantly I felt cheated that while I struggled for a day to throw my $20 at apple to get the firmware I would also be unable to use the full line of apps being released.

Note to apple:  I can understand that you may not think the touch is making you money on a regular scedule so that is why you charge for firmware.   I never had buyers remorse for the product before 2.0 came out, but I sure do now.  Because of that I have not been spending money on the itunes music store like I used to as well.  I plan to get an iPhone when my contract is over and I expect a pretty large invoice in my inbox from apple the next day once I can fully enjoy the new functionality.

JSLife Featured on Ajaxian.com

October 3rd, 2008

A special thanks to the folks at ajaxian, a javascript and web 2.0 news site, for posting a blurb and a link to my JSLife project.  Check out the story below:

Life:  The game in Canvas

Adventures in Programming: JSLife

July 14th, 2008

One of my primary passions of the last year has been learning the ins-and-outs of the most misunderstood programming language, JavaScript.  I recently was looking at some of the changes in the HTML 5 spec and I decided to dive head first into learning canvas since it is being added to the spec.  For those that have not had experience with canvas, it provides developers with a much needed client side programmable way of creating graphics in the browser.  While canvas isn’t exactly new, I have always avoided learning in in the past due to the lack of cross browser support in IE.  Even without official IE support, there is now a great work around thanks to ExplorerCanvas so I felt like the timing to learn it was right.

My first thoughts on projects were all game related, but I wanted something that I could easily finish in my down time over the weekend.  So I settled on coding up a version of Conway’s Game of Life, since I have been interested in that for a long time.  You can check out the project here:

JSLife

I think it turned out very well overall.  I had to axe IE support because the VML that excanvas/IE uses does not scale as well as canvas and only updated a step every five seconds or so.  I am planning on adding more features and writing a more in depth postmortem as another entry down the road.