Errorik's Blog Archive
These are my blog entries - things I wrote, things I linked to, maybe a few rants, lots of improper grammar and personal stories.
MAX 2005 Day 3
My last day of MAX started out with a hands-on session covering the ColdFusion Application Framework, which is basically just the techniques you need to use when using the Application.cfc in place of the Application.cfm file. There is definitely some power in using Application.cfc, but it appears you really have to plan your app in advanced to use it, not something you can just upgrade your existing apps to. I definitely need to experiment with this some more to get a handle on it.
My next session on Integrating ColdFusion with Flex. ColdFusion and Flex appears to be in a gray area right now, as when Flex 2.0 comes out next year there will be many improvements. That being said, the session covered current generation techniques. Flex data calls are asynchronous, meaning that Flex will make a call for data, but not wait for it to return before continuing. So you will need to write a routine that will be aware of when data is returned to run any events dependent on the incoming data. Using the RemoteObject tag you can reference a CFC, and then call the functions in that CFC directly. Query objects are returned to Flex as result._items. You need to use bracket notation (cfset mystruct["foo"] = var
) to preserve the case of your Structures keys when brought into Flex.
If you are going to be creating Flex applications you need to study and learn about Flash Player Sandbox Security and read up on the Best Practices. AMF traffic is not secure, everything is sent in plain text and can be "sniffed". Compiled SWFs are not secure and can be de-compiled, so be very aware of what you are storing inside your Flex app. Best practice is to get sensitive info such as passwords at runtime from the server. Look at security white papers.
Next was another hands-on session, this time covering ColdFusion's Printing and Reporting features. On Day 1 I took an advanced session on these features, but it was just a lecture. I was looking forward to getting some hands on experience with the Report Builder. It is really simple and very powerful (hey, just like ColdFusion). You can setup a script to automatically e-mail or FTP out a report. When asked about how to force the browser to ask the user to save a report to their desktop (opposed to loading within the browser), the instructor wasn't sure on how to accomplish this. I suggested that the CFHEADER
tag can accomplish this, and at the end of the class gave out the code to do so to someone who was interested. The generated reports are not perfect, sometimes there are minor differences in the output when switching from PDF format and FlashPaper format.
My next session was a presentation by the Macromedia XD Team on eCommerce best practices in creating a Guided Experience. I actually found this to be one of the most inspiring sessions of the conference. While none of the items may be necessarily ground breaking, it really made me think of my current eCommerce project, and what we are doing wrong. Here are some quick notes: Have better search results. 30% of eCommerce business is abandoned during the checkout process. Consumers need more info and higher resolution photos of products to make the on-line shopping experience compete with the retail experience. If a product is configurable, allow it to be configured in the shopping cart and during the checkout, not just at the point before adding it to your cart. For any device that has data inputs (like a HDTV or a stereo head unit) display an image of the ports so users can see what they are buying (as they would in a store). Mobile devices should compliment and extend the shopping experience, not replace it. Your end goal should be: Create a retail level experience with the convenience of shopping on-line.
And finally, my last session of MAX 2005, was on Next Generation Flex Data Services. This was pretty much the only session I attended that was over my head. And to make it even worse, all that was shown off in this session won't be available until Flex 2.0. These were features not even in the current Alpha version of Flex 2.0 - but should be in the upcoming Beta release.
Basically working with data is going to be like 1000 times easier in Flex 2.0 then in 1.5. Flex Messaging Services can communicate with non-Flash interfaces. He demo'd a Flash chat client talking with a Java client.
A really cool demo displayed was of a fictional banking application. There was a customer and an employee screen, each designed differently, but subscribed to the same data provider. He ran through a scenario where the customer was filling out a form, but was unsure of some account numbers, so he clicked a button to get a live rep. On the employee screen the customer appeared in a queue for needing assistance. When clicked on, all the information entered so far by the customer was displayed on the employee screen. The employee could then use their own tools to pull up the customers account. Then, the employee could fill in the missing data on behalf of the customer on their own screen, and it simultaneously appeared on the customer's screen as well. Pretty slick stuff.
So... wow, another year of MAX has passed. Until next year!
MAX 2005 Day 2
After staying up until 4 am after a long day 1 of MAX, getting up for an 8 am session on Rich Forms with ColdFusion and Flex was a bit challenging, but worth it. Coming from a strong background in HTML and JavaScript, looking at and understanding XMNL (Flex code) and ActionScript is a breeze. You can very easily provide your flex application data via ColdFusion Components (CFCs). Converting your queries to arrays will cause Flex to work with the data quicker (this will also be the case with Flex 2.0).
I then I snuck in and caught the end of Angela Buraglia session on Killer Dreamweaver Tips. While I hate DW and prefer to stick with HomeSite+ (CF Studio), there was one tip that I thought was pretty awesome. You can do a mass code Replace from within your Find search results. For example, lets say you want to update your web site and replace every instance of "email" with "e-mail". If you search your codebase for every instance of the string "email", you may return a lot of results, some you want to replace (text on web site), and some you don't want to change (code, database column names, form parameters, etc). So first you run a Find command, then you can go in and select all the instances you want to replace, then run the Replace command, and wham-o you are done. Note: Do not run Replace All or the selections you made will be ignored and all the instances will be replaced.
Next was Leo Schuman's preso on Advanced ColdFusion Flash Forms. New in CFMX 7.0.1 you can use the CFFORMITEM type="script"
to add blocks of custom ActionScript to your CFFORM
. While there are limitation of what you are allowed to do within the CFFORM, you can do a lot, including getting live data from ColdFusion via Flash Remoting. One major thing to look out for is with using dynamic data supplied from ColdFusion in your Flash Forms. If you don't use a special method for doing this, you will cause ColdFusion to compile a new Flash Form for every request, causing page loads to be really slow. Leo suggested reading through the Best Practices guide on this topic as he didn't have the time to properly cover it. I was pretty disappointed that you can't use the "this" object in ActionScript like you can in JavaScript. Using "this" when interacting with Function allows you to write your function ambiguous as to whom is calling them, but with ActionScript it appears you have to have everything hard coded (further research may show otherwise).
Day 2's keynote had a lot to do about video. David Mendels said that teenage males are just as likely to be on-line during prime time TV hours as they are to be watching TV. And I think he said something like 27% of them download video content on-line. Steve Kilisky from Adobe was there to show off some upcoming AfterEffects features, including exporting video ready to be imported into Macromedia Flash.
Jeremy Allaire showed up to demo his new on-line video content distribution system Brightcove. Brightcove looks pretty sweet, allow for standard video metadata, then they have Brightcove specific meta data that you can assign, then finally you can tag your media with any keywords you want a-la Flickr. You can setup video streams to make money, either by paid subscription, or by ad-based content, with full controls. Pretty slick stuff. The best was his comment, "Unfortunately I don't have Adobe HomeSite with me so I will open up Dreamweaver here".
Ben Forta made an appearance via pre-recorded video.
Tom Hale talked about Breeze and a new deal allowing developers to write their own "Room Extensions" that be sold as products or via custom development. He said that there is already 1600 Breeze Enterprise clients out there for developers to sell to.
Oh and if you jump on the Breeze beta you get to use Breeze for business and/or personal items.
The meeting then went to mobile devices using Flash Lite. I think Macromedia briefly admitted that they were wrong last year when they pushed mobile so much, as it really hasn't caught on here in the America's. But they of course said it was coming soon and there is no reason to wait. They showed off some cool apps like one that constantly displayed the latest Flickr photos right on your cell phone.
And finally, the MAX awards. Crash This Trailer won the people choice award (the audience voted via SMS on their cell phones (powered by ColdFusion's Event Gateway)).
After lunch I caught Stephanie Sullivans presentation on Advanced CSS (Cascading Style Sheets). And while very little was really new to me, she did an excellent job covering CSS and little quirks that happen and how to fix them. One comment she made that really struck me and I can agree it happens to me as well was that she finds that her own designs are somewhat limited and basic based on how she always thinks about doing the HTML/CSS layout while designing the page. Whereas designs she gets from designers don't conform to any pre-conceived limitations. This is almost an exact repeat from what was said the previous day at the Great User Experience Birds-of-a-Feather meeting.
I felt the Sneak Peaks session was pretty boring, and left early. I hate to be a downer on that, but I wasn't digging the poor acting and it wasn't really that funny - plus I wanted to try and win an iPod nano downstairs (no luck).
Next was the CFC Birds-of-a-Feather meeting led by Ray Camden. It was pointed out that really long CFCs may be bad to invoke, especially if your CFC contains functions you don't need readily available. It would be best to pull the less used functions out into a separate CFC and only invoke them when required.
CFC Docs written by Spike (from
CFEclipse) is a great tool for viewing your CFCs. And the new CFC Adapter in Flex 2.0 will keep your complex data objects in tact between ColdFusion and Flex rather than downgrading everything to Structures as is the current case.
After another full day of sessions the evening was topped off with what I think was the best Special Event in the past 4 years I have been attending MAX which was a private party at Disney's California Adventure.
Thank you Macromedia.
MAX 2005 Day 1
Man what a long day. This morning I arrived at my hotel to just drop off my bags before going to MAX. But the front desk wanted to check me in since they had rooms ready. So I literally opened my room's door, set my bag inside, and rushed to make my first session (which I was late for). And it wasn't until after 9:30 pm until I made it back to my room to actually settle in.
My day consisted of 3 regular 60-minute sessions, 1 3-hour super session, one general keynote session, and 2 1-hour Birds-of-a_Feather discussion groups. Plus a half hour trying to win some prizes in the Exhibit Hall (and I did win a book thanks to CFXHosting.com).
Here is the quickest re-cap that I can provide (not too quick actually):
Dean Harmon presented on Advanced ColdFusion MX 7 printing and reporting, and stated that while not perfect, the reporting engine can do about 90% of what is possible with Crystal Reports. That's pretty impressive considering we are comparing a 1.0 product versus a seasoned 11.0 product.
In the keynote we were treated to a comedic 15 minute presentation by
Ze Frank who was made an internet star by
dancing in a flash animation. His punctuation chart for sending hidden insults in your e-mails was the tops.
Macromedia CEO Stephen Elop said that there was over 3000 people in attendance, which, to my knowledge, makes this the largest MAX yet. You really saw the Adobe influence when during a display of an altered image of Bill Gates holding a Linux penguin and sporting an Apple pin on his shirt, Elop declared "Gotta love Photoshop". I highly doubt in previous years the CEO would have selected a competing product over Macromedia's own Fireworks no matter how synonymous Photoshop's name has become with image editing.
Sho Kuwamoto had some problems walking the audience through the process of creating the exact same app that Kevin Lynch created at the Web 2.0 conference. When he went to compile the Flex app, it errored on him, and he tried to fix it, but it errored again. So then he decided to ditch his work and start over, but do it quickly. And when he went to compile, he couldn't see it work. And he kept hitting the compile button, but nothing was happening. Then finally someone in the audience yelled out "The browser is up, open it!" and was completely right. The compiled SWF was there waiting in an open for him. It's an impressive demo app no doubt. But unfortunately seeing it built for the 2nd time it's less impressive. Kevin Lynch in his original demo had one of the web quotes that was something along the times of "so we just built this in 15 minutes, imagine if you had an hour or two, what could you do?".
In a 3 hour super session all dedicated to Advance Features found in CFMX 7.0.1 a lot of ground was covered (by no less than 4 speakers - I left slightly early). You can now put ActionScript directly into your CFFORM tag. However later in the BOF CF discussion it was revealed that Macromedia has greatly limited the AS features you can use (to not make CF too powerful on its own lessening the demand for Flex). Macromedia is actively going to support the CFeclipse project, already working on RDS support and built-in docs. There is also some CF plug-in for Flex Builder 2 (eclipse based IDE) available on the new Macromedia Lab's site. Multiple event gateways were demo'd, and while I have seen these demo'd before, today's was the most impressive. Notable was that you are able use the exact same CFC files to power multiple gateways. They had a CFC that echo'd back whatever message you sent to it, and they called it via IM, via SMS, and via Telnet (which I was ubber impressed by). And while I never thought that this was an impossible task, I just really never thought about it at all. So seeing the examples definitely gets my motors going.
One of most impressive items slipped into CFMX 7.0.1 is that CFCs have a new returntype of XML. And if you call a CFC directly with a browser, if the returntype is XML, the output will be the raw XML your function returned, and not a WSDL describing the XML, which is a perfect setup for using CFCs to directly return data to JavaScript via HttpXMLRequest for AJAX-ifying your web apps. Which to me is pure gold.
Verity appears to have come a long way offering tons of features that make it look like you can offer your own little Google-like results with "Did you mean ________" spelling corrections, and searching within previous results.
If you were like me and hadn't heard the news, you too would have really enjoyed Mike Chamber's presentation on getting Flex/Flash to speak to JavaScript. Using the Flash / JavaScript Integration Kit available from osflash.org, or built-in functionality with the Flash Player 8 you can have ActionScript and JavaScript calling each other's functions. Pretty awesome stuff.
The Birds-of-a-Feather discussions are an under utilized part of MAX. But I do have to say that the size of attendees to the sessions seem to have tripled since my first year of MAX, which is a good sign.
In the "Meet the ColdFusion Team" users posed questions and comments regarding JRun's/ColdFusion's performance and I left the team maybe skirted around addressing the situation. But I guess they can't be blamed, they did make a valid point of that they have no open performance ticket open at work, and that if customer have problems they need to be making support calls and formerly filing tickets. I know one popular ColdFusion site specifically that has JRun performance issues, maybe Macromedia needs some tickets filed. They also pointed out that if a call you place to customer support ends up being a bug on their end, you support call would get fully refunded.
When questioned if Flex, with all the hype it's getting at the conference, will be killing off the need for ColdFusion, the team was quick to point out that Flex is just a solution for the presentation tier, comparing Flex to HTML. ColdFusion is still a vital server side technology that will deliver data to Flex.
Don't expect to see ColdFusion running on the .NET platform, but integration with .NET is a yes (it wasn't said if we can expect anything beyond just web services).
They read *ALL* items sent to the wish list form (CFSFTP please).
My last session of the day was another Birds-of-a-Feather discussion titled "The Power of a Great User Experience" led by the Macromedia Experience Design team. Unfortunately the session did not fully match the outline given in the conference agenda and the team did not show off anything they are working on. The team and other attendees referenced items that were shown off in other sessions that I apparently missed, but might make it on-line to see at other time. The discussion went in a direction where some attendees didn't like that "designers" were expected to have some development skills by employers. They wanted to be "design purists".
One team member made a comment along the lines of "we don't think that the emerging market will allow the separation of designers and developers" which is something I personally whole heartily agree with. As a developer I am somewhat bothered that a session on User Interface is overly imbalanced towards (or maybe just by) a designer crowd, when I think a heavy weight of the UI falls on the back of the developer's implementation with aspects data validation and user input control and error handling. But maybe I have these feelings because my background is mostly from a DIY approach with little to no input from a designer outside of the initial site templates and certain marketing pages.
One designer commented that he felt just should just be expected to know enough about development to know what is possible, so he can communicate with the developers. And this sparked another person to relate a story about a designer who had no idea about the capabilities or limitation about the technology that approached him with an idea that just made him say "this guy is crazy like a monkey". But after thought about the tasks changed his point of view to "it might be 2 weeks of hell to get it done, but I think I can do that". I both love and hate this story. I like the idea of being able to overcome something you previously that impossible. I hate that idea that as a developer, I may think I know the extents of the technology I work with, but really I might just be putting unnecessary limitations on myself.
Other notes I took from the session include comments along of the lines of:
"In the beginning, make something useful... then think about making it a great experience that they will want to come back to"
Forms need to convey a sense of reward for completing them.
Design sometimes needs to come last.
They didn't use these words, but the team basically said, "UI is not the design, but completing the functionality".
They also said that often they will argue most about a project when it is still in a wire frame stage, they aren't arguing about what color yellow to use.
Wow. I am beat tired. Looking forward to another day at MAX...
CF_Underground 7 2005 Round-Up
This past Saturday I had the pleasure of attending the CF_Underground conference that preceded the currently in progress Macromedia MAX conference, both in Anaheim, CA.
The CF_Underground conference is a migrating conference that follows MAX each year from city to city. The great thing is that while some ColdFusion developers may feel that Macromedia spends too much time at MAX promoting non-CF technologies (cough, Flex, cough, cough), CF_Undergound is all about ColdFusion. Six hours of pure CF related goodness.
Unlike MAX which spouts an impressive number of attendees that's into the thousands, CF_Underground only turned out about 23 heads. Which is very unfortunate because that means that means that less money is going to a great conference, and that there are a lot of CF developers out there not taking advantage of an excellent resource.
While this is my 4th straight year in attending MAX, this is my 1st year in attending CFU, so I had no idea what to expect. The conference was unlike any other that I have ever attended in that there was no projector or speaker podium, and of the 5 hours of instruction, there were only a handful of times where it felt like a presentation was being given. The day was like a big open discussion with a revolving subject topic to keep things interesting. And while some speakers were better at leading the discussion than others, overall it was great day with a lot of good discussion.
Hour 1 "I write bad code" was about what we each felt is good coding practices, and what should be important to us as developers, like reusability and organization.
Hour 2 "How I do I write better software?" was an interesting discussion that went all over the map from people discussing that they think better software can come having the right keyboard, silence, and three monitors, to better software coming from using the right framework for organizing your code. Unfortunately the discussion didn't go in the direction that I think it should have gone which is that good software really has nothing with your coding procedures or work place conditions, but with how it improves the end user's workflow, and allows them to get their tasks done with more efficiency. Of course, maybe I should have spoken up when the opportunity was given. Other advice brought forth during the hour was to do your best to auto-fill or pre-fill fields when able to do so, and to have your application be engaging, both visually and with audio when possible.
Hour 3 "security roundtable" dealt with security concerns that people had, and common practices to strengthen the security of your applications. Suggestions included using CFQUERYPARAM
tags and Database Stored Procedures to prevent SQL Injection attacks and authenticating input values be using a checksum number, creating a hash, or encryption as you pass parameters.
Hour 4 "domain models" for me really just put a name to a practice I had seen and even been involved with on projects before, but just didn't know had a special name. You basically create a CFC for each "noun" of your application, and that CFC will have all the functions you need pertaining to that object.
Hour 5 "paper prototyping" brought forward an interesting method for planning projects - especially, but not limited to, projects where a group is involved in the planning. After covering the basics of paper prototyping we were broken into 6 teams by table, and assigned the task of prototyping a blogging application. Each group varied quite differently in how they paper prototyped their blog app. The number of objects involved ranged from just 4, all the way up to 14. And persons argued whether or not HTTP and RSS should be considered objects or not. My table unfortunately listed RSS as an object that would need its own CFC. I disagreed stating that is was just an output method, but I was dismissed. Oh well.
Hour 6 "open Q&A with the panel" was an open forum about the topics of the day or anything else that people wanted to bring up. One thing brought up that I really liked was that the most effective way to squash bugs was to just plan ahead and to avoid them in the first place, followed by code review and then finally by application testing.
All said and done, at the end of the day I was very pleased with the value and content of the conference. But it wasn't without its faults, or maybe just hang-ups. Unfortunately, 2 of the 5 speakers didn't show (one due to being held up entering the country) causing 2 of the speakers to do double shifts (luckily they knew the topics quite well and I didn't feel the quality suffered). There was a lady there for about 4 hours operating a full bar that the attendees had little to no interest in, and just caused people, myself included, to feel sorry for her. And the lunch, while really good (Quiznos), was a little disorganized while being handed out.
On a major plus side, at the end of the day, the attendees, having had this very interactive day together, were all very open to continued discussion and networking. I really liked this.
I think the best measure of how I really feel about CF_Underground is whether I plan on attending again or not. When you look at the conference fee itself ($69/$99 late), versus the content of the conference, I think it's hands down worth it. But the outcome may be different when a person calculates the "actual" cost of attending the conference.
Lets assume that you are already going to MAX. So airfare is already accounted for. With way that CFU is scheduled the day before MAX's "pre-day" events, you really need to arrive in town two extra days in advance, which might add a significant cost to a person's hotel accommodations thus tipping the scale.
So for me next year will be a close call, depending on the city. But I really think I will be planning to make the big step which is to attend what is referred to as the best ColdFusion only conference, CF UNITED in Washington DC next June.
MAX 2005 "Pre-day" Welcome Reception
Getting my first glimpse of the Anaheim Convention Center I quickly recognized Macromedia's tried and true
MAX branding. Each visit to MAX feels almost exactly like the year before. The main Exhibit Hall is a near exact replica of the years before. With the Cyber Cafe, Community Lounge, Product Support lab, and exhibitor booths all in their right place. This year it seemed like the vendors were trying to attract attendees harder by enticing them with bigger ticket items. While there were those just passing out pens, frisbees, and rubberband powered rockets - more attractive prices offered were iPod nanos, Sony PSPs, and the not even released yet Xbox 360.
Macromedia really knows how to treat the crowd with a great atmosphere and food and drinks offered freely while attendees get to settle in to the conference. I'm looking forward to another great year at MAX and a great line up of sessions to attend.
Calling All MAX Attendee Gamers (NDS or PSP)
In less then two weeks I will be attending the
Macromedia MAX developer's conference in Anaheim, CA with over 2000 other attendees. I know I can't be the only gamer going.
This is a formal call to all gamers bringing their portable gaming systems to the conference to get together for some matches. So whether your console of choice is the Nintendo DS or the Sony PSP, I have made some tags to attach to your MAX conference badges to invite some gameplay.
You can download the tags as PDFs and print them as is - or modify them to display your game of choice, or maybe even a custom taunt to attract some fierce competition.
I am also going to add a PDF for a common AVERY brand label template, so you can print out stickers to attach to your badge, look for those coming soon.
If you see someone wearing one of these tags in the hall, feel free to stop them on the spot and ask for a challenge, or arrange for a later time to meet up. And the reverse, if you decide to wear the tag, be open to challengers.
I would love see these attached to badges floating down the conference center hallways. And maybe even having notable PSP owner and MAX speaker
Ray Camden wearing a tag and participating in a match or two against other attendees?
Look for me at the welcome reception, not only will I be sporting my tag but I will have spares to hand out to those in need as well.
I would also like to maybe arrange a specific time slot to have a gamer's "meet-up" during the afternoon or evening on Monday, assuming that there is a time slot that doesn't interfere with the Birds of a Feather discussions going on. If you are interested in this, leave a comment here with your e-mail address (kept private) and an ideal time slot for you.
The Nintendo DS and Sony PSP are perfect for this type of activity due to their wireless gameplay capabilities. The Nintendo DS is even more so suited with it's single card multi-player games - meaning that, for some games, only one player needs to own the game and it is broadcast out to the other players.
I am personally only a Nintend DS owner, and I own the puzzle game Meteos that has this single card feature. So I am looking for a good challenge and you have no excuses - unless you are a PSP owner, then you have to find someone else.
Please spread the word about this, and I will see you at MAX.
Notes:
- While the idea for the badge tags was my own, I took the NDS design from themodgods.com's
subway flyer.
- Here's a
photo of my MAX 2003 and 2004 badges with my tags as an example (I am guessing the 2005 badges will be the same).