Archives For Java

it sure felt like it.

I just realized that I haven’t posted anything since Jan 17. Yep, that’s 3 months ago. Where did the time go? No excuse. Time to get back in the saddle.

Interestingly enough, what I have to say today is very close to what I said on Jan 17. I’m getting to upgrade Terracotta to 3.2.1 tonight for a client. Also with 3.2.1 comes Ehcache 2.0. The upgrade from 1.7 to 2.0 was fairly painless. To me, the coolest feature with 2.0 is write-through and write-behind caching with the CacheWriter. Unfortunately, we really didn’t have a good place in the application to use write-behind yet. However, I’ve got a couple of other ideas where it can be used, so I’m really looking forward to putting it to use.

I also signed up to get access to the Terracotta Cloud Tools. Within an hour, I had 4 instances of Terracotta running with 8 Jetty instances all running on an Amazon EC2 cluster. Wow. Let me say it again. Wow. Now my head is spinning on what I can build to leverage this. I’m also looking at doing the same thing on a “private” cloud running Eucalyptus. I do a lot of work with PCI, so using Amazon (or any other cloud providers) is still pretty much out of the question, but Eucalyptus is a great solution.

I’ve also been working a lot with Titanium Mobile from Appcelerator for iPhone and Android development. Until version 1.0 came out, it was not really what I looking for. However, once 1.0 GA dropped, I quickly realized that it was a force to be reckoned with. I was able to port about 90% of an existing iPhone application using Titanium in about 3 days. (It’s the last 10% that’s always the pain.) Titanium is definitely a great tool for quickly creating an iPhone app. I’m looking forward to creating a completely new app where I have little to no knowledge of the business and see how quickly I can create the app as compared to doing everything completely in native Objective C.

That brings up an interesting point. In Apple’s new TOS for OS 4, it appears that Titanium and other similar tools could be in question, at least for Apple platforms. To that I say, ok, that stinks, but for everything that I get with Titanium for Android and soon Blackberry, I really don’t care. If I have to write in native Objective C, I really don’t care. I’ve already taken the dive and learned the language, so I’m counting Titanium as another tool in the toolbox. Plus, if I wanted to get into cross platform desktop development for Windows, Mac and Linux, it’s available as well from Titanium as well in the same package.

I will state that I am a paying member of the Titanium Professional Edition at $199/month. For how long? For as long as I’m using the tool. I’m sure a number of the guys (especially the Android guys) are getting tired of seeing me open up support requests ๐Ÿ™‚

Finally, for anyone in the Charlotte area, this coming Tuesday (and the 3rd Tuesday of every month) is the Charlotte iPhone Developers Meetup at the Ballantyne Panera at 7:00pm. If you are a developer or someone that wants to learn how to develop for the iPhone, iPod Touch and now, the iPad (no, I haven’t purchased one yet, but soon), come on out. There’s no cost for the meeting, but show some props for Panera and at least get a drink and one (or two) of their cookies.

Darin Pope

This week, I signed up for the upcoming Big Nerd Ranch Android bootcamp near Atlanta. I attended the iPhone bootcamp last year and it was great. I’m expecting great things out of the class. It is taught by Mark Murphy, the founder of CommonsWare and the author of Busy Coderโ€™s Guide to Android Development. I’ve got a subscription to the Warescription so I’ve had access to Mark’s books for a few months. I really like his writing style. I just need more hours in the day to work through all the examples.

On the Android front, the Android 2.1 SDK dropped this week. At this point, the only device running 2.1 is the Nexus One. I imagine a number of other devices will be showing up with 2.1, but for now, there are still a lot of devices that are running sub-2.x SDKs. The Platform Versions page at the Android developers site gives you a ballpark of the number of devices running a specific version of the Android platform. Again, it’s a ballpark, but definitely let’s you know that over 70% of all devices accessing the Android Market are still running sub-2.x versions of the SDK.

What does that really mean? As a developer, I have to make a decision when writing applications on how many devices I really want to support. With iPhone, I recently dropped support for any devices that are not running at least 3.0. I think with as fast as the Android updates have been dropping, I may have to do the same with Android.

I think it will boil down to what devices are really using my applications. If 95% of my users are using devices supporting the 2.0.1 and higher platform, you can bet your bottom dollar that I’ll drop support for anyone that is running anything less than 2.0.1 as quickly as I can. Sure, that might upset some users, but the reality is it is not worth my time to support less than 5% of an installed user base.

Also this past week, Terracotta released version 3.2.0. As I have said in the past, I really like what Terracotta can do for developers. All of people that I follow on Twitter that also use Terracotta really like what they are seeing in 3.2.0. My initial impression is also very good. It was a drop in upgrade from 3.1.1. The changes they have made for locking are pretty amazing. I was working through an issue while taking thread dumps between 3.1.1 and 3.2.0, I saw some amazing differences in how things work.

If you are considering building a scalable website where you need web sessions and Ehcache clustered, it is an absolute no-brainer to use Terracotta. If you have any questions on how to do it, send me a message through the contact form and I’ll be glad to talk with you about how I have used Terracotta to do just that.

Finally, the Charlotte Startup Weekend is currently scheduled for May 14-16. I’m looking forward to attending. I’ve never attended a Startup Weekend before, but based on what I’ve heard from people that have and the videos on the site, it looks like a lot of fun and a place where I would be both deeply inside and outside my comfort zone.

As always, if you have any questions, please let me know by sending me a message in the contact form

Darin Pope

No love from Google Checkout

darin —  November 13, 2009 — Leave a comment

Ok….ok…I missed posting last week.

I have a good reason.


Well, at least in my mind, it is.

I’ve been working with one of my clients to get another website live, which happened successfully last weekend. I spent a good part of the last couple of weeks creating the go live checklist and going through a couple of dry runs before the actual go live. Of course, everything went without a hitch from my side.

What’s your takeaway? If you want an uneventful launch (if you don’t, maybe you don’t need to be doing this), spend some quality time creating a go live checklist. Then, take that checklist and do a dry run, updating the list with items you may have missed. Wash, rinse and repeat until you feel like you have everything covered. Then, on the day you go live, update the checklist with anything that you may have missed or gotten out of order. That way when you do your next go live, you’ll have a starting point to create a new checklist. I’ve been following this method for a number of years and the only time I’ve had issues is when I didn’t follow this formula to the letter.

This weekend, I’ve got a number of projects to work through…initial port of a very successful iPhone app as an Android app, do some testing of the pre-alpha version of Terrastore, install MongoDB and figure out a way to quickly and efficiently load ~10GB of unstructured data in under 3 minutes and finally spend some time giving serious consideration to Appcelerator Titanium for iPhone and Android development for a couple of client’s mobile applications.

The other big thing that I’m working my way through right now is upgrading a client’s app to support Terracotta 3.1.1 from 3.0.1. Normally, that wouldn’t be a big deal, but we had used the Spring elements in the 3.0.1 config and that is no longer supported in 3.1.1. However, it hasn’t been too bad, but there are still a couple of sticking points I’m working through. Based on what I have seen so far in the conversion, I absolutely *love* the Ehcache visualizations that are provided in the developer console. It should help considerably in tracking hot and cold caches. We’ve written some monitor scripts to know this data, but it was only at a Tomcat (L1) level. Now, we’ll see how it’s getting hit as Terracotta sees it. So far, very cool.

Here’s my horror story for the week. The short story, a long time ago, I had an AdWords account shutdown by Google for not having quality landing pages. (That’s another story unto itself.) This past week, I tried to purchase a subscription using Google Checkout using the credit card that was associated with my disabled Adwords account. I was able to place the order, but my card was declined. I called my card issuer and they said they were not seeing any charges coming through from Google. Then, I startd emailing Google Checkout for more info. After about 5 days, they replied with some generic verbiage. I replied to that email and I got back a much higher quality email stating that I should contact Google Adwords to see what they could do on their side. Now, I’m stuck in that email pit. If your payment doesn’t process in 7 days with Google Checkout, they cancel your order. This is really a pain not only for me, but for the publisher I’m trying to give money to. Hopefully this is resolved soon. It’s hard to believe that there is not a phone number that I can call to try to move this through a little faster, but I understand why they don’t do it. At this point, I won’t be using Google Checkout anymore, which is sort of a bummer because I really like it. I’ll let you know what happens once it is resolved.

If you are looking at Android development, you really need to get a CommonsWare Warescription from Mark Murphy. What’s a Warescription you may ask? It gives you access to all of Mark’s books and all the associated updates for 1 full year. The price? $35.00. As of today, that means 3…count them…3 books on Android development. It also gives you access to Mark’s “office hours” where you can chat with him using Campfire. I haven’t taken advantage of the chat yet, but after this weekend, there’s a really good chance I will. If you are even a little interested in Android development, you need to head over to Mark’s site at (Note: I pay for my Warescription of of my own pocket and I’m not getting anything in return for this glowing review ๐Ÿ™‚ Are you happy FTC? )

Finally, I’m still trying to figure out my LOTY (language of the year) to learn for 2010. I guess Objective C turned into my 18 month language, so I really need to get on the ball and make my decision. I’ve narrowed it down to Scala and Clojure. There is going to be a Pragmatic Studio Clojure Training in Reston in March which looks like it might be the bomb. It’s being conducted by the the guy that created the language (Rich Hickey) and the guy that wrote the book on it (Stuart Halloway). I saw Stuart at the RTP No Fluff conference this year and was very impressed.

I’m also going to be going heads down with Android development in 2010, along with keeping up my ObjC and Java development.

2010 is shaping up to be another brain twisting year and I’m really looking forward to it.

If you have any questions or comments about anything I blogged about today, please leave a comment below.

Darin Pope

It’s been one of those kinds of weeks. I’ve been working on implementing a LinkedBlockingQueue for a project and things were not working as expected. Unfortunately, I forget the simplest of rules for LBQs: there is a lock on the head and a lock on the tail. I was processing the queue using a Timer in Spring and was calling queue.take(). However, when I would look at the log, I would only see a handful of entries saying the take was happening then it would appear to stop.

That was my fatal mistake.

If I would have read the not-so-fine print on for the API on take(), I would have seen:

“Retrieves and removes the head of this queue, waiting if necessary until an element becomes available.”

It wasn’t that processing was stopping, it was that it was waiting for something to hit the queue.

My next step is to hook the queue up into Terracotta and make it cluster-aware so I have failover in case one of the nodes goes down. Should be smooth sailing from here. At least I hope so ๐Ÿ™‚

I’m starting the design and coding for an Android version of a best-selling iPhone financial app this week. I’m really looking forward to going heads down and knocking this out.

I’m also looking forward to the release of the Droid phone this week. However, I’ll let someone else be the first on the block to get one. I’m still in love with my iPhone, but hopefully AT&T’s coverage will be starting to rival Verizon’s or I’ll be defecting once my contract is up.

I’m also considering switching from my current home phone and internet provider to Clear. They are launching in Charlotte this week and their pricing is *much* more attractive than Time Warner. However, I’m hoping to get an eval unit for a couple of hours to check out coverage at the house. Hopefully I can give you more info on this over coming weeks. I’ve been happy with Time Warner, but they have been the only game in town where I live, so I’m hoping Clear will give us a good 2nd option.

Finally, my update on Windows 7. Even though I’m a Mac fanboy, I have to say that I am freakin’ impressed by Windows 7. I did a clean install of Windows 7 Pro 64 bit last weekend on a low end Dell Studio (can’t run XP compat mode) and from time of insert of DVD to running Win7 was under 20 minutes. I can’t get any Linux or Mac installs to go that fast. I was highly impressed. Then, I used Ninite Easy PC Setup and Multiple App Installer to install the normal stack of Windows apps that I use (Chrome, Firefox, Skype, etc). Man, what an amazing little app. It only took a few minutes and 80% of the apps I use were installed in almost one click.

My overall impression with Win7 is pleasantly surprised. I’m still sticking with Mac OS X for now, but I really like what I see with Win7 and at this point I wouldn’t think twice about switching over if I needed to.

If you have any iPhone, Android or Terracotta questions you need answered, leave a comment below.

Darin Pope

This week, I dipped my toes into the NoSQL world. Currently, I’m evaluating MongoDB for a project. It’s amazing that people are thinking this is new and revolutionary. I was doing this stuff in the late 80s with PICK, Universe, UniData, Revelation and a number of other “post-relational” databases. Back then, it was all green (or amber) VT100 screens. That, I don’t miss one bit. With Mongo, I can use a native Java client, which is a huge plus. I’m hoping to have a prototype done in the next couple of weeks. I’ll let you know how it turns out.

One of the biggest pieces of news from the iPhone front this week was Apple is now allowing in-app purchases inside of free applications. To me, this is probably one of the biggest pieces of news for the year. After building free and paid versions of an app for a client, I see how much of a pain it is to do. However, I think there will still be legitimate cases where you want free and paid versions of an app. Looking forward to trying this one out soon as well.

I’ve spent the past couple of weeks localizing an iPhone app into French.ย  Through that process, I’ve decided that my new process for writing applications will be to localize in the initial stages of development. It doesn’t take an extra time and it actually makes my code look a lot cleaner by extracting all the app copy to a file. Why didn’t I think of this before? Forest for the trees.

This weekend, I’m putting the finishing touches on the talk I’m giving at the Charlotte JUG on Wednesday night on iPhone Development with RESTful Java Web services. If you are in the Charlotte area, please come on down to CPCC downtown and check out the presentation. As an added incentive, there’s free food as well ๐Ÿ™‚

A number of people have asked me what tools I use to do my work on a day to day basis. I’ve listed them below in no certain order.




I’m sure I have a handful of other programs that I do use, but these are the core. If you have any suggestions of any apps I should be using, post a comment below.

Thanks for dropping by today. Now, back to polishing the presentation. Have a great day!

Darin Pope

Fortunately for me, it’s been a very quiet week. We’ve had minimal issues from the client launch last weekend. We’ve found a couple of things to cleanup, but nothing major. It made my trip to Dallas for the weekend a lot more sane not always having to constantly look over my shoulder, or in this case, looking at the Nagios Tactical Overview, to make sure everything was going ok.

When I arrived into DFW on Thursday to start the meetings, I was on my way over to the hotel when I saw a black cloudwall. I tweeted later:


Thoughts on returning to DFW: I really miss being able to turn on @powerfm on the radio; I don’t miss storms that turn day into night


But like all Texas weather, all you have to do is wait 5 minutes and it will change. This storm was no different. Again, I don’t miss that kind of weather.

My meeting with the Broadleaf Commerce team went really well on Thursday and Friday. I’ve got a few things to do to help contribute to the project now. I’m going to be creating some screencasts discussing installation and configuration along with doing some code review.

One of the other things I’m going to add (at least in isolation for now) is some RESTful web services so I can use BLC as my web service layer for the upcoming Charlotte JUG presentation titled iPhone Development with RESTful Java Web Services. If you are in the Charlotte area on October 21st, please be sure to drop by for the presentation.

One of the other tasks for me is to integrate BLC with Terracotta. As you know, I really love what Terracotta provides. For websites, you can start as simple as session failover all the way through fully clustering Hibernate. I think for the first pass, applying the KISS principle, I’ll get session failover working. Once that works, I’ll let the core team let me know which way to go from there. I think that it is going to be a fun project to work with and will stretch my thinking in a number of areas.

I’m looking forward to a couple more client meetings from now through Monday along with seeing friends I haven’t seen in about a year. Then, back to the airport late Monday to return to CLT. I really do love what I do.

I’m still on the search for the language or product to learn this year. I was initially leaning toward Ruby, but now I’m not so sure. I’ve got some other people telling me Sharepoint. Not sure if I’m ready to go back to a Microsoft platform or not ๐Ÿ™‚ Either way, you have a suggestion of what my next language/product is that I should learn, leave it in the comments section below.

Darin Pope

Thank You and Good Night

darin —  September 27, 2009 — Leave a comment

This is going to be a really short one. We had a big web site go live for a client this weekend. I’ve been up for 36 hours, but I did sneak in a 2 hour nap and the caffeine is beginning to run out…

Here are the highlights leading up to and through the launch, in no particular order:

  • migrated from a Windows based environment to 64 bit Linux. As an aside, one word on increased performance: wow
  • setup Nagios, NagiosGraph and Monit for the entire farm from scratch
  • create numerous Subversion repos to manage ongoing deployment and disaster recovery scenarios for the complete farm
  • implemented UseLargePage for both Tomcat and Terracotta. There will be another blog post and maybe a screencast over at the corporate blog explaining all the gory details. Gory getting there, but now I can save you a lot of time. (I sound like a late night infomercial.)
  • coordinated launch with website, Facebook application and multiple mobile applications
  • fallen deeply in love with pssh and it’s sister utilities

There were a handful of other items knocked out, but you may notice that Chef and Capistrano didn’t make the list. I’m not giving up on them, but due to the short amount of time to get this farm up and rolling (~ 14 days), I felt it was safer to use the tools we were more used to working with (scripts, Subversion, etc) than to throw anything else on the fire.

This week is the turnover to train ops on the new environment. It’s going to be a lot of fun. I always love teaching people that system administration doesn’t have to be hard.

I don’t read everything that Joel Spolsky writes, but the post on The Duct Tape Programmer has applied to me and the client team that I work with over this launch cycle on trying to keep it simple. Another way to look at it is take Larry the Cable Guy’s mantra: Git-ir-done (not to be confused with the version control system)

As evidenced in this video, it’s not necessarily going to be the prettiest thing in the world, but when the deadline is coming, all the extra junk is thrown out the window and you deliver a kick butt product. Yeah, sometimes you have to come back and do cleanup, but that’s just part of the job. Remember, your employer is not your mommy, so stop your whining ๐Ÿ™‚

I’m headed to Dallas, TX next weekend to meet with some of the guys working on Broadleaf Commerce. I’ve been helping out a little on that project and I’m wanting to to see how I can get better plugged in.

Also, be on the lookout for a talk on Using Java based Web Services with the iPhone (and other smartphones) at the Charlotte JUG in October. I’m putting the talk together now and hopefully will have time on the flight this week to knock out a lot of the details.

And with that, I bid you a good night with help from my friends at Lawrence Welk:

Darin Pope

PS. Just to put it in perspective, when I was growing up, the Saturday night ritual at our house was watching Hee Haw at 7pm and Lawrence Welk at 8pm. For some of you, that might help put a lot of things into perspective…

Do as I say, not as I do

darin —  September 19, 2009 — Leave a comment

“Proper planning will keep things from turning into emergencies. Lack of planning makes everything an emergency.” – @scottjallen

I broke one of my cardinal rules over Labor Day weekend and I meant to blog about it last week, but I was too ashamed to admit what I did. I jumped the gun and upgraded the trusty MBP to Snow Leopard. Boy, was that ever a HUGE mistake, at least for me.

Now, mind you, the upgrade was flawless. Dropped in the DVD and let it run for an hour and there was my shiny Leopard-upgraded-to-Snow-Leopard install. That’s where the problems began. I ran into a few pieces of software that I use on a daily basis that were not playing nicely with Snow Leopard. Then came my favorite IDE right now, Xcode. What I didn’t read and realize what that once you upgrade to Snow Leopard, you have to upgrade Xcode to the version that was on the DVD and then apply the iPhone SDK extension. At the time, that version of Xcode did not build for any OSes below 3.0. For me, that was the showstopper. I had 2 apps that are built to 2.1 that I was in the middle of making some maintenance changes.

Of course, I did a full clone of my drive using Carbon Copy Cloner before I started the upgrade.

Oh, wait.

No, I didn’t.


After the upgrade is *NOT* the time to do a clone. So, I ran out to OfficeMax and used a coupon I had and purchased a new WD 500GB drive for ~$100. I formatted the drive HFS and then cloned the upgraded Snow Leopard drive off to the new 500GB drive. A few hours later, I had Snow Leopard running on the external USB drive. Now mind you, it didn’t run fast, but I had all my data and everything worked well enough for me to format my internal drive and do a clean Leopard install on the internal drive.

I’m still trying to get everything right, but I’m really pretty productive right now. One of the biggest issues I had was I had cloned my old Dell laptop to a VMware image. That image was almost 100GB. Since my internal drive is only 250GB, I was always pushing the capacity of my drive. Now, whenever I need to access my old Dell image, I run it from the external drive. Again, not the fastest solution, but it works good enough for what I need it to do.

I’m sure at some point I will do a clean install of Snow Leopard on the MBP, but I will *NEVER* do without cloning what I have first again. A $100 drive is cheap insurance.

On the bright side, my daughter’s MBP and all of her software play very nicely with Snow Leopard. With apologies to Meat Loaf, I guess that one of two ain’t bad.

I’ve recently started doing more Android development along with all my iPhone development. Up until recently, there was only one device, the G1, and it was only offered on T-Mobile. Now, there is another device (The T-Mobile myTouch 3G). This is now old news, but on 9/10 (a little after press time for me), Motorola announced their upcoming Android based devices. I’m not really sure what’s going to happen. In my opinion, none of those devices come close to putting a dent in the iPhone. However, the more I develop for Android, the better I like it. I don’t think I’ll be abandoning iPhone anytime soon, but Android is *so* much more fun to develop for than Blackberry. My gut feel is iPhone will get leap frogged by someone else, or even possibly themselves. However, I don’t think that will happen within the next 24 months. I could be wrong, but time will tell.

Recently, I purchased Parallels and have been real happy with it. I’m also using VMware Fusion, but Parallels has been a better choice for some of the VMs that I’ve been using.

That’s when some other strangeness began on my beloved MBP.

One of my client’s uses Cisco VPN. When I was at the hotel the other night, the hotel internet was flaky at best. I took out my trusty AT&T Mercury USB modem and attempted to connect. After about 5 seconds, the Cisco VPN client would disconnect. I then went off on the great Google search to solve my problem. After a number of search phrases, I finally found a post titled “Cisco VPN client used over 3G modem incompatible with Parallels”. Hold up, wait a minute, put a little love in it! (I’ve been listening to Business Up Front, Party in the Back from Family Force 5 a lot recently.) As soon as I disabled IPv4 and IPv6 for *both* of the Parallels network adapters, my 3G modem started working great. That kept me going for at least another hour before I the hotel internet came back online.

Now I need to check and see how much data I pumped through the modem in that hour. I don’t think I came anywhere near the 5GB monthly limit, but you never know. Next test is to take the modem to the McDonald’s and Starbucks and see if I can get the WiFi to work with the MBP finally. That’s fodder for a later blog post.

This past week, I’ve spent quite a bit of time installing and configuring Capistrano and Chef. I’m still not ready to write about my adventures, but suffice it to say that it hasn’t been the best of times. However, I’m liking where I’m headed with both products and I should have a short writeup here within a couple of weeks along with a more detailed adventure over at the corporate blog at the PlanetPope blog.

Also on the short term radar is Appcelerator Titanium. I’ve got it downloaded and have my mobile account setup. I met Chris Beck at the Charlotte Ruby Meetup. He recently tweeted “Just finished up one of the new iPhone apps I had planned. Knocked it out in two days with Appcelerator Titanium.”ย  I’m trying to think of a few quick applications to run through Appcelerator Titanium to see how good it is. I will definitely be going into greater detail on the PlanetPope blog about this venture.

Finally, many of you know that I am a huge fanboy of Terracotta. One of my clients is in the process of building out a new production infrastructure and they are moving to 64 bit Linux. The Terracotta server is a nice, fat box and the clients (in this case, Tomcat 6) are running on some tasty VMware ESX boxes. VMware produces some really nice documentation on how to configure ESX servers for an optimal setup to support Java. One of the items is using large pages. However, VMware’s supporting documentation specifically about large pages left a lot to be desired. Then I found a post by Andrig Miller titled JVM Performance Tuning. He gave a great step by step of how to configure the box. I’ve followed all the steps, but for some reason, I’m still getting the message:

Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve shared memory (errno = 12)

on startup. Everything seems to be setup correctly, so I guess I still have some more work to do to get it right. Once I do, I’ll post it up at the PlanetPope blog.

I’m looking forward to a really busy weekend prepping for a massively huge release next weekend. I’ve spoken with some friends at other shops and it seems this is the time of big releases. I noticed yesterday that US Airways had a new site. Today, they were back to providing their old site. I’m guessing it didn’t go so well. There’s a lot to be learned from watching large sites do rollbacks. It would be great if someone would provide the insight into these launches. Oh, wait…that’s exactly what I’ll be doing next couple of weeks. Hopefully it will be all happy and not sad news.

Darin Pope

This past Monday, I attended SocialFresh in Charlotte. I typically don’t spend a lot of time in the social media space, but a number of my clients are wanting to “get started” in the social media space. For me and my company, it makes sense to learn the basics and then pull in the smart people when I need them.

There were a number of very good sessions, but there was one on Twitter (how can you have a social media conference without making verbal love to Twitter? ) and there was a statement made that transcends all aspects of life:

Experience does not equate to expertise

How true is that statement in your surroundings? I’ve known a number of good people that have been writing code for years but could not code their way out of a paper bag that was used to hold a fresh hot Philly cheesesteak.

Why is that? In my opinion, it’s the hero complex.

You know the type of person. Everyone in upper management loves this person. These people can never do any wrong. They are considered indispensable. They are consistently pulling all-nighters and fixing things right up until the last second before a major release, but they always pull it out, even if it take a couple of weeks of another team cleaning up after this person.

Why is this?

Because they have a lot of experience, but not a lot of expertise. They know enough to not be very dangerous but not enough to do a competent job without causing a lot of stress to themselves and the others around them.

As my friend Davon would say, “Don’t shout me down because I’m preaching good!”

Many of the speakers at NFJS Raleigh also echoed this sentiment. Is this a harsh statement? Yeah, it probably is. However, if this person is allowed to continue in this manner, this will affect the productivity of the team and in return damage the bottom line. People will get grumpy. How do I know this?

I’ve played the hero role a few times during my career.

In retrospect, it’s probably one of the most detrimental things that can be done to a team. Hopefully I’ll never go back down that road again. If I do and you’re on a team with me, please let me know so I can jerk the slack out of myself.

Onto the NFJS wrapup, one word…wow. I’ve never been to a NFJS event before. It was really nice to be at a conference where there wasn’t verbal vomit from vendors. There were a few speakers there that were from vendors, but that’s not why they were there. They were really giving out some serious content that was worth much more than I paid.

Here are a number of takeaways that I have for myself:

  • Setup a Github account
  • Setup a blog for my corporate site
  • Create an account for Google App Engine
  • Start using FindBugs, PMD and Crap4J again on a regular basis
  • Reviewย
  • Investigate Capistrano
  • Investigate Chef

This should keep me busy this week along with all the other client work that has to be completed. I’m also starting work with an open source project this week and hopefully I’ll be able to give you more info on it later in the week.

As always, I’m looking for any questions that you have about iPhone development. I’ll be starting the video production later this week and the videos will be posted over at the corporate blog.

I’m going to try to make this blog a little more personal and the corporate blog really technical. If you want to read both, you’ll get a very interesting insight into who I really am.

Darin Pope

As I write, I’m cruising at 27,000 feet from Miami to Charlotte after spending part of the week on site with a client. Very productive, but the week flew by way too fast.

This week had some fairly major announcements in the Java arena. Terracotta acquired Ehcache. That’s probably the best news I’ve had all year. I am a huge proponent for Terracotta and our client uses Ehcache extensively. Even though I’m a Terracotta fanboy, I will admit I did have some questions on why they were building their own cache to support the greatly expanded Hibernate support in 3.1 versus spending time to improve on Ehcache. But I figured, “well, they are really smart guys, so I guess it makes better sense for them to roll their own.” As soon as I saw the Ehcache announcement, I was really happy. IMHO, it’s a great deal for both Terracotta and Greg. I’m looking forward to seeing how both products will improve by leaps and bounds.

One of the other big announcements for the week was SpringSource acquired Cloud Foundry. Honestly, I’d never heard of Cloud Foundry because most of my work is heavily driven by PCI and PII compliance, the “public” cloud was never really an option. However, I’m starting on some other projects that are not in the PCI/PII arena, so this is something that I will definitely be digging through.

The whole cloud space is very intriguing, but since I approach development from a sysadmin/ops/app support angle, I’m always thinking about the platform the solution is going to launch on from Day 0 of a project. I really like only paying for what I need when I need it. Which leads me into my next thought…

I’ve had the privilege to speak with Frank Cohen and Troy Amyett at PushToTest over the past few weeks. One of our clients is looking at their testing solution. The client currently uses one of the larger hosted load testing solutions, but as I told Frank the other day, “it’s cheaper to pay for a funeral than it is to load test my site.” I really like what I’m seeing with PushToTest. It’s as easy or hard as you want it to be. One of the largest differences between their Community and Enterprise versions is the Enterprise version allows you to spin up load test instances on a number of the popular cloud providers (Amazon, etc). To me, this is a developer’s and tester’s dream. No more having to have a third-party to write your test only to find out that the test is correct and you have to start the whole cycle over again. With PTT, I can use Selenium to “write” (record) the click tests and then use that test for functional, load and business monitoring, all with little or no changes. Then, if I need to write a JUnit test to do some other testing, I can do that as well. My only beef with PTT is their GUI. I guess I’ve been spoiled with the likes of Eclipse and IntelliJ. But for the amount of power I get with PTT, I can deal with the lack of eye candy.

One of the other amazing products that I saw this week was the mobile platform from Kony Solutions. Since I’ve been doing quite a bit of iPhone development this past year along with some Blackberry development, I was quickly seeing that hand-coding thick clients for every new device and updates to the mobile OSes is a losing battle.

Kony provides a very tricked out solution that allows you to “write once, run everywhere”. When I first heard that, I said, Yeah, right. However, based on what I have seen so far, it really seems to bring the goods. The basics is you use the Kony IDE to do all your development. It’s not WYSIWIG, but more of a layout tool. Then you can tweak the layout for specific devices (iPhone, Blackberry, etc). The other thing that is cool is that it will also create multiple mobile compliant websites that are optimized for non-smart phones, but also optimized for the iPhone Safari browser. Kony doesn’t generate code to the lowest common denominator, it generates it to the highest. For example, the iPhone ships with a native tab controller, but the Blackberry doesn’t. With Kony, they have their own tab controller. Under the hood for the iPhone code, it uses the native iPhone tab controller, but the Blackberry has a custom control written. That kind of feature alone is well worth the money.

Even though the development tools are cool, the server component is much cooler. With the exception of the iPhone, all your deployments are managed by the Kony server. There is a built in ad server (semi-cool), but there are a lot of real time management tools that make life really nice.

If you tried to roll your own solution, it would take you probably a number of months if not years to come close to what Kony can provide you today.

You may ask yourself, “how much does Kony cost”? Well, what I can say it’s more than the $99 iPhone developer fee and less than the US National Debt. This really is an enterprise product with a price tag to prove it.

Here’s the bottom line with Kony: they are targeting the enterprise level clients, not the shadetree (how can I make $1MM overnight with an iPhone app) developers. Do I think what they are charging is reasonable? Absolutely. Will most people have sticker shock? More than likely, yes. However, if you step back and look at the value of what Kony provides in their development tools and processes along with the server portion, I consider it a very reasonable deal. If you are seriously looking at a mobile solution for your company without having to really increase your staff, you really should give Kony Solutions a long hard look.

Also this week, I went old school. I mean, really old new school. I saw a tweet from someone about the new Tron soundtrack from AmazonMP3 for $1.99. Yep, you read it right, $1.99. (It was the Daily Deal for 8/19) When I went to purchase it, I noticed it was the London Philharmonic. Epic Win. It’s been playing almost non-stop in my iPod. The two songs from Journey that are on there are pretty good as well, but they are no Don’t Stop Believin’. I will admit, I’m not sure that I will go see the movie, but the soundtrack is really, really good.

Next week has some interesting items in store.

On Monday, I’m headed to the preeminent social media conference in Charlotte called SocialFresh. Now, even though I blog, have a Facebook page and tweet some, I don’t consider myself a “social media guru.” (Every time I hear that term, I grimace.) I’m not looking at getting into that space as part of our core business, but I really like to see how the presenting companies are using social media today so I can try to stay up on the information for my clients when they have questions pertaining to social media. The event is sold out, but there are networking opportunities that people can attend. If you are in the Charlotte area on Monday and you have any interest in social media, you should try to get by one of the social events.

On Tuesday, I’m breaking out the credit card and purchasing Camtasia for Mac. I’m not expecting it to be as feature rich as the Windows version (it is a v1 product), but I am looking forward to a more familiar environment to work in. I absolutely love Camtasia and I think this might be one of the best $99 that I spend this year.

I’m also headed to the rescheduled Research Triangle Software Symposium in Raleigh on Friday. I was sort of bummed it was rescheduled from earlier in the summer, but it’s actually worked out a lot better because I get to go hang with my sister and her family some while I’m there. I’m really looking forward to hearing from Mr. Career 2.0 himself, Jared Richardson, along with few of the other speakers. If you are in the RTP area or within a reasonable driving distance, you need to be at that conference.

To wrap up this week, I want to send you over to a blog post from one of my best friends and mentors for over 20 years, Scott Allen. Before there was coding, there was being a roadie; a lighting tech to be specific. Yep, mullet, ponytail and all. Scott was one of the guitar players. Scott has been writing a series on creative myths and this week’s installment is titled Creative people get paid to play. Even though the post is written primarily to musicians and production people, it really applies as well to developers. If you like it, be sure to leave a comment.

Next week, be on the lookout for information on SocialFresh recap, a new open source ecommerce platform named Broadleaf Commerce, Mobilecamp Charlotte, ProductCampRTP2 and how I’m dealing with being the surrogate father of a college freshman.

If you have any questions, leave them below or you can contact me directly.

Darin Pope