Posted by: quetwo | June 3, 2009

Why ColdFusion should NOT be taught in schools

I already know that this post won’t be popular with my close friends, but I think it needs to be said anyway…   Don’t worry, this isn’t a “ColdFusion is dead” article.

I was recently asked to sit down for lunch with two computer science professors from two different schools in my area.  For the most part, I was in “a fly on the wall” mode as these professors talked about various things such as how they catch people copying code, to how they teach good memory use, etc.  This wasn’t a formal meeting by any sense, but rather just a meeting of two friends who happen to work in the same profession.

Chalk BoardAbout half-way through lunch, I decided to ask about using a more stable language, like ColdFusion (CFML) to teach web programming. Currently one of the schools teach Python (and considering Ruby) and the other teaches PHP for their courseware.  After both chuckled at me, I dove into my Adobe taught ColdFusion isn’t dead, ColdFusion has a growing population, ColdFusion has some open-source alternatives, etc.  Both sat there and soaked in my sales pitch.  One of the two even used to use ColdFusion on some side work in the past.

“It’s not about the servers — it’s truly about the language.” spoke the gent from the larger school.  “For a formal, introductory computer science class, ColdFusion [CFML] really doesn’t offer us anything that another language does.  And it adds in a lot of complexities and guessing that make other languages easier to teach in the classroom

As he explained his position, it started to soak in to me — ColdFusion while really easy to pick up and learn teaches some really god-awful practices.  And if you take a look at the ColdFusion community at large, it seems to be a real mess.  Some of the great points from his argument :

  • CFML is not a typeful language.  For the end user to not be able to specify to the language/compiler that you want to store a String vs. a Number can be troublesome and confusing to both sides.  What is often worse is that to force ColdFusion to choose a particular variable type is very awkward and more-or-less a hack.
  • There is no good CFML debugger.  If you do your work in the current Official CFML editor by Adobe (Dreamweaver) there is no debugger.  You have to install another, 3rd party application (Eclipse) to do your debugging.  Even then, it is cumbersome, and not really feature complete.  How much memory is this CFC using?  Why am I getting this response from the Query?  These are the questions that the debugger still fails to answer properly.
  • The documentation is poor.  The LiveDocs, while OK, are very un-organized and seem to be very short on examples.  The community is good at sharing examples, if you can find them.  The Adobe search engine is a joke on their site.  There are only 4 current books, by two authors (although, one plus to this is they both live in Michigan).
  • CFML, by its design will fight you in implementing the most common design patterns.  Lets face it, most of the MVC frameworks are a hack.  In fact, when you take a look at it, most frameworks that exist for ColdFusion — even Adobe’s own Model-Glue are exceedingly complex because they have to implement so many workarounds to get their pattern to work. 
  • Available Open Source / Free / Alternative engines are not 100% compatible.  Even BlueDragon, the engine that has implemented the most compatibility, is only about 90% there.  This is a huge disadvantage if you use the “there are other engines out there” argument — most, if not all, examples and documentation are written for the Adobe engine. 
  • Some features are just some “black box”.  This is one item that raised a huge concern, while being a huge advantage for the regular business community.  Programmers, specifically students want to know how things work.  They want to know the nuances of why FTP would be a sessionful protocol, rather than something like LDAP. These tags/engines are essentially black boxes with ColdFusion, with very limited visibility as to what is happening on the back end — all we know is that they ‘work’, and get the job done. 

Some of these things are changing in future versions of ColdFusion, I’m sure.  Others are just breed from the history of ColdFusion, and for the regular community, that’s not a bad thing.  For example, does a web / CFML programmer really want to know how the POP protocol works?  No!  That’s why they use ColdFusion! 

So parting from my experience, I do ask the question — where SHOULD CFML be learned?  That is a really tacky question, one that is really hard to answer.  From the above, CFML shouldn’t be chosen to be taught in a formal programming class, but how about in a web programming class?  Rather than teach HTML, how about HTML and CFML?  Should CFML be taught at a community college?  How about at the high-school level where programming theory is not nearly as important? What are your thoughts?

Posted by: quetwo | May 25, 2009

Computing in the Cloud… A thought

,,,,,

At a recent conference I was at, I got in a rather lengthy conversation about Cloud Computing, and its effects on both society and computing.  My thoughts were in the minority, but I guess I come from a unique position.

Cloud Computing, for those who are not familiar with it, is the concept that you can load your applications and data into some server "out there" or "in the sky".  Your application may reside on a single server, or multiple servers — but you really don’t care.  Your data may be under your control, or it may be essentially rented to you for some price (this may not be in dollars, but in ad revenue).

What are my thoughts on it?  Cloud Computing is a great concept, but it is essentially taking us back to the old Client/Server days, except we no longer have control of our own destiny.  Sure, this may be great for personal, or projects that are no critical, but would you rely your business model on this?

One of the first examples people, or businesses bring up is Google’s gMail service. Google offers a crazy amount of email space which is always available to you as long as you are connected to the internet.  They ask for nothing in return, other than to retain your data (email), and serve you advertisements based on the email you get.  If you get lots of email on chemistry advancements, then you will get lots of advertisements for test tubes and petery dishes.  For most people, they would ask where they could sign up! The two problems I see with this is:

  • What happens to your sensitive data?   Google doesn’t care what your line of business is, but what about others that have access to Google’s data?  What would happen if an advertiser (competitor?) is able to drill into your data — data they may be entitled to because they paid for that advertisement.  Even if you are protected from such cases of accidental espionage, the fact that Google (or your service of choice) is building such a close taxonomy of your data, they know exactly what your business is up to — before your employees and shareholders for instance.  Remember, they essentially own this data, and you lease it from them.
  • What happens if the network is disrupted between you and them?  Sure this could happen if your resources are local, but in that instance you are in much further control of the availability of the data.  Could you last a day without access to your calendar, email, voice or other hosted applications?  How about two or three days?  If your internet connection goes down and you host these services locally, then chances are, while you will be in a rough spot, you can still operate your business. 

I keep seeing the trend of people moving to these services without much thought of the value of their data.  Have you ever read through the license agreement of your favorite cloud service?  Did your lawyer?  Do you even know where to find it?  I am a person who is very tied to many, many laws and regulations in my industry.  Not only do I have to worry about education specific laws such as FERPA, but I have to abide by many of the laws and regulations that the FCC and Homeland Security throw my way.  Oh, and did I mention that I’m paranoid about my constitutes intellectual property?  Michigan State University currently has a set of rules that prohibits the use of many popular cloud services for email or offline storage — a view that seems to be unpopular by the industry for some odd reason.

Another service, which I do tend to like a bit more (and do use for personal use) is Amazon’s cloud services.  In their setup, you essentially launch and maintain a computer out in the cloud.  You pay a per-minute charge for the amount of usage that you use, but you maintain full control and access to your own data.  You maintain the root password, you maintain the encryption, and you maintain the storage.  Now, you can still run into the issue of network connectivity, and its facacilities, but this style of service makes both me and my lawyers breathe a bit easier at night — we own our data :)

Posted by: quetwo | May 22, 2009

Flex, LCDS and ColdFusion Magic

,,,,,,,

This past Wednesday, I did a presentation at 360|Flex in Indy. My presentation was on Flex, LCDS (LiveCycle Data Services), and ColdFusion, and how they all work together.  It was a lot of fun to talk about this topic that is so near and dear to my heart.   Because it was the last session of the day, I was asked by many of the participants to record it so that they could listen to it later :)

 

 

 

For those of you that want to ‘participate’ with the preso here:

Also, the screen-share of the entire presentation is available below:

Adobe Connect Recording

 

Thanks to everybody who showed up, and also a big shout-out to TechSmith for providing the giveaways at the end of the presentation!

Posted by: quetwo | May 22, 2009

360|Flex Indy Wrap-Up

,,,,,,

So, another conference has come and gone… But as usual, 360|Flex rocked everybody’s socks off! This time around, I was asked to speak on ColdFusion, Flex and LCDS Magic, which ended up being a very fun and interesting topic to present on — well at the very least, I’m passionate about it :)  

I was also very fortunate to have one of the local companies, TechSmith come along with me.  Not only did they sponsor the show, but they also sponsored the Michigan Flex User Group’s transportation down to Indy!  Betsy and Brooks were excellent hosts, and continue to be great assets to the User Group, and the community at large.

The location of the show this time around was pretty awesome!  The show itself was held at an old train station, actually the first train station in the United States.  Great, beautiful halls, and lots of history made this place really unique.  If I wasn’t there to learn, I probably would have had my camera out all the time, snapping photos :)

As usual, the sessions were top notch.  Even topics that I convinced myself that I knew a lot about, I learned tons.  I was able to listen into Michael Labriola’s presentation hour long presentation on Arrays which was just excellent, and I was peek into Christian Contrats’s sessions on LCDS and Data Management.  I even learned a lot from Joe Johnston’s session on Design and UX processes :)

Overall, this conference continues to be my favorite, and I’m looking forward to 360|Flex 2010!

My session’s code samples, recording and power point will be posted soon :)

Posted by: quetwo | March 19, 2009

IgniteLansing!

,,,,,,

You heard me right…  Lansing, Michigan will be holding our first Ignite event on April 17th, 2009!  For those of you who don’t know what Ignite is,
Ignite is an event that is a social gathering to help spread knowledge and have fun.   The event is primarily about presentations, where people give very quick, 5 minute presentations about pretty much about any topic.  As my friend Randy Brown said, it is ’speed dating for presentations’.  Presentations are voted on (by you!) based on categories, like how funny they were, and how good the props are.  Topics range from how to make your business more efficient to how to brush your dog’s teeth.

More information is available on the IgniteLansing website at http://www.igniteLansing.com. Call for topics is open until the end of the month, and general admission tickets are available at the end of this week (at our website).

Check it out — it’s going to be a heck of a lot of fun!

Posted by: quetwo | March 18, 2009

Ryan Stewart coming to Michigan!

,,,,,,

On April 9th, 2009 Ryan Stewart an Evanglist from Adobe, will be visiting us at the Michigan Flex Users Group on the campus of Michigan State University.  Ryan will be talking to us about Flash Catalyst, a new, unreleased product from Adobe that will be used to prototype Flex and RIAs.  Don’t worry, he will talk about all sorts of cool stuff that is happening in the Flex and Flash Platform world.

The Flex Group will be providing a light meal, and we will be going out for drinks after the meeting.

We will be meeting on the campus of Michigan State University, in the Communication Arts and Sciences Building.  The exact room number will be posted to the Michigan Flex Users Group website soon.

Posted by: quetwo | January 22, 2009

Deploying RSLs in Flex

,,,,,,,,

RSL’s?  Runtime Shared Libraries are a technology that was introduced in Flex 3.0 that allowed our Flex applications to load much, much quicker.  What they really are is the shared libraries that we deploy for ALL of our applications (like the Flex Framework and common controls, or the data visualizations) in a separate download for the end user.  The end user will store these common libraries in their player cache after they have been first downloaded.  This means that they will "never" have to download those bits again.  Your 600k Flex application all of a sudden went to a 200k app with a 450k framework download.  However, the next time a user visits your site, they only need to download the 200k app, since the framework will already be on their PC.

Sounds like a good deal, right?  If you use the official Flex 3 builds (http://opensource.adobe.com) then this code is digitally signed, and there is essentially no penality in deploying this bandwidth saver. The nice thing too is each version of the framework that the user downloads is stored separately, so you know that if you target your app for a specific Flex 3/4 SDK, that the user will always have that version.

Who should not use RSLs? Anybody who monkey-patches the framework, or has their own build of the SDK should NOT use RSLs.  Everybody else pretty much should.   If you don’t know what that means, then you’re OK :)    RSLs also up the requirement of the Flash player to 9.0.115, rather than 9.0.0, which may pose a problem for a few people that haven’t upgraded in a very long time.

How do you enable it?  That’s pretty simple too!   All you have to do is right click on your Flex Builder project, and go to the properties menu option.  Click on the Flex Build Path node, and then the Library Path tab.  Change the Framework Linkage from "Merged" to "RSL".   If you don’t want to customize your deployment, that should be all you have to do.

By default, you will be able to deploy your app with any signed bit of code as an RSL. This includes the Framework, the RPC code, and the Data Visualization code.  You can customize this by deploying unsigned RSLs, of your own code and modules.  This means that certain modules can be separated out and stored on the user’s machine as well.  Open the node of the code that you want to enable as an RSL in the Library Path tab, and click on the Link Type node.  Click on Edit… to change the link type.  In the resulting dialog box, you should be able to change the link type to RSL. You can also choose to deploy the code as a trusted cache (which means that as long as that the SWF’s filename will be used as the verification), or you can enable Digest mode, which is essentially a CRC check on the SWF to make sure it is the right version.  I would suggest Digest mode (although there is a very, very small processor penalty to enable it).

So, now you’ve got your project setup for RSL’s, how do you deploy it? You can deploy this project just as you would any other project — by coping over the SWF files to your web serer.  The only difference here is you will need to copy a few other sets of files.  In your release directory (after you export a release version of your code), you should now see additional files for every RSL enabled bit of code you setup.  For example, your framework will now show
framework_3.0.build_number.swz in addition to your normal SWF output.  Make sure these files end up on the web server as well.  You will see SWZ files for signed bits of code, and SWF files for unsigned bits.

In my own setup I did run into one issue when I was moving my app into production.  Apparently recent versions of IIS won’t serve files that don’t have MIME-Types associated with them.  After deploying my app to the server, I was getting RSL Digest Error displayed in the the browser when I was deploying.  The problem was I was not the one seeing these errors, but rather my customers.  Because IIS didn’t have a mime-type setup, it would give 404 errors for the SWZ files for those people who hadn’t downloaded those files. To fix the issue, add a new mime-type of x-shockwave-flash associated with the .swz file extension.  Things should work then.

Enjoy your faster downloads!

Posted by: quetwo | January 20, 2009

Flex Authority – Components edition is out!

,,,,,

Flex Authority MagazineWell, after a long wait, issue 2 of the Flex Authority Magazine is finally out!  I’ve a chance to read it in its entirety, and I have to say, I’m impressed. Despite my own article, there is some really good content in there.  I applaud Jeff Houser, and the rest of the FA team for putting this thing together.

I am really enjoying Billy Spelchan’s article on writing a game in Flex — it is opening my eyes on a lot of things I never really thought of before.  John WIlker’s article is pretty cool too — the planning and programming side of an app that we used at 360|Flex in Atlanta and San Jose.

Of course, my article was about data communications again.  This time I talked about making a simple collaboration application using BlazeDS or LCDS.  You can even see my awesome attempt at drawing Mickey Mouse using my sample app :) .  My code samples are available here.

Make sure to check it out!  $15 each, or $50 for a subscription.  They also have a PDF-Only subscription available for $30, as well.

Posted by: quetwo | January 19, 2009

Marketing on Social Networking

,,,,,,,,

I had a customer call me Saturday morning all excited.

"I just got back from the xxxx conference, and the word of the conference was ‘Social Networking’.  I want to be able to jump on this social networking thing in full force.  I need your help so I can do my marketing on this new platform."

This is where I got scared.  My customer all of a sudden knows about this brand ‘new’ marketing platform that he wasn’t leveraging yet. Sounds like an opportunity to me, right? After talking to my customer a bit more, he dove into what he wanted.  He essentially wanted me to link his web site into Facebook ("or the Book Face" as he kept referring to it as") and Twitter.  What he really wanted was for me to modify his sales engine so that if he posted a new discount or sales item that the engine would automatically post a message on these services letting people know about the sale.  A speaker at the conference told him that all he had to do was to get ‘followers’ and that sales would just go up. Apparently the Comcast example was brought up (where customers that contacted Comcast via twitter had an 90% satisfaction rating, rather than the 40% rating they had otherwise). 

Now, I don’t expect this guy to just ‘get it’, and that’s why he uses me for consulting — I’m there to help teach him this stuff.  What really bothers me is the huge following to monetize sites like twitter, and use it solely as a marketing platform. Although the speaker at this conference was excited about these services, he is doing them, and all of us a big disservice.  The reason why many of these sites were created was to evolve from the ad-laden, corporate marketed site that we have become numb to.  I’m finding more and more people that are following me on Twitter and Facebook that are ’social media trainers’, ’social media managers’, and other titles that are really there just to abuse the system.

Why don’t these people "get it?" Why do these businesses feel that this new ‘medium’ needs to be managed, controlled and marketed to?  For those of you who have read the Cluetrain Manifesto (thanks Tom & John for the book!), that previous line should sound familiar.

Social Media is medium for people to connect with people. People already plenty of ways to connect with marketing (Websites, Movies, TV, Email, Phones, Billboards, etc.), but this is supposed to be the genuine, person to person, communication.  Social Media is a place where a person can open up, and say or post things that are actually on their mind.  Marketing is the exact opposite — a way to convince others to think something about you.  To use a previous example, Comcast is not using Twitter as a marketing engine — the marketing is happening as a result of Comcast’s work on the site.   Comcast (in particular a few of their employees) are using Twitter in a genuine way — to help customers with person to person communications, and this is helping them.  Another company, the Lansing City Pulse, on the other hand, has gone down the marketing route, and has posted nothing but filtered marketed information on their twitter feed. They have been fully lambasted by those on twitter because of it.

I see this move as the same as the move for companies to get on the internet. They moved to the internet because they saw it as a way to get their information online. Of course, almost all of them simply put up an ‘internet brochure’ which didn’t have much more information than their address and phone number. I also see this as a movement as businesses seeing email as a great way to communicate with their customers, and  potential customers (spammers).

I told me customer that despite what they heard at the conference, the ’social media platform’ won’t increase their sales by a measurable amount. However, opening your company to the social media world will connect you to your customers on a personal level, and will with that personal touch that is lost on the internet. Adding a personal touch to any relationship will almost always make it more genuine, authentic, and stronger.  Given a strong relationship, well maintained, you will most likely get repeat business, and business recommended from those who do have those relationships.

Posted by: quetwo | January 11, 2009

24 Hours with Windows 7

,,,

Notice: I do realize that Windows 7, at the time of writing, is a beta release (release 7000), but many of the things I am writing about will most likely hold true with this ‘feature-complete’ beta.

So, yeah, I jumped on the Windows 7 "gotta get it now" bandwagon to see what it was all about. Up to this point, I’ve been watching from the sidelines by reading blogs and watching interviews of people who reviewed the software. The impression everybody is giving so far is that Windows 7 is the best release of Windows to date.

After fuddling with getting the download using my old MSDN subscription account information (yeah, the best way to get your serial number was to do a view-source), and a 2.4Gb DVD download later I was on my way, excited as all heck to see the new OS that would ‘change the world’.

I hooked up a blank hard drive and went through the installation. I was pretty impressed with the installation process. Personally, I like to have more control as to how the OS partitions my drives, but that is the only gripe I really had with it. Install was quick, painless, and didn’t ask many questions. I think it took a total of 15 minutes from the time I turned the computer on with the install DVD to the time that I got the desktop the first time.

Another big surprise is that it actually picked up all my hardware (minus my printer) on the first shot, and everything seemed to work. Even today’s Vista has a real hard time with my ancient video card, but Win7 had no problems with it one bit.

However, that’s where my good experiences ended. The first thing people will notice when they boot up is that this thing really looks and feels like Vista. Vista is one of those crossroads of bad design, and "too simple for its own good", and Windows 7 is just not that different.  Some of the things they fixed, like the shutdown menu, were replaced with equally bad decisions like the new taskbar.  For those of you who haven’t seen the new task bar yet, they no longer show you each window of an application that is open — they are always cascaded behind the program name.  This means that switching between windows will always take two clicks (one of them within a menu) –  a real loss of productivity.

Microsoft has not enabled any migration path from XP to Windows 7. Windows 7 requires either a clean slate or Vista. I hope that is something that only remains true for the Beta period, otherwise Microsoft will have some serious blood on their hands. You have always been able to upgrade older copies of Windows from one release to another — even Windows 98 -> XP worked just fine.

Microsoft has also made only minimal changes to the networking stack. This was one of my biggest issues with Vista. In Microsoft’s attempt to make networking easier, they not only candy-coated everything, but they also hid some very important and useful options from both newbies and power users. For example, changing your IP address (which is something I do at least 10 times a day in my work installing IP based phone systems), requires 6, count them, 6 clicks and a restart of the networking sub-system (which means that if you are downloading something via wireless and change your IP address of your Ethernet card, your download will fail).  Mac OSX requires only two clicks to do the same thing. Also, if you change your networking settings (like your IP address), Windows 7 will reset your "network profile" which includes things like your Firewall and Sharing settings. You have three pre-defined profiles, and your settings will be reset to one of those profiles (any custom settings, like firewall exemptions do not carry along with these profiles)

The next thing that bothered me is the Indexing engine. While they made some changes to the frequency and priority of the indexing, it is still there.  About 15 minutes into me using Windows 7, the indexing engine fired up, and my PC felt like it was dragging for about 30 minutes. Windows decided it wanted to know everything about my documents, photos, and music.  I personally really dislike integrated searching engines, as they really don’t offer very many benefits to me, the end user (other than Microsoft’s dream of integrating web search and your personal search in one interface).  If the loss of performance is that great when my computer has nothing installed, i hate to see it when I have all my drives hooked up.

And finally, Internet Explorer 8. I’ll start off by saying that when I’m on my PC, I use IE by default. I realy don’t mind it, in all honesty.  IE8 is not an application I am happy with though. It took forever to start, and the customization process was really bad. The entire application seems like an advertisement for Microsoft’s online services.  "That looks like an address, let me look it up for you on Microsoft Live Maps, even though there is a map right under it."  Yeah, like that.  Many of Microsoft’s online services are not the best of breed, and to switch away from having them offered ALL over IE8 is like pulling teeth.  The other thing I noticed is that certain pages that have lots of information that triggers these "helpers" makes the pages render REALLY slow.   Yahoo Yellow Pages is one example — the page took ~8.5 seconds to render (and only 1.3 seconds to render in Safari, according to Safari or Windows).  This is a real disappointment.  Event switching to "compatibility rendering mode" made no different for these pages.  Pages that did not contain anything that would trigger a helper seemed to render as quick as as Safari. (FWIW, I tested via Safari because it uses the standards-based WebKit rendering engine, which is a very good benchmark for these things).

But to end the review on a good mark, application compatibility seems to be right up there with XP. There was only a single application that I was unable to install (VPN Software), because it was being cranky about the windows version number. My Adobe applications, Eclipse, Flex Builder, Office, etc. all installed without a hitch. UAC is still present, but displayed very infrequently now.

Will I continue to use Windows 7?  I will keep it around for testing right now, but XP will continue to be my primary OS on my desktop. Windows 7 is no Mac OSX (which is as close as we have come to mastering simple, yet easy and powerful in my opinion).   But Microsoft will really need to keep a close eye to the business world. Some of the issues I mentioned about Vista are still present in 7, and may make some businesses think twice about upgrading. I’m sure many are in the situation where they will be forced to upgrade despite any problems that may still exist.

Older Posts »

Categories