Got me a sweet set!
Archive for February, 2010
Planning Poker Cards came in!
Hiring for great teams, not tools.
Now… sometimes you have some tools on your team… but that’s another article.
I must confess that I’m writing this from the perspective of a guy who has invested a lot of time into a specific technology, and is now having a difficult time getting work in that specialization. So take what I’m about to say from that context.
Perhaps a bit idealistic of me here, but why don’t more companies focus on forming great teams with the people that they hire rather than focusing only on hiring for a specific tool? Do you hire the carpenter, or do you hire Ryobi, Craftsman, Stanley, and Makita? Maybe it’s a symptom of the ‘keyword frenzy’ … this long list of acronyms that recruiters and hiring managers are tasked with attaching to the jobs they have open. Maybe they think it is more difficult than it really is for a good developer to transition from one language to another.
I would think it would make sense to hire someone on your team who is a strong Sr. level developer in one technology as a Jr. level developer in another and then train them the way that you want them to be trained. This spirit of ‘Apprenticeship’ is surprisingly lacking in this field, particularly considering the open source movement. I would totally be willing to take a pay cut for 6 months to a year if it meant working on a team with a technology that I haven’t used before, or one that I wanted to gain more confidence in.
I know what you’re going to say… why not hire BOTH for great teams AND the tools you need? And you might be right… but let’s say that it takes an otherwise good developer 3 months to ‘ramp up’ with a specific technology. Now you have a guy who is essentially a Sr. level developer with strong OO abilities working in a Jr. level position for at least another 9 months. They are happy to be working, learning something new, adding to their toolbox… and so long as you are able to promote them as a Sr. within a year, they are probably going to be loyal. You’re going to have a 3 month ramp time regardless. Even if you have a developer who is already proficient in the technology you’ve employed, they are going to need to learn your own unique way of doing things. The kind of developer who would take on a position like that is probably the type who loves what they do, and will work overtime from home in order to get better at it, so you basically get double the hours from them at least in the beginning. The developer’s interest level in the technology is now based on the excitement of learning new things about it. You’re not likely to get that kind of commitment from a guy who has been developing in the same language for a decade.
Really my point is that in technology, tools change… sometimes frequently. Hiring for great teams makes it possible for you to move between tools while still maintaining your culture. If you hire for tools, that is all you get.
Coldfusion Is Not Scalable
Even after 12 years of developing enterprise ColdFusion applications, I’m still amazed that I hear statements like this. I recently left a job where I helped to build a highly scalable application for the financial industry using CF. Our team used EXTjs, MySql, and Railo as the CF parser. I am still ‘invested’ in this project, and so I was talking with the COO yesterday and he mentioned that there was another developer they were talking with who said … ‘Coldfusion is not scalable’. No explanation given… just that it wasn’t scalable. I was actually a bit irritated, and so I asked the COO to just ask him ‘Why?’.
The enterprise versions of Adobe Coldfusion, Railo, and OpenBlueDragon all come with built in clustering using J2EE session management. Adobe’s version 9 comes with Hibernate support built-in… and Railo is soon to follow suit. Companies like Etrade, NASA, GoldLeaf, Caterpillar… all use ColdFusion. All of the parsers support enterprise DBMs like Oracle, MSSQL, Postgres, and MySql. All of the parsers come with a form of memory caching.
My only ‘guess’ is that he’s possibly talking about it not being financially scalable. Perhaps he doesn’t know that there are now 3 different open source CF parsers available? (openBlueDragon, Railo, Smith) Part of the reason why MySpace moved away from Coldfusion was primarily a licensing issue. Adobe ColdFusion licenses are not cheap, but they are justifiable. Even if he was talking about a financial scalability issue due to licensing… it’s just something that you build into your business model on the front end to make sure that you have the money available either through investment or financing.
Either way, we had already addressed the financial scalability issue by choosing Railo as the parser, and I built in my own clustered session management using in memory sessions backed up by persistent sessions in MySql. Combined with sticky sessions in Apache, a front end load balancer and simple MySql replication, and you have a pretty solid HA setup. It’s not J2EE, but it worked. We were also planning on rolling it into the cloud when we released it into production, and so those MySql servers would have had up to 32GB of RAM and 8 processor cores available to each of them (vertical scalability), with the web servers being horizontally scalable as much as needed. Down the road we could have always moved to MySql Clustering when it was actually needed, giving us true horizontal scalability. I’d say that’s pretty scalable.
My point is that it really is not the language that makes an application scalable. Certain tools can make it easier (Enterprise CF vs. Standard) … but it is really dependent on how the application is designed in the first place. Most of the HA scalability issues can (and should) be mitigated to the network and operating system layers rather than handling them within the application layer anyhow. Saying ‘Coldfusion is not scalable’ seems to me to be a real misunderstanding of how highly available applications are really built.
Multiple Browser Testing
This article really just serves as some notes for multiple browser testing… I will clean it up later if I have time.
http://tredosoft.com/Multiple_IE
(abandonware)
Issues with IE Conditional Comments
http://www.russellheimlich.com/blog/walkthrough-setup-multiple-ie-virtual-machines-on-a-mac/
http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&displaylang=en
http://lassauge.free.fr/qemu/
http://www.agileapproach.com/blog-entry/need-multiple-ie-clients-mac-linux-run-virtual-box
http://blog.ryanparman.com/2009/06/30/run-ie6-ie7-ie8-images-virtualbox-macosx/
https://browserlab.adobe.com/index.html?sdid=EWRNK&
Very sweet… free… only requires an adobe login. Tests for IE 6-8 XP, Firefox 2-3.5 on OSX and XP, Chrome 3.0 (XP), Safari 3 and 4.
http://www.webdesignerdepot.com/2009/03/microsoft-announces-superpreview-for-ie-browser-testing/
http://www.sitevista.com/
http://www.browsercam.com/
http://ipinfo.info/netrenderer/
http://browsershots.org/
Web Developer Toolbar
By far the coolest add-on for firefox I’ve seen for developers since firebug. It’s also available for Flock and Seamonkey.
This thing gives you all sorts of information about the page that you’re viewing. Some of the toys available:
- Line Guides
- Ruler
- Display Div Order
- Display Element Information
- Resize Window
- Dom Inspector
- Validation tools for CSS, Feed, HTML, 508
- Outlining of Frames, Headings, Links, Tables, Block Level Elements, Positioned Elements
- Display Image File Sizes, dimensions, paths
- Disable CSS, Javascript
- Inline editing of Html and CSS
There are a ton of other features… well worth the donation.
Convention over Configuration
I’m noticing a trend… and I’m liking it. I’ve been working with cakePHP … and they have a wonderful way of causing you to want to name things a certain way so that you don’t have to fiddle with a bunch of configuration files… Coldbox (which I love!) has the same thinking behind it… but still has a nasty mess of xml files that you wind up needing to hoark with.
In CakePHP … your database tables, models, controllers and views are all linked by the naming convention that is used…
- Database table: “dogs”
- Model class: “Dog”, found at /app/models/dog.php
- Controller class: “DogsController”, found at /app/controllers/dogs_controller.php
- View template, found at /app/views/dogs/index.ctp
It even has a cool little ‘inflector’ class that will take a string and pluralize it for you if you need help:
Example: Inflector::pluralize('dog') returns “dogs”.
Neat.
I remember what a pain Fusebox used to be … one of my biggest complaints about the framework was that it was so laden with XML configuration files everywhere!
Coldbox still has quite a bit of setup you need to go through using XML, but similar to the way that Fusebox has transitioned over time (I started with Fusebox at version 2!)… all of your models, views, and controllers (handlers) are CFC object based rather than dealing primarily in XML.
MAMP and Cold Fusion Tutorial
I recently re-installed OSX on my mbp … and decided to look into a more integrated approach for my development environment. Since I’m developing in PHP as well as CF, I opted to pickup MAMP, which is a packaged lamp-ish type stack installer and configuration manager for Apache, MySql, and PHP on Mac. There is a free version, but I decided to get Mamp-Pro because I like using virtual hosts, and it’s such a good product that it needs to be supported.
Mike Jones has a great video tutorial for CF8 that helped me get CF9 up and running under MAMP.
Single OCD seeking Same for occasional hookup
I saw this posted on a job board today for a web designer looking for a PHP coder.
“I need someone organized and responsive above all else. I’m talking the type of guy (or girl) who checks email every 20 minutes.”
I thought it was funny… because I’m diligently trying to reduce the number of interruptions to my workflow by only initiating and responding to contact via email, chat, and phone calls during specific periods of the day. You might be ‘responsive’, but you can’t check your email every 20 minutes and be productive. I think this guy is looking for a support tech or project manager.
The problem with working with this type of client in this way is that it never forces them to become more organized themselves. I have burned out on these sorts of babysitter relationships before… and try to be very careful not to take them on anymore.
Tab Dump 02/09/2010
http://www.52framework.com/
Awesome Html5 / CSS3 framework! Thank you Tyson Cadenhead for posting this on Facebook. I require this for home use.
http://net.tutsplus.com/
Just came across this today… where have you been all my life?
http://freelanceswitch.com/
Another great site by those guys at Envato … I’m going to keep an eye on this one.
http://www.zend.com/en/products/studio/
Looking into some IDE bidness for PHP.
Where did it all go?
I was just thinking about the recession we’re in… that some are now calling a global depression.
My question is… where did all the money go? Where is it now? I understand the economics of the fiat currency we have… inflation, deflation… etc… but bottom line… brass tax… where is it all? I mean, I know who we gave ours to last year and the year before that… and I know who we’re giving the little amount of it we have now. We’re still paying our insurance (health, life, home, auto) … our mortgage, our cell phone and cable modem bills… and we’re still (obviously) paying for our food, electricity and gas for the cars. So even during the hardest times that my family has had financially, the insurance and banking industry are still getting paid by us, and we still need to eat, stay warm and get where we’re going. This is very telling if you ask me.
Maybe I have a very simplistic view of economics… but I figure that if I don’t have any money, it is because I have given it to someone else and they now have it. So who has it all right now? If it is any more complicated than that, it seems to me that it’s too complicated and that’s part of the problem.

