QueTwo's Blog

thouoghts on telecommunications, programming, education and technology

Monthly Archives: March 2008

That tears it! I’m switching!


I’ve become a statistics.  I’m joining the league of people who are deciding to ditch the Microsoft Platform and going to the Mac.  While I’ve been thinking about it for a while, but the last couple of months have done me in with Vista.  

I was one of the ones that was excited about Vista.  I waited a few months until I got it, and at first it seemed ok.  Actually, I was pretty impress about some of the features (notably the interaction with different projectors, and the auto-switching to presentation mode).  But then things started to annoy me.

  • I couldn’t figure out why my laptop’s hard drive was churning at 100% for the first 15 minutes of each boot.  There were no applications running, and no services taking up memory. According to Microsoft’s own tools, the prefetch and the page file were being touched A LOT.  I can’t imagine that that is good for my battery life…
  • Every time I plug into a new network (or change my IP address), it adds a new "Network" to my computer ,and wants me to select one of the three default profiles. I can’t keep the existing firewall profile I JUST setup for the work I want to do.
  • 10 distinct clicks to change your IP address.  I provision new network and phone gear.  I have to change my IP address every 10 minutes sometimes..  Oh, and if I want to see if DHCP took, running ipconfig is a test in futility — there are over 100 networks listed!
  • Willy-Nilly installing ‘critical’ patches without asking you first. Two weeks ago I was coming home from a conference in Atlanta (read previous entries), and I decided to use the wireless in the airport.  Turn on wireless, hop on, remote desktop to my machine at home to check email, etc.  Turn off laptop and board the plane. While on the plane, I decided to do some work — started writing some articles and presentations.  Our 15 minute landing-warning got announced and I went to shut down the computer.  I hit the button.
    "Please wait while Windows installs update 1 of 15… DO NO SHUT DOWN YOUR COMPUTER". I held out as long as I could, but I ended up just pushing the power button to turn it off as the steward threatened to throw me out the back door because I wasn’t shutting down my computer.

In all honesty, the Dell Inspiron D620 was one of the best laptops I’ve had to date.  Two years of beating the thing to hell and back and it didn’t even show a scratch. The thing that made me switch is the operating system.  Apple has some big shoes to fill in regards to my needs, but if I look at others in my industry, they are all donning the Apple logo too.

So, the Dell already has been sold (I think I asked too low of a price — it was gone to the first taker in like 10 minutes), and the MacBook Pro is on its way!


Flex Camp Cleveland Announced


There is an excellent one-day software conference in Cleveland on April 7th.  It’s called Flex Camp Cleveland and it offers an opportunity to get a fast education to programming in Flex by Adobe.  Please visit www.flexcampcleveland.com to see the line-up of expert guest speakers.  Ben Forta, noted author and web developer, will give the keynote address.

Flex is software tool that lets you create powerful applications that run in your browser or on your desktop.  These applications are different from ordinary HTML applications because they are actually RIA’s, or Rich Internet Applications.  Once you see a Flex application, you will understand why they are so much more interesting than HTML applications.

Flex Camp Cleveland was organized by the Cleveland Flex Users Group (CLEFUG), which is just a bunch of programmers who get together and share ideas about Flex.  We contacted several Flex experts and put together a full day of one-hour presentations to help the beginning Flex developer get on their feet with Flex.

Two of the instructors are with Adobe, and the rest are Flex experts from Cleveland and Columbus, Ohio.  The keynote speaker is Ben Forta, noted author, developer, and instructor.  We will also be giving away raffle prizes such as books and software.

The cost is only $25.00, including lunch.  To register for Flex Camp Cleveland, visit www.flexcampcleveland.com

Why are you NOT using LiveCycle DS?


Every time I show one of my demos at a usergroup meeting, or just with a customer, the sound of jaws dropping is something I’ve gotten used to.  It is not because of the fancy graphics, or the bug-free code (this is where the people who actually have seen my demos start laughing), but because of the cool things I do with data connectivity.

Data Connectivity?  That’s the boring stuff!

I’ve been deploying more and more applications using a middleware server for Flex called LiveCycle Data Services.  LCDS sits between your Flex or AIR applications and your back-end server such as ColdFusion.  It allows things such as proxying (for those hard-to-reach web services), data management, AMF connectivity, and messaging. 

Proxying, is pretty self-explanitory. You probably already know, but JavaScript and the Flash Player have security restrictions built in that disallow you to connect to multiple remote-sites.  This is so you don’t have rouge js or flash applications that do all sorts of bad things.  Unfortunately for some of us web developers, we NEED to connect to two remote sites (for example, to process a credit card off-site).  LiveCycle Data Services (and it’s little brother, Blaze DS), allows you to proxy those services with little-to-no code.  It just works

AMF connectivity (also known as Flash Remoting, or RemoteObject Calls) allows you to use binary, serializable, data connections with your back-end server.  No longer do you have to worry about the bloat and untyped object problems of Web Services SOAP calls, or pure XML dumps.  This is what 90% of the developers are using BlazeDS or LCDS for. While cool, it is small potatoes for me.

Messaging allows the Flex clients to send and receive unsolicited messages to and from each other or an application server. On the surface it sounds boring, but have you ever had to build a chatting application?   Your Flex, AJAX or JavaScipt application sits there, and POLLS your app server every x seconds for new data.  This wastes lots of bandwidth and application processing power (because not every poll will contain new data), and makes the end user feel like there is stuff happening when there isn’t.  And, if they use Internet Explorer, they will hear that dreaded ‘click’ each poll you do.  Messaging via LCDS/BlazeDS allows you to setup ‘channels’ that your app or app server listen to and can publish to.  If you need to send a real-time message to the client, all you do is publish data to that ‘channel’ and the end-client gets that message in real time.  Not only can you send simple messages (strings, integers, etc), but you can also send complex objects, classes and other wacky data-types. I’ve seen an implantation that sent binary-encoded messages such as PNG screen shots back and forth!  Many people use this feature to build apps like real-time dashboards or chatting apps. 

And the coolest feature of them all, in my opinion is Data Management.  Data Management allows developers to create managed collections (like the ArrayCollection), and have all the heavy-lifing of checking for updated data, sending revisions of data, etc. taken care of by LCDS.  In literally two lines of code (minus configuration on the servers), I can write an app that will display data to the end-user in a DataGrid, Form, or Chart.  And best of all, if that data is changed by any connected clients, or the application server, it will update the Flex application in real time!  If I want to allow the user to edit the data, I can either write a simple form (which can update the server and all other connected clients as the user types), or simply change the DataGrid to be editable.  No heavy lifting required.  Introducing conflict management is simple, as your DataServices component will trigger events that tell you what is changing on the server as it happens.  Paging and lazy-loading of data is simple too, requiring the server admin to change one switch.  It really is that cool.  Unfortunately, Data Management didn’t get open-sourced with BlazeDS.

So, why are you NOT using LCDS or BlazeDS?

  • No good documentation : While the documentation isn’t as good as the rest of the Flex suite, it is out there.  I suggest taking a look at the FusionAuthority magazine (the red, October edition), and you can read TWO of my articles on the subject.  FusionAuthority will be launching Flex-Authority soon, and will be having much more content on the subject.
  • Costs too much:  While the full-blown version of LCDS is pretty expensive, lets say $3,000 per CPU (contact your Adobe Sales Rep for exact pricing), there is a FREE version that is limited to a single CPU, and an OpenSource version that includes many of the features of LCDS.  LCDS-Express (the free edition) is included with the ColdFusion 8 download.
  • Too hard to configure:  It can be intimidating at first, but the configuration grows on you. The configuration files are written in XML, and are broken up by service type. You will find the configuration in your (application home)/WEB-INF/flex/ directory.  Look for the services-config.xml file to start. ColdFusion users can find the configuration in the (coldfusion root)/wwwroot/WEB-INF/flex/  directory. You can find examples on how to configure the files in my FusionAuthority articles.

Want to find out more?  Check out my usergroup’s presentation archive; there were two presentations on the matter, OR you can wait for FlexAuthority to come around. 

BlueDragon CFML engine open-sourced!

Blue Dragon LogoSince this is the second-best supported CFML engine out there, this is pretty big news.  No longer will the cost of running a CFML server be the largest deterrent to people going to CFML.  The OSS crowd will like this announcement too 🙂


Presentations Posted Online, Upcoming Talks


A few things:

  • Code samples from my session at 360|Flex are now online!  Click on the "Code Samples" section above for the PPT and Projects zipped up.
  • I will be speaking at the Ann Arbor SPARK on Monday the 10th, 6pm on RIAs.  If you are in the area come and stop by! 
  • I will also be speaking at the Michigan Flex Group on Thursday.  Flex 3 Launch Party Baby!

The RIA Landscape (and which platform to choose for a new project)


I recently got an email from a co-worker which said:

“I recently got tasked with creating a new way that students can track their time.  The Dean demanded that it would be ‘cool enough to use every day,’ although I don’t really know what that means.  I’m pretty sure he’s talking about that RIA thing you spoke to us on.  Any help?”

While a form to simply input the student’s time doesn’t really necessitate a full-blown RIA, this email does lead to the discussion of where one would or should use all these new technologies that are popping up all over the place.

I think this will be a two-part blog entry — I will focus on the technical specs/requirements in this posting, and the use-cases in the next.

On to the data-sheet!  If you feel that I’ve missed some key points, please comment!

  AJAX / HTML  Microsoft .NET Runtime Silverlight Flash/Flex Player Adobe Integrated Runtime (AIR)
Supports Windows 9x/NT YES Partial NO YES YES
Supports Windows XP/Vista YES YES YES YES YES
Supports MacOS X (Intel) YES NO YES YES YES
Supports Other Mac OS Platforms YES NO NO YES NO
Supports Linux YES YES ** Future ** YES Future
Development Platforms ALL Windows XP/Vista Windows XP/Vista Windows / Mac OSX/ Linux Windows / Mac OSX / Linux
Offline Support Some, Using Google Gears Yes, using MS-SQL Express NO NO YES
Video Support NO YES YES YES YES
Programming Languages Supported HTML, JavaScript Any language that can compile to .NET CLR C#, VB ActionScript ActionScript, HTML, JavaScript
Direct Printer Support NO YES NO YES YES
Direct File System Support NO YES NO NO YES
Direct “Registry” Support NO YES NO NO NO
Can Execute Other Applications NO YES NO NO NO
Direct TCP/IP Socket Connections NO YES NO YES YES
Security Restrictions Sandboxed Very Well No Sandbox Sandboxed Sandboxed Some Sandbox, with notifications to end user
Icon on desktop NO YES NO NO YES
Ability to add system tray / dock notifications NO YES NO NO YES
Ability to run in background NO YES NO NO YES
Runtime / Platform Download None, included in Browser of choice 22.4 MB (version 2.0) 2.5 MB 1MB 11 MB
HTML Engine Uses browser’s engine Internet Explorer NONE NONE Webkit (Safari)
Learning Curve Ranking 1 – Easiest 4 5 – Hardest 2 3

** These solutions are being developed by 3rd parties, usually open-source groups.  They are NOT based on the Microsoft developed runtime, but they are blessed by them.  There are known compatibility issues.

Thoughts on Offline Silverlight


The Blog-o-Sphere has just been abuzz since Ryan Stewart from ZDNet wrote about how the next big announcement for Microsoft’s Silverlight project is that it is going to support an Offline mode, akin to Google Gears or the AIR platform.

My question to this is why?  What is gained by having an application, that is designed to be contained from within a browser, going offline.

For those readers who don’t know what “Offline” technologies are, or how they work, they essentially allow a programmer to store content in local storage on the user’s PC (think Cookies).  This way, if the user is offline, for example, in an airplane, they can still access their content.

However, one problem with this is, if the user is offline, are they really going to go through the troubles of loading up a web browser, going to your URL, and hoping that your application is still in cache?  It doesn’t seem that this scenario is believable, or really solves too many problems.

What would be really cool is if Microsoft expanded their .NET platform to allow an easy-to-use offline mode.  In AIR, when you are connected to LiveCycle LDS, all you have to do is issue one command, and all of your managed variables are stored locally, and managed remotely.  If you are offline, you access them the same way.  Now, that is easy!  While this is possible in .NET, by using SQL Server Express, you would manually have to write the code to manage your variables’s state in either the local or remote repository, and do constant checking on both repositories.

But back to my original question — WHY.  I think that people are expecting Microsoft to use Silverlight for all it’s newest and greatest applications.  They often forget about .NET being very well deployed among Windows based machines.  The only thing I can think of is people are still waiting for Microsoft to fulfill on their original promise of “.NET will be the ultimate, because you will be able to write once, compile to the CLR, and deploy on any platform!”  For those .NET folk who say they never said that, I still have a copy of the poster I got at the .NET release party that Microsoft threw in Detroit, MI.  I mean, what is the point of compiling down to a CLR if you only support one platform?  Don’t talk about the mono project, because, that is unsupported by Microsoft.  But I digress — I’ll save my beef with the .NET platform for a different posting..

Anyway, it will be interesting to see what is truly announced at MIX.  I will be keeping my eyes and ears open to the announcements, and the future of the world ;-P