919 - 926 - 9847

Facelift (mostly) complete

It's been a long time since I've done a site redesign. I've split off "me" from "business".

Part of this process was moving my blog to a subdomain of my main site. I've thought about making this change for years, but the time has finally come. I really want to be more visible in the hosting/site development sphere, but it's doubtful that those end users really care about my chuck e' cheese experiences ;)

One thing I didn't want to do was lose any traffic (not that I get all that much). So I stumbled around the intertubes for a bit to come up with this

RewriteCond %{REQUEST_URI} (^/blog)($|/)
RewriteRule ^(.*)$ http://matthewwilliams.geodesicgrafx.com$1 [R=301,L]

The above redirects where my blog used to be, geodesicgrafx.com/blog to matthewwilliams.geodesicgrafx.com/blog. In theory, it should change all the search engine links to point to the new address, but there's not much I can do about links out on other pages. Provided I never make a new blog at the old address, it should be fine.

Time to housekeep

It's time to put a new face on the blog and the site. And, to try and get it out there that I'm looking to bring in more hosted customers that like Railo hosting with a small business ;). I'll be switching everything over to a 960gs template just as soon as I get a few projects cleared off my plate.

I also offer custom FarCry solutions, with Social Networking components, e-commerce, blogging, etc. PHP and static sites are welcome as well! I currently host in eastern US, and UK. Signing up through the month of September means no setup fees! You just need to use newfreesetup at checkout time.

I suppose it helps to mention that information can be found at my hosting portal

So how did you get started in ColdFusion?

My journey to ColdFusion stared in 2001. I was working at getting a BA in order to escape the inability to break into the "computer" world. As part of my internship for school, I got to choose where I got the privilege of paying $300 to work for free (yay education system), and that place was EXTOL International Inc. in Pottsville, PA. My in-laws worked as AS400 developers there (still do), and it seemed like a great place to start out. At any rate, it was a "foot in the door" situation that I couldn't pass up, and just 15 minutes up the road.

I started work under Mark Dempshey, the then current product manager and webmaster, and was given the task of learning about ColdFusion and the network in general. So for 40 hours a week, which was double the requirement, I spent 9 weeks working full time (for free) learning the ropes in the computer world, as well as my 3-11 paid job. It was a challenge, but well worth it as I was able to translate that internship into a paid position.

We started out on ColdFusion 4.01 and Access (good lord, why??), and when I left in 2006 we had moved to ColdFusion MX 6.1 against MSSQL. We grew from a home grown, gnarly CMS, to the FarCry CMS. I've discovered that I have no real ambition to EVER work under the NJ/NY mind-set again (you didn't read my mind and make that webform already?? We sent it to print!! We'll send you a graphic soon). Sadly they've since moved to a hosted solution that's either ASP or PHP, but that's just the way the ball bounces sometimes. There really wasn't anywhere to go "up", so I had to leave PA in order find better prospects. Still, they kept me on for 9 months as a consultant. I miss the area, but the opportunities presented in the Triangle area should keep me covered for a good number of years to come.

Where would I be without ColdFusion? Probably as a java/php/asp developer. I personally like being a CF dev and wouldn't change it for the world.

Whoops, error in that last post

I modified a block of code to check that "attributes.return" is true as well as exists.

After the code block (don't forget the if)

<!--- Return to the objectadmin --->
<cfif structKeyExists(attributes, "Return") AND attributes.return EQ 'true'>
<cfset attributes.exit = true />
<cfset stLocal.onExitProcess = structNew() />
<cfset stLocal.onExitProcess.Type = "Return" />
<cfset stLocal.onExitProcess.Content = "" />

Been awhile. New FarCry hack for the objectadmin

Under the new 6.x builds of FarCry, and object edit overlay (which is quite handy at times) always pops up on object edit. However, this can be tedious at points. Want to change that behavior? Well, here's one way to do so.

1. Create an edit.cfm for your content type, in this case mdwArticles. In this code have a process form that looks like this (note the return="true"):

<ft:processform action="Save" exit="true" return="true">
<ft:processformobjects typename="mdwArticles" />

2. Modify (or make a copy in your project being the better answer) /farcry/core/tags/formtools/processform.cfm:

Add the webskin tag

<cfimport taglib="/farcry/core/tags/webskin" prefix="skin" />

Add a new attribute

<cfparam name="attributes.Return" default="false"><!--- Return to objectadmin --->

After the code block (don't forget the if)

<!--- Return to the objectadmin --->
<cfif structKeyExists(attributes, "Return") AND attributes.return EQ 'true'>
<cfset attributes.exit = true />
<cfset stLocal.onExitProcess = structNew() />
<cfset stLocal.onExitProcess.Type = "Return" />
<cfset stLocal.onExitProcess.Content = "" />

And finally, you need a case to handle the return ()

<cfcase value="Return">
<cfif structKeyExists(stLocal.stOnExit, "Content")>


!@#@!#@! script kiddies

Well, I finally got hacked. This is a first for me, and proves that my Linux skills are just not quite as up there as my windows admin skills. And what was the vector? The lack of queryparams inside CFshopkart. The only upside is that there were no transactions inside the cart, and no sensitive data to steal. But the defacement did muck about with several system files. Bah.

Completely off topic, but humans are just a lost cause

Last night I had an argument with some lady that's some damn stupid, that it bares repeating.

Every now and then the missus and I have a brain lapse and take the kids to Chuck E Cheese. They enjoy it, but I don't know of many parents that do ;). At any rate, I was put in charge of holding a twin and following one of the older kids around. At the time I was shadowing our two year old.

My daughter decided to play some skeeball. Now, I don't mind skeeball. It's fairly fun, and I used to enjoy a good round in my youth. We show up at the lanes (they have maybe 6?) to find a youth and her grandmum... least, that's seemed to be the correct age grouping. This pair was using the middle lanes, and grammy's purse was occupying a third. The purse isn't actually beside grammy, it's another lane over yet (why? beats me). Beside the purse, some dude is using the ball drop area to hold his cup of coins whilst playing the basketball game. So, that leaves my daughter and I the lane next to grammy.

Alright, we shoot in our coin, and the two year old gives it a fair try. She didn't get a single ball up the lane but I threw the missed balls back up the ramp for her. And for the first time in my life, actually hit one of those blasted 100k holes. Sweeeet. Anyway, we finish up at 300k points, grab our tickets and start walking away. And that's when the fun started...

Ignorant Woman: "Excuse me, you're taking my tickets"

Me: "No ma'am, these are our tickets"

IW: "No, you're taking my tickets"

Me: "Ma'am, these are our tickets. They came from this machine"

IW: "No, they're mine."

Me: "Ma'am, you're tickets come out beside you. Look."

IW: "No, those are her tickets. Your's must be broken"

Me: "Ma'am... look at the machine. You can see where they're connected. These are our tickets."

IW: "No, those are my tickets"

And it's at this point I realized that Ron White is correct. You can get a face lift, a boob job, cosmetically address imperfections. But you can't fix stupid. My brain just tripped a circuit. I found myself thinking, "wait... we're arguing about the equivalent of 25 cents... maybe 20 tickets? WTF??". So I said to the ignorant woman, "you know what? You can have the tickets. Allie, (the two year old this woman was effectively taking tickets from) give her the tickets." And damn, if she didn't do me proud. My two year old just threw the tickets at this woman's feet and we just walked away.

Honestly, I was thinking on it later, and my point would have been proved by putting another quarter in the machine. It would have spit another ticket or two out as your "freebie". However, this just wasn't a teachable moment. At this point I'm just happy we didn't get thrown out of chuck's (well... am I really happy about that? hmmm), but damn I hate ignorant folks.

I want to love you linux, but why must you make it so damn hard!

After reading a blog entry about another CF guy moving over to Linode, I got to asking myself "what the heck is a linode"? Well, it's a XEN based VPS that's really, really freakin' cheap! I signed up for their 1080 plan (which is way more traffic then I'll likely see), and decided it was time to move from shared hosting to my own VPS. The reasons abound, one of which being I'm going to be fielding all of the hosting/billing for future projects for Meteorsite, LLC. I'd also planned on moving to Railo/Resin to do this hosting, and it seemed like a great fit. Oh, and I was also planning on using GroundWorks with Nagios to monitor all our various and sundry hosting solutions (to also get that crap off my own home network ;) ).

Things went great at first. I got GroundWorks installed, but then I realized that GroundWorks wants to gloom onto and possess MySQL and Apache. Well, that's a pain in the ass and had to go. I only really wanted Nagios anyway. I'll generate the nagios configs on my local machine and just migrate them over. Fine, and done. Next step, configure a mail server with some sort of web front end. My old host used Plesk and that seemed to also include Horde. Great! I can deal with Horde. I usually pull everything into google mail for online viewing anyway, but I like having that option. So... I found 1, 2, a ton of tutorials on installing Horde on Ubuntu. The only problem is, not a damn one worked. Postfix would install correctly, but in the end I could never get IMAP (dovecot or courrier) to talk nice-nice to Postfix.

Three tutorials, and several hours later, I decided to start looking for a one touch install type system. Since I'll be hosting sites later it made sense to find a Plesk/CPanel/Helm type open source solution. And behold, I started my quest towards making ISPconfig work. There is at least 10 hours of my life I'm never getting back. Good lord... after about 50 steps, I just could not get ISPconfig to authenticate against IMP. And as soon as I changed the authentication method, I couldn't get back into the system. No matter what I tried, I could not get it to work. In between all of this, it's likely that I blew away my VPS about 20 times.

And then, I found Citadel and Easy Host Control Panel. I tried Citadel first, and currently have EHCP running on a test machine. Citadel (and EHCP) just worked. One installer, and that's it. Yes, you have to answer questions, but they're of the variety of "what's your system DNS" and "what's your mysql root passwor". Each have domain management for mail. Citadel really does far more than I require, and I think for hosting other sites, EHCP makes more sense, but at least I have something up and running! Yay. I do, however, still want my weekend back.

You learn something new every day!

I had to complete a disaster recovery project this week. We do this annually for one of our clients (yay for preparedness!) for one of their ColdFusion sites. I've got a run book and all that and was prepared to reinstall ColdFusion and copy in their EAR to redeploy the application. Until I had a conversation with a coworker: Him> Did they restore your data yet? Me> Yep, I'm just getting ready to reinstall ColdFusion and- Him> Re-install? Isn't everything already there? Me> Well, yeah, but. Wait... huh. I bet I could just run the jrunsvc command, and..

So it turns out, if you don't need search, .NET, LiveCycle or ODBC services, you can just restore ColdFusion from a a backup to your file system. All you really need (minus those other pieces) is to run the jrunsvc command to install a new ColdFusion service in the the services console and to run the wsconfig.jar to connect IIS to JRun (or, if you restore the website from a file, all of that is already there). My runbook went from something like 30 steps down to about 4. Color me happy. And when you think about it, it makes sense. Since it's all built atop Java (minus the other services) there's no reason to go through the installer. You can probably install those other components but I don't really need them, so I don't care to find out how at present. But still, this is a handy little tid bit.

FarCry 5.2 + Railo + Resin + Apache + MySQL + CentOS - Addendum 1

I had an "Ah HA!" moment when I got home tonight. I copied in my FarCry core folder from my known good Ubuntu Railo/FarCry install over to my CentOS install and still had issues. I tried several iterations of this, and then I had a think. I pulled up the Railo admin on my Ubuntu install, and noticed I had it at .012. And then it hit me... I was actually in a discussion about this with others on the google groups. I thought I had tried it at, but I think I did not complete the upgrade step.

So, I copied the .012 install of Railo over to the CentOS box and it worked! Huzzah! So, it appears that .012 remains the most supported version at this point in time. I'm hosting a copy of this file on my site, but please be gentle! I don't want to hear it from my host that ya'll are killing my server. You can grab the file here.

More Entries