Ajax World Conference - Day 3
13 04 2008Finally, my notes on the third day of Ajax World East 2008 in New York City.
Opening Keynote: RIA Adoption in 2008
Anthony Franco from effectiveui started the day with a very engaging keynote. He was easily the best speaker of the conference: great delivery, engaging, interesting…
I liked the way he described his company: “we make cool useful stuff for companies who pay us”. They are the ones behind the famous eBay desktop client which has gotten so much press and is always referred to as a good example of a Rich Internet Application (RIA) built on Adobe AIR.
He started by questioning the value of RIAs and the tunnel vision of the developer community, with the following statements:
- The Value of RIAs: Why would my mom care?
- You are talented web designers: my mom is not impressed.
Why should you care about his mom? Well, she could spending thousands online but nobody takes the time to talk to her.
He used Starbucks and Target as two examples of companies that manage to create great in-store user experiences but failed to re-create that same user-experience quality online. On the other hand, he used 37Signals as an example of a company that is seen as the gold standard of the Web 2.0 era and pointed that one of the reasons they are so succesful is because they own their product. They dictate the how, the where, the why. They are the audience since they use their own products. However, a lot of us are not the audience for the stuff we build. A development firm cannot dictate to a car insurance company how their customers must be buying car insurance because they have to worry about issues such as compliance, etc…
Anthony believes that Web 2.0 should be about Utility + Community + Engaging Experiences. However, he doesn’t believe we have achieved that very well. He used a quote from Chris Bernard to illustrate what he believes is happening currently in Web 2.0: “Web 1.0 = Bad Photoshop, Web 2.0 = Good Photoshop”. Anthony’s address was like a wake-up call to the IT & Web communities: “We are not talking to the audience, not talking to our customers. Shame on us.”
He then went on to address every player in that community and tell them that they are responsible for this. We all are. “It is your responsibility. Stop pointing the finger”:
- Designers:Lose the ego and listen to your customers
- Developers:You are not the smartest person in the room. Drop the religion and listen to your customers. Putting it in front of users even if the code is ugly means you will get more user feedback early.
- Product Managers:Stop Talking and Start Doing. Most great products are figured out along the way.
- Marketers: Scream Louder! your customers are counting on you to be their voice.
- CIOs and CTOs:The Technology does not matter to your customers. If they can’t use the applications you build.
- Customer Support:Don’t worry, your job is secure for a while.
- CFOs: Find the money
- CEOs: Watch your back. Give your team the latitude to fail in incremental ways. As long as they are failing in the right direction, you are doing the right job.
For each category of players, he used quotes that he has heard in the field that reflects the problem with this folks:
- Designer: “Good design intuition is more important than user interviews”
- Developer: “Flash is bad”, “Microsoft sucks”
- Marketers: “I don’t want to have to argue with my IT deparment”
- CIOs and CTOs: “We do not have the internal skills to build and maintain that”
- Customer Support: “Our site is a Frankeinstein”
- CEO: “We need to keep pace with our competitors”
He pointed out that 500 Large enterprises were asked in a recent survey: Are RIAs more important for you in 2008? Nearly 70% answered yes.
Wow! That was a great presentation. It was engaging. He made 30 minutes fly by like it was 5 minutes. He urged the audience to challenge him on his blog, so go join the discussion if you are interested.
Session 2: The Social Aggregator - Widgets Reshape the Social Web
I was surprised to see that Justin Thorp was the speaker since he wasn’t the listed speaker. Justin is someone I consider to be a leader of the DC Web community, for his involvment in putting together barcampDC and the Ning DC Technology Network. I had met him during Startup Weekend in DC so it was good to see a fellow DCist was there.
Justing started with a brief description of where the web has been, where we are now, and where he believes it will go. Back in the day, we had big portals such as Yahoo that were editor driven. It was costly to put together a site so only professionals did it. In a way, browsing the web was like reading a newspaper or magazine, where an editor selected what you should read about.
With Web 2.0, we have better publishing tools, offline apps are going online, more storage has helped user-generated content, websites are more community oriented, etc… At the end of the day, it’s really not about your web site. It’s about your content and functionality. How is your application going to bring pleasure to users?
He then went on to describe web widgets and how the ClearSpring platform can help you deploy a widget. The big problem with widgets is that there are no standards yet, so if you want to develop a widget, you will have to code one for iGoogle, one for NetVibes, one for Hi5, etc… The social aggregator market is fragmented and that makes widget development more difficult. With the Clearspring platform, you only have to write the widget once, embed it in a ClearSpring container, and deploy it on a long list of sites.
Justin used an interesting metaphor between a website being your movie theatre and widgets being DVDs. You can carry them everywhere you go. They adapt to your situation and therefore makes your product more suitable to the user’s lifestyle.
Why should a company build widgets?
- extend
- promote
- express
- share
- innovate
Some stats: 81% of all web users saw a widget in nov. 2007–> 148 million people
Someone from the audience made an interesting comment. She asked what happens to the person that brings in value by putting together a set of widgets on a page like iGoogle and sharing it. In a way, that person is a “Widget DJ”. How can that person be rewarded for this work? Should he/she be rewarded for doing it?
Session 3: Now Playing: Desktop Apps in the Browser!
This presentation was a sales pitch for nexaweb. They made it very interesting to listen to by role-playing. Coach Wei played the role of the CIO of a company that is defining their IT strategy while Bob Buffone was his chief architect, trying to go through the whole pletoria of tools, frameworks, languages to find the best solution. Bob finally arrived at the conclusion that NexaWeb made it so much easier to do plenty of things while keeping a consistent development environment. Their development environment seems compelling and I’m sure they will sell some products after this presentation since the audience seemed to enjoy it.
Session 4: DreamFace: The ultimate Framework for creating Personalized Web 2.0 Mashups
Olivier Poupeney, CEO of DreamFace Interactive, gave us a demo of his company’s product. DreamFace is a very cool application. My best description would be: a highly-configurable iGoogle on steroid for the enterprise with the ability to create your own workflows and enable widget interactions. An example of widget interaction (which you can’t currently do on iGoogle) that he demoed is clicking on a note widget automatically launches a YouTube search for the keyword in that note. Very cool stuff.
The interesting part is that during the widget session earlier, we briefly discussed the idea of using a widget aggregation portal as the main intranet portal for a company… and in the next session, Olivier demoed DreamFace, which is just that (and more).
Session 5: Digital Black Belt’s Gide to ASP.NET AJAX Security
Joe Stagner from Microsoft was the speaker for this great presentation on Ajax security. Even though the title pointed to ASP.NET but the talk could be applied to any other platform.
Joe does not agree with Douglas Crockford theme on yesterday’s keynote. He doesn’t think that the web is broken. He believes that JavaScript and AJAX is a fine set of tool, but that developers are the ones to blame for not being more careful about AJAX Security.
Joe started his talk with the main points that we should get out of his presentation:
- “To catch a bad guy, you have to start to think like a bad guy”
- Consider ALL input evil until proven otherwise
- Accept the power of JavaScript an HTML
- Understand the combinatorial attack
- completely buy into “Defense in Depth”
Security is crucial because in today’s web, we are not only defending our infrastructure (servers, databases) but also our customers. If our web application gets hacked, our customers gets hurt also.
Joe showed us a few tool that he uses that can help us in the quest to “think like a bad guy”: fiddler, webscarab, ViewStateDecoder, his own Password Cracker, etc… I’ve used fiddler before and it helps a lot when doing web development. Every developer should used a similar tool to monitor HTTP traffic. At work, I used HTTPWatch in IE and FireBug in Firefox. I highly recommend downloading both. HTTPWatch is not free but if you can afford a license, it’s definitely worth it. Joe was using IE8 and it ships with a DOM Browser and a debugger. That’s awesome! Debugging on IE was more difficult because they lacked a good alternative to FireBug, but it will now be included in the main distribution.
Here are few tips from Joe’s talk:
- If you are taking user input and adding it to the page, use Server.HTMLEncode (if you use .NET) on the server side to ensure your get rid of malicious input
- When you filter evil code, always use a white list, not a black list
- When you detect that a user was trying to launch an SQL Injection, record that user ID and IP Address
- There is no such thing as security through obscurity. However, it doesn’t hurt to make it more difficult for the bad guy. For example, give your password db column another name
- Just because you hash your password doesn’t mean a hacker who obtains the hash version can’t recover the password from it. With a brute force attach or a dictionary attack it can be trivial to obtain the password. Joe wrote a tool that does just that and promised to post the code for the tool on his blog.
- Book Recommendation: “Ajax Security” by Billy Hoffman
- To avoid SQL Injection attacks, use stored procedures or parametrized queries (all devs should know this by now, right?)
Joe also showed us a few attacks that are common. Some of them a quite clever:
- To embed a script on a page, crackers use “<script<script>>” instead of “<script”>. This way, if you are using a black list and replace “<script>” with “”, the resulting string is “<script>”.
- He showed us how damaging SQL injections can be
- A cracker can add an image to a web page with a height of 1px and a width of 100% with onMouseOver event caller, this way the user does not even see the image but keeps launching the events as his mouse goes over the image
- Evil javascript inserted on the page can read data from a user’s clipboard. Think about all the time people copy and paste their passwords!
- Javascript key loggers that sends all the keys you touch to a malicious server. Sometimes the cracker opens a new browser window which he places outside of the viewable screen area, so even if you close your browser, this new instance of the browser stays open and you don’t see it
- With javascript, a user can get your browser history by comparing the color of your links with a list of known urls. Pretty simple code to write but imagine how vulnerable you are if a cracker knows what websites you visit. He can now launch a phishing attack on you since he knows what emails you are likely to open
All this stuff is scary because as a big web user, I visit a lot of sites everyday and I don’t know if any of them have been attacked. Joe got me paranoid. I think I might start to leave fiddler running at all times on my machine so I can be sure no one is collecting info from my PC.
Session 6: Data And Syndicated Oriented Architecture
This talk was by Kurt Cagle from Burton Group. Kurt is a managing editor for xml.com.
This session was like attending a philosophy class where the topic of the day was XML and REST :-). A lot of acronyms and buzz words were thrown at us. The speaker obviously knows a whole lot about the subject but I feel like he could have made the talk more accessible and engaging.
In essence, Kurt talked about the emergence of REST. To quote him, “REST is XML++. It’s where XML is going”. If you have never heard of REST, I urge you to learn more about it as it will play a bigger role on the web in the near future.
Session 7: Using the DOJO toolkit to create AJAX powered forms
James Harmon from Object Training Group showed us how we can make HTML forms more user-friendly using the Dojo toolkit. It was a very focused talk. He didn’t cover too much but covered it slowly and in depth. It was a good introduction for people, like me, who have never used Dojo.
Dojo makes it really easy to create great HTML forms with validations, cool tool tips, better elements/widgets. They recently passed the 1.0 mark and the framework is quite stable now. Dojo has a partnership with AOL CDN so you can point your javascript include statement to the AOL CDN servers and leverage that infrastructure. Dojo is server-side agnostic but James think that Dojo is a good fit for Java shops.
James spent most of the presentation showing us code and demo-ing the form he enhanced with Dojo. You can download the powerpoint slides of his presentation here, as well as the source code.
Session 8: Open-Source AJAX Test Automation
Frank Cohen of PushToTest was the speaker for the last talk of the day. His talk was focused on the importance of testing and how one can automate AJAX testing.
Quote: “Testers don’t get all the cool tools that developers get.”
3 Steps for testing AJAX Apps:
- Observe: understand what the business flows are that are occuring within an application, what protocols/data are being used.
- Test:
- a. Load Testing: do I have enough hardware? At what point will my system fail?
- b. Functional Testing: combination of regression testing (it used to work and now it doesn’t) and integration testing (are all components working together correctly)
- c. Monitoring
- Correlate what is happening on the front end with what’s happening on the back-end.
We need to automate this process. It’s important to have a Quality Engineering Process (QEP). It’s no longer possible for companies that are using Ajax to do manual testing and expect to achieve certain level of SLA. You can’t achieve a QEP without developers, testers, and IT working together.
Frank then went on to introduce his Test Automation Platform.
Client Side:
Server-Side:
- Glassbox
- PushToTest TestMaker
- PushToTest TestNode
- PushToTest Monitor (pttmonitor)
Summary
Another great day at AjaxWorld. Overall, it was a good conference. I really enjoyed the sessions and learned a lot. Now I have a lot of homework to do to try to learn more about all these cool technologies.
Tags : Ajax
Categories : Ajax