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...
December 28, 2009
Colour My - Game Series
December 25, 2009
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...
HTMLNode.h
NTMLNode.m
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 = @"http://www.google.com"; 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 = @"http://www.google.com"; 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 http://www.objectifmac.com/
2. Download and install the Xiph quicktime component. from http://www.xiph.org/quicktime/
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.




