Thursday, January 14, 2010

Canvas on Flash on Canvas

Tobias Schneider got Javscript render Flash on Canvas. Check the demos here!

Flash Gordon is back!

On my 1st gen iPhone the demos run slow. Especially the playback fr the first one and the zoom for the second. But this is awesome as far as JS craftsmanship goes!

Where's Canvas in Flash?

Monday, December 14, 2009

MySQLWorkbench 5.2.10 Beta is here

As I was saying a while ago MySQLWorkbench works pretty nice for making MySQL behave.

Until now I was running 5.1.18 but today I noticed the release announcement for of the 5.2 Beta. The Alpha didn't quite do it for me as it was too unstable. I did get a crash on the 5.2 but 5.1 crashes too and with the EER Diagram I'm working on it's not really a surprise. So now I'm running the 5.2.10 Beta and it's really nice with the extra SQL Dev and Server Admin features.

I still had to fire up Sequel Pro for a CSV import but hey, the MySQL crew says that's a planned feature to come soon :p

Rock on!

Sunday, December 06, 2009

programming is hard

Just going trough Robert L. Glass' "Frequently Forgotten Fundamental Facts about Software Engineering" list.

True, true...

The "Estimation" and "Requirements and design" parts almost made me weep like a child :)

Yeah, good programming is hard.

And what is good programming?

Maybe it is the point where the craft ends and the art begins. The point where you memorized all the moves and you yourself become the tool.

For me good programming is the kind of programming that gives me a sense of pride when looking back at after a while. A day,  a month, maybe a year or two. Either "this is really good" or "this is ok but now I'd do it better" will do.

Friday, November 20, 2009

What is a Javascript closure?

"a closure is a first-class function with free variables that are bound in the lexical environment"

"a closure is the local variables for a function - kept alive after the function has returned"

"when you pass a method reference out of the context in which it was defined, the method still has access to its parent context"

"a powerful, low level JavaScript library designed for building complex and scalable web applications"


Now the last one will be a bit harder to chew :)

Google released their internal JS library as Open Source code. And it looks sweet.

Until recently I was using Dojo for the better OOP architecture support as opposed to jQuery. Then I realized that the two serve different purposes. Now I use jQuery for augmenting my CakePHP views. It's much easier to do and you have a better chance to find a plugin to use as a base for your needed functionality.

But I wonder if Closure is better than Dojo?

From the first impression it looks that they drew a lot of inspiration from the Dojo Toolkit. Starting with the require/provide directives that instantly made me think "Dojo". I didn't get a chance to dive in yet and I'm still searching for some good online UI demos. I guess those will come soon but not from Google. I don't expect too much support from them and I suspect they'll leave the library follow it's own path once they released it into the wild.

Nevertheless Closure will be a tough player in the Javascript frameworks arena. If Gmail and Docs run on it then it's already production proven. But I guess jQuery is still better for what is normally needed in a web page. For one-page JS apps Dojo and now Chrome with their solid i18n, themes (Closure?) and templates support still rock.

Thursday, November 12, 2009

and your routes shell be free

CakePHP routing and reverse routing does not work properly in shells. That is because your defined routes in routes.php are actually not loaded at all. Maybe 1.3 will fix this but until then read on. 
To have proper routes in the email messages you are sending from shells you need to do this in your shell at the top:


App::import('Core', 'Router');
include CONFIGS . 'routes.php';
define('FULL_BASE_URL', Configure::read('App.HttpHost'));


where App.HttpHost is something you set manually in your bootstrap because the shell doesn't have a clue about your site and the web server.
Bake on!