This is the Alagad blog, AKA The Alagad Ally.
What is TaskForce?
Getting To Know Sidney MaestreVicky has been peppering Twitter and Facebook with little teasers about something called TaskForce for the last few weeks. At last, we’re ready to announce it and let you know what it means to you!
So, what is TaskForce? Well, in a nutshell, it’s a new way of approaching software maintenance. Most of the people who read this blog are probably familiar with the age-old adage that only 10% of a program’s life is spent in its initial development phase. The other 90% of an application’s life is spent in production maintenance.
Whether these numbers are exactly accurate – or not – is immaterial. What is important is that developers are often needed to keep applications up and running once they move into production. Companies will continue to invest in new features, additions, edits, and bug fixes throughout the application’s entire lifespan.
This leads to a number of problems from many vantage points…
To business owners and managers, maintenance costs time and money. This is pretty much a given, since no one will work for free. However, it has an additional cost associated with loss of opportunity and delays. What I mean by this is that businesses work in competition with other businesses. Whenever you’re not working to push your business forward your business doesn’t move forward. This gives the competition an opportunity to catch up and overtake you.
Furthermore, developers work best when focused on a single task for an extended period of time. It’s called being in “the zone”. It’s the same thing that musicians and athletes talk about with regard to top notch performances.
The worst thing for a developer, and for the business that’s paying that developer, is to prevent that developer from getting into “the zone”. It can take an hour for a developer to reach that mental plateau, and distractions can easily knock them out of “the zone”. So, the more unrelated tasks a developer works on, the less effective he/she is at any one task and the longer it takes.
Then, when you consider the problem from the perspective of an independent contractor it can be even worse. Contractors need to work as much as they can to earn their living. However, projects last for a finite period and, as one project is completed, they need to be ready to step off onto another project. This introduces a conflict for the contractor when the old client needs support and maintenance: Do you simply drop the old client and focus on the new client or do you support both? If you drop the old client they may well be in trouble. If you work with both clients they’re both likely to suffer from less than optimal service. This reflects poorly on the contractor.
There are, of course other aspects to the maintenance problems. For example, a company might not have the budget to pay for a full time developer. They might not have the need for a full time developer. Finding a developer who can be effective part time is difficult and companies are often left with less than stellar outcomes.
Collectively, I’ve termed these problems “Drive By Programming”. Drive By Programming is what happens when developers can’t (or don’t) have the focus needed to do their tasks effectively. It’s a symptom of changing gears too much. It’s what happens when a developer jumps ship. It’s what leaves companies stranded – unable to move forward and compete effectively.
And so, I thought about this problem and I believe I’ve found a solution that will work for all of the parties involved. We call it TaskForce.
The name TaskForce comes from the concept of Drive By Programming. Specifically, if there was an epidemic of drive by shootings in any city, the police force would establish a TaskForce to address the problem. That’s what Alagad is doing with TaskForce: We’re establishing a team of people to address the problem of Drive By Programming.
But What Is TaskForce?
TaskForce is prepaid, discounted, and retained application support services from Alagad. Each TaskForce project is assigned an experienced and dedicated team of North American developers, program managers, designers and quality assurance professionals to take care of ongoing maintenance and small enhancements of your existing applications. This lets you offload the burden of maintaining your custom websites and applications and allows you to focus on growing your company or handling new development.
TaskForce is a queue-based service. As a client, you would have access to an online system where you can assign Tasks to your dedicated Alagad team. Teams work through their queues on a first-come, first served basis.
Your program manager will work as quickly as possible to review the task you assigned to your team and to provide you with an estimate on the Task. If you approve, the team will begin work on your Task. This may include design services, development services and will certainly include quality assurance services to make sure the work was not just done right, but that it didn’t break anything else. Upon completion, and your approval, the team will publish their work to your live servers for you.
When kicking off a new project, the Alagad team will interview the stakeholders in your project to learn not just the details of the project, but its history, pain points and more. We will work with your team to insure that we are using source code control systems and have a private staging environment setup. These are two important steps that can be taken to help insure your applications function at their highest levels.
What Does TaskForce Cost?
TaskForce is a discounted service from Alagad. When you sign up, you will be asked to pick a number of hours per month – from 10 hours to 120 hours or more. You will also be asked to commit to a number of months – from 3 months to 12 months. The more you commit to, the lower your rate! TaskForce is a tremendous value – saving from 20% to 45% off our standard hourly rate. Check out our rate calculator.
What Does TaskForce Support?
TaskForce marks Alagad’s move towards supporting a wider range of technologies than “just” ColdFusion, Flex, Air and other Adobe technologies. The TaskForce team is made up of a range of professionals with very diverse backgrounds. We are able to support most common web based languages, platforms, frameworks, databases, and other technologies. If we don’t have the resources now we’ll find them for you and provide you with reliable, dependable support. Request a free consultation to see if we can help you.
Why Do Developers Care About TaskForce?
There are many reasons why developers would care. First off, this lets developers focus on new and exciting work while getting your client or employer reliable support. It’s a safe referral and eases transitions you’re making to new projects.
Furthermore, Alagad pays a 10% commission on referrals for life – even on future projects. Commissions are paid monthly. So, when you can’t take a project or you finish working for a client, refer them to Alagad for TaskForce support. You will continue getting residuals from that client for as long as Alagad works with them.
See our referral program page for information on how to confirm your referral.
If you can’t take cash for a referral we’ll make a donation to one of a few charities in your name.
Who Can Be Involved In the TaskForce Referral Program?
Anyone can! If you are a connected individual who knows businesses, industry peers or acquaintances who could benefit from website and web application maintenance support service, be a hero and refer TaskForce to your contacts. You will be compensated when they initiate a project with us. Contact us today to get started as an Alagad Referral Partner.
If you want to put a badge on your website to advertise TaskForce, please let Alagad know so we can track your referrals and give you the credit you deserve.
Is the Referral Program Limited to TaskForce?
In a word, no. Alagad’s referral program is valid for any work Alagad does. And, even if it’s a small referral it can still be valuable to you. Most large projects come out of smaller projects and we pay commissions on referrals for life – even on new projects.
Please contact us with any additional questions or comments you may have! We want to make sure that TaskForce is a valuable solution both to clients and to developers.
Scaffolding, the Next Generation!
Unfortunately, cf.Objective 2010 was not in the cards for me this year, and I apparently missed out on many marvelous sessions. I would have been particularly interested to attend Dan Wilson’s “Speedy Gonzales Guide to Model-Glue” session, as Model-Glue 3.2 promises to be a great release. Model-Glue 3.2 Alpha is currently available for download, and the Model-Glue gang are now welcoming those who wish to help test the framework in its current phase. Details for how to become involved can be found at the official Model-Glue website.
Some would argue that one of Model-Glue’s best features is the ability to create scaffolds. “Scaffolds are a tool by which you can very rapidly create basic user interfaces for editing the contents of a database table.” As you might imagine, this ability saves a lot of time and effort that can be put toward more innovative endeavors. When I last looked at scaffolding, about a year ago, I certainly saw the value. At the time, though, it lacked a few things I needed. Having seen what it can do as of Model-Glue 3.2, you can bet I will be implementing this capability in the very near future. Let’s have a quick look.
For my first dive in, I used a sneak-peek walk through kindly provided to me by Dan Wilson, of DataCurl, and written by Alagad’s own Ezra Parker. It incorporates the work of many other fine members of the Model-Glue team. My goal for the moment will be to pique your interest. If you hop over to the Model-Glue Google Group and offer your assistance, you might just get an inside looksee for yourself!
Reactor was the ORM chosen for this tutorial. However, scaffolding also works with Transfer and CF9ORM. Upon install, the sample application was configured for basic scaffolding. Of course, the features were not apparent. I still had some work to do. (I use the term “work” loosely!)
My first task was to add scaffold tags to the ModelGlue.xml file as such:
(Apologies for the screenshot shortcuts to showing you some code. I gotta hit the road to NCDevCon, and I’m apparently incapable of working with the blog engine today.)
At this point, the tutorial tells me, “basic scaffolding functionality is in place, and clicking on any of the generated navigation items will take you to the list view for the table/object in question.”
Wow, that was easy. Voila. As promised, a navigation menu appears up top.
Here’s what the form for adding a new post looks like:
There she is… impressive functionality for minimal work on my part. Yet, it was still somewhat aesthetically blah and in need of a makeover. This will take some doing, though, won’t it? Last time I tried this, I eventually grew frustrated to the point where re-inventing the wheel seemed easier. Not so, this time! My next task was to pop open the ColdSpring.xml config file and replace this line:
C’mon… really? All I have to do is instruct this thing to get “fancy”, and it will? YES! Ok, so I also had to uncomment the CFUniFormConfigBean bean and various custom scaffold beans. Then, I went into the application controller to add a bean attribute to the cfcomponent tag and a cfset to the onRequestStart() function.
Yummy. Bean injecty goodness. At this point, I’m told that reloading the application will reveal a “dramatic” difference in appearance. It sure did. For starters, I saw this comparatively pretty form… complete with a jQuery date picker!
Who among us doesn’t love some jQuery strewn about our forms? That’s not all we’ll see of it, either. The various other forms and list views were nicely decorated, as well. Uber awesome, to be certain.
From here, the tutorial moved into object/table relationships. In this case, I added various object tags to the Reactor.xml configuration file. This bit might look familiar to you. The concept isn’t new. The outcome, however, is somewhat different.
With that, and a few more blocks of code similar thereto, we have a many-to-many relationship in place, as well as a one-to-many and a many-to-one. What’s impressive this time around, though, are the controls that were added to represent these relationships. More jQuery joy in the form of a multiSelect widget and a dataTables widget.
You can’t tell me you’re not impressed at this point. This is good stuff, especially since at this point I’ve put about 10 minutes worth of effort toward scaffold configuration.
And finally, we’re down to customizing the scaffolds. According to the tutorial, “there are a number of different ways to customize the results of the files generated by scaffolding.” It goes on to describe the comprehensive approach of overriding the scaffold beans and custom tags in Model-Glue’s core with your own stuff. For the duration of this demo, though, we just picked over a few things after the views had already been generated. Behold the granular control you now have over your scaffolding. Top notch stuff, so says I.
Basically, I just copied the Form.Post.cfm file from /BlogOMatic/views/generated/ up to the /BlogOMatic/views directory. That shouldn’t be unfamiliar territory, as it’s a common way of overriding an autogenerated file with your own custom file. Move it out into the appropriate root from the subdirectory where generated files are stored for that layer and make your changes there.
The tutorial had me re-order some of the scaffold tags and rename label attributes. I had a bit of my own fun and added some avatars to the user display.
You’ve only seen a smidgen here of what I witnessed. The non-Model-Glue-aware coder would look at the demo application and assume someone spent a substantial amount of time getting it to the point where this tutorial left it.
So now that I have you enthralled with the topic of Model-Glue 3.2 and scaffolding, why not take a moment to visit the official Model-Glue blog to find out how you can help! By becoming a Model-Glue 3.2 Alpha Tester, you can take pride in knowing that you helped make the best ColdFusion framework even better. “You’ll also get more personal time and instruction with the Model-Glue team in how to use these features.” They’re not kidding, either. I once had the pleasure of a one on one with Managing Director, The Great Dan Wilson Himself. It was powerful… it was magical… I gave it a 10!
By the way, If you missed Dan at cf.Objective, it looks like you have several opportunities to catch him at CFUnited 2010, and I’m sure he would also like for me to remind you that there may still be time to register for NCDevCon which takes place THIS Saturday and Sunday. We gotta show these Scotch on the Rocks folks that East Coasters know how to party. Will YOU be there? I will. If you see me, say hello. I don’t bite very hard.
Backpack Contest – We Have Winners!
In an effort to raise awareness of Alagad’s general social media presence, we ran a backpack contest. We do not desire to create a mass of spam within the community, so this was a bit of a challenge. In the end it was fun, and it worked out ok. However, I can see many ways the process can be simplified for all who participate in future contests. We hope you’ll find the next contest far easier to enter, because we do like to give away cool stuff! And now….
Congratulations to the three winners of the Alagad Backpack Contest:
Wil Genovese
Check out Wil’s blog at http://www.trunkful.com/
Ed Bartram
Visit Ed’s blog at http://edbartram.com
Steve Withington
Hop over to Steve’s blog at http://www.stephenwithington.com/blog/
Each of these fine people will receive a brand new, high quality Wenger SwissGear backpack.
Alagad would like to thank everyone for their participation, and we look forward to the possibility of a new & improved contest later this summer!
Don’t forget to follow Alagad:
Twitter: @alagadinc
Facebook Page
Alagad at cf.Objective() 2010 – Ezra Parker
Ezra Parker has been developing with ColdFusion since 2000, starting with version 4. Ezra currently serves as the Associate Director for the Model-Glue framework and is the Co-Manager of the Inland Empire ColdFusionUser Group.
If you attend Ezra’s cf.Objective() 2010 session at 11:30a on April 23, you will benefit from a wealth of knowledge pertaining to building RIAs with jQuery UI and jqGrid.
The description promises a very interesting session:
Ever since the introduction of jQuery and other JavaScript/Ajax libraries, you don’t need to know Flex in order to construct complex, fully-featured and user-friendly Rich Internet Applications. If you’re already familiar with jQuery and want to take your RIA development to the next level, this session will demonstrate the use of the jQuery user interface library widgets and the jqGrid plugin to create an advanced single-page application with a consistent look and feel that can be easily re-skinned using an existing jQuery UI theme or by using ThemeRoller to craft a custom design.
Alagad was lucky to snag Ezra as a full time developer earlier this year. He thinks it was for his fine programming prowess, but in actuality it was the Shuffleboard skills he demonstrated at last year’s CFUnited.
What else does Ezra do when he’s not devoting his spare time to CFUGs and frameworks? Lots of things!
Ezra is an avid nature enthusiast. He and his lovely wife do a fair amount of birdwatching and nature themed photography.
He also loves various forms of SciFi and Fantasy entertainment. His favorite author is George R.R. Martin. Lately, Ezra has taken a liking to Joss Whedon’s sadly defunct Firefly TV series. (Anyone who knows me knows I was thrilled to learn we had a love of Firefly in common!) This year, he toted a couple of replicas of t-shirts worn by Jayne Cobb to the conference with him, and there are more where those came from…
Jayne Cobb Collection at Kaboodle
Jayne Quotes T-Shirt at Cafe Press
You can also see what Ezra is up to by following his personal blog.
A man of many talents and hobbies, Ezra is surely someone you will want to track down at cf.Objective() this year!
Derby and ORM and Case Sensitivity, Oh, My!
Yesterday afternoon, I was working on the code for my CFUnited presentation and I ran into some issues with Derby when trying to use ColdFusion 9 ORM. (Yes, I said CFunited. Yes, my presentation will be that awesome. Yes, it means I need to start coding for it now.) I have come to use Derby a lot, especially for presentations. It makes it easier to package up all my files, and I know that anyone running ColdFusion 8 or ColdFusion 9 can run the databases without issue.
I already had a Derby data base created with tables and columns, which I had created using Aqua Data Studio (a fantastic database tool – and free if you develop open source software). When I tried to hook ORM up to the tables, I kept getting errors that the tables did not exist, however, I noticed that in the error messages the table names were all shown as upper case.
I figured this was a case sensitivity issue, so I renamed the tables, tested again and *BAM*……more errors. This time, the errors referred to missing columns in the query. Realizing the case sensitivity issue most likely extended to the column names as well, I renamed all the columns in all the tables, tested again and *BAM*…it worked! (please keep in mind that these revelations did not come to me quickly, but I figured I would spare you the details)
This kind of threw me for a bit because I knew that I had used ORM with Derby databases before and it worked fine, without any issues. I then realized that, in those other instances, I had let ORM create the database tables and columns for me, rather than starting with the database first. I quickly took a look at those databases using the RDS Data View in ColdFusion Builder and saw that the table names and column names were all uppercase.
The issue, for me, was that when creating the tables and columns in Aqua Data Studio, it allowed me to use names with lower- or mixed-case. I am not sure if it a JDBC driver issue where the table names and columns are passed as uppercase, or if it is an issue with Derby, but this one sure got me…and it got me good. So, be careful if you are using Derby with ORM and are creating the tables yourself using a database management tool like Aqua Data Studio. Or, if possible, model your objects first, then let ORM handle creating/updating the database for you.
If you see any Alagadians at cf.Objective() 2010, don’t forget to ask what this TaskForce stuff is all about!
Alagad at cf.Objective() 2010 – Chris Peterson
At this year’s cf.Objective(), you will find Chris Peterson regaling us with his vast knowledge of Cloud computing. Wikipedia defines Cloud computing as “Internet-based computing, whereby shared resources, software and information are provided to computers and other devices on-demand, like a public utility.”
According to Chris, “Cloud computing offers us many configuration possibilities, and truly forces one to think of servers in a way that has nothing to do with available rack space, hardware budgets, or redundant T3 lines.”
Chris will go over the basics of configuring an Amazon EC2 server from account creation to server configuration. He will show us some of the tools he uses to manage EC2 instances, as well as some pitfalls you should be aware of before going live in the Cloud.
Alagad brought Chris on board in February of 2009, and since that time Chris has proven to be a true asset. Chris sports an Advanced ColdFusion Developer certification among his many talents. He has authored 17 very informative entries on the Alagad Technical Team Blog.
In his spare time, Chris can be found turning wood on his lathe to craft fine handmade pens. He also plays a fair bit of Magic: The Gathering and loves to both host and attend LAN parties.
Join Chris at cf.Objective() 2010 on Saturday, April 24 from 10:15am to 11:15am. Ask anyone who attended Chris’ CFUnited 2009 sessions. You won’t be disappointed.
Don’t forget to follow us at @alagadinc
Win a FREE backpack!
Win A Free Backpack!
It’s that time of year… cf.Objective() is just around the corner! In conjunction with the attendance of Doug Hughes, Chris Peterson, Ezra Parker, and Randy Miller, we’re holding a contest! This year, Alagad is giving away three (3) rockin’ Wenger SwissGear backpacks. We know everyone can’t be there, so the contest is open to anyone, and the prize will be shipped. The winners will be announced on this blog, along with a link to their website, blog, or Twitter account of choice (unless it is X-rated or otherwise presents a conflict of interest.)
Anyone who knows Doug Hughes also knows he doesn’t suffer cheese when it comes to swag. These are beautiful, sturdy backpacks that can hold up to 17” in laptop goodness. I quite literally live out of mine. I once told Doug it was like providing his employees a corner office in a telecommuting world. I have a closet full of flimsy cast-aside bags that couldn’t take near the abuse. This one has served me for at least 1.5 years as an office and a carry-on. You wouldn’t know it by looking.
There is no laptop inside the backpack this time. Sorry! Stay tuned for next time. Never know!
Here are some of its notable features:
- Capable of holding a 17” Macbook Pro + a lot of equipment.
- More pockets than you can shake a stick at. (Don’t know why you’d want to?)
- Media Storage Pocket with earbud port.
- Nifty little pocket for a USB stick.
- Zippered main compartment.
- Zippered front pocket with full organization panel.
- Clip-on keychain.
- Additional zippered front pocket for quick-access items.
- Side water bottle pockets.
- Built in carabiner clip.
- Two side zippered pockets.
- Back panel featuring Wenger’s airflow moisture wicking mesh.
- Detachable cell phone pocket.
My backpack has survived continued and ferocious feline maraudery.
To Win:
Person with the most points wins. If there is a tie, everyone tied for first is put into a pool and winner is randomly selected. Alagad reserves the right to award this prize to a runner-up if we determine the winner has used abusive tactics. We’re trying to promote awareness, not abuse!
To Enter:
Perform any of the following actions, then send an email to marketing@alagad.com using your same email address for each action. Label the action in the subject line. Sorry, but this extra step and other limitations are to be sure we can consolidate your points and control abuse. We promise not to sell nor share your email address to third parties nor innundate you with spam.
Five Ways To Enter
1. Follow – Follow @alagadinc on Twitter. (1 point per account with 10 followers or more. Creating new accounts for the sole purpose of scoring disqualifies.)
2. Retweet – Retweet a link to this blog post. (1 point per original tweet or RT, i.e. tweet is from contestant’s account and contains @alagadinc with valid link to this blog post.)
3. Facebook – Fan Alagad’s Facebook page. (1 point per account you own with 10 followers or more. Creating new accounts for the sole purpose of scoring disqualifies.)
4. Comment – Leave a comment on this blog post. (1 point – only one counts.)
5. cf.objective() – Approach an Alagadian at the 2010 cf.Objective() conference, ask about TaskForce, and provide your contest email address written or printed on a business card. 2 points.)
Don’t forget to follow up each action with an e-mail to marketing@alagad.com, using your same email address each time.
All entries must be in by 11:59pm EST on April 27, 2010. Winners tallied on April 28 and announced on this blog, along with a link of their choosing. Winner will also be notified via the e-mail account used for the contest and will be asked for a shipping address at that time.
Here’s some of the mugs you’ll be looking for at cf.Objective() and GOOD LUCK! 🙂
Alagad at cf.Objective() 2010 – Doug Hughes
ANT can’t move a rubber tree plant, but it’s got high hopes! Alagad’s own Doug Hughes will be giving a presentation called Using ANT to Deploy ColdFusion Applications at this year’s cf.Objective() conference.
Doug is the founder of Alagad, Inc., a company whose focus is dedicated to helping organizations improve operational efficiency and performance. A frequent speaker at industry conferences and user groups, Doug also regularly contributes to several well-known open source projects. In addition, his articles have been featured in numerous technical publications. The most important things to know about Doug, though, are that he can ride a unicycle for a distance equivalent to ¾ of a roller hockey rink, and he can make absolutely anything flat stick to his forehead.
Ant is widely used in the Java world, but it is very much underutilized by ColdFusion developers. Ant can automate pretty much all of the tedious steps required to deploy your applications, and Doug is going to show you how! He will give an overview of Ant’s capabilities and limitations, and he will also demonstrate Ant4CF, an open source and extensible suite of powerful Ant tasks that implement all of the features of the ColdFusion admin API. Grab yourself a copy, and get to playing with it! You’ve got until Friday, April 23 at 1:45pm to get your ducks… errr, your Ants… in a row.
Doug will also be taking part in Bob Silverberg’s Pecha Kucha BOF. According to Bob’s Pecha Kucha blog article on the topic, “Pecha Kucha is an innovative presentation format in which you show 20 images, each for 20 seconds, resulting in a presentation that is six minutes and forty seconds long.” As you can imagine, that should be quite interesting.
If you would like to contact Doug regarding these or any other topics, feel free to use the Alagad Contact Form.
Alagad can also be found on Twitter @alagadinc and Facebook.
Look us up. The conversation is on!
Top: Doug proudly displays a shuffleboard puck stuck to his forehead.
Bottom: Doug speaking at CFUnited 2009.
Favorite Flex 4 Features
I’ve been working with the public beta of Flash Builder 4 (formally Flex Builder) for a few months now. The week before last Adobe posted the final release of the Flex 4 SDK and the final version of Flash Builder 4. I can say with confidence that you want to be working in this IDE over Flex Builder 3. Go learn more about Flex and Flash builder 4 here.
For all of the developers on the fence as to whether or not to upgrade to the latest Flash Builder IDE, there are significant single click code generation benefits that will save you time during your day to day development activities. Additionally, you have the option of letting Flash Builder 4 introspect the ColdFusion, PHP, Java or web service and create the AS3 service layer for your Flex based application.
I’m glossing over tons of good info but I’ll just give you my top three favorite Flash Builder 4 features:
- Generated event handlers.
- The new package explorer view.
- Generated getter and setter methods.
If you are like me and have a beta version of Flash Builder, please be sure to uninstall before you reinstall the latest greatest. So run on out and buy the new Flash Builder 4 IDE. And be sure to play with all of the new multitouch features in the latest Flex 4.0 SDK or be brave and grab a nightly build of the 4.1 SDK and hop skip over some of the release candidate bugs that were fixed after the lock down a few weeks ago (this one annoyed me).
Debugging using cfsavecontent and cfdump
I was helping someone out in #coldfusion on DalNet the other day, and I shared with them the method I usually use to isolate debug data that may be deep in your application and not simple to retrieve. For example, lets say you are making a SOAP request to a cfc on your server, and its bombing, but you cannot determine why you are getting the error you see. Here is a little snippet I use to save any related data to a file, including the error, so I can review and compare errors and data for those ‘tough to work out’ problems.
<cftry> <!---/ { some code that is causing you grief here } /---> <cfcatch type="any"> <cfsavecontent variable="debug"> Caught Error: <cfdump var="#cfcatch#" /> Method Arguments: <cfdump var="#arguments#" /> </cfsavecontent> <cffile action="write" file="/debug/#createUUID()#.html" output="#debug#" /> <cfabort> </cfcatch> </cftry>