Archives For iPhone & iPod Touch

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

It’s been a couple of weeks since I last posted. No excuses, just didn’t do it.

Lenya got back burnered, but it’s coming back out again next week. I’ve had a number of very interesting and cool quick projects with a client that precluded me from working on the Lenya implementation. I’m really excited about attacking this new project.

MongoDB 1.2.0 came out on Thursday. I’m looking at using MongoDB for a couple of different use cases over the next couple of weeks. I did stumble across the log4mongo project, a log4j appender for MongoDB, which will come in very handy for some of the logging that I’m wanting to do. I’m really looking forward to seeing how fast I’ll be able to stuff data into MongoDB. More importantly, I want to see how easy it’s going to be to query the store. It’s primarily going to be used for auditing type data, so it’s really important to be able to query it really easy. Hopefully I’ll be able to talk more about it in the next couple of weeks.

I installed Ganglia to monitor one of my client’s clusters. I’m not using it the way it’s intended, because I’m sticking servers of all types into the cluster. However, it gives a good high level view of all the servers of the “cluster.” So far, it’s working out well, but I would like to be able to break it up and use it more for how it was designed. Either way, I’m loving all the charts that it produces. It’s really helping in making some decisions on what some of the next steps for hardware should be.

On the iPhone front, I’ve started integrating the ZXing project to a couple of applications. This is the first time I’ve used the camera for processing barcodes and I have to admit, it’s pretty sharp. I’ll also be working at integrating the same library with a couple of Android apps in the near future as well. There are a couple of commercial iPhone barcode libraries, but for now the pricing is the holdup. If ZXing works good enough and the new feature gets enough traction, it may be worth the $$$$$ to purchase one of the commercial libraries.

I’m also considering switching from Pinch Media to Google Analytics for some of my iPhone analytics needs. I’m currently using Flurry and Pinch Media and I like both of them really well. I need to do a little more research to see if I really want to make the switch or not. If anyone has any experience or pros and cons, please leave them in the comments below.

I’m still reading Ship It and hope to have it completed this weekend. Manning had a special on Wednesday on Algorithms of the Intelligent Web. After a quick glance, I realized that a quick glance wasn’t going to cut it. Fortunately, the deal was the hard copy and a PDF for $20 plus shipping, so I’m looking forward to getting the hard copy so I can start marking it up. That’s all I need…some light reading over the holidays.

The 2010 Search Exchange Conference and Expo is May 17-19, 2010 in Charlotte, NC. I don’t profess to know tons about SEO or web analytics, but I do know how to tell the difference between the BS artists and the good guys. The guys putting on this conference are the good guys. Take a look at the site and if you think it’s something you would want to attend, consider signing up before January 1, 2010. That’s when the early bird registration ends.

Finally, probably most of you saw the Muppets version of Bohemian Rhapsody. If not, here it is:

Now, that’s cool, but IMHO this is cooler…maybe. Most of you reading this probably aren’t old enough to remember the Star Wars Holiday Special way back from 1978. This is for you.

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.

Mac:

Windows:

Both:

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

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.

Sigh.

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

I’ve spent a lot of time this week working on implementing striping with Terracotta FX for a client. All said and done, it’s been a pretty straightforward process, but like a lot of other “bleeding edge” software, sometimes the documentation is lacking. I was trying a configuration option that I remembered talking to some of the Terracotta guys about, but in reality, that config option really didn’t exist, which threw me off for a while.

Soon, I will be doing a series of webcasts about Terracotta. It isn’t that hard to integrate Terracotta into an existing environment, but if your code isn’t correct/optimized for a that environment, I guarantee you’ll be pointing your finger at Terracotta when you should be pointing it at yourself.

I’m also working on writing some tests using PushToTest to load test the striping setup. I hope to have that done by Monday. Why Monday? Read on…

I’ve also continued working on my super secret project. That’s been quite a challenge. I’m integrating with a public API that was designed by programmers for programmers, but there are a lot of missing options that new project requires. I’m still trying to figure out if it’s really going to work the way the business requirements wants or not. If not, I’m not sure what the next step is since the company providing the API doesn’t seem to be publishing new APIs very often.

I also picked up a new iPhone game project this past week. I’m going to try to get it banged out over the next couple of weeks. The family is going to the beach for a reunion this weekend, so that means another coding marathon weekend here at the office. I’ve really got to get started on the screencasts and get the webinars scheduled for my iPhone development process. I don’t know that it’s that special, but it sure makes starting new projects and getting them delivered really straightforward.

The last app that I submitted to the App Store was on July 7. Today is July 17th and it’s still neither approved nor rejected. Come on Apple, please work on speeding up the process. Pretty please with some fresh cucumbers on top (guess what I had for dinner last night 🙂 )

I also submitted another app update to the App Store on 7/14. It was a self inflicted submission. For the last update, I held back the lowest percentage bug from the crash reports because I wanted to see how long it’s taking for app approvals. Now, that bug is the #1 from the crash reports. My take on doing updates: fix everything you can. The App Store is taking way too freaking long for approvals.

On Tuesday (thus the “why Monday” statement earlier), I’m flying out to Washington and taking a working vacation to hang with some friends at Creation West. It’s been a number of years since I’ve been to a festival. 16 years to be exact. The last show that we did (that’s a teaser for another blog post) was Jesus Northwest in 1993. I’m looking forward to it, but the ~6 hour flight to SeaTac from Charlotte isn’t sounding very fun. I purchased a spare battery for the MacBook Pro, so I should be set. (Come on, USAir, you really need to put seat power in all your transcon equipment.)

<political-rant>

And finally, I’ve seen commercials on TV for the Chia Obama. Most of you know that I’m fairly conservative in my politics and I did not vote for President Obama. Note, just because I didn’t vote for him doesn’t mean he’s not my president.

T-shirts and buttons are one thing.

A chia head?

No matter what happens, you don’t disgrace the office of the President. I think a chia head steps way over the line. Yeah, maybe I’m making a mountain out of a molehill, but that one thing has rubbed me wrong for some reason and I just can’t shake it.

</political-rant>

Next week, I’ll hopefully have good news about the app store, PushToTest, Terracotta FX and all the goings-on at Creation West.

If you have any questions or comments, post them in the comments section below.

This week, The Moron Test from the great guys at DistinctDev jumped back to the #1 paid app in the App Store. I’ve known the guys at DistinctDev for quite a while and the #1 couldn’t happen to a nicer bunch of guys. The app that initially knocked off TMT was Sims 3. However, Sims 3 didn’t stay at #1 for very long. Don’t quote me on this, but as best as I know, I think this is the first paid app to be dethroned and then come back to #1.

If you search YouTube for TMT videos, you’ll see some amazing finger work. My favorite is this one:

If you haven’t purchased The Moron Test yet, spend the 99 cents and enjoy yourself. I still don’t have a great finishing time like the YouTube guy, but it’s always a challenge.

I also submitted a client’s new app’s (paid and free versions) to the App Store on July 7. Let’s see how long it takes for it to be approved. Once it is, I’ll let you know more about it.

And one more App Store item, another one of my client’s apps was *finally* approved on 7/8. It was submitted on 6/3, so it took quite a while to be approved. However, during that time was WWDC, 3.0 release and I’m sure a number of other items. So, all said and done, not great but looking at it in context, not horrible.

I’m working with a friend on some new ideas as well as trying to get another project out the door along with all the other current client work. I’m thankful for the work but also looking forward for a day off soon.

Last week, I was interviewed by Kirsten Valle of the Charlotte Observer for an article about iPhone developers in the Charlotte area. I was one of three companies interviewed for the article. The other two are my good friends Andy and Suki at Turing Studios, the publishers of the rocking PortfolioLive and the guys at Zarboo Software, the publishers of SpeakEasy Voice Recorder.

Here’s a link to the article:

These guys make your smart phone smarter

If you or your company is in the market for any kind of mobile development, contact me.

Core Graphics, View Transitions, Core Animation, Camera, Acclerometer, Web Services and Networking. Long day…learned a lot.

JSON Framework from the video: http://code.google.com/p/json-framework/

Day 3 was by far the easiest and hardest day. Archiving && Webkit && Media == Easy. OpenGL ES && Textures == HARD w/ spinning head side effect.