This is the Alagad blog, AKA The Alagad Ally.
CFUnited 2010 – This Is Your Last Chance!
I wanted to take a moment and let those developers in the ColdFusion community who haven’t already heard know that this is the last year for CFUnited. Sadly, I’ve heard that it’s lost money the last few years and apparently it’s being shelved. Who knows if this will be a permanent thing or not, but it’s safe to assume it is.
What does this mean? Well, it means that if you haven’t gone before, that this is the last chance for you to come to the largest and most focused ColdFusion conference in the world (at least that I know of). Not only that, but there are also always presentations about related technologies like Flex, JQuery, and more.
Here are some of the reasons I think you should go:
- I know most of the speakers and I can tell you that they’re all freakin’ smart. Some of them are downright prolific in their talent. All they want to do is share that information with you, the attendee. Furthermore, all of these people are very approachable and love to talk about ideas, problems, concepts, and more. Buy them a beer and you’ll have a smart friend for life! Could you ask for a better resource?
- The networking opportunities are very good as well. For the last few years Alagad has sponsored CFUnited and I think we’ve done well meeting new potential clients and making our name and our development services known to the community. Clearly this is valuable for businesses. However, for the individual it can be even more valuable. We all know the market is very shaky right now. I assure you that the more people you know in the business the better your prospects are for finding new work, should you need to.
- The reverse is true too. That is to say that if you’re looking for ColdFusion talent, this is where to find them. The conference attendees are all passionate enough about ColdFusion to either convince there employers to send them or to pony up their own hard earned cash.
- There’s no better place to find out about the latest and greatest news from the ColdFusion community. CFUnited is historically where Adobe makes major announcements or demos new and exciting technology. Go and get ahead of the curve.
You should also know that today, July 15th is the last day for early bird pricing. There are also special offers for those who are unemployed. Find more information about this here.
So, why am I writing this entry? Some of you in the community already know that I won’t be at this CFUnited. Sadly, that’s true. I simply can’t make it this year. I really wish I could, but the stars are not aligned in my favor. I suppose I’m hoping someone else will go in my place and get all the benefits I’m sadly going to miss.
A Technical Pecha Kucha Con?
This year I was introduced to the Pecha Kucha presentation format. For those not familiar with it, Pecha Kucha (pronounced peh-cha koo-cha) originated in Japan and translates as “the sound of conversation” or “chit-chat”. A Pecha Kucha presentation lasts only 6 minutes and 40 seconds and is made up of 20 slides that automatically advance every 20 seconds.
I became aware of the Pecha Kucha format when Bob Silverberg, everyone’s favorite Canadian ColdFusion developer, volunteered to put on a Pecha Kucha BOF session at the CF.Objective() conference. Typically, Pecha Kucha sessions are about something the presenter is passionate about or deeply involved in. Ben Nadel talked about people-centric software design. Steve Withington talked about beer. There were a few other topics, though unsurprisingly, most were technical in nature. At the time, I was under quite a bit of stress and so I wrote my presentation on stress and how I manage it.
Personally, I thought the format was excellent. The crowd was really into the presentations and energetic, laughing and cheering at all the right places. Since then I’ve given the presentation two other times with a similar feeling.
One of the things I like about the format is that it forces the presenter to be concise and get their point across as quickly, clearly, and efficiently as possible. Additionally, if I’m uninterested in a presentation I only have to wait about five minutes for it to be over.
Since giving these presentations I’ve pondered what would happen if you crossed a technical conference with Pecha Kucha? Let’s face it, there’s way too much new information in the technology world to keep up with effectively. You could read blogs all day long and still not be up to date on the majority of what’s new.
Consider that over the last few years we’ve had a renaissance of dynamic languages, new frameworks have emerged, software development approaches have changed, and more. In a nutshell, things are changing, and fast! As an example, I recently heard about the reemergence of server side JavaScript. Who would have thought?!
If we don’t know what’s new then we’re stagnating. For this reason I’m seriously thinking about putting on a language agnostic tech conference. I’ve loosely titled this “Pecha Kucha Con.” The idea is that the conference would be either one or two days with only one track. Each presentation would be 6 minutes and 40 seconds long on a topic that no other speaker would be talking about. The purpose of these talks would be to give the audience a small slice of information about this topic and just enough to get started researching it, if they’re interested.
I’m thinking that in one day you would have approximately 27 presentations grouped in fours. So, for example, from 10:00 am to 10:30 you’d have four presentations. There would be fifteen-minute breaks every 30 minutes for refreshments and networking. Add in a long lunch and morning and evening networking events and you’ve got a lot of opportunity to get introduced to a lot of things you wouldn’t otherwise find out about. Furthermore, the technology agnostic aspect would hopefully create an opportunity for cross-pollination where maybe there isn’t typically (like between, say, .NET and Erlang programmers).
I think there’s a lot more that could go with this as well. For example, make it a multi-day conference. Or have multiple tracks perhaps for programming, management, design, etc. Perhaps this conference could be held both online and offline. For example, maybe there would be a venue in RTP, NC, Washington, DC, and Los Angeles, CA. Each on of these events could broadcast through Adobe Connect to each other and to the general public who might not be close to one of these areas. This would allow for very wide audience involvement and unique conference experience.
So, on the surface, do you think this sounds like an interesting idea? Do you have any additional ideas that might go along with this? I’ve purchased the domain name pechakuchacon.com… I suppose I’ll see what sort of interest there is and decide if it’s worth the effort or not.
A Quick Overview of Graphing Databases
I recently started work on a new project which, to avoid getting into too many details, is a social media application with similarities to Twitter, Facebook, and FourSquare – though it is not a clone of any of these!
This is currently a hobby project of mine that I think may have some future potential. As a result, I’m allowing myself the freedom to experiment with technologies outside of what I’d normally work with. On this specific project I plan to use Ruby On Rails 3 (currently in Beta) and deploy the final application to Heroku. (Side note: we really need something like Heroku in the ColdFusion world.)
Because this is a social application and many social applications make use of so-called NoSQL databases, I started researching these. My research began by talking to John Paul Ashenfelter at this years CF.objective(). John gave a talk entitled Say NO to SQL. Sadly, I missed this talk, but I sat down with John after the fact and talked about the various types of NoSQL databases and where they fit in.
It turns out that there are several types of NoSQL databases. These include column stores, key value stores, document stores, and graph databases. For this article I’m going to ignore all except for graph databases.
So, what exactly is a graph database?
Let’s start exploring this by looking at standard relational database systems. There are a number of well-established RDBMS such as MySQL, PostgreSQL, MSSQL, Oracle, etc. Chances are you’re familiar with at least one of these. These types of systems store data in tables that are made up of columns. Each record in the database provides values for these columns. For referential integrity, some columns may reference a column in another table via a foreign key.
These foreign keys are the only way to relate data in a relational database. And, for the most part, through normalization, these systems can model essentially any data.
The problem isn’t really in the modeling however, the problem is in how you get data out of the database. Consider a situation where you’re modeling a social network. In this network I may have dozens of friends and you may have dozens of friends, and each of our friends may have their own dozens of friends. Invariably, some of these will be the same people.
Now, I ask you, how would you find out how I know you using SQL? How would you be able to figure out how I know Keven Bacon in SQL? Furthermore, how would you do this in any efficient manner? The answer is: not easily.
The fact of the matter is that despite the fact that you can model this data in relational databases, these systems are simply not optimized to query this type of information back out.
There are, however, alternatives. You guessed it, graph databases.
A graph database is a system that stores data in “nodes” that are connected to other nodes via “edges”. In most graph databases nodes and edges can have associated properties. Most graph databases allow for traversals between related nodes.
This image shows how you might model the information used in a social network.
In the example above I have created five nodes to represent people in a social network. I’ve also created relationships between them. The relationships would be the “edges” referenced above. Note that each node and reference has various properties. For example, you can see that I (Doug Hughes) am 32. You can also see that I know Joe Blow and Jim Bob. Of course, the graphing database can also store different types of objects such as products, etc.
One of what is supposed to be a defining characteristic of a graph is the ability to quickly traverse nodes. So, using an API provided by the graph database system I can quickly find out how I know John Doe. The answer is through our mutual friendships with Jim Bob (or through Jim and Belva). This is also useful for situations where you want to find common themes. For example, Amazon has a feature that shows what other customers that purchased a specific product also purchased.
There are variations between graph databases as well. For example, some use directional relationships and others use bidirectional relationships. The difference is that a directional relationship may not necessarily be reciprocal. For example, on twitter, I could follow you, but maybe you don’t follow me. Bidirectional relationships are more like Facebook where if I’m your friend, you’re my friend. The example above would be bidirectional.
Because of the nature of graph databases, they are very fast for traversing nodes and finding related data. I’m not entirely sure at this point where they break down. I’ve read that they’re not as efficient for large-scale updates where you may be updating a lot of records at one time. Beyond this, your mileage may vary.
I’ve done a lot of reading up on different graph database. The ones that stuck out to me were these:
Neo4J
Neo4J appears to be the most widely used graph database and is the one I’ve spent the most time researching. It’s available through a very restrictive AGPL license or commercially. It strikes me as very expensive to license.
Neo4J is an embedded directional graphing database written in Java. The FOSS version provides a JAR that you download and make use of in your application. Alternatively, there is also a stand-alone version that exposes a RESTful API.
There are a number of language bindings available, most of which use the REST API. There are however native JRuby bindings. I’d be interested in this, expect for the fact that Heroku doesn’t support JRuby.
It’s my interpretation that Neo4J still needs a little baking to really be a good solution. For example, the REST API has no security built in. Anyone who can connect to the port that is exposed can add, update, or delete information in the database.
Neo4J handles scaling and redundancy similarly to other RDBMS. Specifically, the paid version allows you to somehow replicate data to hot-spare servers. If you need to shard your data across multiple servers you must manage it manually within your application.
From everything I’ve read, Neo4J really seems to be the strongest graphing database. However, it has negatives in that I’m not sure if the paid version differs any from the FOSS version. Documentation is pretty good, but seems to be lacking in some areas (specifically related to high availability).
Oh, it’s also apparently blindingly fast. However, I can’t find any information on how the use of the REST API impacts performance.
If you’re interested in experimenting with Neo4J in ColdFusion, I suggest you check out Brian Panulla’s blog entry entitled Using Neo4j Graph Databases With ColdFusion.
InfiniteGraph
InfiniteGraph describes itself as distributed database for web-scale systems. Currently in public beta, it is slated for release in late July 2010 (any time now, really).
This system is written in Java and supports server based, cloud based, and embedded use. The basis of this InfiniteGraph is that it can apparently see nearly linear performance scaling by the addition of additional servers.
I can’t find where I read this, but my memory is telling me that InfiniteGraph uses bidirectional relationships.
InfiniteGraph will be a closed source, proprietary, for-fee product when it is released. They do have programs for free usage, but they seem to tie you to a specific hosting provider. It even looks like you need to pay for developer licenses.
This bears watching, but I’m concerned about the licensing details and pricing. Furthermore, it might not be terribly easy to connect to from non-Java languages. A C# API is due in the next major release.
FlockDB
FlockDB is Twitter’s own graphing database. However, this is not quite what it seems to be. As the Twitter developer blog explains in the provided link, FlockDB was engineered as a specific solution to scalability problems Twitter was experiencing.
Behind the scenes FlockDB actually just uses MySQL. Additionally, despite the fact that it FlockDB is a graphing database, it’s not actually optimized for graph traversal. Instead, it’s very good at adjacency lists (who’s following whom). Flock also allows for horizontal scaling, though this appears to be somewhat manual.
In the end, I honestly haven’t done much reading on this tool since it didn’t really match what I was looking for in a graphing database.
Other Options
There are a number of other graphing database engines available, but most of them are fairly specialized or are pretty esoteric. I’m not sure I would want to deploy a large scale system on any of the alternatives.
What am I Doing With My Social Application?
After doing quite a bit of research in this area and briefly experimenting with Neo4J, I’ve actually elected not to go the route of using a graphing database for my project. The reason I made this decision is that all of the graphing database implementations I looked at were either immature, lacking in documentation, or were difficult to talk to from my chosen language.
Furthermore, you may remember that my hosting platform of choice is Heroku. Heroku actually runs in Amazon’s EC2 service that makes it easy for me to run my own EC2 servers to host my database server instances. However, in the end, I’ve decided to simply use PostgreSQL which Heroku already supports.
I have to keep in mind that what I’m building right now is really just a hobby application. I can’t justify spending a ton of money experimenting with a database offering that isn’t really required at this point. If, in the future I do reach a point where I need really, really, fast access to related data I may port over to using Neo4J. Only time will tell!
Don't be Scared of Hiring out of State Employees – Here's how Alagad Did It
Anyone who’s ever hired employees for their business knows that it can be an intimidating hurdle to get past. Beyond the difficulty of picking the right person, you’ve also got a lot of details to take care of. You’ll need to make sure you have workers comp insurance, that you’re paying unemployment taxes, that you’re withholding taxes, that you’re doing everything legally within your state, and more. And, when you get into the reality of offering benefits like health insurance, it gets real expensive and difficult to manage very fast.
When Liz (Alagad’s reclusive VP and my wife) and I decided it was time to start hiring employees we were extremely constrained in what we could do. We knew we needed to offer a competitive salary and benefits. We also knew that we didn’t want to have any physical offices. There were several reasons for this, but primarily it’s because we didn’t really have any money.
I also knew that I didn’t want to restrict the talent pool to my geographic area. Don’t get me wrong; the Triangle area in North Carolina is home to some serious talent. But that doesn’t mean everyone here would want to work for me or that I’d want to work with them. By not having offices and allowing telecommute workers I could theoretically hire the best talent I could afford, no mater where they lived or worked.
But how to do this?
Our strategy at first was simply to muddle through it. Our first employee was hired in Texas. What we (meaning Liz) did at this time was to go to government websites in Texas and research what we need to do to hire people in Texas and learn what taxes we needed to pay, etc. At this point we also made use of QuickBooks payroll service and, collectively, it worked well enough.
We also used a little known tax strategy to offer benefits. Alagad wasn’t big enough to offer a group plan that was affordable so we encouraged our employees to purchase their own health insurance. The company was able to offer a stipend towards this insurance pre-tax.
This approach worked well enough when we were very small, but broke down as we hired more employees in different states. The problem is that each state has different requirements and laws. These quickly became stressful and difficult to manage. For example, we once hired an employee in California. To the best of our research, we determined that to hire someone in California you had to register as a franchise with the state and have a physical address in the state. In all honestly, I’m not sure that we ever did get this sorted out correctly.
Around this time we began a good friend of mine was struggling with the same challenges and mentioned that they’d been talking to a company called Administaff. A little research into Adminstaff taught me that they are a class of company known as a Professional Employer Organization, or PEO. A PEO is a class of company that essentially hires your employees for you and leases them back to you.
Administaff already has the ability to hire employees in all 50 states. They also already have thousands of employees. This give them economies of scale that I can’t hope to match with only a handful of employees. They can get the best rates for group health insurance, workers comp, and other expenses. Additionally, they have people specializing in all sorts of HR-related details. For example, they can give you guidance through difficult employee situations like hiring and firing to help insure that you’re following the letter of the law.
Additionally, they have all sorts of online services to help you find information and manage your employees. They also many optional employee benefits like 401K plans, college savings plans, adoption assistance, and more. Beyond that, they offer their clients all sorts of free value-added services like recruiting. This is really useful if you’re trying to hire someone for a job that’s outside of your network. To explain, I know a lot of programmers and it’s easy for me to hire them. But, if I need a good sales person or user experience person it’s a lot harder for me to find them. Administaff recruiters will do a lot of the grunt work in this area for you.
So, imagine how stunned I was when we asked them what the costs would be to hire on my entire staff. At the time, I think we had maybe six or so people for a total annual salary of more than a half million dollars. I figured the service would be really expensive. I was wrong. Because of the relatively small size of my staff combined with their relatively high annual pay, Administaff could give us a really good rate.
The way Administaff works is they will propose to you a percentage that gets tacked on to your payroll. This rate is somewhat negotiable. I can’t remember our final rate, but let’s say for the sake of argument it was 17%. We quickly realized in what a fantastic deal this was! When we added up just our hard costs of hiring employees on our own it cost way more than just hiring Administaff. This was true without even adding in the cost of Liz’s time.
That’s right. It cost less to get the vastly superior services of Administaff and all of the benefits they offer. And it was a lot easier.
Now there were some challenges to working with firms like Administaff. First off, no mater what, you’ve got to pay your taxes. Small businesses are tempted sometimes to “skip” paying taxes so that they can make their payroll payments. The logic is pretty easy: If I don’t pay employees they walk. If I don’t pay the government I’ll get spanked later. It’s not really a hard decision to make. Personally, I did that early on when we were handling employees manually, but you can’t get away with that with Administaff.
Administaff isn’t the only PEO in town. There are lots of other PEOs out there. In my research it seems that a few years ago there was a real boom in this space and many companies came onto the scene very quickly. But, not all PEOs are made equal. Apparently there are a fairly large number of PEOs that charge a smaller percentage than Administaff. However, these cheaper PEOs may not offer the full range of services that Administaff does and they may not be as stable either. There were a number of PEOs that went belly-up back around 2008 leaving their clients high and dry.
So, if you’re struggling to figure out how to manage hiring employees in your state or any state, how to offer competitive benefits, and making sure you’re doing it all legally, you should really talk to a PEOs. I can’t personally speak for any other PEO, but I can say that Administaff has been central to Alagad’s success.
If you’d like to talk with someone at Administaff please let me know and I’ll connect you. I do get some sort of referral benefits when I send clients to Administaff, but I assure you I didn’t write this article for that purpose. But what the heck, if they’re offering it, I’ll take it.
Alagad Business Book Reviews: Drive by Daniel H. Pink
I recently read the book Drive: The Surprising Truth About What Motivates Us by Daniel H. Pink. This book is a review of what truly motivates people. Apparently, our society as a whole pretty much takes the wrong approach at motivating people.
The book explains that for a long time humans have been using the “carrot and stick” approach to motivation. For example, an employee’s compensation is often tied to specific metrics like hitting a targeted release date, or reaching certain sales goals. The better the metric, the better the pay. The worse the metric, the worse the pay.
However, this is apparently a recipe for underperformance. The author sites a number studies that show that, yes, tying performance to compensation does focus their attention on a task. The problem is, people focused their attention on the wrong places and creativity suffered. It turns out that, with the exception of unskilled labor tasks such as a repetitive factory work, that the greater the carrot, the worse performance actually gets.
As an example, in one of the studies the author cites, participants were given a candle, a box of tacks, and matches. They were asked to find a way to affix the candle to the wall in a way that would prevent wax from dripping on a table’s surface. Some participants were offered a cash reward for completing the problem quickly while others were simply told they were being observed to see how long it took them to solve the problem. The result was that the second group, the ones who were not offered the cash incentive, completed the problem more quickly.
Take a moment and think about how you’d solve this specific problem. Go ahead, I’ll wait.
Now that you’re back, I’ll tell you the solution. If you were to dump the box of tacks out you could then use the tacks to stick the box to the wall. You can then place the candle upright in the box and it won’t drip wax onto the table when burnt. It seems that the added incentive of extra money focused people too much in the specifics of a given problem and blinded them from thinking, quite literally, outside the box.
Ultimately, the author breaks motivation down into three things that people want out of work:
Mastery – workers want to improve their skills
Autonomy – workers want to control how they work
Purpose – workers want to feel like they’re doing something important
Of course, when it comes down to it, everyone needs to eat and money is a rather central component of that. So we’ve got to be paid for our work to achieve some baseline.
To the tech community this may all be fairly obvious. This explains why so many programmers a “real” job, but spend their nights and weekends contributing to open source projects. Namely, the open source work gives them practice and challenges them in new and interesting ways. This is more satisfying than the dry work at the office. They also get to control how and when they work. And lastly, they feel like they’re contributing to a greater good. This really epitomizes another key concept in the book, intrinsic vs. extrinsic motivation. Intrinsic motivation drives you to do work because you want to. Extrinsic motivation drives you because you need to.
And, according to the author, apparently, all of this can be boiled down to a simple strategy that companies can apply to motivate their employees. Essentially, you need to pay them enough to take the issue of money off the table. After that, empower them to do their best work. What you’re doing is moving their focus off from the money and onto the work.
After reading this book I was left thinking about how this book applied to Alagad. Honestly, I think it has some pretty interesting and direct applications.
It’s reasonably well known that Alagad currently pays its employees hourly. I established this because, in my previous life as a salaried worker I felt like salary was theft. All of the companies I worked for previously paid a low salary and frequently demanded long hours in the office, effectively lowering what I’m being paid per hour. Additionally, Alagad has historically billed clients on a Time and Materials basis. So, if Alagad is billing for an employee who’s putting in 50 hours in a week, shouldn’t Alagad pay that employee proportionately?
Now, with the benefit of hindsight, I think that may have been a mistake. There have always been some employees who would happily work 50 or 60 hours a week on average. This was great for Alagad, which could bill for this time. However, I think there may have been unintended consequences of this policy. For example, just because a programmer worked 50 or 60 hours doesn’t mean they did quality work during that period. That’s not to say my employees ever didn’t give me quality work, but I know that part of the incentive to putting in those long hours was simply to make more money.
So, at this point, Drive has me thinking about changing our compensation system at Alagad. We’ve been seriously considering simply paying a generous salary and leaving it at that. Other aspects I think we need to consider are the matters of time off. For example, who cares how often someone’s in the office? Doesn’t it matter more that the work is well, and on-time? Isn’t PTO simply another aspect of Carrot and Stick motivation? “If you’re not in the office enough you’re fired!!” I think this bears more thought. I could go into this for quite a while and hash it out in some sort of personal stream of thought drivel, but I’ll spare you.
In the end, my recommendation on Drive is to read it. It’s an interesting read that will have you thinking about how people see the world and what motivates them on a day to day basis.
My Changing Role At Alagad
I founded Alagad one afternoon in 1996. Since then, I’ve been the president and “face” of Alagad. When people think of Alagad they probably think of me, not to mention the stellar team I managed to assemble.
However, with all of the drama the company’s had to endure over the last few weeks and months, I’ve slowly begun to learn that I’m effective at some parts of running a business and not so effective at others.
Specifically, I’m pretty good at coming up with ideas. For example, the Image Component was my first real breakthrough idea. I also had the idea to turn Alagad into a larger consulting company. More recently, Alagad announced TaskForce, our prepaid, on-demand, development service. And this just scratches the surface of the ideas that I have floating around in my head.
However, when it comes down to the day-to-day operations of a company, I couldn’t be less interested. I’m not the kind of person who enjoys looking at spreadsheets, projecting financials, or handling conflict.
With that in mind, the Alagad management team has decided to move Randy Miller, our program manager, into the CEO role at Alagad. So, moving forward it will be Randy’s job to execute against Alagad’s business and strategic plans. He thrives on spreadsheets and is much more suited to that role than I am.
For now, I’m going to be holding onto my title of president. However, I’m moving towards a new role of Chief Evangelist. What this means for me is that I’ll have a lot more focus on communicating with developers and businesses. As a part of this I’ll hopefully be blogging a lot more frequently, attending more conferences, and experimenting with a variety of technologies to create demos, useful tools, and anything else that’s relevant to my job of communicating with the world.
I’m really not sure what to expect out of this change yet. I’m already working on an interesting social application created in Ruby and Rails. We’ll see what else I can find to write about as we go along!
Meanwhile, if you happen to need any help on a ColdFusion project please be sure to send me an email. I’m actively looking for consulting and development work both for Chris Peterson (who is back with Alagad!) and myself. Chris is unparalleled in his knowledge and skill at finding and resolving performance problems in web applications. We’re offering a great rate on his time right now, so be sure to check with us if you need this type of help.
Failure Leads to Success
I’ve done a number of hard things in my life. But, what I had to do last Friday ranked right up near the top of the list. I’m sure that, by now, rumors are swirling in the community of developers that use ColdFusion, Flex and related products.
To just come out and say it, last Friday I had to let just about everyone at Alagad go. This includes Scott Stroz, Chris Peterson, Layne Vincent, Kirsten Fering, Matt Legrand, Ezra Parker, and Vicky Ryder. Pretty much just my family survived.
Why did this happen? Well, that’s a simple question with no simple answer. In a nutshell it’s because business has been slow for quite a long time and one thing led to another. Historically, we have had a number of small projects that would last three or four months for one or two developers. Parallel to this, we would also have larger projects that would last several months with three or four people working on them.
The way the company has been structured required me to try to keep my team as billable as possible. That means that I’ve always needed to try to time one project’s start date to coincide with another project’s end date. This is further complicated by fact that two projects at Alagad were rarely the similar. Some needed smaller teams, or larger teams. Also, if a project went long for whatever reason it would impact the subsequent project.
The thing is, most of our projects, especially the larger ones, had a very long sales cycle, sometimes a year or longer. This hasn’t really been a problem historically because I’ve just hired employees as work started. The thing is, about a year and a half ago the economy started the current down turn. When that happened the new leads essentially dried up. Without leads, after a year or so we began to experience real tightness in the company.
Now, I can’t say that I didn’t anticipate this. The fact of the matter is that I knew last year that we were in trouble and I communicated this to my team. At the same time, I’ve tried a number of different strategies to try to work our way out of this problem. As examples, I’ve hired sales people, I’ve worked with third party lead generation companies, I’ve sponsored conferences and contests, I’ve given away prizes in raffles, I’ve invested in public relations, I’ve invested in social media marketing, I’ve increased the amount of professional networking I’m doing, I’ve attempted to start new business offerings, and more.
But, for the most part, these have all failed for various reasons. For example, the PR firm I was working with was unable to convince my customers to allow me to talk openly about what we’ve done for them. Also, sales people are very difficult to find because Alagad produces essentially “anything for anyone” in software. How do you find potential clients for that?! Other initiatives have failed due to being short on money or simply not trying for long enough.
We’ve also had other various challenges that I don’t want to get into too far. But, as an example, we have had clients who didn’t want to pay for project management or quality assurance. And, some clients – even those whose entire company depends on their custom software – that just don’t understand the nuances of how software is created or best practices. How do you convince a client that reporting issues via email and tracking them in their own spreadsheet is not the best option for managing their projects? What do you do when your two options are refusing to service a challenging clients or paying your payroll?
As a part of all of this, I’ve had a lot of people who were unbillable. I’ve had some people working on internal projects while we waited for an appropriate project to come in. I’ve had other people working with me to help me build and grow TaskForce. But, when another major project came to a close last week without anything to follow it up, I had to finally take a hard look at the business and decide what we were going to do.
Maybe, just maybe, I could have stretched this out another few weeks. But this would have been seriously risky. To put it simply, payroll at Alagad averaged about $45,000 every two weeks. We’ve never been cash rich at Alagad and without cash flow the end was quite apparent.
In the interest of taking full responsibility, I’ve got to be honest with myself. I’ve made compromises and decisions that were probably not the best. My defense is that I’ve always tried to provide the best service to my clients and to be the best employer I possibly can. I’ve simply tried to take the dream of being my own boss and push it as far as I can. Really, I’m an art student who taught himself to be a programmer and I’m a programmer that taught himself to be a business owner. It’s inevitable that mistakes would be made.
What am I concerned about today? I’m concerned about the people who were depending on me that I’ve let down. I’m concerned about the families of the people who worked for me. I’m doing everything I can to take care of these people, but they’ll need support from the Adobe developer community as well. Let me state that they are all top-notch people who are very smart and get things done. So, if you know of employment opportunities, please contact them! If need be, I’ll happily make any connections I can for these people and they all come with the highest reference from me.
What am I concerned about in the future? Well, I plan to try to rebuild Alagad over the next few months and years. I’m going to continue to seek out new work and I’ll grow my staff back up as these projects come to be. However, I’m going to focus on running the company a bit differently. I’m going to avoid taking projects that seem risky or short sighted. Instead, I’ll focus on the clients who understand our approach and who appreciate it. I’m also going to try to continue growing the TaskForce service offering.
So, yes, the rumors are true. Alagad has been gutted. I had to let seven wonderful people – some of the best and most supportive friends I’ve ever had – go. This has been tremendously difficult and painful. But this isn’t the end for me or for Alagad. After all, failure leads to success.
iPhone Development Happens
Getting To Know Sidney Maestre
If you think you can’t develop worthwhile iPhone apps around Adobe technology, think again. Sidney Maestre, founder of Crush It Mobile, has done just that with the great iPhone app he put together to assist NCDevCon2010 attendees. If you have been wanting to give iPhone application development a try, read on, as Sid has just been selected to present a 90 minute BYOL (Bring Your Own Laptop) lab in October at Adobe MAX 2010. The session is entitled Building Mobile Applications with jQuery.
Accoring to Sid, “the NCDevCon iPhone app is an HTML/CSS/Javascript app built with jQTouch and packaged for the the App Store with PhoneGap. The back-end is powered by ColdFusion 9 and built with the new ORM and CFScript features.” Shiny!
I believe the pre-release of this application probably gave NCDevCon2010 an edge in terms of exposure. I know when I saw news of its release, I considered that you don’t often see an iPhone app created for just any 3-day affair. The app was free, so I installed it and learned a lot about the conference just by playing around with it. It showed me sessions listed in schedule format as well as by speaker. It provided a Google map of the North Carolina State University campus and surrounding areas. Also included, among other things, was an on-screen NCDevCon Twitter stream. I made good use of this application all throughout the conference.
Recently, I had the pleasure of talking to Sid about his iPhone application development adventures. I learned that Sid developed his first iPhone app as a means for learning jQuery using the jQTouch mobile web development plugin. The jQTouch plugin provides animations, navigation, tracks the user history, and includes two iPhone themes to get your started. That first app, not yet launched, is an attendance tracker that sounds mighty useful for things such as classrooms, sporting events, and meetings. The NCDevCon application is built on a conference engine that is portable to other conferences for customization. Sid reported no issues with regard to submitting the NCDevCon app to the App Store. If this sounds like something you can use for an upcoming event, head over to Crush It Mobile for more information on how Sid can help you create a very complementary mobile application. In fact, he’s just announced a Beta program! “We are looking for a few good conferences to help us improve our mobile app platform.”
Sid has been designing and developing with ColdFusion since 1998. His passion for cutting edge technology led him into RIA and now mobile development. After 12 years of running his consulting business, design over matter, Sid has decided to make the leap into full time mobile application development. This decision is marked with the launching of his new business, Crush It Mobile. Congratulations to Sid! Sid also manages the Bay Area ColdFusion User Group in San Francisco, CA. To contact Sid, visit his website at http://www.crushitmobile.com. You can also find Sid on Twitter @SidneyAllen or check out his blog.
NCDevCon2010 – A Spontaneous Adventure
To Go Or Not To Go
I can be a bit dense at times. With NCDevCon being FREE and hosted in “a school”, somehow I had envisioned it would be a CFUG on steroids and not worth the effort to get there. Don’t get me wrong. I think CFUGs are great. But, driving an hour to get to one is enough of a challenge on the average day, let alone five hours. Nevertheless, I kept peeking back at the NCDevCon website and among the Twitter hashtags. As chatter began to increase amongst those gearing up for it, coupled with that of those preparing for Scotch on the Rocks, the thoughts in my head thankfully morphed into “NCDevCon is FREE and a mere five hours away. Why am I not going?” I made the decision to go a day or two before the event, and I am sure glad I did. I’ve been to a couple CFUniteds and the like, good conferences, but this was far and away The Best conference I’ve ever attended. Substantial, but not overwhelmingly huge.
The Road To North Carolina
I lit out of here a bit late, but it was a beautiful Spring drive in the dusk. Just what the doctor ordered. I rolled into town around midnight and checked into the Clarion. The Clarion was affordable and within stumbling distance to the evening events, and the rooms were OK. However, the woman at the check-in desk could have gotten off her cell phone long enough to say “hi” while she checked me in, and anyone with previous experience seemed to have been staying at the Marriott. Heard tell that a fire alarm was going off for ages on one floor, a couple people found themselves with non-working TVs, and I found my AT&T key fob to be the best option for internet. However, that’s my only “complaint”. All in all, I’d say the hotel was worth the money spent. I had what I needed, and there were enough good people stationed there that I had company on the drives to the conference and safe escorts home from the pub. (It wasn’t necessarily a bad area, but I don’t fancy walking alone late at night.)
Let NCDevCon2010 Commence!
The first morning, I had the pleasure of riding over with Jason Dean, a virtual buddy from one of the #coldfusion channels on IRC. As we came upon the lovely North Carolina State University campus, I quickly realized this would be no rinkydink affair. I spied the Red Hat headquarters on campus, among other things. NCDevCon’s events were sponsored, in part, by the University’s renowned College of Textiles. Into the door of the main hall we went, and there I was like the proverbial kid in a candy store.
We were met by an understandably busy, yet extremely friendly registration staff. I enjoyed meeting Dan Wilson’s new bride, Shannon, as well as Jim Priest’s lovely wife Brenda. These two were an integral part of the overall NCDevCon staff among many others. I was met with genuine smiles, registered quickly, and went on my way with no question left unanswered. Didn’t even have to ask any.
The main hall consisted of sponsor tables and no shortage of swag. There was, of course, an Adobe table manned by Liz Frederick, where I finally snagged my coveted Adobe CFDude t-shirt! Been after one of these since last year’s CFUnited. SCORE. The Mura booth also stands out in my mind.
Technology
I was guided along the way by Sidney Maestre’s NCDevCon iPhone app. I have quite a bit to say about this app. But, for now, let’s just say it definitely gave NCDevCon a “conferency edge” in my mind, and you can look forward to another blog post dedicated to the subject. I found it very helpful.
One thing that truly impressed me about the main hall is that it was studded with large HDTVs, each showing something cooler than the next. Some showed sponsor logos and general conference info, while others featured streams of the #NCDevCon2010 Twitter hashtag. But it wasn’t until I got into good conversation with Shawn Dunning, Assistant Dean for Information Technology TCO, that I realized what was really at play here. Shawn led a comprehensive end-to-end audio/visual effort! Many of the session rooms were fully equipped with built-in A/V booths, and several of the HDTVs broadcasted the presos live throughout the conference. This was capped by the posting of said sessions online at the College of Textiles website for your learning pleasure. All there… free of charge… for your benefit. It’s like you were in attendance on the front row. TAKE ADVANTAGE!
I had a blast Twittering my observations and uploading Twitpics. And yes, the geek in me had to stop now and then to observe the Alagad logo among the stream. At one point, I managed to wander into what amounted to a small studio setup by DZone for interviewing various knowledgeable people in attendance.
The Sessions
Obviously, the sessions are a primary reason we all congregate at these things, and I was not disappointed with my choices. The first event was “The Not A Keynote Session” by Adam Lehman. He gave us some insight into Adobe ColdFusion 9’s new PDF / form capabilities as well as ORM and other tidbits.
I spent much of the rest of the first day in the Hands On Flex 101 / ColdFusion and Flex 101 with Adrian Pomilio, Ben Farrell, and Kevin Schmidt. If you could supply your laptop and a Flash Builder 4 install, they supplied everything else. What you got out of it depended largely on what you came in with. You left with anything from a good overview of Flex capabilities to having completed some actual hands-on tasks. I heard a lot of people raving about this track after the fact. Some of us thought the first and second half of the day should have been presented in the opposite order, but in the end I don’t really think it mattered.
Other session highlights for me were the Sunday morning Pecha Kucha where Doug Hughes taught us about managing stress. (Ok, I stumbled in two seconds too late to see Doug’s, but I’ve seen this worthwhile preso before.) All of these presentations were rather interesting. Jim Leether, who spoke to us about VWs and life, was memorable. My personal favorite, though, was Jason Long’s demonstration of hard vs. easy. This was a simple and elegant presentation from which I personally took a lot.
The last presentation I attended, and among the most interesting, was Simon Free’s Papervision 3D and Beyond. C’mon, he provided free 3D glasses, and we all looked mega cool.
Sustenance
The conference never once ran out of coffee. That right there is already more than I can say for other conferences I’ve attended. Being supplied with a bottomless cup of coffee, in my opinion, is tantamount to being given blood transfusions throughout the day. I would have appreciated a sugar substitute option, but maybe I also learned to appreciate less sweetener in my coffee. Snacks were plentiful, as well. Attendees didn’t have to pay a thing, although donations were accepted. I was more than happy to help out, as much of the proceeds benefitted good charities such as Susan G. Komen for the Cure and Conservator’s Center via 5 Bucks Is Change, sponsored by Janet Kennedy. (Never too late to donate, I’m sure!) I bought an official conference t-shirt knowing my money would be well spent, and I believe some of what I paid toward my lunches also contributed. You did need to pay for lunch if you wanted to eat on location, but I’d say half a BBQ’d chicken was worth your cash. It came complete with traditional Southern accoutrements, and the catering staff were full of wonderful information about the local culture.
Friendship &Amp; Networking
I had the greatest time meeting people. Many of those I met were people I knew only from online. That’s always an adventure. Others, I knew from past conferences and general industry interaction, and some I’d only heard about through grapevine tales. (They’re ALL true! ; ) There was a lot of action in the main hall both during and in between sessions. I should note, there IS risk of peril. I’m not entirely sure what you’d call whatever Liz and Kevin were doing to Simon Free…
The best networking event was held on Saturday night at The Flying Saucer. I plopped myself down with three virtual strangers at as the evening commenced, and by the end of the event I had three great new friends. What a pleasure. You’ll be seeing one of them (@headsplode) featured in yet another spin-off blog entry soon. We eventually moved to the back room of the bar where everyone was just jovial and having a blast. No such thing as a wallflower among this group. You can’t help but approach these people if they’ve not managed to approach you first. We all started the festivities with two free beers a piece, and it wasn’t just any beer. Actually, it WAS just any beer. Whatever your heart desired to pick from the eighty one beers on tap and more than two hundred in bottles. I took the opportunity to sample some stouts I had never before tried.
I handed out Alagad TaskForce stickers and information, drove old friends to the conference, took new friends to the airport, and have reconnected with many people via Twitter and Facebook. (Find me as @fuzie on Twitter, and Doug and I both tweet from @alagadinc. Doug is @doughughes.) It is now Friday, and I’m only just coming down from the highs of my epiphanies and catching up on my sleep.
A Word About Conferences And Other Community Events
This past month has been packed tight with events from cf.Objective()2010 to FITC to NCDevCon, and CFUnited is just over the horizon. You would think this spreads the good speakers and attendees thin, but my observation has been that each and every function had an equally impressive lineup. This really says a lot about our Adobe / ColdFusion community when you think about it. There are quality people everywhere, and everyone has something to offer. Many have more to offer than they think.
So, wherever you are in the process of getting to know this community, I encourage you to take it a step further. Check out your local CFUGs and Flex user groups. Make it a point to attend at least one conference. And, if you’ve been thinking about speaking, DO IT. I met so many people this past weekend who felt like they had comparatively little to offer, but then they proceeded to wow me with substantial amounts of fascinating and fulfilling information. It was a privilege, and to these people I say slap a title on it, craft some slides, and GO FOR IT. There’s rarely a preso without some sort of technical issue, which in itself is a lesson, and I have never once heard anyone say, “WOW, that guy really made an ass of himself!” Have you? Find your favorite speaker and ask him or her for advice. You’ll find they are more than willing to offer encouragement.
Whatever you do within the community, you will find that you get much more out than you put in. There are options for everyone. Speak, volunteer, or attend. Blog or tweet. Donate your time to beta testing frameworks or answering mailing list questions. Nothing you can do is too small. There are always people in need of help at every level, and there is no such thing as too much information. The more you help, the more you will learn.
With that, I’ve gathered a ton of links below where you can re-live the many events of Spring 2010 or find ways to insert yourself in the future. If you have any you’d like to see added or removed here, just let me know via Twitter or the Alagad contact form.
In Images
NCDevCon2010 Flickr Photostream
Roger Austin’s NCDevCon2010 Flickr Photostream
Vicky Ryder’s NCDevCon2010 Facebook Photo Album (more beer, less biz)
Alagad’s NCDevCon2010 Facebook Photo Album (less beer, mrore biz)
Scotch on the Rocks Flickr Photostream
In Words
Jason Dean’s NCDevCon2010 Review
Joseph Arrington’s NCDevCon2010 Blog Post
Adrian Pomilio Blogs About NCDevCon2010
Matt Gifford’s Insider’s View to Scotch on the Rocks
Liz Frederick blogs on FATC NYC
140 Chars Or Less
#NCDevCon Hashtag on Twitter
#NCDevCon2010 Hashtag on Twitter
#SotR Hashtag on Twitter
#SotR2010 hashtag on Twitter
CFUnited hashtag on Twitter
Adobe MAX 2010 hashtag on Twitter
Adobe MAX hashtag on Twitter
In Multimedia
NC State’s NCDevCon Presentations / Resources
Bucky Schwarz’s “JavaScript: Taming the Beast” Slides.
Other Comprehensive Lists
NCDevCon Resource List
Scotch on the Rocks Resources from the Official Blog
Official Websites
Adobe MAX
Adobe User Groups
cf.Objective()
CFUnited
Flash and the City
NCDevCon
RIA Unleashed
Scotch on the Rocks
The Online ColdFusion Meetup
Alagad Biz Book Club Reviews: The Seven Habits of Highly Effective People
Alagad has been on a real self-improvement kick lately. I don’t intend to conjure images of the self-help section at your local Barnes and Nobel, but perhaps there are parallels. Like any small business, we have experienced challenges and have had to be creative to come up with ways to work through them. As a part of this, I’ve established what I’m calling the Alagad Biz Book Club.
The concept behind the Alagad Biz Book Club is similar to any other book club. We’ll pick books, read them, and then talk about them in a group setting. However, because we’re a business, we’re reading books that relate to running businesses, customer service, or other applicable topics.
We hope that by consciously exposing ourselves to more information outside of the purely technical realm, we can inspire our employees and improve how we do business.
After our group talks I plan to post a review of the book and some feedback on how it may or may not relate to Alagad.
The first book we read was The Seven Habits of Highly Effective People by Stephen Covey. My wife, Liz, championed this book. Liz actively participates in Alagad behind the scenes and felt that we could gain some insight from the book.
Her introduction to the seven habits was through a local school that is teaching the children’s version in its curriculum. The goal is to help the school improve teaching, performance, and involvement. Apparently it’s been rather successful.
The language in the book is often, for lack of a better word, “foofy.” What I mean is that many of us found it too touchy-feely for our comfort. I’m not going to dig through the book and quote any specific phrases, but trust me it’s there.
The writing style in the book was a tremendous barrier to most of us in the company and I’m not sure that anyone read it cover to cover. This is true despite the fact that we added extra time for everyone to finish it up. In the end, someone found a website offering a short summary of each chapter. Even the summary is a bit foofy, but it’s much less so.
The premise behind the book is that the author, Steven Covey, has worked for a very long time studying aspects of successful people. Through this study he identified specific behaviors that most successful people exhibit. The book (obviously) goes into great detail about these seven habits. The author categorizes the first three habits into ones you can do without anyone else’s involvement. The second three require cooperation with others. The last is about balance and renewal.
Without further ado, here are the seven habits from the book:
Be Proactive
This habit is about essentially making choices. People have free will and get to choose what they want to do. For example, you don’t have to get up and go to work in the morning. This is not being forced upon you. Instead, you choose to get up in the morning and go to work because the alternative is less appealing.
This applies to Alagad as a business because we have a responsibility to make things happen for us and for our clients. We won’t be successful if we simply sit still and hope we magically get clients. Furthermore, when we do have clients, we need to make active choices to provide the best customer service we can. We also need to make the choice to recognize problems and address them so they don’t reoccur.
Begin With the End In Mind
The next habit is essentially about setting goals and knowing where you’re headed. Personally, I’m a big goal person. I write my goals down, figure out how to accomplish them, and then accomplish them. At least, I do that when something is really important to me.
From a business perspective, knowing what you’re trying to accomplish is essential. There’s no way a business can be successful at something if that something is never defined. It’s like shooting in the dark.
Many things fall under this habit including strategic plans, corporate goals and mission, employee development, and more. Honestly, we have a lot of this in Alagad, but not nearly as formally as perhaps we should. As an example, we don’t have a corporate mission statement that crystallizes what we’re trying to do on a day-to-day basis.
Getting back to the book, it points out that if you don’t know what you’re trying to accomplish you’re not likely to be successful. Being reminded of this helps us formalize our goals and to be more focused on accomplishing them.
Put First Things First
This specific habit spawned a fairly long conversation in our club meeting. The root of this habit is that you should organize yourself around priorities and execute against them. For example, the phone might be ringing right now or you might have email sitting in your inbox, but if you answer them you might be distracting yourself from your ultimate mission.
The book categorizes tasks by two metrics, urgency and importance. The book goes on to suggest that you work on the most urgent and important tasks first and avoid working on the not urgent and not important tasks.
I think we all recognized that this is something we all fall down on from time to time. It can often be tempting to do the fun or easy work first and leave the dull or difficult work for later. However, if the fun and easy work isn’t as important or urgent then you’re not being terribly effective.
Think Win-Win
This habit begins the interdependent set of habits. In other words, you can’t apply this habit without the involvement of someone else. It also requires you to think about situations from other people’s perspectives.
The concept of Win-Win is that in any negotiation or conflict you should try to find a way that both sides can feel like they’ve won. This is really about finding compromises.
This section was quite interesting as well because of the different outcomes associated with different scenarios (loose-loose, win-loose, and loose-win). You might think that you’d always want to be a winner and who cares of the other side is as looser, but that puts you in a bad position with the looser in the future. Furthermore, you might be tempted, in the name of providing good customer service put your company in the looser position to allow your client to win. This is aptly called the “doormat” position. IE, you get walked all over.
Finding a win-win requires you to see the situation from the other person’s perspective and to truly understand their concerns. Doing this is easier said than done, especially in business. You don’t always get the full picture from a client and it can be hard to draw it out of them. However, once you know, you can identify everyone’s issues and concerns and determine a result that would be acceptable to everyone as well as ways to achieve them.
Seek First to Understand Then to be Understood
How many times have you been in a situation where someone you were seeking advice from gave you the advice before hearing what your problem was? This can be really frustrating! This habit helps you avoid doing this to other people. The essence of this habit can be boiled down to one word: listen. This is really useful to a professional services company for several reasons.
For example, as a custom software company, Alagad creates custom web applications for our clients. To be able to do this, we need to know what the client needs in great detail. We essentially have to become subject area experts in a short period of time. To do this, we need to be very active listeners and ask leading questions. Not being able to do this will doom a project.
Or, in the event that something goes badly on a project, finding a win-win between you and the client can be difficult. However, just listening to an unhappy customer can sometimes defuse them. There are some people who apply a strategy of trying to keep an unhappy person talking as long as possible because it lets off the steam and eventually the person may realize the problem is not as bad as it seems.
Once you have as much information as you can get, you can start making recommendations and providing your own opinions on the situation.
Synergize
The last interdependent habit seeks to find a sum greater then its parts. To explain, think about a situation where you may have been debating with someone the best solution to a problem. Oftentimes these debates are not as binary as they seem and there are more than just the obvious solutions. By working with someone else, you can often identify solutions that neither of you championed, but which are better overall.
As a software company, I think Alagad has a leg up on this habit. I say this because the best developers tend to be the ones who are constantly learning and expanding their horizons. They interact with other programmers inside the company and outside and share ideas and learn from others. This creates synergy inside the company and with the community that produces better results overall.
Sharpen the Saw
The final habit is about self-renewal and balance. In the book they tell a story which I’m sure we can all relate to. The story is about a person trying to cut a tree down with a dull saw that isn’t making much progress. Someone asks them why they don’t sharpen their saw. They reply by saying they don’t have time to sharpen the saw because they need to get this tree cut down as soon as possible.
I can relate to this both personally and professionally. There are a lot of times where I skip doing something that would make my job or life easier for the sake of doing my job or living my life.
As an example, developers often get stuck on problems. They spend hours trying to work on something without making much progress. Finally, they throw their hands up in frustration and give up. Then, the next morning, after relaxing and getting some rest, they come back and realize that the solution to the problem is actually very simple and can be implemented in five minutes. So, why all the head-beating? It’s like trying to cut a tree down with a dull saw. I guess the primary challenge is recognizing when the saw is dull.
The moral of the story is that you can’t just apply the six habits to be successful; you also have to take care of yourself and have balance in your life.
The Alagad Take-Away
To most of us here at Alagad, the seven habits seem to be common sense. I mean, why not think win-win? Why not try to find synergy? However, as we discussed the habits I think we all realized that there are places where we could do better with each habit.
In terms of the content and the idea in the book, it’s worth reading. However, I must say that you’ll probably have to work to read the whole book.
The next book we’ll be reading is Drive by Daniel Pink.
If you have any comments on this book or wish to suggest another book, please feel free to comment below!