mikepk.com about current projects contact


January 19, 2006

Update: While attending the Boston Web Innovators group, I got some really great feedback. People were excited in what Yajaf could do but most felt that this blog didn't adequately represent the technology I was describing. Stay tuned for some new material, documentation, and perhaps a live sample application or two.

A quick essay on what I think differentiates YAJAF from other frameworks.

What is Yajaf?

Yajaf is a library/framework for making rich web applications.

Why the name Yajaf?

It's mostly a joke, seems like everyone is releasing frameworks these days. I do think Yajaf has some really innovative and neat features I haven't seen anywhere else (yet). I know "javascript" is part of the Ajax acronym, the foundation of the library doesn't necessarily require Ajax.

Is it a library or a framework?

I tend to use the terms interchangeably although I'd say it's more like a library than a framework. The amount of "auto-gen" code is low.

Why did you write Yajaf?

I am currently working on a software product that, it is my intention, will eventually use a web interface. I decided to 'simplify' my life by creating a library. Heh, simplify.

So does it use prototype (dojo etc...)?

Protowhat? Honestly I didn't even know about prototype when I started this project. While those guys have done a heck of a job, this is a completely new library rolled from scratch. Some may say I'm swimming against the current, well I've never been one to follow convention.

Why didn't you switch to prototype when you learned about it?

Prototype is very nice, but my library works in a fundamentally different way. I have a system that, IMHO, is more 'natural' to work with from my experience with OO programming.

What do you mean 'natural'?

Imagine programming Java swing, or a C# gui except in a browser application.

But Javascript is just a scripting language, it isn't object oriented!

Actually, it is. Javascript gets short-changed as a programming language. Not only is it OO but it has some neat functions/features that other more 'mainstream' languages do not (especially in it's latest incarnation). I know, I was surprised too when I started looking into it. I may follow up on this blog with "magic-ninja-foo of javascript" I've learned, if there's interest.

But Javascript OO is "weird".

It is kind of weird, that's part of the reason for this library. It hides some of the 'weirdness' from you as you use it.

Are there any other example of coding javascript like this?

It is my understanding that Microsoft's "Atlas" project works in a similar manner to my framework at least from a cursory inspection. Even then my library/framework has some nice differences (and all the library code!).

Ok, so what makes Yajaf different?

I think there are several things that make Yajaf different but I would argue the primary difference lies in the programming model. It's a different animal from prototype style applications. I think this is a relatively big difference in terms of ease of use, but again your mileage may vary.

Yajaf Also contains (not all of this is unique):

What browsers does it work in?

So far I've tested in IE 6, FF 1.0 and 1.5 on Windows, FF 1.0, FF 1.5, Safari 2.0.3, and Opera 8.51 on Mac OSX, and FF 1.0.7 on Linux (ubuntu breezy). Can you tell what machine I do my development on? :)

Will it work in older / alternate browsers?

Probably not, I haven't done much testing beyond the above. A *lot* of work went into making it behave across those browsers (gah standards people!) and I can't imagine it "just working" in others.

Is the library extensible?

Why yes! In fact it's one of the benefits of the library. Every object in the framework can be extended with custom code.

Is there typecasting of data?

Javascript is, fundamentally, an untyped language. This makes it powerful in some ways, but can lead to some gotchas. Overloading of methods using different type arguments isn't really supported (although I can think of some hacks to allow it, it would get ugly).

Do applications written in Yajaf have 'teh snappy'?

Performance differs from browser to browser, but in most cases applications are quite smooth. Windows IE and FF are particularly good. On OSX Safari is the fastest browser I've tested. Again most of my test applications run smoothly (if not with the elusive 'teh snappy') on a 1.25 GHz Powerbook.

'Teh snappy'?

Sorry, a cheeky term used mostly by Macintosh users to describe the responsiveness of a user interface (usually OS X).

Can I make spiffy whizzy DHTML effects?

Yes you can, but that was never the intent of this project. Eye candy, swooping windows, fading, blinking, beeping, swooshing were all kept at a minimum. The intent was to make a solid foundation for making web applications.

Why the blog?

Ahh now we come down to it. I am interested in potentially opening up a web based IDE that would either be subscription based or advertising based to allow development of code using the library. I am using this entry to gauge interest in this kind of an approach. If there's substantial interest I'll finish work on the developer tool (docs + IDE).

Why not open source it?

Eventually, if I open up a web IDE, it will be open source. Javascript is inherently 'open source' in that it is an interpreted language (obfuscation isn't really a good solution, and it can be undone by the persistent). I am actually trying to make a living with my company, therefore I could use some kind of a revenue stream. The intent would be to charge for the developer tools (the web based IDE) or monetize via advertising. The resultant code would then be free to be used / hacked on your websites / web applications (no draconian licensing agreements, although plugs for the library/IDE would be appreciated).

What happens if there's not enough interest to make a developer tool available?

Well it was never my intent to make this framework a product, and I can just as easily keep it completely internal until my initial product is complete. It just seemed like people might be interested in using this kind of a thing now, and having some income (any income!) would be nice. :)

Can I see it work?

I have some flash-based movie captures of it in operation as well as some screenshots coming soon. The flash movie captures use vnc2swf and show some "choppiness", the choppiness is due to the screen capture method and not the application. I'm still looking for a better way to take cross platform movie captures. (any suggestions?).

Why not a live web page so I can play with it?

Call me paranoid, but since Javascript is inherently open source (see above) I'd rather not have people reverse engineering Yajaf if I decide not to send it out into the wild.


Nope, maybe after I get some feedback I'll reconsider it.

If you have a spare second, I'd love to get quick feedback from you. I'm trying to gather how interested the developer community is in this.

What do you think of YAJAF? (click as many as are applicable)
There's already too many libraries and frameworks out there, not interested.
Not sure if I undestand whats new/different, not interested.
Not sure if I undestand whats new/different, but I am curious to see more.
I'm excited by the idea, but would only know for sure once you open it up.
Create a live demo now! I want to see a real site running with it!
Looks promising, I'd like to see more (more screenshots and screencasts), give me more details.
The idea of a web based IDE sounds great (if done properly).
I'd pay ($5-$10) a monthly fee to access a web IDE / API docs.
I would never pay, but advertising would be ok.

Free polls from Pollhost.com

None of that applies to me, how can I ask other questions/give other feedback?

Well this is a blog after all, comments.