December 28, 2009

Colour My - Game Series

A while back I found great enjoyment in playing a simple flash game called Colour My Heart. It was a release for valentines of 2009 on Newgrounds, and ranks right up there with several of the other artistic games I have posted about in the past. Instead of being a challenging game, it is more of a piece of interactive art with a simple story. As SilverStitch, the author puts it, "This is not a 'hardcore gaming experience'...its just simple and more artistic". I was blown away by how well the simple pencil like graphics and backgrounds could come together to be as immersive as it ends up being. See Example Below...

I was very happy to recently find out see that the author has continued the Colour My - Series with several other titles all with a similar poetic twist on a deeper love and relationship theme. However, what is truly nice about the series is that you do not need to be a hardcore gamer, instead some basic platforming ability and the ability to figure a few puzzles is all that is necessary to enjoy it. I strongly recommend taking a look at the series by visiting the links below.

December 25, 2009

Merry Christmas!

Hopefully everyone has a Merry Christmas today.

December 12, 2009

Old vs. New generations using technology.

I had a fascinating conversation this week while working, which got me thinking about the differences between the old and new generations using technology.  This is something I experienced first hand while working at the school help desk a few years ago.  Usually by thinking about the past generation and technology, you always get the standard not compatible, has trouble keeping up stigmas. To put it bluntly technology illiterate as people like to put it.  However, I hate when anyone uses (or overuses) the "I am technology illiterate" excuse. Hey, I am not amazing at spelling, yet could I go to a english class and get away with simply saying "I am writing illiterate? The answer is no! Nor do I believe that anyone of an older generation is completely devoid of the ability to keep up with new technology, I have seen older people do just fine in some cases.

So if it is not simply a random generation gap, what is it that makes it easier for the new generation to work with technology?  I thought about this for a while and came to an interesting realization, it is not so much a generation issue as it is a technology change issue.  Think about how technology is today, constantly updating changing and hopefully improving.  I know I expect this, even look for it, to the point that I am disappointed when something does not make small changes fast enough.  The words, "small changes" are the critical piece that has caused this gap.  The technology of the previous generation did not change the way it does today, changes where slow and costly, where new version only came infrequently with large updates, and sticking with a version was not uncommon (aka legacy systems).  This is no longer the case, as things are almost out of date as they reach our hands.  To put this in perspective, I am now seeing people of the older generation sitting down and learning Windows 7 after using XP or 2000 for many years.  However, other then the general annoyance of the task, this seem almost normal to them.  It  is nothing more then large delayed shift to the next big thing that they will again use for an extended length of time before finally making a large shift to the next thing.  As is normal for this past generation.

The really interesting thing is that other than the fact that I am not a Windows fan, I greatly abhor the switch to vista or win7 from xp, almost in a way that is ingrained. Yet after thinking about these generation differences it is almost expected.  The Graphical User Interface(gui) and other parts are a huge shift from the norm I am used to working with; this is not a bunch of constant quick small updates! Annoyingly, this tends to be the Microsoft model of doing OS updates, and in some cases software (the new office suite for example).  Which works, but psychologically, only for the past generation...

Further expanding this leads me to think this is also another reason why I keep sticking to the Mac side. The People always complain that OS X updates are always many small changes on the standard OS, which seem pointless to pay for as it is not a big change, however it fits what this generation is looking for, yearly (constant) updates that add many new (small) feature, and does not make any huge changes to the way you use it that may require relearning.  I believe that the slowly increasing market share, mostly with young high school and college students may indicate just this.

The topic of relearning is another interesting point. In general it is a known fact that it is much easier to learn something new than it is to retrain your self, which is why habits are so hard to break.  This is why the many small changes model seems to work so well.  The changes slowly pile up till they finally replace something old, this way you are not relearning something, instead you have slowly replaced it with better new features that you have already learned the steps for.  The past generation, however, is a little different.  I know from helping older people that simply pointing out a new easier feature, which makes perfect sense to me, does not seem to work.  Instead the set memorized way that they go about using a system needs to be thrown out before the idea that a new way needs to be relearned is mentally accepted.  Something that as expected is not easy to do, and causes younger generation help desk employes to quickly get frustrated.

Sadly, this does not shed any direct light on fixing this generation gap, however it does illuminate the main disconnect.  Which may in some way allow for a common ground between quick and constant vs. big and slow changes to be found in technology use of a different generation.

November 30, 2009

Simple HTML Parser in Objective C

For my current project I needed a way to fetch remote html and then parse it into a more accessible data form. So I took my Java XML Parser work and ported it over to Objective C and extended it to work with HTML, which tends to be far more messy and broken... grr. To combat this, unlike a full html parser, this converts it to a psudo xml form, where all character data between > and < and > or /> is appended to the tag string.  The down side to this is that you need to parse out any needed tag attributes separately, but that is a price I am willing to pay in this case.

Check out the files below for the code...

Using the HTMLNode class should be simple enough, just import the HTMLNode.h file and then use the example below to get started. It is good to note that this parser expects clean and valid HTML/XHTML, however most sites have some issue or mistake. This may cause you a few headaches, it did for me. Still the parser should get most if not all the tags, so in this case use the search function "-(HTMLNode*) search:(HTMLNode*) root: (NSString*) term" to find a containing div tag and then use getChildN for traversing the rest.

// Setup and build html node tree in root...
NSString *url = @"";
HTMLNode *root = [[HTMLNode alloc] init];
[root buildFromURL: url: root];

// Get the head tag which should be root child 0...
HTMLNode *headnode = [root getChildN:0];

// The tag of the head node should be "head"...
NSLog([headnode getTag]);

As usual the code is free to use, but please give me some credit if it is used in a large project, or at least leave a comment about what it was used in.

November 27, 2009

Creating an Array of NSDictonary Objects

I had created an interface for the NSTableView class in InterfaceBuilder and needed a way to update the table with items. The easiest way seemed to be with an array of NSDictionary objects. But as I was not quite fimilar with the NSDictionary class I first had to look up how to create and fill one. Below is a base example I came up with.

// Aloc and Init Array
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:1];

// Setup keys
NSArray *keys = [NSArray arrayWithObjects:@"Name", @"Job", nil];

// Setup values
NSArray *values = [NSArray arrayWithObjects: @"Epic Box", @"running", nil];

// Add new NSDictionary with keys and values
[array addObject:[NSDictionary dictionaryWithObjects: values forKeys: keys]];

To get a value from a NSDictionary object you can do as follows...

//Using the array from the example above
NSInteger index = 0;
NSString *key = @"Name";

// Get value
NSString *result [[array objectAtIndex: index] objectForKey: key];

Remote File Request to NSString in Objective C

A current side project in Obj C that I m working on required a way to fetch a remote HTML file and parse through it to get the url of links and images. The first step required a way to get a remote file and store it as a NSString. The code below is an example of how to so.

NSString *url = @"";
NSURLRequest *urlrequest = [ [NSURLRequest alloc] initWithURL: [NSURL URLWithString:url] ];
NSData *returnData = [ NSURLConnection sendSynchronousRequest:urlrequest returningResponse: nil error: nil ];
NSString *returnstring = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];

Tested on OS X 10.5+ with GCC 4.2

November 14, 2009

Simple Java XML Parser

To continue my SN Project work I started to convert the simple object to data save format I had been using to save time during the semester into a xml based file system. This way when I update code it will not break saved game file due to class def not found exceptions. However I quickly ran into an issue that Java did not have a "simple" built in class to handle XML parsing and other free libraries where a little more complex then I was looking for, so although I usually try not to reinvent the wheel while programing, this time I wanted to try my hand at writing a simple Java XML parser.

What this basic XML parser does:  It looks for the starting tag < and then starts appending the tag characters to the node tag.  Then it hits > telling that the tag had ended and the data starts finally it looks for < for the next node.  There is also the case that another < is found in the data which indicates that a nested tag was found.  The older node is pushed on a stack and the parser moves up one child node and begins the tag and data read once more. This is repeated until no nodes are left on the stack indicating the root closing tag has been reached.

As a note:  I have removed most of the advanced checking and my custom xml build methods for security reasons, so you are on your own to add try/catch as needed.  Also, as I am not using any attributes in tags, so this parser does not read them.

Overall the code works well for the xml documents I am reading in, though for one class I may still look into a faster c based solution in the future, since I am working with a JNI library anyway.

You can check out the code HERE
As usual the code is free to use, but please give me some credit if it is used in a large project, or leave a comment about what it was used in.

October 31, 2009

Epic Box Pumpkin

Continuing the pattern of holiday themed epic boxes, I introduce the Epic Box Pumpkin.

Happy Halloween Everyone!

October 30, 2009

Haibane Renmei Communicator Costume

For this years halloween costume I decided to go with the Haibane Renmei Communicator, at the suggestion of one (or two I forget exactly) of my friends after watching the series at school last year. I had mentioned that it would be a cool costume, so with that push, this year I actually spent the time to bring it to life.

Below is some basic steps I followed, if you are interested in making a similar costume, as there was very little to no information beyond a few cosplay pictures online. So I hope this helps others out looking for a design.

The mask was made out of two halves of a styrofoam craft ball, then routed into shape and then finished off with a good sanding and eight layers of white acrylic latex paint to smooth it down. The black color is permanent marker as I was so sick of painting and sanding at that point. The pendant is also made from styrofoam and a similar process but a brown marker.

The costume is made from my own designs and a combination of tunic 1 from Simplicity pattern 4795 and the hood from cloak A in Simplicity pattern 5840 which is modified for the longer back strip and a rounded flop at the top. The the striped front was of my own pattern , which could have been longer, but still looks fine non the less.

The belt is a standard leather belt. I was too cheap/lazy to buy some red cord.

The wings where made of foam poster board which I used a wood rasp to round the edges. Then covered with thick acrylic brown paint to get a wood like pattern. I added tassels to the six holes drilled into it. The wings where attached to the striped front via two longer strips at the top. I drilled two extra one inch holes at the top of the wings and used two extra straps that looped through and connected to the longer strips that go over the shoulders.

The stick is also foam, a rounded ball and two wings that I cut out of the leftover foam poster board and then painted. he halo is copper wire. The stick is a old handle from a rake or some other garden tool that broke, which the top part is wrapped in leftover fabric.

- Time Required -
Sewing = ~16 hours
Painting/drying = 1 week

Total cost: $42 (Stupid expensive styrofoam!!!)

I like how I get better and better at sewing each Halloween season. I expect next year will be even better!

October 26, 2009

Halloween costume confusion

With this years halloween costume finished, I was thinking back on the other costumes I have had over the years. However it did not take long for me to realize the trend of people having no clue to what I am going as. Now for a few of the costumes I have to admit that it was expected that my idea was obscure, but some times it was just annoying. For a bit for fun let me give some examples with the reactions I received. Oh and if you do not notice, I have never had a store bought costume.

Green Power Ranger (Back when it was just starting!)
- Had no clue, I was too early as next year there where other kids with commercial ranger costumes.

Red Coat Costume (I liked the hat)
- Thought I was a pirate... sigh learn more history people!

Chinese dragon (of one)
- Had no clue, I thought it was cool, and it even ate the candy.

Kosh-tume V1 (Babylon 5)
- Had no clue, sort of understood when I said an alien.

Custom Dn'i Cloak (Myst)
- Had no clue.

Kosh-tume V2 (Babylon 5)
- Most had no clue, a few B5 fans caught on.

So for this years costume, which I will post in a day or two, I expect the same as usual. It is funny, as I am so used to it if someone I do not expect knows what I am I was be flabbergasted. Still, I am always far happier with a unknown custom costume, it just fits me better.

October 23, 2009

Installing Quicktime 7 in Snow Leopard 10.6

On small annoyance with 10.6 and Quicktime X is the some important older components do not work yet. So in order to use these older components you will need to install an older version of quicktime 7.

1. First off download quicktime 7 from Apples website here.

2. Right click and select view contents of the Installer and view the Contents folder.

3. Expand the Archive.pax.gz and open the resulting Archive folder.

4. In the Archive/Applications folder drag the Quicktime application to your Utilities folder

5. In the Archive/System/Library/PreferencePanes double click the QuickTime.prefPane and have it install for all users.

6. Register Quicktime pro if you have a license key.

There you have it a easy way to use Quicktime 7 in 10.6 with out having to reinstall your OS.

October 20, 2009

Mac OGM to iPOD conversion

This is more of a post for my self because I always forget what the name of software tools, so here is my simple guide to converting OGM files on a Mac.

1. Download D-Vision from

2. Download and install the Xiph quicktime component. from

3. Click tools and use the OGM Demuxer function to split the OGM file into separate parts.

4. Open the AVi video only file in quicktime 7. (Snow Leopard aka 10.6 will need an older version of Quicktime as vr X does not work with the Xiph component yet)

5. Copy the audio track and use the "add to movie" option to insert it over the video track.

6. Finally use the export option in quicktime to export it as iPhone or iPod format.

This works fine under 10.5 and below, however as noted in 10.6 you need to use the older ver of quicktime, see my guide on installing Quicktime 7 on Snow Leopard here.

October 5, 2009

Online IE Testing

I had stumbled across IE Netrenderer a few weeks ago, it is a site that lets you put a url into the form on the page and will return a picture of how that site looks rendered in different versions of Internet Explorer. For me as a mac owner this is awesome as it allows quick page testing in IE. I have been using Crossover to run both IE6 and IE7 and for the most part works quite well, however Crossover has some issues with occasional things like transparency in IE7 and can not run IE8. So for final tests IE Netrenderer is perfect for the job. As an added bonus it also allows you to do an overlay of IE6 vs IE7 for ironing out these few small differences in site layouts. Check it out for you self, if you are a Mac or Linux user I guarantee this is something you will want to bookmark.

September 30, 2009

Tomcat install on OS X 10.4

I had seen Tomcat on job applications before, however this was the first time I had actually played with it. What is it? "Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed under the Java Community Process." So it allows you to run Servlets and JSP on a server. Now I needed to find out how to install it on my Lazurus server running OS X 10.4.11 with the latest Java update.

1. First download tomcat from HERE (I used 5.5, so not sure about 6)

2. Then rename the unarchived tomcat folder to "Tomcat"

3. Drop the folder into /Library/

4. Fix the UNIX permissions recursively to 777 (BatchMod is a simple way if you do not know chmod, just check all of the boxes)

5. Edit the /Library/Tomcat/conf/tomcat-users.xml file, see below for example.

<?xml version='1.0' encoding='utf-8'?>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat,admin,manager"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>

6. Start tomcat by using the terminal to run "cd /Library/Tomcat/bin" and then "./"

7. In a web browser head to and you should see the Tomcat start up page.

If you want to read on further I figured out most of my instructions from the Tomcat Wiki, so head there for more info or if you get stuck.

Just in case you where wondering, as I was, put your jsp and servlet files in the /Library/Tomcat/webaps/ folder. The webaps/ROOT folder being the one displayed at the base url address. So for now I am just using that folder for testing.

JSP is quite simple to pickup at a basic level if you already know Java. However there are a few differences do to it being web based, but so far I like not having to compile manually. I had no problem writing a few simple classes with outputs and will later play with post and get. HAHA, tri-fecto of web programing achieved (PHP, ASP, JSP), hm still need to sit down with Perl one of these days.

September 14, 2009

Objective C for the iPhone or iPod

I finally decided to sit down and start working with Objective C, namely to expand my development areas into the iPhone and iPod areas. Not that I have any current grand ideas, however I had been meaning to create my own version of lights out and though it might be a good time to get to work. However, who know it may be worth paying the $99 developer fee in the future, but right now I am looking at jail broken device deployment only.

Objective C is similar and at the same time quite different from regular c/c++. One of the biggest differences is that you can use the dot operator, but also have the option of sending messages instead or a mix of the two. For example you could have class.method(input); or you could do [class method:input]; At first this was a little strange, however after a few hours I started to like it a little as it clearly defines what is processing code and what is message code.

Another change for me was using the Interface Builder in xcode. I had played with it briefly before, however I have never actually sat down and used it. It took me a while and some google searching however once I realized that I needed to add a method reference in the .h file as well as the .m file I could then see the links in interface builder. After that I was golden and quickly linked the button in my first game to UIBUttons that could be referenced in the code as well as a single buttonPressed method. HINT: Copy and paste is much faster then doing it individually. This reminded me a little of working in VBStudio as you could design the interface and then do the code second, however unlike VB, C is a little more demanding and requires hand coding instead of a double click on the UI element adding the code for you. Still, minus the some what steeper learning curve it was actually not too bad, and as a bonus I know now how to use Interface Builder in regular OS X development as well.

After ten hours or so of teaching my self objective c, I can now present BlackOut and simple lights out game. You need to have a jail broken device to install this, as I am not paying Apple $99 to give out a free application. Enjoy.

September 11, 2009

iBook Photo frame Controls

I already had the frame and iBook screen setup and running from my iBook Photo frame project, however it required a keyboard and mouse to really do anything, this is a problem. So I had been planing on trying to add controls at some point, however as usual this was not as easy as I had hoped. The ibook keyboard is connected via a flexible printed circuit, which means that soldering is out of the question and conductive epoxy would cost me money. My next idea was to attach wires under the connectors and use some kind of clamp to keep it connected. So I carefully removed all the keys and extracted the plastic switch membrane but that idea went out the window when upon trying to part the two membrane sides it also ripped a few of the printed circuits... sigh.

So left with a non functioning circuit I finally opted to cut off just the connector ribbon after getting the correct pinout; tracing it reminded me of my ddr pad controller project. Once I had the pinouts I had to think of some way to connect wires to the conductive paint. After a few failed ideas I finally settled on crimping small coper connectors onto the exposed paint. With a magnifying glass and a fine point xacto knife I carefully scrapped off the top layer of thin plastic glued to the thicker back which the circuit wires are printed on. After that I cut a small strip of copper and bent it into a U shape and crimped it on with pliers. I tested the connection with my multimeter after each one. I had to be careful that each connector was only a small strip, as too big and it would not crimp on properly.

Finally I used some extra cat-5 to get the six wires I needed, for the up, down, enter and esc keys to control xbmc, which I had loaded on it after enjoying the xbox version so much. Then I attached the lead wires to slightly larger clips to crimp the smaller ones in. I did not dare solder to the smaller clips because they might melt the plastic, so I figured this would work best. Finally I put it all back together and tested it. Sadly I did not have any buttons to finish up the project with, so I will leave that up for part three in the future. At least now I have a workable way to connect printed circuits to wires, which I bet will come in handy in the future.

September 5, 2009


I had posted the dad at home and work flash movies before as must see items, however to add even more to the series is DADGAME the next episode following dad at work, however this time it is a full game. Yes, you get to play as dad as he goes on a rampage in town while stopping his boss' evil plot! With swords, lazors, nunchucks, guitar and briefcase as playable weapons against guards, football players, robots and a monkey. This is a must play, even if just on easy. I laughed very hard through the whole thing, especially with the crazy animations in rampage mode. sakupen went all out this time.


August 30, 2009

Destruction of Wood Playgrounds

I remember the joy I had running climbing and of course falling all over the large wood playground at the first house that my family lived in as a child. It was a huge structure, covering easily a hundred square feet and must have reached thirty feet high at the tops of some of the spires. I loved the ability to explore and climb anywhere I could, and a game of tag was filled with intense ducking and running through holes or quickly climbing to the next platform to escape. Even the smaller simpler wood playground at the second house had plenty of potential with climbing and swinging. However if you look around, these places are vanishing at an alarming rate! Where are the colossal playgrounds of old, I can't even find a picture of the one I played on as a kid!

Now everywhere you look you have cheap tiny plastic structures! While kids will find way to play on anything, these lame (safe?) replacements lack the creativity and imagination of true wood playgrounds that pushed the imaginations of past generations. Look below vs. above and just try to argue otherwise!

I can understand the desire to protect kids now a days, however there is no reason to protect them to the point that there is almost nothing left. Kids need to play and fall and hurt them selves, it is called growing and learning. My parents did it, I did it and if I have kids some day I want them to have the same chance to grow and play. (Hm, could this a source of the obvious lack of common sense in this upcoming generation...) Still ignoring the danger of gravity you still get the whole arsenic levels in wood debate, though it is a naturally occurring substance. (Via Wikipedia)"In addition to the inorganic forms mentioned above, arsenic also occurs in various organic forms in the environment. [15]" However, what I can not understand is why completely destroy what could be considered national treasures, when they could easily plan to slowly replace the "supposedly dangerous" pressure treated wood materials with newer recycled alternatives. Lets face it, plastic is not all that healthy either, but that is a debate that is going to rage on for some time. So school and town administrators, instead lets agree to compromise, if you are planing on removing a playground for what ever reason, you better at least replace it with an equal or better structure! Otherwise you have officially neglected each and every kid that will play on it.

August 14, 2009

Jyetech oscilloscope DIY KIT

A while back on gizmodo they had this oscilloscope kit for $33 from SeedStudio, which I had planed to purchase and try my hand at putting together for a while now. If it worked, although simple, it would work well for the basic circuit projects I occasionally work on. Also it may allow me to finally use the coin and dollar bill collector I have laying around. Oh, and if your are not sure what an oscilloscope is or why you would want one, click here

So after two weeks of shipping from Hong Kong it arrived and I got to work. First off I had to break down and buy some thin solder (0.32), as the thick kind (if you know me you have probably seen it) I am used to using for everything just would not cut it this time. Looking back I probably should have gone with an even thinner diameter and also grabbed some liquid flux as well, as there where a few places that the solder just refused to stick to easily. However the hardest part of the whole project was the tiny components. It was almost frightning how small most of the resistors and capacitors where when I opened the kit, and there are a lot of them to solder in very small places very close together. Going slow it took over nine hours to get everything connected and working, but was worth it in the end. Check out the picture below to see what I am talking about!

When everything was in place on the back of the board I plugged it in and checked the voltage and everything looked okay, but it was slightly unnerving as there was no way to completely tell if it would work when the panel was connected. Luckily after finishing the front side and adding the covers, I powered it up and low and behold the boot loader showed up and started graphing. Then after playing with it for a while I was satisfied that I had connected everything correctly and it was functional.

The image below is what the finished back may look like, however my kit was slightly different in that it had a few changed parts. I must confess that my connections where less nice and more painful spiky, but for my first big SMD soldering job I think I did quite well.

You can grab your own kit from SeedStudio in do it all yourself ($33), do only a little of it ($36), or already done ($49) flavors. Also I highly recommend looking at this site for more detailed pictures. I know I would have been in worse shape with out them. My final advice, you should to go with the SMD exempt kit for 3 dollar more unless you really want bragging rights. ^_^ as it quickly gets very annoying for several hours.

August 10, 2009

HTML 5 Canvas

I was almost giddy when I discovered the canvas tag to be included in HTML 5. With this javascript joins the ranks of C, JAVA and VB in the fact that I can quickly and easily draw straight to the window with a few basic APIs. So to have a little fun and to keep my javascript knowledge fresh, I sat down over the last few days and read up on the canvas APIs and played around a little.

(NOTE: IE does not work with canvas by default, use another newer browser!)

First off I started with the basic balls bouncing around program that I did in every other language that can draw. You can check it out here and see the code here.

I had to do a little research on classes in javascript, and while not exactly perfect, they do work as expected. After getting the bouncing shape test working I moved on to make a simple platform game. The hard thing with javascript is that it is slower and far more processor hungry then even java, so I had to be somewhat careful of sloppy waste, however I did not put too much effort into it as this was nothing more then a way to try out the canvas with javascript. You can see the result here and the code here.

All in all I am excited to see javascript starting to show signs of maturing into a really powerful and useful scripting language.

If interested, you can also read more on the canvas tag here.

August 4, 2009


A while ago I was introduced to the online web game Jam Legend, so I checked out the site. The premiss is the same as any of the music games, you hit the notes as the move on the screen. I played for a while, then got bored and forgot about it till this week. However, after playing it again, and getting bored again, I decided to create my own challenge and finally check out the Robot class in java to see if I could create a program that could play it for me.

The Robot class is a java package that is designed to aid in computer automation. You can have it look at the current screen object and then move the mouse or hit keys. The big challenge for me was getting the bot to be able to recognize what was happening on screen. Like any robotics programing it is easy to say that it will look here and do something, but actually making it happen is quite a bit more challenging. To start off JamBot requires you to drag the transparent window over the game, this sets up a view port for the bot to look at a few different locations, namely in and just above the five note zones. The challenge with this is that when playing not only do the note locations change when you need to hit a key, it also changes the background colors as your multiplier increases. In order to adjust for this, the easiest way is to check the color percent of the note color for that spot, vs just seeing if the color has changed. If you look at the included code, the values have been adjusted to what I though worked best, but you may have better luck with some further adjustments. The next step was to also have the bot look just above the note zone to see if there is a hold note active. Then if a color match is found, instead of unlocking the key, it waits for the hold to finish. After figuring out all this, and a few hours later, I had a working bot, just for the insane tap difficulty which would get around a 90% on most songs. Is it perfect, NO, however it looks and act like a normal person playing with normal skill would.

Now if I was interested in further development I would look into adding separate Robot objects for the different notes, I think this will improve accuracy and timing, by using different threads for each zone. Right now the bot is missing notes due to the main loop not being fast enough to either see the note coming or hit it before it is out of range. I am reasonably sure that a more streamed lined threaded setup will fix this. Also it is missing the ability to select different difficulty setting, and needs an included feature for strum. All which would not be too hard to add, but I will leave that up to some one else, as I have other projects to start.

Quick Instructions for Use
[Only works for Insane Tap]
1. Open JamLegend and get to the point that you can hit play to start the song.
2. Start JamBot and drag window till the lines and circles line up on screen.
3. Click the Setup Button and then drag the window to the side.
4. Once out of the browser window click start.
5. Start your song and watch as it plays its self.

As usual I have uploaded the compiled class (MAC) and the java source code for anyone to develop further, however please credit me if you do. Download Here and enjoy.

July 31, 2009

Sysadmin day!

Once again it is time to thank our sysadmins that keep the internets running smoothly! Not that you should only thank them once a year.

Here is a blurb from
"A sysadmin makes sure your network connection is safe, secure, open, and working. A sysadmin makes sure your computer is working in a healthy way on a healthy network. A sysadmin takes backups to guard against disaster both human and otherwise, holds the gates against security threats and crackers, and keeps the printers going no matter how many copies of the tax code someone from Accounting prints out."

So take some time to day to stop by and say thanks! Happy 10th annual sysadmin day!

Check out more here

July 30, 2009

Xbox USB Controller Mod

The xbox I got off of ebay had three controllers with it, however I recently noticed that one of them did not have the breakaway connector I needed to actually use it. So I looked online and found I could get one for $5, however, my cousin was only here for a few days and I wanted to play three person halo 2 matches. So like any resourceful modder I decided to change it to usb.

The basic design of the xbox uses a modified usb port to plug controllers in, with an extra yellow line that seems to be used for the light gun from what I have read. So there is nothing stopping you from changing a controller port to a standard usb port. This will not only let you use an xbox controller with a usb port, but also a keyboard if your dash will recognize it. You can see from the pictures I have drilled out the plug in the fourth port and glued a standard USB port inside. This looks quite nice from the exterior. Next I cut the breakaway end off the controller and connected a usb plug instead. No real brain work was necessary as you simply ignore the yellow wires and match the red black blue and green wires on the inside of the xbox and in the controller wire. After everything is connected, the controller can be plugged in and used like normal. You can get more information and pictures here on how to connect the usb wires.

As an added bonus you can now use the usb xbox controller with your computer as well. Check the links below for the drivers.
Mac Driver
Windows Driver

July 29, 2009

Halo 2 Killtrocity V2

One of the perks of having a modded xbox is that you can mod and play modded games. Halo 2 Killtrocity is a collection of modded halo 2 maps, however the interesting part is that this does not mean only the included maps have been changed, now you can also play on a few included campaign maps as well. Any one up for capture the flag on the large bridge level with tanks! Also to make matters even better, the weapons and vehicles have been altered as well. This ranges from simple skin changes to a gun the fires plasma grenades. (As a side note. I will never play with Norm on that map, I HATE STICKYS). But that is not all, ever want to use the hunter beam cannon, well now you can! There are a ton of vehicles changes as well, but you can find them out on your own. I must say I had a lot of fun playing with my cousin on these maps, however a large group would be even more fun, I guess I will have to start looking into XLink Kai.

Check out the video below to see what some of the changes look like. PLEASE NOTE that the music may not be to your taste (it is not mine) and you may want to mute it as there are no other sounds.

Read more here.

July 20, 2009

Hamburger Bed

I am greatly amused by this! I love it when people create something cool or weird out of common items.

Check out the website here.

July 19, 2009

XBOX Soft Mod

My friend Matt had soft modded an xbox he got during my last year at school, at first I though it was cool, but did not see any use, however I quickly started to love the ability to stream any media to the big CRT tv we had in the living room. After I graduated I started to miss that ability, as well as having something to play Halo 2 on from time to time. So I went on ebay and found a good deal for an first gen xbox with three controllers, the advanced av pack(s video + optical sound) and the DVD remote kit. All for $33, which is not a bad deal at all. Then after waiting a week for it to arive, stupid ups ground, I finaly got a chance to have some fun with new hardware.

Fist off I read up on the steps to soft mod an xbox, check it out the tutorial here. I had no problem getting my kernel version and using ndure to build a installer, then packing it up and for burning a disk with xboxhdm. However that was when my problems started to happen, first off I could not get the drive unlocked by hot swapping the drive, it ended up not being a swap issue, instead it was a bios problem with the dell model I was using. After a few hours of poking I finally realized I had to plug the drive in first for the bios to know that there was a drive attached then do a double hot swap to the xbox for unlocking then back to the computer. I only figured it out because the drive would only show up if I plugged it in before starting the computer.

After getting the drive hot swapped, I ran into my second problem, the install failed due to lack of space. I am still not sure what was up with this, however after using the restore option twice, I finally decided to try letting it fail and see what happens. This turned out to be fine as it still soft modded the drive, which started up fine, however it was lacking any applications other then the basic dashboard. This was fine as I was able to grab a copy of ConfigMagic and ftp it to the apps folder and then use it to get the EEPROM off the board. This was my main focus as after I got the EEPROM I could always unlock/lock a new hard drive at any time. After I had it backed up I was able to breath easy.

My next step with to change the drive to a 200Gb so I would have plenty of room for movies and other files. This also gave me a challenge as well, as I did not have a DVD drive in the PC I was using, which meant I could not use xboxhdm to format the drive. I was stuck for a bit till I could out that there is a much easier way to clone the drive by using Chimp (Read more Here). I did a test on a 10Gb drive first and it cloned it perfectly. Then I tried the 200Gb, sadly it took three tries, but after stalling and eventually returning to the main menu a few times, it finally moved on to the next menu and I was able to clone it. The nice feature of Chimp is that automatically formats the F partition with the extra space difference between the drives.

Now that I had my drive all set and the xbox soft modded all I needed to do was install XBMC as the dash, which was simple, and then move all my files over to the hard drive, which took the longest till of all. After that I was playing with the built in skins. Matt had the xTV skin that I liked, but I eventually decided on MediaStream as my favorite skin, and I think it is a little easier to use for my family as well.

All in all, a successful and useful mod, now I just need to mod the stock fan, as it is loud and annoying at times.

June 27, 2009

Job Interviews

Hm.. not much to say. Just busy with interviews and applying for jobs. You meet very interesting people on interviews ^_^.

June 22, 2009

Crunchyland bot

Quite a while back I was having fun working on a javascript exploit bot for an online game called crunchyland, the game itself was rather simple you create a character give it weapons and fight silly monsters that you encounter. The entire game engine was based on flash files that where embedded in html and where linked through javascript. The problem was that I quickly got bored with the game, you click, that is it, not very entertaining past a level or two. However before I moved on, I decided to try to write a bot for it so I could at least get on the leader board. Because there was no way I was going to sit for weeks of clicking, like some of the obsessive kids on the site apparently do. (Get a job!)

It was not too hard a task and gave me a good refresher in javascript dom manipulation. The bot uses an open window and url testing to change and click elements in the window triggered by timers. I also went a step further and had it watch the size of the health bar to heal the player after a certain point. After a week of testing I quickly had my character self level up on my testing server while I did other more productive things, and after a few more days I was on the leader board, with little effort, past the coding, on my part.

I have been waiting a while before releasing it, one to not get kicked of while I was still on the leader board, and to to prevent hoards of script kiddies from also quickly leveling up with no work. Now it looks like the game it not being worked on, and my script does not work completely anymore, so here it is CL Bot (For Safari 3 maybe 4 only). Anyone with some javascript experience could take it further and fix the parts that do not work with the game updates, however I have better things to be doing. Enjoy...

June 7, 2009

Nostalgia while cleaning

As much as I hate having to spend the time digging through and tossing out old stuff, each summer I try to remove more and more of the random stuff I seem to accumulate over the years. Most of it is paper from school, life and other random things I did as a child but do not remember doing. As well as a ton of pennies and other random shiny things that I hoarded and thought would be good to keep, only to never use them again. However I do end up finding cool things. Like my first backpack, old toys, lost lego pieces and electronic/mechanical do-dads, which bring back memories or are fun to play with again.

The best things though would be my pumpkin and ghost pin, which is awesome for around the halloween season and my pocket watch. Both I was very happy to re-discover.

May 31, 2009

Braid for Mac

Although I am more of a casual gamer, I have always been a fan of indie game over large studio productions. Mostly because generally they are short, to the point and can take risks to try things professional games do not. I have written here about a few in the past, as well as a few of my own, so I am always happy to find another new title that perks my interest.

Braid is a strange game that focuses on change through time and forgiveness, and accomplishes this in that fact that you can not die, if you are killed, the game will sit and wait for you to rewind. This removes the dangers that other platformer games use to add challenge, so you may be left asking what is left to challenge the player? Instead they game uses a (some what cliche) search for puzzle pieces that come together to form the story. However to get to the pieces you will need to use your time warping powers, think 2D platformer now thrust into a 4D world, even though the lack of a Z plane makes it more of a different kind of 3D then ever seen before. Using the different abilities each world allows you will have to deal with time forgiveness, exclusion, branches and placement. Braid wonderfully pulls off using these separately and in a mix to give the player a rather unique challenge, which if you like solving puzzles that requires thought from different angles you will really enjoy this.

The story of the game itself is unique, you have Tim who is on a quest to save the princess from a horrible monster. This may sound familiar to Super Mario Bros and it is hard to not see that a lot of the game takes concepts from classic platformers. However it goes far deeper then the base story if you only look at the surface. What is reality? If you could warp the time that drives the reality that we see, could you truly say what we are seeing is real? The ending of Braid pulls this off with fighting perfection, which may leave some players rather confused. Combine this with wonderfully music and lush water color artwork and you have an amazing game.

I have always been annoyed with games in how you want to try things, but it would take too long when failures result in restarting, Braid removes this and pretty much can be described as one of the few games that always runs in sandbox mode. Of course some of the puzzles, and especially the hidden stars would be impossible with out this. Still I had fun playing through this a few times, one due to me poking at the game files and breaking it. Braid is available on xbox, PC and Mac, so there are a few ways to get it, but if you have a mac, support mac games and grab the mac copy!

For those who have played the game and want more depth on the story check out this article.

May 14, 2009

Epic Presentation

I was going through my files stored on the school server and found my Epic Game presentation. So I uploaded it to slide share so others can see it. Slide share messed up some text in my images, but other then that it is the same. Check it out...

May 12, 2009

Tech Support

I hate to call tech support, especially for anything electronic as I more then likely already know what is wrong, as well as far more about fixing it then the person answering the phone. The worst being the recent fairpoint (aka failpoint) issues we have had at home, which after returning from school will finally be fixed, by switch to RoadRunner instead. I had spent over a half hour trying to explain that there was an issue with their service on their end which I could prove, yet still had to be walked through their flow chart for fixing problems, only to have the representative on the phone finally say "oh it must be on our end"...

To be fair I have been on both sides of the call, so I try to be nice to phone operators, as it is never their fault and they are tying to help, however when I did phone support for my school their was no flow sheet, we actually knew what to do to fix things, or would google it on the fly. ITS Help Desk FTW! Below are two Dilbert videos I stumbled upon that fit both side perfectly.

Dealing with tech support...

Doing tech support...

Senior Projects

One of the final highlight to my final semester was the Computer Science Departments Senior Project Presentations. I have been working on my SN Project like a madman, and was very proud to present my work thus far to my friends, family, colleagues and professors that came to watch myself and five others fellow CS students show off their work. So on top of my SN Project BETA 4 that is available to try out, you can also check out the slides below. I may upload a version with audio in the future.

Error text.

If the movie does not let you click to go to the next slide, give it a bit more time to load. Otherwise it will only loop the first two slides till it loads enough.

May 9, 2009

Finally bought AwardSpace hosting

With my time at college dwindling fast, I though it was about time that I broke down and bought a domain and hosting. I have been using the schools hosting for almost 4 years and have gotten very use to being able to easily have web project or files online, so with that ability ending I needed to get my own.

I had been using the free hosting on awardspace for a while, which is fantastic for a free service. No adds and access to php and MySQL! But there is limitations on bandwidth and you only get a subdomain, so after I graduate, I will require a bit more then that. Yet, the basic hosting is more then enough for me and only costs 47$ for a year with a free domain. The bandwidth is 1000GiB a month which is around 32GiB a day, way more then I will need right now.

So I am now the proud owner of!

April 23, 2009

H2Overdrive = HydroThunder 2

Sadly I have been too busy to work on side project, hence the lack of update. So I am very happy to be able to report that finally a developer is making HydroThunder 2! Raw thrills has released H2Overdrive which has everything that hydro thunder had, from the boosts to the drops to even the 3..2..1..go go go. But also makes improvements such as 8 racer at once and mid air tricks! Though I must say that that I do not favor the futuristic boats, but I can live with one minor complaint. From what I can tell it is only in arcades right now, but we all know it is only so long till it is ported. I only hope it looks as good as the arcade this time, because the ports of hydro thunder sadly never looked as good as the arcade. So while I wait for the console version, I need to find the nearest arcade with H2Overdrive.

Check out the Kotaku post here which is oh so accurately titled "H2Overdrive in videoh my god."

Also check out the videos below for a drool worthy few minutes of awesome.

March 18, 2009

Snow Architecture

After building my latest snow fort, I came to the realization that there was a method to my madness. When building I use a snow scale method I have grown fond of, this involves packing the wet snow within an arms radius into a scale like brick. Snow scale describes the way the snow brick has a hard external top layer with a soft inside layer, this also causes it to have a convex form as well. This is important as the convex shape allows for a strong dome shape. The full design uses two layers of scales for walls with a simple arch for a door. After these are built you use a keystone (handful of snow) to prop two scales leaning inwards together and go from there until the next dome layer is finished, then you finish with a final curved in layer held up by a few scales as a final keystone.

The interesting thing about this building method is how it very closely resembles to the structure of Geodesic domes because of the way scales are interlocked with a series of keystones. This distributes the force of the snow down the walls of the structure. This is why I have been able to create forts with a radius well over five feet, with walls that are only seven or eight inches thick.

February 28, 2009

Applet ProgressBar Flickering Issue

I had recently taken the the time to convert my EpicGame Code from VB to java, so I could make an applet that could be played online. (I was lazy and did not want to make it flash based) However after finishing it and testing on the mac side I though I was finished. Yet, later I started hearing complaints of the game flickering, I was confused as it worked fine for me and as usual I had double buffering setup, which in theory would prevent any flickering. Still, for some reason Window's version Java would flicker uncontrollably. I spent several hours trying different graphics buffering setups and also drawing to separate panels, but with no success.

Luckily I randomly stumbled onto the problem, it was the JProgressBars that I was using. When you update a value in the progress bar it calls the update method that then calls paint, which would happen concurrently mid screen refresh and draw a blank white screen, which was the rouge flickering.

So on Windows do not use JProgressBars with animation as it messes it up, or you need to extend the class and override the setValue method so it does not update the UI. Oh, and of course on the Mac side it all works flawlessly from the start.

February 11, 2009

Samsung CLP 500 Network Driver

One really annoying issue I have run into while working at CADY is that older Samsung printers do not have much... or any support, namely the CLP 500 series that is in the office. As it was my first job to get it up and running it took me a while to even find a driver for it.

For my own convince and others I now have it saved here -> CLP-500Series_1.84.exe.
Please click my ads if you find this useful, as it was a huge pain to find!!!

The next issue is that it does not have any network support, well not documented at least. The printer does have a network card in it, so it must work on a network. I have just been spoiled by HP as their network printers do the network settings at setup. So,to get the CLP 500 printer working on a network you have to do a few extra steps.

1. Install the driver, this will put a generic printer in your list, however it is set up on the wrong port.

2. Open the printers/faxes window then right click on the printer and select properties.

3. Click on the ports tab and hit "Add Port", then select Standard TCP/IP port and hit "New Port".

4. Follow the wizard and enter your printers IP, found by printing the printer config page in the printer information menu, and a name if you desire. Hit next...

5. On the next page leave it as Standard and Generic Network Card, then hit next and hit finish.

6. Check to see the printer is now selected to use your new port, which it should be. Apply and/or close the window. You should now be all set.

I highly recommend setting a static IP for your printer, otherwise you will need to update the port every time the printer gets a new IP.  (CADY Printer is

Win 7 steps...

1.  Use the add a printer option.

2.  Select Samsung instead of TCP/IP

3.  Update Printer Drivers from Microsoft

4.  Use the CLP 510 Driver

February 10, 2009


Matt clued me into an interesting piece of software called KavaTunes last night. He found it on the Mac Heist website as one of their free software titles when you solve puzzles in one of their yearly heists. I was not interested at first, however after watching him for a bit, I quickly wanted a copy as well. What KavaTunes is, is a piece of software that builds a php page of your iTunes library, but to take it a step further, it even looks like your iTunes library! This may be the simplest way to get access to your music on a local network, and on the campus network it is a perfect solution.

Oh course my g4 server is my test bed for playing with things and has a custom apache and php setups, so unlike Matt I had quite a bit of extra trouble with the setup. (With Matt laughing at the issues I was having the whole time ^_^) First off was that KavaTunes always builds in ~/Library/Webserver/Documents/ however I have a custom webserv folder instead, so it took a while to figure out why it was not building in the right place, but a symbolic link fixed that. Then do not call your iTunes music folder iTunes as KavaTunes adds a another separate folder under this name with its required php files. And lastly do not mess up your symbolic links, as it just causes a general mess. After about 30 minutes of bug fixing, which would have been nice if it gave you some warning about these things, I was up and running. It even streams my movies and tv shows I have on iTunes.

If you are interested grab a copy from Mac Heist

February 7, 2009

Smallest CRT ever!

I was taking apart a Hi8 camera to start my next project of better night vision goggles. However after taking apart I was very amused to find that the small viewer was not an LCD, instead it was a tiny CRT! See picture above, with a quarter for size comparison. Yes that does mean that this has a flyback transformer that runs on 5v.

February 1, 2009

Behavioral engineering

It is always fascination to see how people will react to certain changes. In my case, it was people walking through the covered doorway to the apartment. Normally I would not be bothered, however there is a window there as well, so it is a huge loss of privacy. So my first attempt was to forge a side path, sadly it was nowhere near as convenient as the straight shot that was already there, so almost no one used it. Quite frankly I would not have either, so it was no surprise.

Thus, next was to cover the path to force them away. However I had to plan it carefully as if not done correctly it would simply be removed, or even worse get a large number of student angry. So step one was to change with out anyone noticing. This would leave the least impact and the confusion with the change would drive people away instead of taking action. Next was to make the pile just big enough that it would not be easy destroyed, but not large enough to show it was put there on purpose, physical plant was shoveling off roofs, and this would nicely blend in with that reality. So an early saturday morning shoveling some of the snow off the roof accomplished this nicely. Plus I made the side path the most visible choice to limit remembering that the other path was there.

All that was working against my carefully set changes was force of habit, which would be a big factor, people do not like change and depending on how I set this up, could get annoyed enough to remove the change, luckily I have laziness on my side, and with the side path available, I suspected that it would win out in the majority of people.

So my experiment was let to these possible and expected results...
1. People go the long way instead to avoid
2. People go the shot but not as convent side path I made.
3. People destroy the wall and go through anyways.

I expected 2 most of the time and eventually 3 to happen, however the worst that happened was simply a person climbing over it. I was quite surprised my wall survived, however it makes sense, as people are prone to laziness, so instead of taking time to destroy a large pile of snow and putting the effort in making the path again, resulting in the cost of wet and cold, people simple gave up and walked around. I was happy with the results and no one wrecked my wall, plus I rarely get a chance to test out social behavioral theories on so may people so I was excited either way.

It funny how with a little observing, planing and research you can easy change the way people will make decisions and shape how people interact around you.

Scratch that... two drunk girls destroyed my predictions, but lost a shoe! Argh.. outliers, that was not expected, I figured it would be guys.

January 28, 2009

Easy Symbolic Links in OSX

From time to time you have to rely on symbolic links when Alias is not enough, such as re-mapping folders like your itunes library. You can always open terminal and use "ln -s target destination", however this can be annoying if you do not do it often or need one fast. So there is SymbolicLinker to help out, it is a handy context menu add on that give you a "create link" option when you right click an icon. It is handy to have for that random time you quickly and easily need a symbolic link.

January 24, 2009

SN Project Update

Well after a long hiatus, I am back to working on my SN Project. Now that I have a deadline to finish for the senior projects I will be working quite a bit on it. So to get caught up I have been programing like a mad man some where around 60+ hours all in one week, and from all that work I am about where I wanted to be going into the semester. So I am happy to have my 100th post be alpha version 2 of SomniumNexus. Grab the download here.

This version has quite a few improvements, the Item and NPC editors are almost complete and do save correctly. These can now be used in the Area editor. Also the graphics storage and buffer classes have been almost completely rewritten, which give a much better and easier to use fetching system. I also tweaked the FileBrowser, which now looks much better. All in all quite a few improvements, now the focus will be the game building function and finishing the Area editor, which will allow for the Engine to be worked on. It is a little hard to work on the engine before these when you do not know the final form of your data, nor do you have anything to test it on, so being this close is exciting!

January 14, 2009

Simple Rectifier

In one of my my side projects to do some research on alternative energy I had a bit of fun playing with a spare AC motor that was lying around. I have wanted to construct a wind generator for a while now, however still do not have the parts, sadly motors do not work well as then require high speeds and torque to get any decent current. Still I wanted to see just how bad it was.

I had hooked it up to my multimeter and spun it. However I was confused for a second as the meter was reading all over the place, somewhere from -47 to 38. Suddenly I realized that of course it would do this, it is AC. So off I went and grabbed one of the old dead circuit boards from one of my parts drawers and pulled a few diodes off. If I was going to be able to poke around further I would need a Rectifier to convert it to DC. So a little while later I had my rectifier build and hooked up. Now I was able to get a decent reading around 0.05V, which is rather small. Later I hooked up a capacitor so I could charge it up as well, not that you can really do much with 0.05V anyways. Still it was a fun little experiment and gave me an excuse to build a simple rectifier.

January 1, 2009

A million thanks

To start off the new years right, here is a million thanks to everyone out there!

Apparently it is a hallmark flash card. How long can you stand it, I got to around 7500 then needed it to stop.

Update: remove link as it want to a page with offensive advertising, now it is embedded.