Reflections from The Ajax Experience

Posted in the ajax experience by Kris Gray on October 29th, 2007

Aza Raskin is one of my new heroes. I talked to him a little bit and was able to get some stuff ironed out in my head that I was really uncertain about.

I was curious about the people necessary to make a killer UI. As it is, we have 2 technical people, and 1 designer. The designer is doing some great stuff, but he’s still in the designer arena. Which is not necessarily taking into account the issues Bill Scott was talking about. We really need a User Interface designer, which is totally different then a Web designer, and ideally we would all be abstracted by an Information Architect. As it seems unlikely to me that we are going to hire either of the missing two players to our little team (the UI designer and architect) we will need to mix responsibilities a bit. As it stands any member of the team can become a UI Designing expert, but if its the designer he will have no checks beyond his own conscience for his designs. Where if it was me, I would be able to check the designer, but would have the confliction that I don’t want things that are hard to develop. (And things that we don’t know how to do we always consider hard, thus I would subconsciously be removing features I don’t know how to do from the pipeline)

It wasn’t until the SmartClient demo, and even OpenLaslo possibly (I only caught the tail end of this demonstration but it seems like the same idea) that we are neglecting our SaaS advantages. The only benefit you get right now is that installation is super easy, we just provide you with a login and your ready. Yet you can’t get at your data with customizations in any serious fashion, negating any benefit these tools might have brought to you.

So I was thinking about Offline Ajax today and realized that in some situations you just won’t want to use it. An offline Gantt would be nuts, any changes you made would cascade through the system and with its offline delayed nature, you would get massive conflicts. Its possible for a company to lose at least a whole days work to hard working PM who did a bunch of planning offsite in the morning and then synced back up at the end of the day.

Yet for personal applications, something that conflicts are much less of interest, you probably can’t wait for this. Google Docs, wonderful. I am curious if they have Google Docs implemented already, it seems like such a wonderful marriage between a product and a technology.

CSS, for all we hate about it just isn’t getting any love. It doesn’t have as many frameworks, it didn’t have many sessions (maybe just 1 that I know of), and the majority just despise it. I think Aaron Gustafson dismissed me as a piton after I re-iterated my opinion that CSS isn’t good. CSS is a third of what we need to work with, and it seems we are just ignoring it.

This area is still so young. Name recognition wise, the big names were all here. The creator of Selenium, the creator of jQuery, the writer of the AJAX for Enterprise Applications book, a member of the W3C, a member of the ECMAScript specification team, and just a slew of guys who have really pioneered the area that everyone is so mushy over.

Be careful which session you step into. Some of the sessions were people telling you about why the world needs a certain technology, and then would proceed to describe why their product is that exact technology. In the end, you know quite a bit about something called Thinwire, but unless you need their specific technology for your company then you’ve just wasted an hour.

We didn’t take full advantage of the raw brain power in the room. We had some of the brightest web minds in the world in one room, and we only spent about an hour having an open conversation.(two really, one each of the last two days) Sure I could go talk to these guys individually, but we need the group talks even more as I can take my comments and questions to email. I would have liked a room that was reserved all day for different conversations, first two hours CSS, then two hours of JavaScript, then two hours of SCRUM. Get it? Got it? Good.

We at eProject had originally intended to write our own bits of logic into our library so that we didn’t have an explosion of improper jQuery throughout our system. I have already seen the raw power of these libraries in action through use, but after seeing some of the technical issues involved, and the massive brains on the developers of these libraries I’ve grown just a bit smarter to realize thats just insane. Why would I want to spend precious time re-writing something thats already 10x better then what I would ever write? McFly? McFly? Anybody home? Now it isn’t totally my call to let the bonds on jQuery go and let it propagate through our system, but when faced with a choice of having me spend several months to implement something thats already been done, or use whats out there, I don’t see how they could disagree.

We need to start doing usability testing on our UI’s, somehow before we become committed to them. This will certainly be something I’ll have to add to my plate if its decided I need to become the UI Designer or if it takes to long for us to get one. Right now, we hope what we implement is good, we try to stick to what we already do as much as possible so that we can rely on consistency and the belief that if it already exists and people don’t complain to much it must not be that bad.

I need to blog more, and better. I really enjoy getting a bunch of hits, its so much fun, and when I blog I get rewarded as such. When I don’t, nobody shows up to the party. Huh.

I want to become a Refactotum. Man this sounds great, and there were very positive comments in the class about the benefit a developer can get from programming for open source. My first target will be JSUnit if possible as I just HATE that it looks so lame. I think I can make some big contributions, since I use it so much it will be a positive production gain for the future.

I also want to get back to spending Fridays on non sprint tasks. Every friday I pick something that I want to improve in the eProject system, and dig in. Usually refactoring a component and documenting it would take about a day, and thats how we got a bunch of our current framework. The documentation needs to be better, I’ve tried to use it myself and ended up looking at the code. Booo!

Not enough testing sessions for sure. I was jazzed about both classes I went to, the Selenium class, and the overall QA which included a bit of selenium, jsunit, and random other topics on testing.

We need to test more, everyone knows that. I have this suspicion that we may not be as good as we think we are, and thus when they tell us to do something we don’t know exactly how we will do it, and what factors we should test. Then I think that, that is what design is for. Once we have a design we should no all the testing points, but we feel that its just faster at the moment to product a lot of code, have it smoke tested, and then move on.

No comments

TAE: Day 3 – Ajax Futures Q and A

Posted in the ajax experience by Kris Gray on October 26th, 2007

Douglas Crockford – Yahoo
John Resig – Mozilla
Andre Charland – Nitobi
Aza Raskin – Humanized

There is a debate if Javascript needs to evolve, or if we need a large advancement in one version.

– A gradual step is important, mainly because the browsers just don’t adhere to the specifications that are laid out for them.

– Gradual is easier to sell and bite off, more likely to bring the community along with it.

– No upgrade path from ECMA 3 to 4. typeof(null) == object, but will return null. There shouldn’t need to be a significant upgrade between the current and next version of ECMAScript.

Mozilla is committed to providing a JavaScript 2 implementation as soon as possible after its released. Is this quick adoption a good thing?

-Its not just FireFox, lots of browsers are trying to quickly adopt and push out JS 2.

– There will be an ECMAScript 4, but he hopes it doesn’t take the form it currently has proposed. Its to radical. Undoes the goals of the original design. Switches from prototypical to classical, loose to strongly typed. Javascript already won, we don’t need to add some stuff to it to make it the king, its already the lone royal family. We have a huge range of users in JavaScript, copy and pasters, as well as PH.D mathematicians, and we don’t want to leave any of these guys behind.  Version 2 doesn’t have a problem to solve, while persisting the issues of version 1. The two features with the worst performance are eval() and with().

Does mozilla have a response to these problems coming up in ECMAScript 4?

– It will help development and performance. He generally seems for it.

Browser innovation probably shouldn’t happen, the frameworks should do it. At least then we have cross-browser support. We should rely on the frameworks since we don’t want a repeat of the browser wars which are very disruptive.

– The libraries are consolidating, they are beginning to look the same. Maybe in a year after they all converge to one point, we should refactor this logic into the browsers as the methodology has been decided.

– Agree’s, we have a lot of great libraries but developers need bits from all of them.

Resig (in response to Charland)
– We haven’t had to scramble after each of the latest browser releases. There hasn’t been many new features and there isn’t much that we have had to work around for each of the new browsers. XMLHTTP for local files has an issue so we had to backtrack on that, so they implemented one new feature and it was buggy. (a joke I’m sure)

– The difference between innovation now and later is that it used to be willy nilly, now we are on a path with some sign-posts.

– The browsers releasing new versions gives them an opportunity to improve the browser features not just the DOM or CSS model. So new browser releases are good and we shouldn’t just despise them for possibly breaking new things.

– Why do we need to have Javascript turned off? Why isn’t it javascript secure enough that people feel they have to turn it off to be safe? Lets get Javascript there.

– There is no other environment where we have to plan for the possibility of our environment not being available.

Do you think there’s space for vendors in the AJAX space?

– Room for open source and proprietary solutions. Have to be careful what we open source, if they open source to much they may lose all thier income. They still sell ASP 3.0 licences (services he means maybe?) he’s amazed how many enterprises out there are doing creaky old things behind the firewall. Javascript was o`reilly’s subject of choice for books.

Missed question

– Some companies want to buy software, even though the top 4 frameworks are open source, they still want to pay for the library. Though why not use the library and pay for the support? Thats the dinosaur of corporate world.

If there was one specific thing we can get from MS for IE what would it be? And how would we get that?

– The thing I would most like to get from IE is a kill switch. If we could kill IE 5.

Raskin, Charland
– A really good debugger, they NEED a firebug.

– A bunch of things would be nice, but there’s nothing in particular, I’ll just say a W3C compatible eventing model.


– Not quite sure.

– Google Gears *cough*

– I agree, gears has great potential.

Multiple versions of the libraries?

– We’ve been looking at this strongly. If there is something we can do to make the common code-bases faster, lets do it. Caching javascript libraries in the program by version is a good idea, we’ll see.

Not understanded question, something about Flash, Flex and Silverlight.

– We have to fix the web or it becomes irrelevant as a platform. As AIR could take over platform.

Why choose between the meekly supported SVG and Canvas if Flash is everywhere?

– Most browsers support it, mostly everyone (except ie). And I have been using it a lot.

– Its tough for Flash to interact with the rest of the page. Things don’t lay over it well, we can’t script it easily.

Who wrote the ECMAScript 4 spec?

– Adobe, Mozilla, Yahoo and Microsoft. The first to support it, the later two oppose it.

– Probably a better question for Brendon Eich.

– I support them creating a new language, but if we are going to do that, don’t screw up Javascript while you do it. Just give us two languages. Goto and read the white-paper, then go to where it says participate then join the mailing list.

 If I misrepresented your opinion or misspelled your name please comment away.


TAE: Day 2 – Ask the AJAX Experts

Posted in the ajax experience by Kris Gray on October 25th, 2007

This session is going to be insane, the information that I’m expecting may warp my fragile little mind.

The Experts
– Stuart Halloway, Relevance (Formerly CTO of Develop Mentor)
– John Resig, jQuery (Mozilla)
– Alex Russel, Dojo (SitePen)
– Aaron Gustafson, A List Apart (Easy Designs)
– Joe Walker, DWR

The questions.

How do you choose a framework?

– A few years ago the advice was, get help somewhere. Now Prototype is his bag, but none do exactly what he wants, so he feels the need to mix and match.

– I use prototype, like everything what everyone else is doing.

Why do we need the diversity of frameworks? Should we be working on consolidating them?

– When you choose a framework your buying into its methodology of scripting. The features may be the same, but that doesn’t mean it doesn’t matter.

– Dojo tried to bring all the developers under one roof and consolidating that inovation going forward, but they failed at that pretty miserably.

– I want it all, I want small light weight, while also being able to get the full kitchen sink framework.
– Someone do RSpec in Javascript please! K thx.

– Get the guys together in one room and make some decisions. Get people to endorse libraries and to have them play well together.

– Libraries MUST work together. jQuery has concerned themselves in a militant way to working with other libraries. jQuery even works with older versions of jQuery because of this.

Are any of you going to be using browser plugins in your development? Or are you focused on the OpenWeb?

– All open web, some customers request it, but he still hopes to use DOJO on those projects, atleast to extract the effort of flash development.

– Flash really excels at a lot of things, and has tremendious penetration. So it has a purpose, but there is not a reason to TRY to use Flash.

Are applets coming back?

– There is to big a hurdle to start adopting again, considered an old and legacy product. Joe turns it off in his browser.

Should we abandon CSS positioning in favor of Javascript Layout? (Whaa, JS Layout?)

-CSS isn’t broken, the multi-column module needs fixing (or maybe not, see comments), and there are some really nice things coming. You can do anything with CSS, it may have been convoluted, but you could still do it. (Ohh I got one I don’t think he can do. Damn footers) Javascript for layout is going to be all inline CSS, so he is against it.

– Keeping the seperation between JS and layout is very important.

– Doesn’t agree with Gustafson about how CSS isn’t broken. The Border box model is clearly correct, though the margin box model isn’t clearly wrong. I can see Alex trying to be civil while holding back his venom for CSS. Oh how many sleepless nights has it caused this poor man.

– Agrees that W3C is dysfunctional, CSS isn’t getting any progress. Most browsers allow you to do DOCTYPE switching to determine the box model you desire, some browsers have started trying to allow you to sepecify the box model in css. (Mozilla does this) If you need someone to complain to about CSS, Aaron Gustafson is your man. (wink wink).

Mixing and Matching different Toolkits with different formats. So GWT is tightly integrated with itself, what should we do to get it interacting with other frameworks?

– Uhhh, GWT?

Whats broken about CSS?

– So if we had the table layout module for CSS it wouldn’t be AS broken. CSS is kind of like Ant it works great for what its supposed to do, but horrible for things that it wasn’t expected for. No hooks, we can’t just abstract the problems with a framework like we did for the DOM.

– Variables would be cool sure, theres a battle between what designers feel comfortable with vs something a developer would feel comfortable with. Designers dont always fully understand variables.

– CAD made a transition similar.

– CSS is hard, we need a class on CSS just cause its complicated, not because people don’t understand it.

What are you guys doing to maintain the purity of Javascript?

– Worried about where JS 2 and HTML 5 are headed, excited that its maturing but scared it may mature into the ugly stepsister of the family.

– No expressiveness is being lost, you can still write things as you are now.

– Closures are great give us half of what we need, if we had continuations we’d be done, we could do what we wanted. But with JS 2 its to now focused and not acceptancing large changes. The inheritince sucks, you don’t want is a, you want has a.
– The language isn’t telling us what it needs, and we don’t fully know what it should be.

Why would you tie a client side scripting language to a server based framework? Such as DWR which is Java only.

– Realized he excluded 70% of the market by doing java only. He’s doing a job and doing it well.

– With something tightly integrated like DWR, you can make some assumptions.

– GWT is the far end of the spectrum, not DWR. GWT uses the bad part of the java world, the language.

Where does SVG have a future in the different browsers?

-Mozilla has a lot of great things coming for SVG. Though Canvas is much more exciting.

Some CSS question, didn’t get the question and Gustafson basically said, it can already do it.

So thats about it, you can tell as developers we can discuss topics of soreness for a LONG time. They could have another discussion on CSS for at least 2 hours. It was definitely the sore point of the discussion.


TAE: Day 2 – Refactotum

Posted in the ajax experience by Kris Gray on October 25th, 2007

Started the day off with giveaways of an iPhone and iTouch. My luck was so bad I didn’t even get called in the subsequent giveaway of about 10 different books.

Another Stuart Halloway class, he’s really enjoyable to listen to.

Time block of four hours. The amount of work needed in any project is really endless, you can always add more cool features, fix more bugs, write better documentation, so isolating the amount of effort you plan to contribute for this particular effort to four hours keeps your eye on the prize. Though I’m sure Stuart would encourage you to block off 8, 1o, 12 hours anytime you feel like.

Choose an open source project, make sure it will hold your attention for four hours. It will teach you something so choose one you want to get better in.

Get the latest code, probably with subversion.

“The great is the enemy of the good.”
– Wise man say

Getting metrics on the project, run the tests, observe it with code coverage. Your task can be as simple as upping the code coverage by adding a unit test.

Contribute your change, and submit it to the maintainer.

“If this is your first night at refactotum, you have to refactor.” – Tyler Durden
In the next few months you must go contribute to open source, go blog that you did it.

TiddlyWiki, single page wiki.

Two JSUnit, YUI and Dojo are available testing frameworks. 

Crosscheck, Multi-browser unit tests. Uses a stubbed model of the browser. I’ve seen more and more of this product, with a big push from TheFrontSide guys, they could become the tool for unit testing. (And of course start a nasty little religious war on JS Unit testing).

Able to find an un-needed bit of code in the control that was already in the YUI library. Able to refactor that out.

“If there is more then one line of comments in one hundred lines of code, I’m irritated.”
Convert the comments to code, instead of
if(age >  60) //— Is user a senior citizen?

Nobody uses Composed Methods anymore.
Code with Composed Methods looks easy, the developer doesn’t even look that intelligent, but you are very wrong. This type of programming takes discipline and lots of smarts. So far I have Aspect Oriented programming and Composed Methods as areas I must delve into more.

Eliminate the namespaces. Namespaces makes the code ugly and hard to read, and its obscure. Stuart obviously hates namespaces, yet I like them. I dislike the need to look up the namespace basically because we have no intellisense. At eProject I make the fully qualified namespace not required but I do think I should focus on this becoming the norm and trying to name items better. EventManager.Attach is still long for something that will be referenced quite frequently.

As developers we don’t internalize cost.

The tragedy of The Commons. Conflict of personal interest against the common good. I don’t want to stop driving my car because of global warming, let everyone else stop. 

We only spend about 15-20% writing new code. The worse state the code is in, the less we write.

Anything that makes writing bad things more painful, we are less likely to write bad things. TDD and Pair programming are very helpful in this.

Life cycle cost. What is the cost of your product? All that code in the product has a life cycle cost.

The politics of getting your changes accepted.
– Don’t be condescending.
– Do something and offer a test.
– Play the politics. Use the right channels, submit it to the people that you are supposed to, but if you need, go straight to the source and talk to the people who matter.
– Rails was the hardest project to contribute to, they are just smart and strict.

Getting your employer to be enticed to releasing IP as open source.
– Get bits little by little released.
– Relevant spends all Friday’s working on open source.

No comments

TAE Day 1: Keynote

Posted in the ajax experience by Kris Gray on October 25th, 2007

Yea it really seems like I should have opened with this, but hey I’m trying to catch up. Its midnight and I gotta be up at 7 (4 my usual time) so gimmie a break!

A quick note on the vendors, because well, I made a note about it. (Probably the extent of my go getterness). The vendors room here is pretty small, there’s room for about 6 and they got I think 7. Mainly some big names, Google, AOL, Sun, Adobe, and Mozilla, though Qooxdoo, and thinwire (who?) are here too. Basically a bunch of people pushing frameworks. Do these companies even know why they are building frameworks? Who out there cares that AOL has an open blogging API? I’m not actually curious enough to ask the dude giving out shirts though so you might want to forget I talked about it.

 Now, on to the keynote, I could make this very long, or pretty brief, lets go for brief shall we? Its late.

Ben and Dior presented a list of items they wanted to see improvement on from 2006, the first item was fast JS, which I assume is DOM interaction as JS isn’t that slow. They had some comments about all the great stuff Mozilla is doing, Tamarind, the things IE isn’t (IE 8, I mean the super secret next version of IE), and the projects to help IE such as Screaming Monkey. Screaming MONKEY!! Sorry its fun to say.

Another item on the list I made note of was Framework Consolidation, yet we’ve seen many more frameworks come into being. I really wanted to drag these experts aside and ask them what the hell they were thinking. We have a basic free market based on features deciding what the best framework is. Developer adoption of the desired way to program on the web will determine the direction we want the web to go. Plus if we still got people making web frameworks, something must be driving this need. 

After analysis of many different frameworks their recommendation on which framework involves a list of all the possible frameworks on your LCD monitor and some darts. Basically embrace one, and run with it.

Apparently XHTML lost. We’ve abandoned XHTML 2 for HTML 5, I know I read this recently but I’m not sure why I didn’t realize that XHTML is now a dead end. It shouldn’t even be a choice between HTML 4.1 and XHTML.

WhatWG is pushing HTML 5 forward, and they seem to think that its important to start standardizing the components of a page. Such as a Footer tag, container tag, since we have these anyway why not have them marked up properly.

CSS Layout is murder on productivity. If you think about how long it takes to get things marked up and to do simple layout techniques you spend a very disproportionate amount of time on this one area.

Some progress on this with new CSS frameworks, YUI, Blueprint, YAML.

AIR desktop apps with HTML + JS, great possibility for the future.

Phobos – JS on the server. Since we have js on the client, and use js in the transfer as JSON, why not use js on the server and just complete the picture. Yea I used Javascript in Vanilla ASP too, but they never mentioned anything about that.

It used to be good enough that you had a product with great features and that was enough, yet its no longer acceptable to have a feature without good ease of use. And now you need a WOW factor to really make an impact.

The User Experience is key moving forward because “Attractive things work better”, so your product works better, just because it has that WOW factor. (Wow doesn’t stand for anything, its what you said when you first saw the iPhone in action)


Next Page »