brandontreb.com Tips And Resources For Software Consultants

What I Learned In My First Month Being A Contract iOS Developer

tl;dr Present yourself to potential clients as if you have already made it. Don’t be scared, the work it out there. Freelancing FTW!1!

In the first week of December, I got a rather unfortunate (and unexpected) call from the CEO of the company I was working for. The gist of it was “we are reorganizing, and have decided to cut your position. Effective Immediately”. At this point, I was the Director Of Mobile Engineering and was making a very decent salary. While I was planning on leaving to go freelance at some point, I hadn’t dreamed it would be this sudden.

Well, it turns out that CEO did me one of the biggest favors of my life. He forced me to go indie. I probably would have flailed there for at least another year before even considering moving on.

I want to share a few things (good and bad) about what I have learned in the past month and how I will never (willingly) work for a company again.

Panic Sets In

I had been working at the aforementioned company for the past 4 years. In fact, it was my first job out of college. So, you can imagine how scary and stressful it was going from a steady paycheck to nothing in the blink of an eye. What’s ironic about this is, many people I have talked to since going indie have told me that they wish they could do it too, but really like the “security” of their corporate job.

At first, I freaked out a little and took the day off (I was “let go” in the morning). But, the very next day I hit the ground running in search of a contract.

Contracts, Contracts Everywhere

Much to my surprise, there are contracting opportunities everywhere. Again, I had to leave the company so soon, I hadn’t had time to research this myself beforehand. A simple Google search of “[your field] contract work” should reveal plenty (assuming your field is some sort of software. I can’t speak for other industries). I even started applying for salaried jobs as a contractor. You would be surprised how many companies are open to it.

This was immediately comforting.

Talk The Talk

My first few days of looking for a contract were pretty interesting. Being that I had just been let go, I felt this intense pressure to land a contract right away. This definitely came through in how I related to the recruiters and people I spoke with. My good friend Scott Caruso sat down with me and gave me some of the most important advice I would hear for dealing with potential clients.

  1. You are looking for the “right opportunity”. If you are considering freelance, you obviously feel you are an expert (or close to) in your field and that definitely has value. Don’t settle for crappy contracts at crappy rates just because you need the money. You will hate life.

  2. Spam! During my first week, I would contact one or two people and they said they would get back to me. Well, I didn’t want to possibly have to tell them no later, so I would politely not communicate with anyone else until I heard back. That was dumb.
    Finding contracts is like shopping at Goodwill. It’s mostly crap, but if you go through enough of the crap, you will find a gem.

  3. Leverage your existing contacts. This should be obvious. I was holding off on this early on as I didn’t want to sound lame. However, these are the people you can show a little desperation to as they are (or should be) your friends. That being said, someone always knows someone else that needs some work done. If I hadn’t done this, I for sure would have violated #1.

  4. You are a scarce resource (at least present yourself that way): Once I started telling recruiters that I was talking to tons of others and am planning on making a deal this week, I started getting a flood of them calling me back.

The Bad

  1. Everything you do starts to get a price tag. The other day, I asked my wife to make me a sandwichh. She told me to make it myself, and I politely informed her that the 15 minutes spent doing that would cost us $25 so it had better be the best sandwhich I have ever made.
I am not sure if this feeling ever goes away (if you are a veteran freelance, I’d love to hear your thoughts).
  1. It’s a little scary knowing you don’t have a paycheck in X months (X being your current contract length). This was the most frightening thing at first. Now, it seems like an exciting challenge.

  2. Tendency to overwork: Since you now have money++ and can make more just by adding hours, you will be drawn to work more. I have talked to many others who end up leaving freelance because of burnout from working too much. Sure you made $30K in 2 weeks, but you are hating life.

Summary

So far my journey as an independent iOS developer has been incredible. I am loving every minute of it and I encourage anyone interested in it to do the same. I don’t think it’s for the n00b or the non-self starter. This post I found on Hacker News has a brilliant step by step tutorial on moving in this direction.

I hope you have enjoyed yet another post on freelancing.

Thanks for reading!

5 Third Party iOS Libraries I Have Found Useful Lately

As I mature as a developer, I try to rely on other people’s code more an more. Why build something from scratch when a solution already exists that you can fit in your project. In Pocket MUD Pro, I used 13 3rd party libraries and am using quite a bit more in the project that I’m currently working on. I figured that I would share some of the libraries that I have been using so that it might save you some time in the future.

1. CocoaAsyncSocket

Link: https://github.com/robbiehanson/CocoaAsyncSocket

Many of my applications involve TCP or UDP networking. There is a lot of boiler plate code involved in every networked application, and CocoaAsyncSocket solves much of that for you.

2. Appirater

Link: http://github.com/arashpayan/appirater/

Screenshot

Hopefully, you have heard of this one or a similar library by now. It’s very challenging to get users to want to review your applications, let alone give you a positive review. AppiRater allows you to prompt a user to rate your application based on either number of launches or “significant events” which you specify.

3. Zip Archive

Link: http://code.google.com/p/ziparchive/

I try to ship small applications that download assets upon launch. A good way to send these assets over the wire is to zip them up and stick them on your server. I have written an article about this on iCodeBlog.

4. Quick Dialog

**Link: ** https://github.com/escoz/QuickDialog

Creating forms in iOS is pretty painful. It usually involves custom table cells and a lot of delegate nonsense. QuickDialog takes away some of this pain and allows you to easily create iOS forms. You can even design them using JSON.

QuickDialog Screenshot

5. TSMiniWebBrowser

Link: https://github.com/tonisalae/TSMiniWebBrowser

Often times, you want a quick and dirty browser in your application. I generally use it to point to in-app documentation or take the user to a page after tapping on a link. It’s quick and easy.

Screenshot

I hope you find some value in this list. I’d love to hear about the libraries you use frequently.

Happy Coding!

How To Become An Indie Game Developer

What programmer doesn’t want to be an indie game developer? A great article with tons of tips to help you on your way.

[Article Link]

My Number One Feature Request For iOS 6

Fix the Snooze button! I have no idea how this UI component got to Apple’s review team and they were like ”Yep, that looks beautiful! Ship it!”. If Apple changes the snooze button and slaps a 6 on iOS, I will be happy. If not, more rants to follow. Stay tuned….

If There Was Ever A Time To Submit A Show HN Article, It’s Right Now

Earlier today a post titled ”I Try to Up Vote Every ‘Show HN’ Post and You Should Too” made it to the top of HN.  It basically talked about people posting “Show HN” posts are putting themselves out there and the least we can do is give them an up vote.  Well, people are listening and as of this posting, there are currently 15 Show HN posts in the top 30.  That’s incredible.

So, if you have recently created something cool.  Head over to HN’s submission page and add your link making sure to add “Show HN” in the title.  You might get some great traffic/feedback out of it.

Lua Scripting The UI For Pocket MUD Pro

I have just updated my MUD client [Pocket MUD Pro] to be a universal library. It was surprisingly easy to add the iPad support as most of the application was comprised of UITableViews.

The main “MUD” view was the most challenging part as it contains a couple UIWebViews, UIButons, and a UITextField. However, I chose to do something I feel is pretty cool.

Scripting The UI With Lua

If I haven’t said it enough, I love lua. Especially in the context of scripting within other applications. Pocket MUD Pro already has complete lua support in triggers in aliases, so I figured I might as well apply that same logic to the UI.

Pocket MUD Pro has 3 core sections for the UI not counting the text input field. The main view (UIWebview), the prompt view (UIWebview), and the button bar (custom UIView).

One of the core challenges I faced on the iPhone, was resizing/reorienting all of these views on orientation change as well as when the keyboard was visible and when it wasn’t. To be honest, I spent most of my cycles getting this part right. On the iPad, I decided to things a little differently which improved the speed of my development overall and paved the way for future updates that will allow user-scripted UIs.

The UI Script

I want to start by showing you the lua code that is used to script the UI by default.

–MUD 
mudFrame = Frame:new("mud_frame") 
mudFrame.type = FrameTypeMUD
mudFrame.portraitFrame = {0,0,768,931}
mudFrame.portraitFrameKeyboard = {0,0,768,667}
mudFrame.landscapeFrame = {0,0,1024,675}
mudFrame.landscapeFrameKeyboard = {0,0,1024,323}
createFrame(mudFrame)

What’s happening here is, I have created a Frame class that has some properties (type, name, etc…) and injected it into the global lua space for use inside of the UIScripts. Then when the interface gets drawn, I reference the UI script for each of the MUD servers and use it to render the interface.

One interesting thing here is, I set the frames for each of the possible layout scenarios. Portrait, Landscape, with and without the keyboard. That way, when the keyboard hides/dismisses or the user rotates the device, I just reference the this script again and re-render the frame accordingly. This could have been achieved with auto-resizing masks however, it gets much more complex and things get tricky when you want to have a dynamic number of windows.

I follow this exact pattern for the button frames and the prompt frames. As you might have guessed, in a future release, I will open this script area up to MUDders and give the user the ability to script the interface however they would like. Some examples might be:

  • Dedicated map window
  • Dedicated chat window
  • Customized movement buttons
  • Customized backgrounds/borders/themes
  • Custom health/status/mana

Given this powerful UI Scripting style, a user will be able to create complex interfaces such as the one below from inside the app:

I still have a ways to go with exposing various functionalities via my custom lua bridge. But things seem to be moving along quite smoothly.

If you want to learn how I was able to bridge lua into my application, consider checking out my talk on lua scripting at 360iDev 2012 later this year!

Happy Coding!

Jailbreak iOS 5.1.1 With Absinthe 2.0 + More Watch Dev Coming

The GreenPois0n team has just announced Absinthe 2.0 allowing users of all iDevices (except Apple TV 3) to jailbreak iOS 5.1.1. This is especially good news for me as I can now continue development on my jailbroken app for the inPulse watch, iOS notifier

[Link URL]

Join Me At 360iDev 2012

I mentioned this on Twitter last week, so I might as well post it here to make it more official. My talk Making Your Games More Dynamic With Lua Scripting was accepted for 360iDev 2012! This will be my first official speaking engagement and I could not be more excited/nervous.

The Talk

I have had a huge interest in lua for some time now, especially as it applies to scripting games. In my last project, Pocket MUD Pro, I even embedded lua 5.1 and created my own bridge in order to allow players to fully script the gameplay. This got me very excited for the future as it was so easy to get lua up and running.

My talk will cover the basics of setting lua up in your own iOS projects. I will be using a simple tile based RPG (written in Cocos2D) for the demo and will demonstrate how you might use lua to script the behaviors of the NPCs as well as dynamically add new ones to the game. This opens up a whole world of possibility as you can now ship code over the wire and modify your game content without ever submitting an update to Apple.

It appears my talk has some pretty steep competition in its timeslot. There are two other incredible talks going on at the same time, so I’m starting to campaign for it now :)

Please comment on this post if you plan on attending 360iDev. I would love to connect with you.

[360 iDev Schedule]

Incredible List Of Popular Indie iOS/Android/Steam Titles On Sale

We believe that developers should have the freedom to price their games how they like, without interference from the online stores that sell the games. Why? Because it allows us to promote our games more freely, as we are doing here! We rely on the ability to promote our games for our livelihood and control over pricing is an important tool for this purpose.

Because We May is doing something very incredible here. They are a website to help you promote your game by listing it on sale. Any developer can submit their game(s) as long as they put it on sale for the given duration (May 24-June 1). There are currently some amazing games on sale including Osmos, Super Brothers, World Of Goo HD, and more.

[Games Link]

[Submission Link]

Why Facebook IS People

This is a very well written article detailing some of the inner workings of Facebook and why its business is YOU.  

I wonder when a distributed, self-hosted solution (like Diaspora</a>) will become popular.  Have you tried Diaspora or others?
</div>

The guide to implementing 2D platformers

http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

An incredible guide detailing many of the tricks/design patterns used in 2D platformers.  Although there isn’t much code to look at, the higher level ideas detailed in the article are invaluable.

Pocket MUD Pro Is Now Universal + Promo Codes

I have just updated Pocket MUD Pro to support the iPad! In celebration, it’s on sale for $1.99 (down from $2.99).

Also, here are 10 promo codes for anyone who wants a free copy. Please comment on which code you take so others know which one’s are available.

9E3TF4XRLW97
RA6KFNTT9NEY
KN936MALLH7A
TLPMPXNTMMLL
RL7JNYFL4F7X
3RPAWMFTYY6F
4JYYJFH7HLKR
7XWETP3YP7JT
PN7XERXHH7ME
9R4NYX669FMJ
</p>

MetaWatch Announces iOS Support – Still Can’t Compete With Pebble

For those of you who have followed my blog for a while, you know that I am a huge geek for smart watches. I had the first version of what is now the Pebble (inPulse) and even hacked a jailbroken iOS app to interface with it.

MetaWatch has been around for quite some time now and looks *ok *, however their latest update appears to be completely in response to Allerta’s announcement/success of Pebble.

“We are delighted to be the first company to ship a Bluetooth 4.0 smartwatch compatible with both iPhone and Android platforms”

What is really concerning is the fact they they don’t mention anything related to how they are achieving iOS notifications. Pebble has been very upfront in stating that they are planning on leveraging ifttt.com to deliver complex notifications such as Twitter and Facebook. It leads me to believe they haven’t quite sorted everything out and are jumping to a press release in order to ride the smartwatch train.

I have a Pebble coming in August and intend on sharing my experiences as well as code. Perhaps I might scoop up one of these as well and write a comparison post.
[Article Link]

Great Introduction To Lua

(click the post title)

I have been using lua in my iOS applications for some time now. This tutorial provides a great introduction to a scripting language that most developers are very curious about. I really suggest spending a few minutes checking it out.

Why you Should Check Out Unity

A while back, my buddy seantron showed me some of his 3D games he’d been working on including this one. My initial reaction was “how the heck did he get the chopps to do that?”. While, Sean is an incredible developer with a ton of creativity, doing things like loading models, texture mapping, or even basic 3D projects are flippin hard.

A while back I tried my hand at 3D and made sort of a basic Minecraft style game from scratch using OpenGL ES. Let me tell you, it was brutal (and I have been coding for almost 10 years). This project took me a week or so to ramp up, get basic cubes and textures going and a simple first person view.

Enter Unity

Sean had mentioned to me that he used this 3D engine called Unity to create his games. While I had tried XNA, I had never heard of Unity and figured it was similar (basically a framework with some convenience methods for loading models, mapping, etc…). Boy was I wrong…

Unity 3D is more than just an engine. It is an application that allows even the most novice of developers to create beautiful, rich, 3D games. I’m serious. Check out this demo below of an app I made in unity in about 3 hours using this tutorial. The crazy part is, I wrote almost no code. Much of the interactions and game were developed using drag and drop and free assets.

Link to my awesome game

Getting Started

I was very reluctant to learn Unity at first as the interface appears to be a bit daunting. However, once you check out a few tutorials, it becomes second nature. Here are a few places to get started:

InfinitAmmo’s Unity 3D tutorial series – This was where I first began. He does a great job at going over the basics of Unity while keeping things interesting.

Getting Started With Unity on Active Tuts+ – This is where I made the game you checked out above. Take an hour and do the first in the series, you will be very surprised with the outcome.

Unity 3D tutorials – Unity has a wealth of information and demo projects on their website. They come with the source and comprehensive PDFs detailing various aspects of each of their demo games.

After completing at least the top two series’, you should have enough knowledge to begin hacking on a game of your own. I know that I do :)

Conclusion

I hope this has been enlightening and I really urge you to check out Unity.

Happing Coding!

Unity 3D’s Website

This post is part of iDevBlogADay, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the web site, RSS feed, or Twitter.

I Suck At Blogging (Lately)

OK, so the title isn’t entirely true (I have maintained quite a few blogs in my day). But, one thing is for sure, I have sucked at blogging lately. So much so, I just had to think hard about having to bold lately using markdown in the previous sentence #meta.

Burnout

I was blogging very consistently for the Envato Network on their Mobile Tuts Plus as well as on iCodeBlog and here. Eventually, I got burnt out and gave up blogging on every blog (for the month).

What happened was, I was blogging to make money (Envato pays $250/post!) and no longer for fun. This sucks and I was missing deadlines and writing crappy content which needed much revision.

New Plan

Write here only (for fun!) and infrequently on icode if time permits as I can do that during work time 😉 That being said, expect to see more content here for better or worse. Once a week is the new goal.

Shutup

That’s what you are saying to me. I hate these “Sorry I haven’t been around in a while. I promise to post more” posts that are usually the last posts on a blog for like 5 years just as much as you do. Let’s hope that’s not the case here. You will just have to trust me and subscribe.

Also, I have a sweet new theme from Jekyll Bootstrap.

Pocket MUD Pro Released + Promo Codes

I am very proud to announce a brand new version of my Pocket MUD Pro application for iPhone. I have been working very hard to make a perfect MUD client that is suitable for hardcore mud players, visually impaired mud players, and casual mud players.

Here are some of the features:

  • Support for all orientations
  • Full ANSI color support
  • Dedicated prompt
  • Zoomable Text View
  • Perfect rendering of MUD text (check out the maps)
  • Very fast
  • Hides Telnet codes from the user (unlike every other MUD client)
  • Autoconnect on startup
  • List of MUDS
  • Favorite List
  • Unlimited Command history
  • Quickly cycle through command history
  • Triggers using the lua scripting language
  • Text Command Alias
  • Lua scripted aliases
  • Timer Support
  • Background support. Stay connected for up to 10 minutes after you close the application.
  • Support for multiple commands separated by semicolons
  • Comes packed with a list of some of the most popular muds
  • In-App Documentation of triggers and aliases
  • Ability to play sounds when triggers fire
  • Ability to gag extraneous text, which is extremely helpful for visually impaired players.

Promo Codes

  • PXYTRKLTWL46
  • KTXAAMYNYXPP
  • 443433YNJX4E
  • 9K99KJWRXNYT
  • W44YHPHLRFMT
  • 4HYHLEFXYYN7
  • 4HK74JLMMHAA
  • KX6XJ79TLWFP
  • 437YTX9KLEN9
  • 7YAMYF4EYALF

Please leave a comment here if you use a code to notify others that it’s been taken

Download it here

I’d love to hear what you guys think about the app.

Happy MUDding!

Vim For iOS Is Incredible

I used to be an Emacs guy and would battle to the death on the war between Vim and Emacs. It wasn’t until a coworker of mine sat down and really showed me just how cool/simple/powerful Vim can be. Just using Vim is a new adventure every day and has really improved my productivity. I now use it to code, blog, and even jot down quick notes.

Last week, I saw on Hacker News a link announcing Vim has been ported to iOS. I have spent a week or so with it and can honestly say the port is almost perfect!

It has most of the major Vim features and commands including:

  • Automatic indentation
  • Visual mode (block operations)
  • Language-aware syntax highlighting
  • Integrated scripting language that lets you extend functionalities
  • Macros recording and playback
  • Markers management (to quickly move around the edited file)
  • Multiple clipboards

You even have access to the config file to remap keys and define your own custom macros.

There are a few features that would make this better on mobile however:

  1. Dropbox Support – Currently you must use iTunes to work with Vim documents on mobile. There needs to be an easier way to share these.
  2. Keyboard bar – Since you have to switch modes so frequently and there are some keys you type often ( “:” ), it would be nice to have quick access to these.
  3. Plugin support – This is an Apple limitation :(
  4. NERDTree – The file browser that’s built in doesn’t work too well.

With Vim mobile, you can now look even more nerdy on your iPhone 😉

Download Vim For iOS

Fluid For Mac

As of OSX Lion, I have started to seriously loathe some of the build-it Mac apps (such as Mail, and iCal). While I previously had no issues with them, they now seem to be very clunky and crash quite often. Being a developer, I thought “why don’t I write an app that wraps web apps for you so you basically get “native web apps” that have icons and are launchable?”.

After a quick Google search, I realized this already exists!. The app is called Fluid and it does an incredible job of what I described above and more.

Here are the feature highlights.

  • Create a “native” Mac app for any web app
  • Custom icon for each “native” app you create
  • Full screen mode
  • User scripps. These are my favorite. They allow you to update the badge count based on information in the browser. See below for a sample user script.

Sample User Script For Twitter

<code class=’javascript’>(function () {
        if (window.fluid) {
            setInterval(function updateBadge() {
                var counts = /\d+/.exec(document.title);
                if (counts && counts[0] > 0) {
                    window.fluid.dockBadge = counts[0] > 99 ? ‘99+’ : counts[0];
                } else {
                    window.fluid.dockBadge = ”;
                }
            }, 2000);
        }
    })();</code>

Source

Fluid is free with some minimal features, but I urge you to drop the $4.99 to gain full screen mode and user scripts. It’s well worth it. I am not affiliated with them in any way, just a happy customer.

Download Fluid

Amazon – A Terrible Solution To A Huge Problem

tl;dr; Don’t buy a Kindle Fire for your kid until they resolve the parental control issues. Wifi password protection is their current solution, and it sucks.

Like many parents, I thought it would be a good idea to get a tablet device for my son so that he could play some educational games and watch some Netflix (in moderation of course). After doing quite a bit of research, I settled on the Kindle Fire. Before the Apple fanboys give me crap, know that I am one, I have an iPad, it’s too expensive for my son.

Honestly, I really love the fire. I think it has the least terrible Android interface of any of the devices. It’s intuitive and my 3 year old was able to grasp navigation right away. In addition to navigation, he quickly figured out how to acquire new content (apps, video, children’s books) thanks to Amazon’s “One-Click Ordering”. Obviously, Amazon thought the process they use on the web transfered well to a tablet device and was not willing to compromise on that. That’s neither here nor there. You can find plenty of posts about user’s complaining about the initial lack of parental controls.

The Update

Shortly after receiving some pretty rough reviews for their interface, Amazon rolled out their first update which brought us to 6.2.1. In addition to fixing some of there terribly choppy UI, they rolled out their “fix” for the lack of parental controls.

I noticed a new security setting that I had hoped would allow the device to require a password for content purchase, but it turns out the setting is to password protect enabling wifi.

Password protect enabling wifi? Really?

This is laughable at best. What a worthless feature. I could not figure out why anyone would ever want that. And then I had a conversation with “tech support”.

Their “Solution” Confirmed

After seeing an email from Amazon the other day showing my purchase for $17.99 for Team Umizoomi Season 1 (whatever the crap that is), which obviously my son purchased, I set out to chat with customer support. The conversation went something like this:

Me: Refund!? No parental controls!

Outsourced Guy: Enable Wifi Password = protection!

Me: No, watch Netflix! Browse Web! Stupid Solution

Outsourced Guy: Yes Netflix Need Wifi. Did I solve your problem?

Me: ?

Outsourced Guy: Phone Number. Call Video Support

So there you have it. Amazon actually pushes this as their solution to the lack of parental controls. My suspicions were confirmed by Outsourced Guy.

Conclusion

It’s sad that a huge company such as Amazon feels that their process is more important than listening to their customers. Although their devices have been selling like fire (badum ch!), they need to address such gaping issues if they are to maintain their edge in the “affordable” tablet space. Especially as the younger generations start embracing the technology.

Why I Went Back To Jekyll – Also Rackspace Sucks

Recently, I was pretty humbled when a post of mine titled WordPress To Jekyll And Back Again made it to the front page of Hacker News. I was a little down on Jekyll for the reasons listed in that post and was feeling pretty good about my WordPress install.

At the time, I was running my own virtual instance on Rackspace cloud hosting (we’ll get to this momentarily). I also had all of the caching and optimization plugins installed and welcomed the Hacker News traffic.

As you can imagine, the influx of HN traffic crashed the server multiple times and I was (with good reason) mocked in the comments (“must be because he’s ‘back to WordPress’”). So, I asked for advice and further “beefed up” my setup switching from Apache to Nginx, upping the ram, and switching caching plugins. WordPress is a beast and hard to optimize. That’s not even the kicker as to why I switched away.

A Call From Rackspace…

About a month ago, I realized my blog was down. I figured that it might have been that I was featured somewhere else which was crashing it (again I was rolling my eyes at WordPress). But then, I got a call and email from a very helpful Rackspace employee. The email went like this:

Despite the very best efforts of or our Engineering and Datacenter Operations Teams, unfortunately the host machine that your cloud server ‘Websites’ resides on was not able to be recovered. At this point, we are looking at complete data loss.

and… Rackspace, in this poorly phrased email, was basically like. “Well, sucks to be you, hope you had a backup!”. Well, I admit this is partially my fault for not having a backup as I am a bit of a n00b when it comes to server admin, but I had been hosting for years on (don’t judge me) GoDaddy before that and a couple years on Rackspace. I had no idea that hosting companies didn’t have backups of their own. It would seem that this might be crucial to their business.

Needless to say, I lost everything including a jewelry site that I ran (not many sales), an iPhone leaderboard site (not very popular), 2 of my buddies WordPress blogs, and my current WordPress blog.

Jekyll To The Rescue

I was pretty angry at Rackspace and myself for never making a backup, but then it hit me that most of my posts had been converted to Jekyll and were backed up in a github repository. I was able to restore my blog within a few minutes (now hosted on GitHub) and recover the WordPress posts from the Feedburner cache of my site.

As for my buddies’ sites… I feel for them :(

New List Of Why Jekyll Is Awesome

  • Automatically backed up – This is huge. If not for switching to Jekyll at one point, I would have lost years worth of content. If you have every tried to back up WordPress, it’s a huge frackin pain since the database dump usually gets HUGE.
  • Free To Host – I’m not sure why I was so stubborn about doing my own hosting. I am now hosting on GitHub and it couldn’t be more stable and fast.
  • Mobile Blogging – This was my largest gripe about Jekyll. I was jealous that I couldn’t blog from my iPhone like WordPress users. Well, I have found a pretty decent solution (tutorial to follow), which involves a combo of Prompt, Screen, and Vim.
  • Content Oriented – WordPress makes it super easy to dump tons of images into your posts. While blogging with Jekyll (inside of Vim in my case), it’s a little bit more of a pain to add your own images. That being said you must be choosy forcing you to focus more on the content and less on using visual crutches.
  • Blog Anywhere – This was another limitation I was placing on Jekyll in my last post. However, I just wasn’t using Jekyll to its full potential. I was building my site locally and rsyncing it up to my server. This process was a little tedious and discouraged me from writing many new posts. Now, hosting with github, posting is as simple as a quick push to the repo.
  • Ninja Fast – This one should be obvious.

Conclusion

I am quite happy blogging with Jekyll. As far as I’m concerned there is no reason to ever host my own blog again (as long as Github doesn’t ditch pages 😉 ). Also, if you currently have stuff on Rackspace, go make a backup now (or ditch them altogether). Thanks for reading and look out for my next post about mobile blogging with Jekyll.

Happy Blogging!

New Year – New Theme: Focus On The Content

As you may have noticed, my blog has a new (much cleaner) theme. For 2012, my blogging goals are to focus much more on content rather than flashy visuals.

I have also minimized my set up to save blogging costs (I now blog for FREE) and to simplify things greatly. Here is my new setup:

  • Jekyll as my “blog engine”
  • The WPTypo WordPress Theme I ported this to Jekyll
  • GitHub for hosting (it’s free).
  • Vim – I’m using this as my “blog editor”. There are some incredible plugins that I am using to help facilitate blogging using Jekyll (post on how I do this to follow)

That’s about it. I am now free from server costs and my blog is always backed up and easily accessible.

2011 has been a very successful year in terms of blogging for me. In addition to writing here and on iCodeBlog, I have recently started blogging for Mobile Tuts + on the Envato Network. You can check out my 7 part game series on creating a caterpillar game using Cocos2D here.

I can’t wait to start posting some great content in this new year. Given my new setup, I literally have to adhere to the title of this post as blogging in VIM doesn’t really lend itself to visuals ;).

Happy New Year and Happy Hacking in 2012!

SVProgressHUD Is Quickly Becoming My Favorite iOS Library

From the first time I saw this effect in the Tweetie (now Twitter for iPhone), I was crazy about it. I had written my own hacks to make something close, but it was always terrible. Within the past few months, I have been using a perfect/elegant solution to this problem called SVProgressHUD.</p>

Using this in your project is as easy as calling:

// showing
[SVProgressHUD showWithStatus:@"Logging in…"];
// hiding
[SVProgressHUD dismiss];

Clone SVProgressHUD On Github

Tether Your iPhone Without Jailbreaking (Or Paying For It)

With all of the buzz around the iTether App, I figured I’d offer a more permanent solution since Apple will surely yank this soon

Last year, a developer published his code for an http SOCKS proxy called iProxy. This will give your iPhone the ability to create a SOCKS server in which your laptop can connect to via the Bonjur protocol.

Once connect, all of your computer’s http traffic will be routed through the server on your iPhone essentially giving you free tethering. Since this isn’t using the iPhone’s built-in tethering method, I’d assume At&t could not detect it*. After looking at the code, it becomes pretty obvious how the SOCKS proxy works and makes me kick myself that I didn’t write it (or find this code sooner).

The setup is a little complex, but you only need to do it once. I would love to hear in the comments if any of you has had some experience with this. I will also share my own as soon as I can get it installed later today.

Download the project over at github.

Happy Coding!

*This has not been verified by me

Caterpillar 1.1 Released

I have just released the update to my Centipede clone called Caterpillar. For those of you who don’t know, I am doing a 6 part series on how to create this game over at MobileTuts+.</p>

This update adds some interesting functionality on which I will be blogging about in the near future.

I have added iAds to my cocos2D project and when the iAds fail to serve (which is about 75% of the time), I replace them with Admob ads. This was achieved by creating a new Admob ad view inside of the bannerView:didFailToReceiveAdWithError: delegate method.

I will either post a full tutorial about doing this Here or on Mobile Tuts. Either way, I’ll keep you posted.

Also, be sure to download the game, test it out, and lemme know if you have suggestions. Version 1.1 addressed quite a few issues from feedback (namely poor controls).

Happy coding!