Wednesday 30 December 2009

Audio Book Organiser (AIR, Mate, Flex 4)

Well its been a fun Christmas, I have eaten and drunk to the point that im going to be running it off in the gym till next christmas.

Although there has been merryment abound, the keyboard couldn't keep me away. Its probably okay to say this now as im not under any secrecy act; I have decided to leave Massively Multimedia in Manchester to join a new startup called Ideas Pad in Wilmslow (just south of Manchester).

I cant say too much about exactly what I will be working on just yet but I can say that it will involve my experience in the Flash world. Specifically, I will be working in Adobe Flex again on some fairly sizeable projects. For this reason I wanted to brush up on my Flex as there has been a new release of the IDE (now named Flash Builder) and the SDK.

In addition I wanted to look at the various frameworks in use for Flex these days. I have used the usual Cairngorm, PureMVC before however I stumbled accross a new one called Mate (pronounced mah-tay, like the drink). Mate looked very interesting to me so before I jumped two feet in and used it in a commercial project I wanted to give it a spin in a simple project first.

Finally we get to the point of this post. I have developed a simple Adobe AIR application that allows you to organise audio books. The basic idea is simple you give the application a selection of 'source' directories where your audiobooks belong then you can tick off whether you have listened to each one, and what rating you would give them.

ScreenHunter_02 Dec. 30 12.32ScreenHunter_03 Dec. 30 12.32



The data is persisted to a file that is saved to your hard drive, so when you open the application up again next time it remembers which audio books you have listened to and what ratings you gave them.

I havent tested it very much atall so there is a very high likelyhood of being some strange bugs in there. I am also releasing all the source code for this project for all to see, use and study if they so wish.

[airbadge]Audio Book Orgainser,http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air,1,http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg[/airbadge]




Source: http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v101_source.zip

Wednesday 23 December 2009

Kitten vs Spam

Well im back from Germany and after a horrendous journey involving stolen passports, lost luggage, cancelled flights, 11 hour waits in airports and 9 hour bus journeys I needed something to cheer me up. This fit the bill nicely:

Monday 14 December 2009

The New Bike

Well after the thieving of my bike a few weeks ago I was offered a new bike as replacement by the insurance company, a Kona Shred, another dirt bike.

And here it is:

photo

Doesnt it look mean?

I dont really need a dirt bike  as im not exactly going off road in the centre of Manchester so I had a half-hearted go of selling it on ebay.

In the end I have decided that ill keep it as it is very shiney and im abit of a magpie :)

Sunday 13 December 2009

Flirting With JavaFX

For the past several months I have been working on a little project completely different to anything I have done before. Its a desktop application that uses a number of novel technologies to do something I think is pretty cool. Ill talk more about what it actually is and does in the coming weeks, but for this post I just want to talk about the struggles and discoveries I have been through and made with the technology.

One of the basic tenants of the app is that it needs to work  cross-platform, so on mac, windows, linux, etc. As my previous experience with any sort of cross-platform coding involves using Java that was my natural first choice.

It has been a while since I have coding anything substantial in Java, infact my university project Chain Reaction was my last serious foray into the language:



I knew that I wanted a nice rich interface for the project as it was intended to be sold to non-technical users. My first choice with Java was naturally with Swing. This, however, soon brought back various memories of 'JPanels', 'Layouts' and 'Look and Feels'  and the headaches of trying to make simple things look attractive (tho some cool advances have been made with substance look and feel).

After having worked for years with Flash / Flex I had grown used to the ease of drawing graphics and manipulating Display Objects in the display hierarchy. I was dismayed at how difficult it was to do what I considered 'simple graphic tasks' using Java!  A simple google search for the terms "Java 2d graphics" demonstrates how old some of the concepts and documentation is on the subject.

I ended up writing and rewriting my view using different libraries like G:

ScreenHunter_03 Dec. 13 20.05

I found them all to be unwieldy and too inflexible for what I had in-mind. It all just seemed so archaic and old-hat.

So I was becoming more and more frustrated with myself for not progressing with the project and becoming hung up on something I had taken for granted in the Flash world. It was then that I happened to stumble across (this is after weeks of struggling) the JavaFX project. Now I had heard about this many months back but had dismissed it as Suns rather lame attempt to steal some of Adobe's dominance of the Flash player market (much like Microsoft's attempt with Silverlight).

As I was at the end of my line with Java I thought, hell why not give it a little look. Well it took me by surprise. It turns out that JavaFX is rather neat!

For those who havent heard f JavaFX; taken from Wikipeda:
javafx_logo_color_1JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones.

TV set-top boxes, gaming consoles, Blu-ray players and other platforms are planned.JavaFX is fully integrated with the Java Runtime Environment (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running Java ME.

What this means is that you can (with a little jiggery pokery) use JavaFX with normal Java. This is great as I had already written a whole load of code in Java which I didn't want to get rid of.

The language JavaFX Script is great. It took a little getting used to as it is a declarative language (much like Flex's MXML except that instead of using XML as the language it uses a Java Script like notation) but once I was used to it I could immediately see the awesome power it brings.

A little sample of code to give you a feel of how its declarative approach works:
Stage {
    title: "Ello World"
    width: 300
    height: 300

    scene: Scene {
        content: [
             Text {
               font: Font { size: 22 }
               x: 20, y: 90
               textAlignment: TextAlignment.CENTER
               content:"Ello World!"
             }
        ]
     }
}

This is your standard "Hello World" (but with a British twist):

ScreenHunter_06 Dec. 13 20.32

The simplicity of rendering things to the screen was just what I was looking for as the for this project, it was a double bonus that the language is powerful.

I love some of the features of the language like the natively build in binding, the sequence manipulations, but Ill talk more about some of these features in another post as I have rambled enough in this one as it is.

For now however, if you want to do some more reading into JavaFX  I HIGHLY  this short set of tutorials: Learning the JavaFX Programming Language - Tutorial


avaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. TV set-top boxes, gaming consoles, Blu-ray players and other platforms are planned.

JavaFX is fully integrated with the Java Runtime Environment (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running Java ME.

JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. TV set-top boxes, gaming consoles, Blu-ray players and other platforms are planned.

JavaFX is fully integrated with the Java Runtime Environment (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running Java ME.

Thursday 10 December 2009

The Case of The Transitional Doctype

I took a little break from my 'top secret' project (more on this coming soon) this evening to do some much needed repair work on one of my flash games portals www.worldsbestflashgames.com.

Top of my list was the fact that the index page doesn't render correctly in IE7. What makes it odd is the fact that the category pages which are essentially identical to the index page rendered fine.This is what it looked like:

ScreenHunter_01 Dec. 10 19.28

Normally when you hear that there is an issue with a site on IE and not on FF or other browsers you automatically assume its CSS, and so did I. After stripping the site down to its bear bones however, comparing the index page against the category page I will still getting this oddness.

To cut a long story short I worked my way up from the bottom of the page to the top until I reaced the very top line:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

This line was the only line that differed in the index to the category page, which read:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

So I took out the "Transitional" and low and behold it worked!

ScreenHunter_02 Dec. 10 19.41

No idea what Transitional does, but I hope this helps someone else out in the future!

Friday 4 December 2009

BlastWave: Lost at Sea

FINALLY ITS LIVE!!!! Oh my, it has taken literally months and months to get all the deals sorted but finally now its done and out.

Its Oliver and my latest game. It was supposed to be a quick re-skin of BlastWave, but as usual "quick" was a word that got lost during development as we got excited about it and decided to add more and more features.

The Art by Oliver Pitceathly follows a simmilar style to MonkeyMines. Hope you like it!

Thursday 26 November 2009

Christmas..

Well kind of.. We got our very pretty little tree up today:

photo

Im all hot and itchy now, so it better be bloody staying up till June.

Tuesday 24 November 2009

BlastWave: Lost at Sea, so very almost!

It has been months and months since Oliver and I finished (functionally) our latest flash game 'BlastWave: Lost at Sea'. It has taken all this time to sort out sponsorship deals, with all the various portals. We have been through headache after headache but its finally almost time to release to the general public!

The following is a little promotional clip done by MiniClip.com for the game, quite cute we think. Anyways stay tuned, to play the game in the next few days!

Thursday 19 November 2009

Bike Be Gone :(

Went downstairs to the first floor carpark this morning to grab my bike for my morning 15min cycle into work to find that all that remained was this:

photo

First time I have ever had anything stolen, all they left me were a few tattered remains of my bike lock as souvenirs of happier times. Looks like my journey to work got that bit longer :(

Monday 16 November 2009

Tramp-tastic!

I used to be into messing about on trampolines which is why this video on Gizmodo caught my eye. I have watched it several times now and im half in awe of this and half cringing in fright of how dangerous the stunts are he is doing!

Thursday 12 November 2009

Google Storage Increase

ScreenHunter_02 Nov. 12 08.15

They are upping my gmail, picassa, whatever, storage from 10gb to 80!

ScreenHunter_03 Nov. 12 08.17

Happy days!

Wednesday 11 November 2009

Andromeda Software Development - Lifeforce 2007

I know this is now a coupple of years old, but just stumbled accross it.

I have always been into the scene but from a distance, some of the stuff is ameturish, some is a programming marvel (the 4k,32k,64k comps) but this is just plain beautiful. Its a demo (all code) from ASD (look them up on youtube if you want more from them) called Lifeforce, enjoy!

Tuesday 10 November 2009

Sound Cloud & Previous Mixes

Been messing about with Sound Cloud recently, just seeing what all the audio related fuss is about and I must say its quite good. I have uploaded some of my mixes up there (not all of them as there is a size restriction on the number of uploads). I have also gone back and edited some of my old posts as the links to my old mixes no longer worked (thanks for Richard Davey for spotting that one.

Anyways, here are all my mixes done in release order (Tracklistings can be found in the post):

Post
Artificial - Intelligence by mike.cann

June 2009 - Intelligence - Download - Post

November 2007 - Future Harmonics - Post


November 2006 - Chill Trip - Post


June 2006 - Harmonics 2 - Post


May 2006 - Harmonics 1 - Post

Sunday 8 November 2009

Trifonic - Parks on Fire

Absolutely love the album, love the song and just discovered that I love the video, so have to post it really. Its Parks On Fire by Trifonic from the Album Emergence. Enjoy.

Sunday 1 November 2009

Bigresource.com IS SPAM

Thats it im angry enough with this site to actually write a blogpost about it.

Im sure if you are technical individual you have come accross this god awful site countless times. Over and over again you type in a query your problem into google, something like "php upload The connection was reset" a perfectly legitimate question and one that probably has been answered on a forum before. You then go through the google results and more often than not you come accross something like this:

ScreenHunter_02 Nov. 01 19.16

You read the title thinking, oh this sounds promising, may be the same problem im having. You click it and then are presented with this:

ScreenHunter_03 Nov. 01 19.16

Its at this moment you start to get that little suspicious sensation that you have been on this site before and have ended up being totally pissed off but any remember why. Anyways, you read the text, great, sounds like it is similar to my problem, so what were the suggestions of how to fix it? You scroll down imagining the answer to be down a little..

ScreenHunter_04 Nov. 01 19.17

Umm.. hmm this doesnt look like its a forum post reply.. looks like a whole nother big list of problems, perhaps I should scroll down a little more...

ScreenHunter_05 Nov. 01 19.17

Ahh these look like the responses to my question... oh wait a min they arent... hmmm so what are these? they look like more questions. So whats going on here then? There seems to be no responses to the original question, no link to the original post, nothing, so what is the point in this site and why does it rank in the top 10 of many many google search queries?

Well it seems like all it does is spam the internet with totally useless pages that google seems to rank highly, basically its SPAM and bloody anoying spam at that.

I urge everyone who has come accross this site and come to the same conclusion to report this as spam to google using the the following link:

http://www.google.com/contact/spamreport.html

Lets get this god-awful pointless bag-o-crap off the net once and for all!

Friday 16 October 2009

What is Google Wave Anyways?

I just thought that not everyone knows what Google Wave actually is. Well this video does a good job of explaining it in like 2 mins:

Thursday 15 October 2009

Google Wave

2009-10-15_1400

Had my first proper real-time wave today and although I was a little skeptical at first I must admit it really worked very well and surprisingly was actually alot of fun!

Im honestly not sure whether it will take off and become the 'next big thing' or not, but I hope so! I would love to write all my blog-posts, emails, msn conversations in one convenient place and have realtime updates an backups.

Anyway, if you are lucky enough to be in the preview add me mike.cann@googlewave.com and we can have a chat about it :)

EDIT:

As a quick edit, i have just installed a new plugin for wordpress that lets me embed google waves, so if you have google wave you should beable to see the following wave in full:

[wave id="googlewave.com!w+65k3TZQWA" color="#000000" bgcolor="#ffffff"]

Tuesday 13 October 2009

10/GUI

This sort of thing really gets my juices flowing. I want it now!

Thursday 8 October 2009

In a Different Time and Place..

Wow this is a real blast from the past. Photos from my trip to America just surfaced on Facebook, tagged by one of the other lads that went Jakob. Some of them are great, so I grabbed em and chucked them on my picassa.

Ahh some real memories here..

Flash to IPhone CS5

322955593_67152962ab

I know this news is a coupple of days old now, but I havent blogged in a little while so I thought why not.

It looks like the new version of Flash (CS5 or Flash player 10.1 however you look at it) will be supporting compilation to native iPhone apps.

This is fantastic news as I have been interested in doing an iPhone app for some time and have even gone as far as reading the docs and purchasing the Developer program.The stumbling block was the learning curve with Objecive-C. Now tho it seems I should be able to get away with just learning a new nuances with Flash->iPhone.

What does this mean? Well some of my previous games BlastWave, IcySlicy, CodeDrop, BlastOut would all work well on the iPhone, however I detest simply re-hashing old ideas so likely ill be making a very simple flash game to start off with that will take advantage of all the new inputs the iPhone and Flash10.1 will allow!

Thursday 24 September 2009

Called It!

500x_fs-details

FoodScanner is an iPhone app that lets you scan a barcode and it then tells you about its nutritional info. Whats frustrating is that I had this idea over a year ago, the idea was that you scan an item, enter how much of it you ate, then the app keeps a running daily total of the amount of GDA of calories, fats, salts and more.

I didn't chase it up as although I knew it possible to read a barcode from an image, it would of been difficult to tally the code to a specific item as each store has its own identification numbers.

Ah well, im sure now the idea has been proven we will be seeing Tesco, Sainsburys etc bringing out their own "measure your nutritional input" iPhone app!

Thursday 3 September 2009

File and Folder Syncing

For a long while I have been worried about my lack of backups for my machine. I detest the fact that i  actually lost some of my older work. Getting the Mac has been the final straw and my instigator for change.

So at first I started looking at backup tools, these seem to fall into two categories, ones that backup locally to other hard drives and networks and ones that backup to 'the cloud'.

Now the situation is that on the Mac I have to run parallels for WindowsXP as FlashDevelop only runs in windows and the project files must be stored on the 'local windows disk' for the project to work properly in FlashDevelop. So the situation is I have three sepparate 'locations' where I need my files backed up from:

2009-09-04_1013

At first I played around with a few locally backing up solutions that required the machines to be on the same network. The issues with most of these was the fact that they either created temporary 'sync files' that reside permanently in the folder you are backing up (synctoy).

Other factors caused me to quickly look at the alternative method which is syncing your files with the 'cloud' which then means you can sync the cloud with all your devices.

2009-09-04_1025

Now there are several differnt providers out there for doing this. Ill list them in the order I discovered then and then subsequently tested them.

The Alternatives


logo

SpiderOak was the first one I came across and the one that initially peaked my interest. It appears to be the new kid on the block when it comes to file and folder syncing. These are some things I liked and disliked about it:

thumb_up Syncs based on a timer rather than constantly checking your files for updates.
thumb_down Selecting files and folders to backup is hideously slow and results in many frustrated clicking (buggy interface).
thumb_down Buggy uploading and syncing, sometimes you cant tell whats chewing your bandwidth or what is going on behind the scenes.

logo

Ironically I read about Dropbox from the SpiderOak press release, in which they boast themselves superior to their nearest competitor DropBox. DropBox seemed to me like a much more mature solution than SpiderOak.

thumb_up Simple to use interface (intergrates directly into the filesystem)
thumb_up Has a very clever delta-file change system that is system-wide.
thumb_up File version, this is great if you mess-up as you can roll-back to a previous version.
thumb_down Simple to use interface. This is what I like to call the "Apple Effect", it may be easy to use but sometimes you want more options and settings to control how the app functions.
thumb_down Only one "dropbox" so only one root folder can by synced. This is a BIG issue and the one in the end that turned me off DropBox. I know that you can setup symbolic links so that you can sync external folders but I found this to be error prone and hacky at best.

Live_Mesh_Logo

Live Mesh is Microsofts offering to file and folder syncing problem. I actually heard about this a few years ago and even used it quite abit, but mostly for simple file sharing and using thier unique VNC remote desktop ability (great for accessing the home PC from work). I recently rediscovered it again while on this crusade and decided to give it another go for my new purposes.

thumb_up Includes remote desktop (VLC)
thumb_down Is Microsoft and hence dont get on with other platforms. Although there is now a Beta Mac version of LiveMesh im dubious as to how often this version of the software will be updated, and as I am working across Mac and Windows I need it working on both.
thumb_down No delta-file sync. This is the killer for live mesh for me. All changes to a file, no matter how small, cause the entire file to be re-uploaded.
thumb_down 5GB limit

2009-09-04_1100

SugarSync is the solution I am currently using although it isnt perfect it seems to fit the bill on most counts so far.

thumb_up A good payment system ($5 per month for 30gb)
thumb_up Intergrates nicely with the OS on Windows and Mac
thumb_up Nice interface consistent accross platforms.
thumb_up Can prioritize which uploads get done first.
thumb_down Cannot sync folders to within other folders.
thumb_down Is buggy and sometimes corrupts files. This is my MAJOR gripe with SugarSync right now. There are some very obvious bugs that havent been addressed.

The Perfect Solution


From my adventures I have learnt alot about the state of play in the syncing arena. Each of the solutions have their positives and negatives. Currently SugarSync is winning for me, but DropBox is a close second, if only they would allow you to sync folders that dont reside within the dropbox folder.

My ideal syncing app would have the following features:

add A structured pricing plan where you only pay for the space and/or bandwith used
add More control over when files are synced (simmilar to SpiderOak) where you can set how often files are updated to server. This is important as when coding your published file (be it an EXE or SWF or whatever) will change often and hence may need to be uploaded to the server very often and costing alot of bandwith.
add A method of excluding certain files and folders or file types from syncing. SVN lets you do this, good for excluding those temp files that change alot.
add A good delta-file-change upload system, see DropBox for an excellent example of how to do this right. This method of delta-syncing means that you can potentially sync massive files almost instantly.
add A method of sharing your syncs with other devices that dont belong to you (your friends computers) or potentially with people who arent even using the syncing software (web-based-access).
add A good versioning system, including one click file and folder roll-backs.
add A method for controlling how much bandwith is used when uploading / downloading and the ability to pause syncing.
add When syncing temp files are created and then the data is filled in. This stops occasions when one device is uploading and another reports that a folder is fully synced.
add OS and File-system integration.

This is certainty not an exhaustive list but merely the main points that I can think of right now. I think there is definitely room for improvement in this area and the current solutions havent fully realized their potential.