<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AFTERSHOX</title>
	<atom:link href="http://aftershox.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aftershox.com</link>
	<description>Tariq Ahmed on Technology :: Management :: Business</description>
	<lastBuildDate>Mon, 14 May 2012 02:53:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Exception occurred when setting up mail server parameters</title>
		<link>http://aftershox.com/2012/05/14/exception-occurred-when-setting-up-mail-server-parameters/</link>
		<comments>http://aftershox.com/2012/05/14/exception-occurred-when-setting-up-mail-server-parameters/#comments</comments>
		<pubDate>Mon, 14 May 2012 02:52:15 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=263</guid>
		<description><![CDATA[&#160; &#160; &#160; &#160; &#160; From time to time we&#8217;ve has this ColdFusion error occur over a period of years regarding the setup of mail server parameters: Message: An exception occurred when setting up mail server parameters. Detail : This exception was caused by: javax.mail.MessagingException: Connect failed; nested exception is: java.net.SocketTimeoutException: Read timed out. Once [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2012/05/blog-pic.png"><img class="alignleft size-thumbnail wp-image-265" title="blog-pic" src="http://aftershox.com/wp-content/uploads/2012/05/blog-pic-150x150.png" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>From time to time we&#8217;ve has this ColdFusion error occur over a period of years regarding the setup of mail server parameters:</p>
<blockquote><p>
Message: An exception occurred when setting up mail server parameters. Detail : This exception was caused by: javax.mail.MessagingException:<br />
Connect failed; nested exception is: java.net.SocketTimeoutException: Read timed out.
</p></blockquote>
<p>Once in this state, ColdFusion would no longer send emails anymore and the only solution was to restart CF. There are a number of discussions in the <a href="http://www.talkingtree.com/blog/index.cfm?mode=entry&amp;entry=67FD4A34-50DA-0559-A042BCA588B4C15B">blogosphere</a> and <a href="http://stackoverflow.com/questions/94932/coldfusion-mail-queue-stops-processing">StackOverflow</a> which we did look into and implemented various scripts to re-queue the emails, but it was annoying that we couldn&#8217;t determine the cause.</p>
<p>Recently it started up again, and what&#8217;s odd is we have 7 identical web servers behind a load balancer (VMs that were all coped off the same image), and only one of them was experiencing the issue (Windows 2003 Server, CF8 32bit).</p>
<p>Well we finally figured it out &#8211; it was McAfee anti-virus. Once we added an exception to not monitor the ColdFusion directory, the problems went away.</p>
<p>Hope that helps if anyone encounters this.</p>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/05/14/exception-occurred-when-setting-up-mail-server-parameters/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dealing with the tight supply of CF developers and CF jobs</title>
		<link>http://aftershox.com/2012/04/27/dealing-with-the-tight-supply-of-cf-developers-and-cf-jobs/</link>
		<comments>http://aftershox.com/2012/04/27/dealing-with-the-tight-supply-of-cf-developers-and-cf-jobs/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 05:59:03 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[career advice]]></category>
		<category><![CDATA[recruiting]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=257</guid>
		<description><![CDATA[Recently on LinkedIn there were two separate threads in ColdFusion related forums regarding the topic of the challenge of finding ColdFusion developers as an employer, and finding jobs as a ColdFusion developer. The discussion covered a variety of perspectives from telecommuting, the ecosystem, economic, tips on attracting developers, tips to finding jobs, etc&#8230; Below is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2012/04/recruiting.jpg"><img class="alignleft size-thumbnail wp-image-258" title="recruiting" src="http://aftershox.com/wp-content/uploads/2012/04/recruiting-150x150.jpg" alt="" width="150" height="150" /></a>Recently on LinkedIn there were two separate threads in ColdFusion related forums regarding the topic of the challenge of finding ColdFusion developers as an employer, and finding jobs as a ColdFusion developer.</p>
<p>The discussion covered a variety of perspectives from telecommuting, the ecosystem, economic, tips on attracting developers, tips to finding jobs, etc&#8230;</p>
<p>Below is is an adaptation of my posts&#8230;</p>
<h2>Telecommuting</h2>
<p>I&#8217;m the Sr. Manager of a collection of technical teams (DBAs, Developers, and B.I), and we have had a few people work predominantly from home.</p>
<p>Of course there are a number of advantages from the employees perspective in that they get to recuperate time from commuting, expense of commuting, etc&#8230; I would say that the biggest advantage is the ability to focus. An office environment, particularly if you&#8217;re a key person on the team, can be a non-stop barrage of distraction. And if you are key person, the company benefits the most when you&#8217;re focused.</p>
<h3>The flip-side</h3>
<p>There are of course drawbacks.</p>
<p>We&#8217;ve seen that there is an isolation effect. Tools like Skype, WebEx, and TeamViewer are great tools, but nothing is like the experience of a face to face. Studies have shown that telecommuters do not advance as fast as their peers who work in the office. And let&#8217;s face it, we&#8217;re human beings and have evolved to interact with each other in person (give it another 50yrs and we&#8217;ll all be plugging into something like the Matrix and conduct face to faces in digital form).</p>
<p>We also find that the team chemistry and bonding evolves significantly slower among a group of telecommuters. Those side conversations, going out to lunch, sharing challenges while grabbing a coffee&#8230; those occurrences are far less with telecommuters.</p>
<h3>Growing Jr staff</h3>
<p>Another challenge is that Jr staff rely on the Sr staff. You can make progress with screen sharing and conference calls, but it is no way as smooth as quickly walking over to a whiteboard and coaching a Jr member. So if the Sr Developers are telecommuting, your cost to get a Jr ramped up and productive is considerable to the point that a manager would be evaluate if it&#8217;s even worth it.</p>
<p>On an individual level, can a person do X work in Y time, regardless if they&#8217;re in the office or not, sure.</p>
<p>But on a team building perspective, the chemistry, unity, and bonding to achieve cohesiveness is extremely important. And telecommuting poses some serious hurdles.</p>
<p>One alternate solution is a hybrid approach. We found that worked well with Sr. staff working 2 or 3 days at home, which allows them to focus. And the days that they&#8217;re in the office you get the team building, the coaching of the Jr staff, the face to face interaction, etc&#8230;</p>
<p>Some studies suggest there is an ROI with telecommuting. The ROI tends to be on an individual level. From a management perspective, you&#8217;re looking for the overall output of the team which is more than simply the sum of all individual output.</p>
<h3>Company cultures are unique</h3>
<p>Each company is unique. And good management recognizes their organization&#8217;s strengths, weaknesses, abilities, shortcomings, etc&#8230; So although studies and ROI case studies are useful data points, you do have to factor in the unique reality of your exact company.</p>
<h3>Not impossible, just recognize the challenges</h3>
<p>I&#8217;m not saying it&#8217;s impossible to achieve success with telecommuting (clearly, companies have), but it&#8217;s a significant challenge that management will bake into their staffing &amp; organizational strategies because it may very well be that the company culture isn&#8217;t compatible with telecommuting.</p>
<p>Or likewise, if there is no team then there is no issue. So for very specialized skillsets, solo acts, multi-location organizations&#8230; it may be a no brainer in those cases.</p>
<h2>Supply is limited</h2>
<p>The supply is constrained on both sides, and are cause and effect of each other. Hard to find expertise will cause company strategy to change which expertise is needed. Fewer opportunities will cause the talent to move on to other technologies.</p>
<p>Thus, both companies and individuals need to be prepared to at least go national when recruiting/job hunting.</p>
<h3>Tip for developers</h3>
<ul>
<li>As developers, I&#8217;d avoid branding yourself as a developer of a specific technology. Go for versatility, technologies will come and go. E.g. don&#8217;t be a &#8220;ColdFusion Developer&#8221;, be a &#8220;Web Developer&#8221; who has expertise in various technologies.</li>
<li>Developers, you need be involved in the community, building up your professional network, finding opportunities to network with future potential employers (e.g. touch base with guys who have influence over hiring decisions, send your resume in just so that they have it on file).</li>
<li>If you&#8217;re one of those guys that picked up CF to fulfill a need, but don&#8217;t have a formal software engineering background, and feel you don&#8217;t have that strong understanding of programming fundamentals &#8211; build an application using an MVC framework (<a href="http://fw1.riaforge.org/">FW/1</a>, <a href="http://www.coldbox.org/">ColdBox</a>, etc&#8230;). It&#8217;s one of the easiest ways to take your skills to the next level. Reading books gets you good theory, but real learning comes from real world experience. This will give you an edge interviewing wise for the rare CF job that does come up.</li>
<li>An even better step is to build a real world application using a language you don&#8217;t know using its most popular framework. Learning another language will actually boost your CF abilities as you&#8217;ll realize you can apply concepts from that other language to CF.</li>
<li>Some  hot up and coming languages right now include <a href="http://grails.org/">Groovy/Grails</a>, <a href="http://clojure.org/">Clojure</a>, and <a href="http://www.scala-lang.org/">Scala</a>.</li>
<li>What to build? Volunteer to build something for a non-profit. Look at the company you work for and look at what is being done manually or what is a cumbersome process, and build a tool to solve for that problem. It needs to be real.</li>
</ul>
<h3>Tips for employers</h3>
<ul>
<li>As employers, we need to be looking for strong developers in general. At <a href="http://www.amcomtech.net">Amcom Technology</a>, we&#8217;ve found people who have a strong understanding of programming fundamentals and software design, strong problem solving abilities, and are quick learners are the key.</li>
<li>The recruiting needs to begin long before a position even exists by forming relationships with people. And that needs to happen on both sides of the equation.</li>
<li>Employers need to be forming relationships with the community, so that if an opportunity opens up you have relationships already formed with folks who potentially are fits for the position and it&#8217;s not a cold call (err email).</li>
</ul>
<h2>Lastly</h2>
<p>The most important tip I can give, is send me your resume, or feel free to at least touch base. Ok, that is shameless. <img src='http://aftershox.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  But we have opportunities that come up from time to time, and I&#8217;d like to get to know you! tariq [at] amcomtech . net.</p>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/04/27/dealing-with-the-tight-supply-of-cf-developers-and-cf-jobs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Market research in relation to business strengths</title>
		<link>http://aftershox.com/2012/03/02/market-research-in-relation-to-business-strengths/</link>
		<comments>http://aftershox.com/2012/03/02/market-research-in-relation-to-business-strengths/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 17:50:35 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[market research]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=215</guid>
		<description><![CDATA[In Alessandro Di Fiore&#8217;s HBR article, &#8220;How to Get Past Your Customers&#8217; lies&#8220;, he writes about the importance of doing your own market exploration instead of using market research analysts. Or in his own words: These people have to be smart about business, strategy, and people because they&#8217;ve got to be able to spot the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2012/03/MarketResearch.jpg"><img class="alignleft size-thumbnail wp-image-216" title="Market Research" src="http://aftershox.com/wp-content/uploads/2012/03/MarketResearch-150x150.jpg" alt="" width="150" height="150" /></a>In Alessandro Di Fiore&#8217;s HBR article, &#8220;<a href="http://blogs.hbr.org/cs/2011/11/how_to_get_past_your_customers.html">How to Get Past Your Customers&#8217; lies</a>&#8220;, he writes about the importance of doing your own market exploration instead of using market research analysts. Or in his own words:</p>
<blockquote><p>These people have to be smart about business, strategy, and people because they&#8217;ve got to be able to spot the really significant behaviors and issues. And the best people to do that are going to be the folks in the top management team&#8230; who have the strategic understanding needed to recognize the opportunity and the authority to act quickly on it&#8230;</p>
<p>&#8230;can&#8217;t rely on market researchers and consultants to find the strategic insight for you. Real market research should be a core part of any top executive&#8217;s job and they should be going out doing observations and explorative probes of customers&#8230;</p></blockquote>
<p>Steve Jobs has also been quoted as saying that Apple does not conduct market research. Specifically it came from a <a href="http://money.cnn.com/galleries/2008/fortune/0803/gallery.jobsqna.fortune/index.html">Fortune article</a> in which he says:</p>
<blockquote><p>“We do no market research. We don’t hire consultants. The only consultants I’ve ever hired in my 10 years is one firm to analyze Gateway’s retail strategy so I would not make some of the same mistakes they made [when launching Apple's retail stores]. But we never hire consultants, per se. We just want to make great products.”</p></blockquote>
<p>However when it comes to market research, it&#8217;s also about recognizing your organizations strengths and abilities, and leveraging what you&#8217;re good at.</p>
<h2>Apple creates markets</h2>
<p>For example Apple is strong at creating markets that don’t yet exist, which is often extremely risky and capital intensive, but has a huge pay off if successful. It automatically positions you as a dominating leader in that space and leaves everyone else trying to catch up and copy.</p>
<h2>Samsung is the opposite</h2>
<p>Try naming one innovative product from Samsung. Not to say they&#8217;re not innovators, they&#8217;re clearly not known for it.</p>
<p>However they’re the second largest conglomerate by revenue. They wait for others to prove a market exists, and use their strength in being able to copy &amp; refine the idea to produce a high quality product at a low price point causing their competitors to take huge losses when trying to compete with them . Sony-Ericsson took a $317M loss last quarter, Motorola Mobility lost $80M, HTC’s sales have dropped by 41% since Q3 2011. Yet, Samsung’s mobile division sales growth was 300% last year, and aiming to double smartphone sales this year. Yet&#8230; they all sell basically the same thing.</p>
<h2>Market research is perspective</h2>
<p>Market research isn’t truth, it’s just perspective, a piece of information that you can use if you decide to. In Apple’s case, the market research wouldn’t be of much value to them as there’s no market to research – they make markets.</p>
<p>But for Samsung, because of their specific strengths, it’d give them some <em>perspective</em> on what price would people be willing to pay for a device that was similar to the iPhone but didn’t limit them to a particular carrier.</p>
<p>So I agree with Alessandro, in that you have to put on your customers&#8217; shoes and see from your own eyes the opportunities that present themselves. But at the same time I wouldn&#8217;t completely discount the perspective that market research can bring, you just need to be cognizant to not let market research potentially blind you from opportunities.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/03/02/market-research-in-relation-to-business-strengths/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The development guestimate and the business actual paradox</title>
		<link>http://aftershox.com/2012/02/15/the-development-guestimate-and-the-business-actual-paradox/</link>
		<comments>http://aftershox.com/2012/02/15/the-development-guestimate-and-the-business-actual-paradox/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 07:25:11 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=206</guid>
		<description><![CDATA[Michael Wolfe on Quora posted an amazing analogy explaining why software development estimates are routinely way off, which results in developers padding their estimates to factor in the fudge of such inaccuracies. Another thesis I’ve been pondering over lately are the terms “Software Engineering” and “Computer Science”, which imply that software development is purely scientific [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2012/02/paradox-clock.jpg"><img class="alignleft size-thumbnail wp-image-208" title="paradox-clock" src="http://aftershox.com/wp-content/uploads/2012/02/paradox-clock-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Michael Wolfe on Quora posted an <a href="http://b.qr.ae/xih946">amazing analogy</a> explaining why software development estimates are routinely way off, which results in developers padding their estimates to factor in the fudge of such inaccuracies.</p>
<p>Another thesis I’ve been pondering over lately are the terms “Software Engineering” and “Computer Science”, which imply that software development is purely scientific and engineering in nature. Most colleges run those programs out of their science or engineering departments, and the business surrounding technology (budgets, management, and processes) is premised on the assumption that coding is engineering in that it’s scientific, mathematical, calculate-able, and algorithmic.</p>
<p>All of that is a component for sure – but the process itself, the act of coding is much closer to art. You start off with an idea of what you need to do and how you’re going to do it, you start roughly putting it together, you realize later how things will really need to be put together so you make alterations/refactor, you get feedback from QA testers/analysts/focus groups, and continually refine until you get the final product.</p>
<p>So unless you’re solving the exact same problem every time, what exactly are we basing the effort on? If a carpet guy knows he can carpet a 2 bedroom house in a day, he can be very close with an estimate on a 4 bedroom house. And overtime, the variation of houses is fairly limited.</p>
<p>However, every software project is a new problem; why would the business ask to solve the same problem twice? So we’re estimating based off of as-similar projects done in the past, but unless it is purely a CRUD with zero rules, it’s unique.</p>
<p>Of course an estimate will always be an estimate. But plans &amp; dates get created, promises are made around those estimates, and the estimates become commitments. Which then causes developers to factor in some fudge knowing that the estimate will become a commitment.</p>
<p>Would it help if we get rid of the word estimate and label that value for what it really is, the guess? Imagine updating all your change tracking, ticketing systems, and project management tools to replace the &#8220;Estimate&#8221; field with the term &#8220;Guess&#8221;? It would help manage some expectations as to what that number really represents.</p>
<h3>The flip side</h3>
<p>The problem on the flip side is that businesses are run by plans. They’re not designed to function off of guesses. For example Apple has to gets the contracts signed and dates sealed for the Apple WWDC, payments have to be made to Moscone, Moscone has to prep the building, Apple has to build their booths, sign up all the exhibitors, attendees, etc&#8230; so whatever software is <em>planned </em>to be presented has to be ready to roll by then.</p>
<p>It’s a fascinating challenge, and here are some thoughts.</p>
<ol>
<li>Break down the problem into a collection of micro-small problems.</li>
<ul>
<li>Smaller problems are easier to size, internalize, and visualize. Many Agile based processes employ this in the form of small as possible user stories.</li>
</ul>
<li>Get formulaic about it.</li>
<ul>
<li>If a team consistently applies a 2X b.s. factor, and is 80% accurate – you then have variables to build a formula &amp; pattern around it where you project a target date -/+ x% based on the accuracy, and then build in risk mitigation strategies to make sure you&#8217;re managing the risk of not being accurate.</li>
</ul>
<li>Prioritize &amp; focus.</li>
<ul>
<li>A good practice at any level (from executive to individual contributor) at any thing (business, coding, personal life).</li>
<li>Make sure you focus on achieving at least the top priority in it&#8217;s entirety by the target date instead of having advanced multiple priorities but never fully completing any. One thing done is better then 10 things almost-done, because almost-done is the same at not done.</li>
</ul>
</ol>
<div>
<h3>What are your ideas?</h3>
<p>Please share your thoughts! Thanks.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/02/15/the-development-guestimate-and-the-business-actual-paradox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes from The Effective Executive</title>
		<link>http://aftershox.com/2012/02/14/notes-from-the-effective-executive/</link>
		<comments>http://aftershox.com/2012/02/14/notes-from-the-effective-executive/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 07:08:17 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[executive management]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=199</guid>
		<description><![CDATA[I recently listened to the audiobook to Peter Drucker&#8217;s book entitled the Effective Executive. Here are my key take aways as to what makes an executive effective. They ask what needs to be done? Do not ask &#8220;what do I want to do?&#8221; Concentrate on just one task, two at most, and never more than [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2012/02/effective-executive1.jpg"><img class="alignnone size-medium wp-image-200" title="effective-executive1" src="http://aftershox.com/wp-content/uploads/2012/02/effective-executive1-198x300.jpg" alt="" width="198" height="300" /></a></p>
<p>I recently listened to the audiobook to Peter Drucker&#8217;s book entitled the Effective Executive. Here are my key take aways as to what makes an executive effective.</p>
<ol>
<li>They ask what needs to be done?</li>
<ul>
<li>Do not ask &#8220;what do I want to do?&#8221;</li>
<li>Concentrate on just one task, two at most, and never more than two at a time.</li>
<li>Set priorities and stick to them.</li>
<li>After completing tasks 1 and 2, instead of moving on to number 3 ask again what needs to be done as new opportunities may present themselves.</li>
</ul>
<li>They ask what is right for the Enterprise?</li>
<ul>
<li>Not what is right for stock holders, employees, or themselves.</li>
<li>A decision not right for the enterprise will eventually result in something that isn&#8217;t right for anyone.</li>
<li>It won&#8217;t guarantee the right decision will be made, but failure to ask the question guarantees the wrong decision.</li>
</ul>
<li>They develop action plans.</li>
<ul>
<li>Knowledge is useless unless you translate that into action.</li>
<li>Before springing into action, plot a course of how you want to get there.</li>
<li>Think about desired results, constraints, restraints, check-in points, and implications.</li>
<li>The action plan is a statement of intention rather a commitment.</li>
<li>It shouldn&#8217;t be ridged in that once sealed you&#8217;re locked in.</li>
<li>It should be revised often as actions result in new opportunities.</li>
<li>Time is the most scarce and valuable resource.</li>
<li>Use check-ins to examine results vs. expectations, and revise the path.</li>
<li>Without an Action Plan you are a victim of events.</li>
</ul>
<li>They take responsibility for decisions.</li>
<ul>
<li>Decisions require an owner, deadline, those affected by it, those who need to approve it (or at least not oppose it), and those who need to be informed.</li>
<li>People decisions (hiring and promotion) are one of the most important decisions.</li>
<li>1/3rd of people decisions have the desired positive result.</li>
<li>The conclusion to make in cases where a people decision didn&#8217;t work out is that management made the wrong decision by not putting the right person in the right place (as opposed to viewing the person as &#8220;bad&#8221;).</li>
<li>If someone is promoted into a job where they are underperforming, it may very well not be their fault as it wasn&#8217;t their decision to be placed in such a role. So if it&#8217;s not working out, offer them the previous job they held where they were successful. Odds are they won&#8217;t go for it, but it does send the message to the organization that it&#8217;s ok to take career growth risks.</li>
<li>After making a people decision, set a check-in date to re-evaluate if it&#8217;s working.</li>
</ul>
<li>They take responsibility for communicating.</li>
<ul>
<li>Effective executives make sure their action plans and informational needs are understood.</li>
<li>Executives need to make sure that subordinates have access to the information they need.</li>
</ul>
<li>They are focused on opportunities instead of problems.</li>
<ul>
<li>Problems can&#8217;t be swept under the rug, so don&#8217;t ignore them.</li>
<li>However problem solving doesn&#8217;t produce results, it just prevents damage.</li>
<li>Exploiting opportunity produces results.</li>
<li>Changes present opportunities. For example changes in market conditions, economic conditions, consumer behavior, etc&#8230;</li>
<li>Don&#8217;t let problems overwhelm opportunities. Find a way to promote opportunities over problems.</li>
<li>Put your best people on opportunities instead of problems.</li>
</ul>
<li>They run productive meetings.</li>
<ul>
<li>Make meetings work sessions (vs. a blab-a-thon).</li>
<li>Decide in advance what kind of meeting it will be (press release, team meeting, etc…) as your preparations will differ, and what the desired result of the meeting should be.</li>
<li>Terminate the meeting the moment the objective of the meeting  has been completed. Don&#8217;t introduce additional topics.</li>
<li>At the beginning of a meeting, state its purpose.</li>
<li>Follow up with meeting notes summarizing decisions, assignments, owners of each task, and deadlines.</li>
</ul>
<li>They thought/said &#8220;we&#8221; instead of &#8220;I&#8221;.</li>
<ul>
<li>An executive only has authority because they have the trust of the organization.</li>
<li>The needs of the organization come before the executive.</li>
</ul>
<li>They listen first / speak last</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/02/14/notes-from-the-effective-executive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion vs. IIS7.5 &#8211; Application Pool</title>
		<link>http://aftershox.com/2012/01/17/coldfusion-vs-iis7-5-application-pool/</link>
		<comments>http://aftershox.com/2012/01/17/coldfusion-vs-iis7-5-application-pool/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 00:00:26 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=193</guid>
		<description><![CDATA[If you&#8217;re trying to get ColdFusion (particularly CF8 and CF9) working on a 64bit Windows machine using IIS7 or IIS7.5 you may encounter an error like this: &#160; Module IsapiModule Notification ExecuteRequestHandler Handler AboMapperCustom-58087 Error Code 0x800700c1 Requested URL http://aftershox:80/ Physical Path c:\web\aftershox Logon Method Anonymous Logon User Anonymous One possibility is the Application Pool [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re trying to get ColdFusion (particularly CF8 and CF9) working on a 64bit Windows machine using IIS7 or IIS7.5 you may encounter an error like this:</p>
<div class='et-box et-warning'>
					<div class='et-box-content'>HTTP Error 500.0 &#8211; Internal Server Error The page cannot be displayed because an internal server error has occurred. Detailed Error Information</div></div>
<p>&nbsp;</p>
<div id="details-left">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th>Module</th>
<td>IsapiModule</td>
</tr>
<tr>
<th>Notification</th>
<td>ExecuteRequestHandler</td>
</tr>
<tr>
<th>Handler</th>
<td>AboMapperCustom-58087</td>
</tr>
<tr>
<th>Error Code</th>
<td>0x800700c1</td>
</tr>
</tbody>
</table>
</div>
<div id="details-right">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th>Requested URL</th>
<td>http://aftershox:80/</td>
</tr>
<tr>
<th>Physical Path</th>
<td>c:\web\aftershox</td>
</tr>
<tr>
<th>Logon Method</th>
<td>Anonymous</td>
</tr>
<tr>
<th>Logon User</th>
<td>Anonymous</td>
</tr>
</tbody>
</table>
</div>
<div>One possibility is the Application Pool setting doesn&#8217;t match CF/Java:</div>
<div>
<ul>
<li>IIS Application pool is 64bit and CF is 32bit, or;</li>
<li>IIS Application pool is set to 32bit and CF is 64bit.</li>
</ul>
<div>To correct this, pull up the Advanced settings for the IIS site in question and check which Application Pool it&#8217;s set to use:</div>
<div><a href="http://aftershox.com/wp-content/uploads/2012/01/HTTP500_ColdFusion_1.png"><img class="aligncenter size-medium wp-image-194" title="HTTP500_ColdFusion_1" src="http://aftershox.com/wp-content/uploads/2012/01/HTTP500_ColdFusion_1-300x258.png" alt="" width="300" height="258" /></a></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div>Then, in the IIS Manager:</div>
<div>
<ol>
<li>Switch to the Application Pools list.</li>
<li>Click on the required Application Pool identified earlier.</li>
<li>Select Advanced Settings</li>
<li>Set the Enable 32-Bit Applications to True for 32 bit CF, or False for 64 bit CF (see next image).</li>
</ol>
</div>
<div>
<a href="http://aftershox.com/wp-content/uploads/2012/01/HTTP500_ColdFusion_2.png"><img class="aligncenter size-medium wp-image-195" title="HTTP500_ColdFusion_2" src="http://aftershox.com/wp-content/uploads/2012/01/HTTP500_ColdFusion_2-300x258.png" alt="" width="300" height="258" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2012/01/17/coldfusion-vs-iis7-5-application-pool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing weceem cms</title>
		<link>http://aftershox.com/2011/12/06/installing-weceem-cms/</link>
		<comments>http://aftershox.com/2011/12/06/installing-weceem-cms/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 07:39:44 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Groovy / Grails]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[weceem]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=185</guid>
		<description><![CDATA[This week I&#8217;m looking into integrating a CMS into a Grails application. Initially there won&#8217;t be much tight integration but it could involve single sign-on and lead into much tighter application embedding CMS content. As it happens, there is a CMS built on Grails called Weceem &#8211; it took some trial and error to get [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2011/12/weceem-logov3.jpg"><img class="alignleft size-full wp-image-187" title="weceem-logov3" src="http://aftershox.com/wp-content/uploads/2011/12/weceem-logov3.jpg" alt="" width="200" height="45" /></a>This week I&#8217;m looking into integrating a CMS into a Grails application. Initially there won&#8217;t be much tight integration but it could involve single sign-on and lead into much tighter application embedding CMS content.</p>
<p>As it happens, there is a CMS built on Grails called Weceem &#8211; it took some trial and error to get it working as the documentation could use a lot of work. Here are some tips if you&#8217;re trying to get it working on Mac OSX (as a quick and simple standalone development mode).</p>
<h3>Tomcat</h3>
<ul>
<ul>
<li>Download the tar.gz distribution of <a href="http://tomcat.apache.org/download-70.cgi">Tomcat</a>.</li>
<li>Decompress Tomcat.</li>
<li>Copy the folder somewhere as desired, I used /opt/apache-tomcat-7.023. Check out this really good<a href="http://www.malisphoto.com/tips/tomcatonosx.html"> tutorial here</a>.</li>
<li>Download the <a href="http://j.mp/srSOHt">MySQL JDBC</a> driver.</li>
<li>Copy the MySQL JDBC driver (i.e. the mysql-connector-java-{ver}-bin.jar file_ to {tomcat home}/lib. I read postings that say you can copy to a common/lib folder, but that didn&#8217;t seem to work.</li>
<li>Edit the {tomcat home}/conf/tomcat-users.xml file and add something along the following lines:</li>
</ul>
</ul>
<pre>  &lt;role rolename="admin"/&gt;
  &lt;user username="admin" password="admin" roles="manager-gui,admin"/&gt;</pre>
<h3>Create a MySQL Database</h3>
<ul>
<li>Create a DB in MySQL called whatever you&#8217;d like (I used cms).</li>
<li>Create a username and password that has access to read/write/modify the schema.</li>
</ul>
<h3>Weceem config file</h3>
<p>Create a weceem.properties file somewhere. /etc/weceem.properties might be a good choice. It&#8217;ll look like the following, update accordingly.</p>
<pre># Control whether or not connection pooling is enabled
dataSource.pooled=true
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.username=dbusername
dataSource.password=dbpassword
dataSource.dbCreate=update
dataSource.url=jdbc:mysql://localhost/cms
searchable.index.path=/Websites/cms/search-indexes</pre>
<p>&nbsp;</p>
<p>Make sure that whatever you set as the searchable.index.path is a directory that that the user Tomcat will run under has read/write access to.</p>
<h3>Update your environment variables</h3>
<p>Edit your ~/.profile and make sure you have the following lines, update path accordingly:</p>
<pre>export JAVA_HOME=/Library/Java/Home
export CATALINA_HOME=/opt/apache-tomcat-7.0.23
export JAVA_OPTS=-Dweceem.config.location=file:/Websites/cms/weceem.properties
export CATALINA_OPTS="-Xms756m -Xmx756m -XX:NewSize=256m
                      -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m"</pre>
<h3>Deploy Weceem</h3>
<ul>
<li>Download the <a href="http://www.weceem.org/weceem/download">Weceem.war</a> file.</li>
<li>Copy the Weceem-{ver}.war file to {tomcat home}/webapps/weceem-{ver}.war.</li>
<li>You can rename the Weceem file to just Weceem.war if you&#8217;d like.</li>
</ul>
<h3>See what happens</h3>
<ul>
<li>Open a terminal window.</li>
<li>cd to {tomcat home}/bin</li>
<li>Type in ./startup.sh &#8211; you&#8217;ll see some stuff about environment variables, and the command line will return back to you.</li>
<li>Open another terminal window.</li>
<li>In the second terminal window, cd to {tomcat home}/logs, and type in tail -f catalina.out</li>
<li>You should eventually see a line that says &#8220;INFO: Server startup in xyz ms&#8221;</li>
<li>Open up a browser to http://localhost:8080/manager/html (use the username and password you set up when editing the tomcat-users.xml file above).</li>
<li>You should see the Weceem application listed and started. If it&#8217;s not started, click on the start button.</li>
</ul>
<div><a href="http://aftershox.com/wp-content/uploads/2011/12/weceem.png"><img class="size-medium wp-image-188 aligncenter" title="weceem" src="http://aftershox.com/wp-content/uploads/2011/12/weceem-300x152.png" alt="" width="300" height="152" /></a></div>
<div style="text-align: center;">(click on image to enlarge)</div>
<p>&nbsp;</p>
<ul>
<li>Once running, just click on the left column (the path column) and it should load up the default Weceem page.</li>
<li>There&#8217;ll be a link on that page to edit content, the default admin user name and password is admin/admin.</li>
</ul>
<p>Hope that helps save someone time who wants to tinker around with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2011/12/06/installing-weceem-cms/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Discover the business before you scale the business</title>
		<link>http://aftershox.com/2011/12/05/discover-the-business-before-you-scale-the-business/</link>
		<comments>http://aftershox.com/2011/12/05/discover-the-business-before-you-scale-the-business/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 23:17:49 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=179</guid>
		<description><![CDATA[Was watching this short discussion panel regarding strategic advice from Angel investors (Ron Conway and Mike Maples) to start-ups. Here are some take aways: Keeping your burn rate extremely low buys the company the added probability of getting lucky. The luck from a low burn rate comes from having the cash to experiment with various [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aftershox.com/wp-content/uploads/2011/12/Create-More-Success-300x225.jpg"><img class="alignleft size-thumbnail wp-image-180" title="Create-More-Success-300x225" src="http://aftershox.com/wp-content/uploads/2011/12/Create-More-Success-300x225-150x150.jpg" alt="" width="150" height="150" /></a>Was watching this short discussion panel regarding <a href="http://j.mp/v5dRB1">strategic advice</a> from Angel investors (Ron Conway and Mike Maples) to start-ups.<br />
<P><br />
Here are some take aways:<br />
<P><br/></p>
<ol>
<li><strong>Keeping your burn rate extremely low buys the company the added probability of getting lucky.</strong></li>
<ol>
<li>The luck from a low burn rate comes from having the cash to experiment with various ideas until you find the right model/combination/technique/strategy. Whereas with a high burn rate, it&#8217;s all or nothing.</li>
<li>Once you find that right idea/model, you can then hone in on it and maximize it&#8217;s usage, which then drives more of what&#8217;s working (cash flow, sales leads, profits, etc&#8230;). With a now working business model, the profits come in, and you now have the ability to grow and take on more opportunities.</li>
</ol>
<li><strong>$1M should last you a year.</strong></li>
<ol>
<li>Starting with a team of 3 people, growing up to maybe 5 or 6 people.</li>
<li>Companies are the most productive when they&#8217;re less than 10 people. When you grow beyond 10, productivity goes down. So that first $1M is a team that&#8217;s lean and mean, and each individual contributes an enormous amount of productivity.</li>
</ol>
<li><strong>Have a Product Development Strategy and a Customer Development Strategy.</strong></li>
<ol>
<li>Most Silicon Valley start-ups describe an engineering project: Alpha, Beta, Limited Availability, General Availability, etc&#8230;</li>
<li>Author Steve Blank wrote a book called &#8220;<a href="http://www.amazon.com/gp/product/0976470705/ref=as_li_ss_tl?ie=UTF8&amp;tag=c050d-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0976470705">Four Steps to the Epiphany</a>&#8220;, the thesis of which is companies should have customer development milestones in parallel to the product development milestones such as customer discovery validation, creation, and scaling.</li>
</ol>
<li><strong>Discover the business before you scale the business</strong></li>
<ol>
<li>The companies that pursue the path of low burn experimentation dramatically add probabilities in their favor.</li>
<li>With off-shore labor, low/no cost open source technology stacks, and search engine marketing, companies easily have the opportunity to conduct low cost experimentation.</li>
<li>Use a business strategy of low cost experimentation done a lot to find out the winning answers, discard the losing answers, and don&#8217;t scale until you&#8217;ve figured out your business model.</li>
</ol>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2011/12/05/discover-the-business-before-you-scale-the-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails wildcard search on two fields</title>
		<link>http://aftershox.com/2011/11/24/grails-wildcard-search-on-two-fields/</link>
		<comments>http://aftershox.com/2011/11/24/grails-wildcard-search-on-two-fields/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 07:37:55 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[Groovy / Grails]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=175</guid>
		<description><![CDATA[So I&#8217;m still in learning mode w/Groovy &#38; Grails, and I have basic CRUD for managing users. The user domain class has the properties that you&#8217;d expect, including a FirstName and LastName: class User { String firstName String lastName } So I wanted to create a simple right side wildcard search that would effectively be [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m still in learning mode w/Groovy &amp; Grails, and I have basic CRUD for managing users. The user domain class has the properties that you&#8217;d expect, including a FirstName and LastName:</p>
<pre class="brush:groovy">class User
{
  String firstName
  String lastName
}</pre>
<p class="brush:groovy">So I wanted to create a simple right side wildcard search that would effectively be the same as this in SQL Server:</p>
<pre class="brush:groovy">where (firstName like '#searchTerm#%' or lastName like '#searchTerm#%')</pre>
<p class="brush:groovy">In Grails you have a wrapper around Hibernate called GORM, which provides a mechanism called Dynamic Finders.</p>
<p class="brush:groovy">Imagine if you had to write a collection of functions for finding and retrieving one or many records based on each property (findByFirstName(), findAllByFirstName(), findFirstNameLike(), findByAgeGreaterThan(), etc&#8230;), it could take awhile. <img src='http://aftershox.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="brush:groovy">But with GORM, it&#8217;s as if a little elf in the middle of the night coded all night long to create these functions for you. You never see them, but they&#8217;re magically there!</p>
<p class="brush:groovy">There&#8217;s a whole &#8220;with criteria&#8221; mechanism and the Hibernate Query Language (HQL), but I found the simplest way was just to do this:</p>
<pre class="brush:groovy">def userList =</pre>
<pre class="brush:groovy">User.findAllByFirstNameLikeOrLastNameLike("${params.searchTerm}%",
"${params.searchTerm}%")</pre>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2011/11/24/grails-wildcard-search-on-two-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sizing up the business perspective on Groovy, Scala, and other JVM languages</title>
		<link>http://aftershox.com/2011/10/30/sizing-up-the-business-perspective-on-groovy-scala-and-other-jvm-languages/</link>
		<comments>http://aftershox.com/2011/10/30/sizing-up-the-business-perspective-on-groovy-scala-and-other-jvm-languages/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 05:32:26 +0000</pubDate>
		<dc:creator>Tariq Ahmed</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Groovy / Grails]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://aftershox.com/?p=160</guid>
		<description><![CDATA[Background As a technology manager, one of my teams consists of a web development group building  both internal and external business applications. The core platform is built on ColdFusion, a JVM based technology, mixed in with various other frameworks and technologies (jQuey, Flex, ColdBox, SQL Server, etc&#8230;). A couple of years ago we had a [...]]]></description>
			<content:encoded><![CDATA[<h2><a href="http://aftershox.com/wp-content/uploads/2011/10/Java-Runtime-Environment-JRE-for-Windows.jpg"><img class="alignleft size-thumbnail wp-image-164" title="Java-Runtime-Environment-JRE-for-Windows" src="http://aftershox.com/wp-content/uploads/2011/10/Java-Runtime-Environment-JRE-for-Windows-150x150.jpg" alt="" width="150" height="150" /></a>Background</h2>
<p>As a technology manager, one of my teams consists of a web development group building  both internal and external business applications. The core platform is built on <a href="http://adobe.ly/sKKW5d">ColdFusion</a>, a JVM based technology, mixed in with various other frameworks and technologies (jQuey, Flex, ColdBox, SQL Server, etc&#8230;).</p>
<p>A couple of years ago we had a project that involved integrating <a href="http://www.jboss.org/drools">JBoss Drools</a> (a business rules workflow engine), and we needed a way to easily bridge ColdFusion and Drools together, and came across the works of <a href="http://www.barneyb.com/">Barney Boisvert </a>and his <a href="http://www.barneyb.com/barneyblog/projects/cfgroovy2/">CFGroovy</a> project. using CFGroovy, we were able to successfully complete the project, while being able to assess the <a href="http://bit.ly/rW5s2p">Groovy</a> language itself.</p>
<p>Meanwhile as the years went by, whenever we had to recruit additional talent we found it increasingly difficult (you can find an article I wrote on the topic at <a href="http://bit.ly/u63ZYa">RIARockStars</a>). We don&#8217;t even bother looking for ColdFusion developers any more, we look for any talented individual with a web engineering background willing to learn.</p>
<p>With the success that we had on that one project, and the seemingly shrinking ecosystem we decided on a strategy of switching over to another JVM language. The reasoning and hypothesis include:</p>
<ul>
<li>Ability to progressively evolve our existing platform (we can do it feature by feature, vs. total rewrite)</li>
<li>Opens up access to the larger Java talent pool</li>
<li>Keeps the product on a more relevant platform</li>
<li>Keeps the staff&#8217;s skills relevant</li>
</ul>
<h2></h2>
<h2>Why not Java itself?</h2>
<div>One of the huge benefits of ColdFusion is the incredible productivity and low learning curve. What one ColdFusion developer can do in a day would take 3-5 (if not more) Java developers to do. So productivity and learning curve remain priorities in order to maintain rapid turn around time on product updates.</div>
<h2>The big assumption</h2>
<div>There&#8217;s a big assumption &#8211; would a Java developer actually be interested in these non-Java JVM languages? We know from experience that Sr. level Java and .NET developers will not switch to ColdFusion as they feel invested in Java. So I threw a survey out (results below) to get a feel for what the Java community feels about these platforms.</div>
<div>I realize I didn&#8217;t quite ask the question directly in the survey, and as soon as I had sent it out I had received a number of responses and didn&#8217;t want to abandon that progress. So I&#8217;ll probably follow up with a much more direct survey, but big thanks to the Twitterverse for all the retweets in getting the word out.</div>
<h2>Assessing the risk/potential</h2>
<div>From a business perspective, going down a new technology path has its risks and rewards, and the information collected in this article is part of a series of analysis I&#8217;m conducting in order to validate/challenge the strategy. As a CIO/CTO, you&#8217;re investing hundreds of thousands if not millions in development time, thus your interest is to make sure of the merits behind the strategy by evaluating as much as you can:</div>
<div>
<ul>
<li>Is the technology gaining traction in the community?</li>
<li>Who is backing it (corporation, random collection of open source guys, etc&#8230;)?</li>
<li>Is there corporate support?</li>
<li>What is the size of the community (aka talent pool)?</li>
<li>What is the momentum of the community (shrinking/growing, accelerating/decelerating, etc&#8230;)?</li>
<li>How long will it take for a team to achieve a degree of proficiency?</li>
<li>How do you get a team to proficiency (training, books, blogs, magazines, etc&#8230;)?</li>
<li>How fast is the technology improving (rate of releases, etc&#8230;)?</li>
<li>Have other companies been successful with the technology?</li>
</ul>
<div>So to other technology execs out there, I hope this data proves useful.</div>
</div>
<h2>Disclaimer</h2>
<p>This article is from the eyes of management, and not that of a developer. The findings are equally useful, but the conclusions a developer would make would be different than that of management. Most importantly as a developer, you should make it your mission to learn as many technologies as possible, it opens your eyes to new techniques and trends, and makes you an adaptive individual &#8211; and this is something a business values (<a href="http://amzn.to/uhGWG1">Seven Languages in Seven Weeks</a> is a particularly good book in this context).</p>
<p>Another thing to note is that I&#8217;m not evaluating the technologies themselves &#8211; there&#8217;s no shortage discussions and articles out there that cover this, so you can read up on those as part of evaluating technological fit (you&#8217;ll find some good ones on StackOverflow and Quora).</p>
<p>I&#8217;m by no means an expert on any of these platforms, and this was the result of a series of Googling for a week to gather various angles. If my perception is off on anything, I welcome the feedback. Thanks!</p>
<p>&nbsp;</p>
<h2>Observations</h2>
<p>I just didn&#8217;t have the time to fully evaluate all of the JVM languages and their ecosystems, so I had to focus on (from my analysis) the biggest three: Groovy, Scala, and Clojure. Given more time, what I would need to do is focus the research on specifically web development as all these languages (including Java) encompass more than just web applications.</p>
<p>But I needed to start somewhere, and you can see where I try to rope in some web perspective.</p>
<h4>Groovy</h4>
<p>Groovy at this point in time would be the conservative/safest bet, business wise. It&#8217;s like the Ryan Seacrest of non-Java JVM languages; its conservative, clean, polished, and very active. Groovy is like the athletic younger brother of the lethargic and obese Java.</p>
<p>It appears to have the overall largest ecosystem of the three, and is backed by a huge well known entity (VMWare/EMC). Grails being the web framework of interest, they&#8217;re also about to release a big 2.0 update.</p>
<p>I am very disappointed that although SpringSource mentions they have a Groovy and Grails courses, they actually don&#8217;t <a href="http://bit.ly/u3hTsR">conduct any</a>. This could be used as clue that there&#8217;s not enough interest to warrant hosting such classes (well more than a clue, that is the case), but you figure just for strategic reasons they&#8217;d take a loss on the training (the classic Gillette move, sell the razor at a loss and make it up on blades).</p>
<p>However, I found the Scala and Clojure training availability just as disappointing.</p>
<h4>Scala</h4>
<p>Scala would be the other strong contender. Although its ecosystem is smaller than Groovy&#8217;s, it has a noticeably more passionate community. As well, having Twitter as the big success story is a massive notch on its belt.</p>
<p>The funding of Scala would be on my things to keep an eye on. Part of Scala is backed by a Swiss university (EPFL), and educational institutions tend to be extremely bureaucratic and their funding dependent on government entities. And then you have a business also involved (TypeSafe.com) who has only been able to generate $3M in venture capital, based on the size of their corporate team, that money won&#8217;t last long if they&#8217;re not generating revenue (since they are private there&#8217;s no way to know).</p>
<p>Trending wise it appears to be accelerating in popularity &#8211; it&#8217;ll be interesting to resample six months from now and evaluate the landscape. Although not as many books as Groovy, its books are more current.</p>
<h4>Clojure</h4>
<p>From a business perspective, I wouldn&#8217;t even put Clojure on the radar for now, I&#8217;d need to see if it gains more traction in order to justify investing in it, as well as a much more solid foundation behind it.</p>
<h4>ColdFusion</h4>
<p>Although I don&#8217;t fully analyse it, the ColdFusion ecosystem is much larger than any of these languages. Extremely passionate community, backed by Adobe who invests millions per year in it, vast array of physical and online user groups, etc&#8230; As of right now, going by numbers, ColdFusion wins.</p>
<p>But, we wouldn&#8217;t be looking to hire a Groovy/Scala developer, just a developer willing to learn. I know that Java/.NET/PHP folks have no interest in ColdFusion (beleive me, we tried on many occasion). So the question is, is that the same situation with Groovy/Scala/etc&#8230;, and trend wise is it a matter of time and we&#8217;re just at the infancy stages?</p>
<p>&nbsp;</p>
<h2>The Data</h2>
<h3>JavaRanch Posts</h3>
<ul>
<li>Groovy: 2398</li>
<li>Scala: 625</li>
<li>Clojure: 532</li>
</ul>
<h3>Books on Amazon:</h3>
<ul>
<li>Groovy: 12</li>
<ul>
<li>Grails; 7</li>
</ul>
<li>Scala: 7</li>
<ul>
<li>Lift: 2</li>
</ul>
<li>Clojure: 6</li>
<ul>
<li>Conjure: 0</li>
<li>Noir: 0</li>
</ul>
</ul>
<p>Note: The current offerings of the Groovy &amp; Grails books are relatively old (most recent Groovy one being from 2008, and the most recent Grails ones from 2009).</p>
<h3>User Groups:</h3>
<ul>
<li>Scala: 53</li>
<ul>
<li>Lift: 4?</li>
</ul>
<li>Clojure: 33</li>
<ul>
<li>Noir: 0?</li>
<li>Conjure: 0?</li>
</ul>
<li>Groovy: 23</li>
<ul>
<li>Grails: 63</li>
</ul>
</ul>
<h3>Email List Activity:</h3>
<ul>
<li>Groovy: 50/day</li>
<ul>
<li>Grails: 83/day</li>
</ul>
<li>Scala: 38/day</li>
<ul>
<li>Lift: 46/day</li>
</ul>
<li>Clojure: 33/day</li>
<ul>
<li>Noir: 2/day (Google Groups)</li>
<li>Conjure: 1/day (Google Groups)</li>
</ul>
</ul>
<h3>Tiobe Index:</h3>
<ul>
<li>Scala: 50</li>
<li>ColdFusion: 59</li>
<li>Groovy: 69</li>
<li>Clojure: not on the list</li>
</ul>
<h3>eWeek Article 09/12/11 (<a href="http://bit.ly/nbbtbx">http://bit.ly/nbbtbx</a>):</h3>
<ul>
<li>&#8220;Groovy, JavaScript, Ruby among the fastest growing programming languages&#8221;</li>
<li>Note: the early relative percentages are interesting, but as impressive as a 100% increase is, going from 1 job to 2 jobs isn&#8217;t.</li>
<li>The more relevant thing here is the industry perception an article like this generates.</li>
</ul>
<h3>StackOverFlow Search on terms:</h3>
<ul>
<li>&#8220;groovy&#8221; : 4390</li>
<ul>
<li>&#8220;grails&#8221; : 3391</li>
</ul>
<li>&#8220;scala&#8221; : 3222</li>
<ul>
<li>&#8220;lift&#8221; : 1608</li>
</ul>
<li>&#8220;clojure&#8221; : 3059</li>
<ul>
<li>&#8220;conjure&#8221; : 89</li>
<li>&#8220;noir&#8221; : 34</li>
</ul>
</ul>
<h3>Source of funding/corporate support:</h3>
<ul>
<li>Groovy</li>
<ul>
<li>SpringSource a VMWare company, subsidiary of EMC Corporation</li>
<ul>
<li>VMWare: Publicly traded on the NYSE (VMW)</li>
<ul>
<li>Employees: 9000 employees</li>
<li>Market Cap: $42B</li>
<li>Revenue: $3.54B</li>
<li>Gross Profit: $2.36B</li>
</ul>
<li>EMC Corporation: Publicly traded on the NYSE (EMC)</li>
<ul>
<li>Employees: 48,500</li>
<li>Market Cap: $51B</li>
<li>Revenue: $19B</li>
<li>Gross Profit: $10B</li>
</ul>
</ul>
<li>Team Size: 68? (<a href="http://bit.ly/ryL8fb">http://bit.ly/ryL8fb</a>)</li>
</ul>
<li>Scala:</li>
<ul>
<li>Ecole Polytechnique Federale De Lausanne (EPFL), a Swiss Federal Institute of Technology organization.</li>
<li>Scala Solutions, acquired by TypeSafe.</li>
<ul>
<li>Privately held</li>
<li>Founded in 2011 by the creators of Scala.</li>
<li>Received $3M (euro) in Series A funding on 5/12/2011 by Greylock Partners.</li>
</ul>
<li>Team size: 12? (<a href="http://bit.ly/u3uPmI">http://bit.ly/u3uPmI</a>)</li>
</ul>
<li>Clojure</li>
<ul>
<li>Primarily via the personal &#8220;commercial endeavors&#8221; of the creator of Clojure (Rich Hickey) and private donations.</li>
<li>Team size: 8? (<a href="http://bit.ly/tIEaQ6">http://bit.ly/tIEaQ6</a>)</li>
</ul>
</ul>
<h3>Who&#8217;s using it:</h3>
<ul>
<li>Scala</li>
<ul>
<li>Twitter, LinkedIn, EDFT, Novell, The Guardian, Xebia, FourSquare, Sony, Siemens, Thatcham, OPower, GridGain, AppJet, Reaktor</li>
</ul>
<li>Groovy</li>
<ul>
<li>Wired.com, LinkedIn.com, Sky.com, Aegeon, eHarmony, EverBank, ExpertPlan, NetJay, NimBuzz, XWiki, Vodafone Music Store,</li>
</ul>
<li>Clojure</li>
<ul>
<li>BackType, Sonian, Fightcaster, Akamai, BankSimple, Relevance, KamaGames, Stere, Infinitely Beta, Wusoup, Factual, The Deadline, holodb, Prismatic, Amazon</li>
</ul>
</ul>
<h3>Job Searches on Dice.com:</h3>
<ul>
<li>ColdFusion: 343</li>
<li>Groovy: 247</li>
<li>Scala: 126</li>
<li>Clojure: 20</li>
</ul>
<h3>Job Searches at Monster.com:</h3>
<ul>
<li>ColdFusion: 196</li>
<li>Groovy: 120</li>
<li>Scala: 64</li>
<li>Clojure: 9</li>
</ul>
<h3>Indeed/SimplyHired trends</h3>
<div><a href="http://aftershox.com/wp-content/uploads/2011/10/JVM_Trend1.jpg"><img class="alignleft size-full wp-image-161" title="JVM_Trend1" src="http://aftershox.com/wp-content/uploads/2011/10/JVM_Trend1.jpg" alt="" width="545" height="309" /></a></div>
<div><a href="http://aftershox.com/wp-content/uploads/2011/10/JVM_Trend2.jpg"><img class="alignleft size-full wp-image-162" title="JVM_Trend2" src="http://aftershox.com/wp-content/uploads/2011/10/JVM_Trend2.jpg" alt="" width="540" height="300" /></a></div>
<h3>Survey Responses</h3>
<div>With just under 2000 responses, I don&#8217;t think the sampling is enough to be representative of the community as a whole, but it does provide some perspective. I even found out about even more JVM languages that I hadn&#8217;t heard of yet (Visage, Dart, Quercus, Frege, Dash, Mirah), and got a couple of Railo&#8217;s (which I wouldn&#8217;t count as a language as it&#8217;s an open source ColdFusion server).</div>
<div><a href="http://aftershox.com/wp-content/uploads/2011/10/JVM_Survey_Responses.png"><img class="alignleft size-full wp-image-163" title="JVM_Survey_Responses" src="http://aftershox.com/wp-content/uploads/2011/10/JVM_Survey_Responses.png" alt="" width="716" height="1504" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://aftershox.com/2011/10/30/sizing-up-the-business-perspective-on-groovy-scala-and-other-jvm-languages/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.724 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 04:48:29 -->

