The year I thought I wanted to be a mobile developer

Published 12/31/2011 6:15 PM by Toran Billups 0 Comments

Just one year ago I ended my journey on the Microsoft stack and decided it was time to play on the JVM. I thought about writing the ever popular blog post about why I left the .NET community but in all reality I just wanted to see how the other half lived. Most of the people I looked up to in the community were writing software on some other platform and it was time to see what I was missing.

Unfortunately after only a few weeks at the new job, it was clear I wouldn’t be writing much code for a variety reasons so I decided to spend my time outside of work learning something different. This was unusual for me because in the past I’d spent most of my time outside of work on the ’technology treadmill’ learning the latest frameworks, tools, etc so I could keep up with Microsoft as they pushed out every enterprise piece of software you could think of. The big problem with this approach is that it increased my burnout rate dramatically for obvious reasons. But after talking with a friend of mine about how to deal with burnout he suggested writing software for fun (again). To be fair it was the reason I got into this industry in the first place so I took his advise and decided it was time to code for fun in my spare time.

At the time iOS development was the hot new thing so I started spending most of my "free time" learning about objective-c and cocoa touch. What started out as a simple hobby soon became the reason I got up in the morning. And when I say "got up" -I’m talking early. I was working 7 - 4 at my day job so I started getting up at 2 or 3 am to write objective-c until I had to leave for work. It was about 2 months into my first project that I started waking up on my own at this time without an alarm clock. My life started to revolve around this simple mobile app that I was building and soon I found myself wanting to write objective-c full time.

I started to look back at the seemingly big shift developers made in the early 2000’s when web development hit the scene. I was just out of college and web programming was all I knew about the world of software development. So to me at the time it was the only way software was built (in my little world). What I didn’t realize was how the entire industry was making a shift away from legacy (non-web that is) tech and the developers who didn’t jump in got stuck maintaining systems that no one else wanted anything to do with.

For some reason I applied this idea to mobile development and took it to an unrealistic / unhealthy extreme that got me thinking the personal computer was dead. That some how people would quit using computers altogether and only use software that was available on a phone or tablet. I still remember an interview this past year where I said "consumers have quit using desktop computers, if your software isn’t built on a mobile platform your business is dead".

Not to say you shouldn’t be doing mobile development but in reality people are still using desktop computers. The majority of that time is during work hours but at 5pm ish most consumers unplug from work and fire up the tablet / smart phone. Yet for some reason I was obsessed with this idea and decided that if I was still writing web apps in 2012 my career was over. At this point I should have realized my dogmatic view of mobile development was flawed but for some reason I kept moving in that general direction.

It was about this time my first iPhone app was approved by apple and made it into the app store. This only fueled my sick passion for mobile development further so I started learning Android. I spent the next 7 weeks building my first Android app. When this app was finished I went on to the Windows Phone platform. I couldn’t get enough of the mobile development story. With each app I felt closer to landing my dream mobile gig.

Then it happened. The dream job I was waiting to interview for finally landed in my lap. But for some odd reason I had the opposite reaction about the job in question. I decided writing apps for iOS might actually limit the amount of other work I would get to do. Instead of writing back-end services to communicate over http I might be told that was someone else’s job. Instead of writing web apps that would have me doing html/css/javascript/sql I might be stuck dragging and dropping table views and wiring them up with objective-c.

I realized that instead of having to specialize I wanted to get back into a more general web development role working with a small team where I could see a direct impact from my work. I was writing a batch application at the time on a very dysfunctional team and decided it was time to move on.

Just a week after I finally decided to move on, I heard about a small team that was looking for a python web developer. Not having any experience with Python and limited experience with Linux it was a long shot but somehow I was able to express my passion for learning and got a job offer.

Without a doubt 2011 will be known as "The year I thought I wanted to be a mobile developer" because of my insane drive and passion for mobile development. But through that experience I found that the mobile web isn’t going away anytime soon. And since then web development has become my passion all over again.

Tags: personal opinion

How to install pip, virtualenv and django on ubuntu

Published 12/22/2011 6:45 AM by Toran Billups 1 Comments

I recently started developing on linux again, but this time I’m doing Python professionally. And with any new platform, you learn how to setup your development machine on day one. Initially I just installed Python 2.x and started writing code without a care in the world. But it turns out most of the real-world Python developers are working with this thing called virtualenv.

The short version -virtualenv allows you to silo a development python environment from system Python. So without further ado -the steps below will get you up and running from a fresh install of Ubuntu 11.10

This install assumes you are a normal (non root) user who has sudo access to install packages (but please don’t do something like sudo -i before starting this install)

sudo apt-get update
sudo apt-get install python-setuptools python-dev build-essential git-core -y
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper

At this step type pwd **to make sure this is your home dir -ie /home/toranb. If you are not cd ~/ and you should be.

mkdir ~/virtualenvs
echo "export WORKON_HOME=~/virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
echo "export PIP_VIRTUALENV_BASE=~/virtualenvs" >> ~/.bashrc
source ~/.bashrc

The above is a great start, but if you want to use the best Python editor known to man keep going. If you don’t want a bulky IDE or you just don’t have the hardware to run it, install vim the right way as the vanilla install of ubuntu won’t have anything installed.

sudo apt-get install vim vim-scripts vim-doc vim-latexsuite vim-gui-common vim-gnome -y

If you decided to install the Pycharm editor -it requires the JDK so let’s get started!

sudo apt-get install openjdk-7-jdk -y

Next go download Pycharm from jetbrains. Once this is finished cd into your downloads directory

cd ~/Downloads/
tar xvzf [name of the tar.gz]

Now cd into that new directory after the extraction is finished.

cd bin
./pycharm.sh

Now you have a full python stack so lets create our first virtualenv and install django! (back to the terminal)

mkvirtualenv blog

This will create a new virtualenv (very minimal install). To install django use pip.

pip install django

Now you can develop, install other packages using pip,etc (go to town people!)

If you want to get out/off your virtualenv use this command

deactivate

If you want to jump back on the virtualenv we just created and installed django use this command

workon blog

And finally if you want to remove the virtualenv altogether

rmvirtualenv blog

Now you should have a fully functional Python/Pip/Virtualenv/Django development environment!

Tags: python django

Talking mobile development on Hanselminutes

Published 12/17/2011 11:15 AM by Toran Billups 2 Comments

When I started doing web development years ago I found podcasts were a great way to learn about different facets of software development. If I wasn’t exposed to different ideas I might never have thought to innovate on my own projects and keep learning. And if you are at all familiar with the .NET community one of the most respected podcasts in existence today is hanselminutes. This weekly podcast features Scott Hanselman doing what he does best - speaking with interesting people in the software community to get a different perspective on popular (and sometimes unpopular) topics in the software industry.

Recently I was fortunate enough to talk with Scott about my experience developing mobile applications across iPhone/Android/Windows Phone and thought to mention it on the blog. The actual interview covered my previous blog post about the mobile development report card but Scott did take it a bit further at times. The most entertaining part without a doubt was when Scott asked about memory management and I said to ignore it initially (I was then given the ’opportunity’ to dig myself out of that hole rather quickly).

But even with this misstep I think the show ended up a huge success! If you are interesting in the podcast give it a listen, and if you just want to read about it you can find a full transcript here.

Tags: podcast

Copyright © 2009 Toran Billups - Valid XHTML & CSS