Archive for

First Impression of ColdFusion Zeus/10

So the public beta of ColdFusion 10 is out… and man am I stoked!  Every version of ColdFusion for me has been nothing short of revolutionary, and after waiting for nearly two years I couldn’t wait to take it for a test drive.  So after little sleep and tinkering for 24 hours, here’s a first impression.

Zeus comes packed with a myriad of updates.

I immediately noticed Tomcat.  Maybe it is faster (I can’t really measure that too well over my local network on my development server which really has no measurable traffic), but everything just seems zippier and more responsive.  I don’t know whether that’s Tomcat or new, hot ColdFusion goodness, but I really appreciate that.

My favorite part by far is the exceptional detail and enhancements to security.  I rely on ColdFusion to be on top of its game with security so I don’t have to.  But because it is in fact security, I personally feel ALL of these security features should have been released in increments over the past two years with ColdFusion 9.  I’m a little irritated at Adobe with the decision to market security as a feature set instead of keeping all it’s products secure all the time (you know, like everyone else… norton, mcafee, php, java… just to name a few), but I’ll play along and say job well done because there’s great stuff here.

Read more

QR Codes

I saw Ray tweet today about a QR code and even though I’m no resident expert, I’ve dealt with them quite a bit lately in most of my print advertising and wanted to point out a few things.

What is a QR Code?
Simply, it’s a barcode (like barcodes on food at the grocery store or other stuff you buy) that YOU can customize. This code can then be scanned by smart phones and other devices to quickly translate that information without having to manually type it in.  It’s my understanding QR codes are already being used everywhere outside of the States and the U.S. has been slow to adopt the technology.  Regardless, QR codes have become quite popular over the past couple years and will continue to grow in use… if you aren’t seeing them everywhere now, you soon will.

*A more in depth definition from Wikipedia

What are QR Codes used for?
To put typical use into in perspective, I was at Taco Bell yesterday and there’s a poster on the wall with a QR code, which I scanned with my phone, that linked me directly to a survey on the restaurant on the web.  I took the survey while I was standing and waiting for my delicious (and now VERY overpriced) chicken and nacho cheese chalupa meal with a soft taco.

Pretty awesome!

Typically, you’ll see QR codes in print.  I’ve been using QR Codes extensively on brochures, business cards, ads in program books and so on.

And typically within a QR code is a URL or link to a website.  But a QR code is a multipurpose container that can hold a wealth of information including text, phone numbers and text messages (typically not a combination of information though).

So is a QR code practical on a website?
Well kinda… it all depends on what’s in the QR code.  Yes, the codes will easily scan onto a phone from the screen, so that’s not a problem.  But any sort of link inside the QR Code would probably be counter-productive.

Practical uses on a website might include contact information that can be easily stored in your phone so you don’t have to type it all in, although as a designer I would add the code to my website as a convenience to my users, not replace my contact information altogether.

How can I make my own QR code?
My favorite tool is here, although there are plenty others out there.

So how do I scan these codes?
Android has a free app in the market called QR Droid which I use frequently and it works great!  I don’t know what’s out there for the iPhone, Blackberry and Windows phone users, but I’m quite confident there are QR code apps available for those smartphones as well.

Now if only I could get my fortunes to be a QR code on my napkin so I didn’t have to actually open and break the fortune cookie to get it….

Fireworks!

I’ve always had a passion for using Fireworks since version 2. The first time I used Fireworks I could barely code a website… I used the Fireworks export tool to do everything for me (I totally flipped when I figured out how easily I could create rollover dropdown menus). In fact I’ve been using Fireworks so long now I still miss the oldskool font editor, although it’s something I’ve learned to live without.

Normally, I use Fireworks for all my web mockups… in fact I use it daily.

Then came along the day a few years ago when I wanted to learn how to create vector icons and I immediately turned to Illustrator. Meh… any vector icons I needed to create can just as easily be made in Fireworks… I just love the control and ease of use with my pen tool and those sprites.

This past year I designed a bunch of print material for various projects (several event flyers, event tickets and even a book of ads), so I turned to Photoshop (after strongly looking at Illustrator and InDesign). Nope… it’s Fireworks again to the rescue. I got the information I needed from the printer for DPI, size and bleed and I was easily able to export into the PDF format the printer needed.

I think it’s awesome I can do all this along with resizing and/or renaming images for my galleries with the batch tool, take screenshots of windows, use any Photoshop filter and even do skinning for Flex and Air.

I’m sure it has a lot to do with the comfort level I have with Fireworks, but it never ceases to amaze me the sheer versatility and flexibility the program has to offer. I personally don’t think Fireworks gets nearly enough praise for all it can do.

CF HTML5 Validation Gotcha

I spent some time scratching my head over this one and thought I’d share.

<cfset userAgent = trim(listGetAt(CGI.HTTP_USER_AGENT, 2, ';'))> <!--- This only works for IE --->
<cfset outtaDate = 'MSIE 8.0, MSIE 7.0b, MSIE 7.0, MSIE 6.1, MSIE 6.01, MSIE 6.0b, MSIE 6.0'> <!--- List all the versions of IE that are out of date --->
<cfif ListFindNoCase(outtaDate, userAgent, ',') NEQ 0> <!--- We're not gonna bump em from the site, but we will display a warning to those visitors using the older versions of IE --->
<div class="outtaDate">You are using an out of date version of Internet Explorer and this site <b>WILL NOT</b> display correctly. If you are using Windows Vista or Windows 7, please use Windows Update and upgrade to Internet Explorer 9 or newer. If you are using Windows XP and earlier which cannot upgrade to Internet Explorer 9, please download the latest version of <a href="http://www.mozilla.org" target="_blank">Firefox</a>, <a href="http://www.google.com/chrome" target="_blank">Chrome</a>, <a href="http://www.opera.com" target="_blank">Opera</a> or <a href="http://www.apple.com/safari/" target="_blank">Safari</a> to see this site correctly.</div>
</cfif>

I’m using this code to identify older versions of IE that don’t support CSS3 and/or HTML5. Maybe I should be identifying browsers a better way, but the problem here lies within the listGetAt on line 1.

This code will trip up the W3C Markup Validation Service marking your code invalid with one of ColdFusion’s styles from an error… ColdFusion’s pumping out an error to the service… even though the running site won’t pump out an error at all.

Here is ColdFusion’s exception error to the W3C service:

In function ListGetAt(list, index [, delimiters]), the value of index, 2, is not a valid as the first argument (this list has 1 elements).&nbsp;Valid indexes are in the range 1 through the number of elements in the list.

I’m sure this isn’t a big deal since most people aren’t identifying browsers with their code or even coding in HTML5 for that matter, let alone valid HTML5 to use the W3C service (hopefully it’s more than I think).

Either way, I don’t know why the validator service is getting that error, having tested the code on virtually every browser without any problems (old and current alike). And I can’t really tell whether the problem is with CF or the W3C’s tool, but it’s not having any sort of effect on the live code, which is always a good thing.

CFX: Feature Requests Part 3 – Everything Else

Although I was a part of several previous beta/pre-release testing versions of ColdFusion (Scorpio and Centaur) and my posts being as unpopular as they are so far, maybe it’s for the best I’m not part of Zeus [yet].  But, I’d still like to wrap up this series with a few remaining things I’d like to see brought to the tenth release of ColdFusion.

  • Facebook integration (similar to Google Maps integration only your parameters include your appID and secret key) — For those who don’t know, the work by Affinitiz on a ColdFusion SDK for FaceBook, although only in beta at the moment, is top-notch stuff… I love it!
  • Twitter integration
  • Google Calendar integration

This certainly isn’t a major thing and not even really a problem. It may not be considered best practice, but I can pass form variables directly into a CFC as such:

<cfform method="post" action="my.cfc?method=formMethod">

Best practice would have you submit to another CF file which invokes the method. I’d love to eliminate that extra step of submitting to a CF file (no reason… this is my wishlist :P ) and have submitting the form data to the CFC be best practice:

<cfform method="post" component="#myCFC#" method="thisForm" optionalArgument="#formStructure.fieldName#">

When output to the browser, the form’s action would be masked with whatever the component file is, but without revealing the method (for security reasons). You could send the entire structure to the CFC’s argument or allow optional arguments from the structure as shown in the code above. Maybe it’s a tough sell, but I think it’s cool. ;)

If nothing else in this series was unpopular enough, I know this certainly will take the cake [or pie].  We have a development version of ColdFusion, but I still think the Standard edition of CF should be made free with no support from Adobe while offering a “professional edition” that’s the same thing as the Standard edition which includes paid support from Adobe.  Although there are free alternatives to ColdFusion out there, none of them are true to ColdFusion imho, adding in and making their own tweaks and adjustments along the way.  I’ve been preaching free CF w/o support for years though.

Anyhow, despite Adobe’s lackluster image lately [with Flash], ColdFusion remains an exciting, quality product and I’m looking forward to the next chapter of ColdFusion development.

CFX: Feature Requests Part 2 – New Tags & Functions

Before we get into the tags, I’d first like to mention I firmly believe SES URLs need to somehow make their way into ColdFusion.  The root of ColdFusion is making development life simple, and there is nothing simple about setting up SES URLs, particularly if you don’t know regular expressions.  I think this should be enabled/disabled at the application scope level and be a well thought out, simple process that doesn’t require IIS or Apache URL rewriting… it’s all done seamlessly in CFX.

With that said, here are some new tags I’d like to see:

  • CFTRAIL – This will leave a breadcrumb trail.  I initially thought this would be a feature that would require the use of SES URLs in the application scope, but thinking further, I think it could still be done with the developer providing parameters.
  • CFBROWSER – Web browser detection baby!

And while we’re at it lets add some parameters to CFLOCATION to allow delayed cflocating:

<CFLOCATION from="now()" delay="dd:hh:mm:ss" />

Lets also add a parameter to CFDIV to allow that loading icon to be customized:

<CFDIV icon="/images/yourAnimatedIcon.gif" />

This being ideal for loading user custom-created pages from a database, I think one of the features I would use the most is the ability to loop over cfcase in a cfswitch:

<CFSWITCH expression="#whatever#">
<cfloop query="yourQuery">
<cfcase value="#query.Column#"></cfcase>
</cfloop>
<cfdefaultcase></cfdefaultcase>
</cfswitch>

And finally some new functions I’d also like to see:

  • dollarformat() – oops!  Already exists.
  • encryptStruct()
  • encryptArray()
  • queryToArray(my.query,[dimension])

Coming next week
CFX: Feature Requests Part 3 – Everything Else

Star Wars The Old Republic vs. World of Warcraft

I’ve been listening a lot about the latest “Warcraft killer” and I just really quick wanted to put my two-cents in on the subject.  Here’s where SWTOR fits in on the list:

  • Lineage II
  • Everquest 2
  • City of Heroes/Villians/Champions (a whole saga of failure… epic!)
  • Guild Wars
  • Warhammer
  • Lord of the Rings Online
  • Age of Empires Online
  • Rift
  • Insert Latest WOW Killer Here Star Wars: The Old Republic

That’s right… every single one of the above (I’m sure I missed a few) have all been labelled as “wow killers” over the years and each and every one has suffered the exact same fate… 1-2 months of mass appeal and a near immediate drop-off of players to only accumulate a cult following at best.  Does that mean these games are all failures?  Absolutely not!  Many were very good, if not even [visually] better than WOW.  But it’s amazing to watch the scores of players crawl back to Warcraft boasting how loyal a Blizzard fan they are after the fact.  I find this unfortunate because I really wish they were “loyal Blizzard” fans, which I believe would make Warcraft even better; to have every player make up in their mind they’re playing and not ever leaving would eliminate many of the people blatantly being jerks because somewhere players made up their mind that it isn’t ok to be content with what’s sitting in front of you… and apparently because you’re a paying customer you’re somehow entitled to complain about what’s there instead of provide feedback or even take a break from the game altogether.

On the other hand, if this means I won’t see the multitudes of people complaining in trade chat for a few months, I’m all for it.

Having now played the SWOTR beta I’m just going to make this short and sweet… for everyone switching to SWTOR… see you in MOP.  Nothing different here from the above list.  Think you’re bored with wow or updates not coming fast enough for you?  SWOTR monotony makes wow monotony look like paradise!  Let the “I’m never coming back to wow” replies begin.

The one place I think SWTOR has learned from it’s predecessors is bugs.  the game is surprisingly stable and flows quite well.  The one relatively different aspect of SWTOR from other MMOGs is the strong focus on the storyline which has been touted by the developer all along.  This is really where SWOTR will lose everyone in my opinion… questing in WOW is wonderful the first time and then you can kinda go back to questing whenever you want, opting along the way for so many other things from PvP, to dungeons, raids, and even plants vs. zombies.  Most importantly you’re free to roam wherever you want from level one.  You do not have that freedom with SWTOR.  You’re kind of locked into this questing mode which actually instantly turned me off from the game.  I game to relax and constantly being told what I have to do over and over again isn’t fun for me.  Wheras in WOW, I wanna jump off a cliff I’ll do it.  Even better, I’ll mount up, fly as high as I can and get an awesome rush as I watch my body plummet to the ground.  That level of spontaneity and freedom offered in WOW simply isn’t there in SWTOR.  Is SWTOR an excellent game?  Oh absolutely.  Will it stand the test of time?  Sorry, but it’s just another icon on my constantly growing list in Windows Add/Remove programs… I’m sure I’ll forget to uninstall this one too.

On an a side note, the Diablo III beta is excellent and is truly a game to get excited about.

CFX: Feature Requests Part 1 – Addons & Frameworks

Even though I was unable to attend, Max 2011 produced some good things in the way of announcements for ColdFusion 10 (I like CFX better).  Most of what was announced though seemed like obvious steps forward of things that needed to be addressed, and not necessarily features that will make you jump out of your seat to line up and buy the product the second it’s released.  And I don’t really want to cover these features which can be easily found via Google.

Seeing as I’m not part of the alpha/beta of Zeus, what I do want to cover are some things that I believe would make CFX the product that would make you get in line and a product you can’t live without.

Today’s software and programming world is plagued with modularization. It is no longer just the language that is chosen for a project, but also the framework on which it’s built.

I am an anti-framework guy.  I honestly don’t get the buzz or see the benefit.  Inheriting someone else’s mistakes and relying on them because I’m too lazy to code the features myself isn’t a blessing for me or any of my clients.  It may save time to slap together a site in a few minutes, but does it really save time in the long run (and then have to keep that framework up-to-date… no thanks)?  Having jumped from framework to framework I’ve become a naysayer.  However, for the world of framework-lovers and the fact that ColdFusion is for everyone, lets modularize: Read more

mySQL Foreign Keys

I love database relationships, and msSQL makes them extremely easy to manipulate at will.  When i switched back to mySQL a couple of years ago I also made the switch from phpMyAdmin to Navicat and immediately didn’t understand Navicat’s way of handling relationships in mySQL… correctly called “foreign keys” for mySQL vs. msSQL “relationships”.  My copy of Ben Forta’s MySQL Crash Course didn’t dive much more than a sentence into the subject, so I thought I’d revisit mySQL relationships when I was ready to sit down and figure it out.  And although I don’t consider foreign keys/relationships absolutely necessary because I can do everything manually, they sure are nice, particularly on the larger databases where sometimes you may overlook cleaning everything up.  Having the database do a little more work vs. the language (ColdFusion or PHP in my case) is always nice too. Read more

Media Players 2012

Every year around the holidays I sit down and look at my media hardware and see if there’s anything I should upgrade and/or replace.  I thought I’d do some public brainstorming this year in case anyone else might be interested.

My Current Setup

  • We cut the cable years ago so we have no cable or satellite.  We will subscribe again if there’s ever an opportunity to pay per channel or pick the channels we subscribe to.  We don’t mind the commercials, it’s all the extra crap.
  • We have a dedicated WHS with 4TB of space, most of which is used to host the videos we stream to the TVs
  • We have two WDTVs which we use mainly to stream video from the server to the TVs, but also for streaming Netflix and TuneIn Internet Radio.
  • Our big screen in the living room has the sole Blu-Ray player in the house, but all the other TVs have a DVD player.  We rarely use media because we’ve ripped all our DVDs with makeMKV onto the server thanks to my 3-year-old breaking half the discs… this includes the Blu-Ray media, although the larger Blu-Ray files do tend to skip over the wireless when streaming so on occasion we do toss in the disc.
  • We have an antenna on the roof for reception of all the local HD channels.  This could improve… although we do get some, I’d like to get several others, but would need a different antenna for that. Read more