If you're seeing this...

...our DNS entries have been updated. All of our sites have been moved from a CF6 server to a CF7 server so we can roll out a few of our showcase Flex apps to play with.

While I was making the transition. I upgraded my install of BlogCFC from 3.x to 5.x. Many new features and a nice clean administrative console really make this an outstanding application. Thanks. Ray!

ColdFusion 7.0.2

After a rather painful set of mistakes. I got my laptop updated to CF 7.0.2 so I could use the latest and greatest Flex connectivity tools.

Multiple instance goodness (the likes of which I hadn't had working in quite a while) hooked up to Apache...virtual servers for each project. dedicated CF instances for most of them (saves me a lot of config time). and a subversion repository on our dev server backing it all up. Flex Builder 2 licenses all installed and happy. plugins (Apatna. Subclipse. CFEclipse) configed and up to date.

Now...back to "real" work :-) I have a Flex dashboard to show off to a client tomorrow!

ps - thanks. Matt. for taking the prototype and making it a "real" app with 10x better performance!

The ACME guide

Forgot about this. but apparently it wasn't a one time document...this is the latest release of the ACME guide to setting up a CF development environment:

* Apache * ColdFusion * MySQL * Eclipse

Check it out!

http://www.stephencollins.org/acme/

SQL Server 2005 Express Edition released!

Download it tonight when the internets are quieter ;-)

Watch your file privileges

Flash + Web Services.

Usually cool and trouble free.

But then one day my SWF (locaed on box A) stopped getting data from box B. It wasn't immediately obvious and went unnoticed for quite a few days by which time I had forgotten we did a code deployment to that server.

So I was bashing my head on the desk this morning (typical when working in the Flash IDE) trying to solve the issue. Of course the SWF ran great locally.

Just for thrills I tried to access boxb/crossdomain.xml. IIS spits out a 403 error. Head goes through desk when I realize that was the problem all along. Stupid Windows! ARRRRRRGH.

Added IUSR_boxA with Read access and everying came up.

Just for good measure: STUPID WINDOWS!

ColdFusion 7 on OS X 10.4 "Tiger"

Thanks to Sean Corfield. i've got a working OS X development machine! JRun 4. CF7. and MySQL are all up and happily running. I put Eclipse on there a few weeks ago too. Sean. your instructions were perfect! Not a single problem. Last time I tried I did not succeed. but that was because the machine really needed an OS upgrade to function properly.

Now to move one of my apps off my ThinkPad and onto that machine and see how well things work. Clearly i'll have to get Apache configured as well. but at least for now we're one step closer to having a backup development box.

Also coming this week: 1) Summer programming intern! 2) New Dell workstation/server! 3) Completion of one of our 6 July projects!

And a lovely day it is outside too.

Google Web Accelerator -> Not so good!

Ack!

Not that i'd install the GWA on my computer (GDS seemed scary enough). but I know other people will. Unfortunately. people have been reporting strange issues with it...like things disappearing from their Backpack sites.

Apparently GWA goes and prefetches all "GET"-able links in webpages. While this is great for browsing sites like. say. the New York Times. it's hell on wheels for your administrative interfaces.

Say you have a link to delete an item in your admin screens. Even with a javascript confirmation alert onClick(). GWA IGNORES the confirmation and fetches the page anyway. causing unexpected (and honestly quite nasty) behavior.

Credit the guys at 37Signals who figured this out and have a solution for RubyOnRails pre-rolled.

http://37signals.com/svn/archives2/google_web_accelerator_hey_not_so_fast_an_alert_for_web_app_designers.php

I wonder if this code will work for CF:

<cftry>
<cfif StructKeyExists(GetHttpRequestData().headers. "X-moz")>
   <cfset isPrefetch = GetHttpRequestData().headers["X-moz"]>
   <cfif isPrefetch IS "prefetch">
      <cfheader statuscode="403" statustext="Prefetch disabled." />
      <cfabort>
   </cfif>
</cfif>
<cfcatch type="any"></cfcatch>
</cftry>

oh and one more thing...

This is more justification for doing all your data passing using hidden forms. even if it is somewhat more ugly under the covers!

Bad programmers

I'm sure we've all had to deal with bad programmers before. Fact of life in any business. really...there are those who suck and those who rule and a whole bunch in between. Whether those in between know the difference is still up for debate.

I had to do a small integration project last week that didn't go too well. When you're dealing with Foxpro. pretty much anything is possible. Or. in this case. absolutely nothing.

I established an ODBC connection just fine through Windows to this remote database (different server. same network). Went into ColdFusion and set up the ODBC socket connection to that DB connection. All good. until I went to write a record. Or read a record. Or even look at the damn table. No dice. CF complains it can't find the database table.

My best guess was that there exists some sort of permission problem between the servers - probably the account that one process runs under blah blah blah. After a few hours of trying to figure it out (ending at 2AM) I gave up and did a "workaround" the details of which I will not be sharing with you today. Or ever ;-)

Anyway. the point of this story:

Designer of said Foxpro database has been adding fields every now and then. His latest addition. made mere hours after my job was done. was created as a NON NULLABLE FIELD. I mean. seriously. you fool! Of COURSE this breaks two other programs! He didn't test. didn't inform. didn't do anything to validate that this was a good idea. Where did he get his direction? From a non-technical General Manager! And then left the "testing" to this same General Manager! Couldn't believe it.

I bet the company lost some business over the weekend due to this. Weekends are a high-traffic period for their website.

But they have no way of knowing for sure. The ASP code that inserts into this table isn't wrapped in error-checking of any type. Zip. Zero. None.

How did I know he made a change? My code. interfacing with this table for a different purpose. contained a simple error check - if anything failed on the sql execution. I got an email. Simple. 3 lines. no big deal. That's ALL IT TAKES. And yes. mind you. this was in "classic" ASP. a language I know very little about (other than it sucks) and using code samples that weren't commented at all.

This is what happens when you take a dinosaur. let him write code in a language that is not the standard on your server (everything else is in CF). use a database platform that makes it very difficult to interface with (ok. so it's only SLIGHTLY worse than Access). and then have no overarching guidelines for informing the other programmers of your changes.

Change management. project management. consistent standards and some minimum level of software development best practice experience would have been helpful. God help this guy if his server goes belly up! I can't imagine the recovery effort being pleasant at all.

Mach-ii

I happened to be taking my car down to West Chester to get (yet another) something repaired. Word of advice: never buy a car in it's first model year. no matter how much you love it!

Coincidentally. my friend Gary Houk (who does not blog. but should be doing so!) put the bug in my ear again about getting together for a "geek day." He works from home a couple days a week and knows that i'm always up for kicking around ideas and new techniques. We had talked about doing this for a while but I never made the time for it. Friday was the day!

What fun!

I took him through his first Mach-ii application. which was somewhat comical as I had forgotten most of what I knew about coding in it. But it only took a few hours for both of us to be sharp again. Gary was struggling at first - it's a totally different approach to programming than he has taken before. We found that tracing a single event cycle. line by line. through the XML file. all the CFCs in the execution chain. and the view(s) helped a lot. Pretty sweet.

He started talking about how many apps he has that need to be rebuilt in Mach. He's getting slammed with enhancement requests and sees the value in coding things "one way" and the clear value in knowing where things belong. I think he just gave himself some pretty darn good job security ;-)

I took this newly refreshed knowledge and started to build some new stuff last night. but realized I wanted to rebuild my server config too. So I blew apart my Apache install and tried to set up a few VirtualHosts so I could have non-conflicting CF server mappings and failed miserably. I have multiple hosts. but only one CF instance working. Doh!

Anyway. it was a good time and gave me a bit more confidence that I can do a beginner session on Mach. Learning from there will be challenging for all of us!

Multiple IIS sites on XP-Pro

I run both IIS and Apache on my laptop partially because I need to match my clients configurations and partially because hosting multiple sites under IIS is a pain in the arse.

Ray Camden posted a link to a utility that allows me to make XP-Pro's IIS utilize host headers for multiple site hosting. I'm going to download this and see how well it works...might be very helpful!

Ray's Blog post

First question is about virtual directories...have to see if the ones i set up are available to all sites by default or if they go away based on which site i'm viewing. I'm thinking specifically of Farcry's required /farcry virtual directory (alias. in Apache terms). Will have to check this and report back...