I’ve been an on again, off again developer ever since my first year of university. I wasn’t particularly good at it either and it took me a good year of slogging through various programming languages before the penny finally dropped when I started using C#. After that initial hump however I found it much easier to pick up on new languages and technologies which has ultimately culminated in me attempting to create my own web application from the ground up, something I would’ve seen as impossible just a few years ago. It’s just over a year and a half since I began work on my pet project and in that time it’s gone through 3 complete rewrites, 4 redesigns and several months of me staring at a computer screen wondering if this is the best thing to do with my time.
It was that little hater getting into my head again.
I hadn’t really been thinking about much until a friend of mine commented on how he’d noticed that my writings indicated I was getting tired of developing Lobaco. After thinking about it for a while I knew he was right, the long weekends spent coding and testing had been taking their toll on me mentally. I had begun to fantasise about other applications I could be developing or other hobbies I could pick up, losing hours in research. After a while they started to meld together and my new found hobbies were turning into other potential start up ideas and I began lusting after them as they began to look so much more tangible than Lobaco. It was the dreaded unknowing procrastination beginning to slip in again and I had been welcoming it willingly.
As Jay Smooth put so aptly it was being in the thick of creation for so long that was making me lose sight of the end game. I’ve been writing on this blog for over 2 years now and there have been many times I’ve thought I should just give it up and shut the whole thing down (I would gain a considerable amount of time per day back again) but every time I get a comment either here or in real life I know that the work I do here is appreciated and it keeps me going that much longer. I’ve finally come to terms with the fact that some days I just won’t be able to find anything to write about and that doesn’t mean this blog is worthless. Still I do enjoy blogging and when I’ve got a topic I’m passionate about I feel it shows and it’s posts like that that keep me coming back every day in the hopes I’ll hit on one of those topics.
Ever since that realisation I’ve been making great strides with the Lobaco iPhone application. Last weekend was probably my most productive ever with 4 core features being implemented and many improvements made thanks to some open source libraries I hadn’t come across before. Now it feels like I’ve hit one of those points where my progress as an iPhone developer is accelerating and my formerly hacker style approach is now becoming more standardized and new features are just rolling off my fingers. I’ve still got a couple months of development effort ahead of me before I’ll be releasing the iPhone application to beta testers but now its only a matter of time rather than the impossible mountain it used to be.
I guess this is why the majority of start ups are founded with more than just a single person. It’s so easy to get lost in your own world when you’re trying to bring an idea into reality and having someone there beside you really helps to keep you in the game and focused on the goal. Whilst I haven’t found anyone (yet, but I’m still looking!) who’s willing to go on this startup journey with me my group of close friends have acted as the sounding board and grounding rod that’s gotten me this far into the project. The next few months are going to be the make or break time for Lobaco but with the progress I’ve made in just the past couple weeks I have a much renewed level of confidence, and a desire to succeed that is yet to be satiated.
I really can be my own worst enemy sometimes. It’s been almost a month since I got back from the USA and despite the best of intentions I haven’t really done that much work on Lobaco apart from a little work on the API and web UI. Whilst I was pretty sure I wasn’t going to hit the code hard immediately after touching back down in Australia I still thought that after maybe a week or two of lazing about the coding bug which had firmly bitten me before I left would take a hold once again, pushing me to build on the momentum I had set up. Sadly it wasn’t to be and instead I just resided myself to feeling guilty about what I should’ve been doing and pulling the meter tall weeds that had grown in our front yard.
Partly to blame is that sense of perspective I get whenever I take time away from a project to work on something else or to just have a break. Usually the first thing that pops into my head is “why the hell should I bother” and I’ll spend a good chunk of time focusing on the negative aspects of whatever I’m doing. After a while though I’ll just try to do a feel small things, a few quick wins to get me back into the mindset of getting things done. After that it’s usually pretty easy going (this usually takes about 2 weeks) until I hit a wall again or I feel like getting my weekends back for a while so I can relax and get my head back together. The last few iterations of this cycle are what lead to the 3 major revisions of what is now Lobaco.
Then along came Sencha.
This client was just an elaborate way of procrastinating.
Now whilst the client looked decent and didn’t take too much to set up it didn’t look anywhere near as good as my native app nor could it hold a candle to its performance. Sure my hack job probably ensured that the performance wasn’t as good as it could be but in comparison to the native client hack job I did it was pretty stunning. After coming to that realisation I booted up my MacBook to start getting acquainted with Xcode again and spent last weekend coding up some performance improvements¹ for it which I had put off before I left for the USA. I’m sure this won’t stop me from looking at going down that path in the future but I can at least rest easier now that I’m feeling the urge to program once again.
It’s been a weird learning experience for me since I’m usually pretty good at knowing when I’m procrastinating. Usually I have a good reason for it (like having 1 bit of work to do and not doing it since it’s not due for months) but this is the first time I caught myself doing something I thought was useful when really I was just making excuses for doing the work I knew needed to be done. With a good week of holidays coming up over the Christmas/New Year period this realisation couldn’t have come at a better time and I’m looking forward to making the most of my time off with the hope that the momentum will carry me on into the new year.
¹I’m going to do a big post about this hopefully tomorrow. I hit some really, really esoteric problems getting everything to work but I have and the results are, to put it bluntly, bloody amazing.
It was almost 9 months and 200 posts ago that I thrust my pre-alpha version of Geon into the world for everyone to see. Thanks to my innate shyness I didn’t go the whole hog and release it into the wild for the whole world to see and I’m still glad for that as the first version was, to put it lightly, a smoking pile of crap. Had anymore than about 5 users got on it at once (the record stood at 2) my server would have fallen on its face trying to deliver all the content over my poor little 1Mbps connection. The saving grace of Silverlight taught me that I could use my client side programming skills to do what I wanted on the web without having to completely relearn everything and the next few versions of Geon came along that much faster.
Right now I’m comfortable enough to let every reader of this blog know that there’s a new version of Geon up (those adventurous amongst you would’ve noticed a link to the new version in a previous post) and it comes along with a UI change that I had been alluding to a while back. In essence the change was done in order to increase the readability of the information streams you’ve selected as prior to this you just had the one bar that would scroll along madly if you dared to look at multiple locations at once or just so happened to add Twitter from anywhere that was mildly populated. In addition to the UI changes I have also made the switch to Silverlight 4 which added in things like native scroll wheel support (I can’t tell you how happy that made me) and a slight performance improvement over Silverlight 3. Thankfully none of the breaking changes they made in the transition affected Geon so the upgrade was only a few clicks and a restart of Visual Studio away.
The new UI works similarly to the old one as you select your location first by clicking the location button on the left hand side and then clicking the location on the map you want to see. Then you can add in information feeds from the same bar in a similar way and they’ll automatically add themselves to the closet location circle on the map. As of right now all the feeds available work apart from Facebook (you’ll get a pop up asking it to connect with your Facebook account but no information will appear) because their geolocation is still not fully implemented and I’m not keen to do a whole lot of mangling to get results that are more than likely irrelevant anyway¹. Once you’re done adding the streams hit the button up in the left hand corner to see your streams in all their glory. Rows are locations and the columns are the feeds, all titled properly so you can tell what’s what.
Having all that done means however I’m now out of options for procrastinating. You see whilst this version included some new streams (videos and Wikipedia), a much better UI and a cleaner back end (mmmm JSON) most of the heavy lifting had already been done in previous versions. After getting the initial hard parts out of the way with the UI most of it could have been done inside of a week, although I casually programmed it over the course of a month or so. The next thing on the list is the real meat of Geon: the request system.
That pretty much means I have to start diving into something I’ve never coded before: webservices. Whilst I can’t really say I’ve been avoiding this I haven’t been actively looking to do anything about it either, apart from the casual search for tutorials on how to build user authentication systems. I know I’m just being a big baby about this and I should just suck it up and do it but it’s just been so darn easy up until this point I’ve been wondering why no one has done it before. As it turns out the rudimentary parts that most netziens have come to expect are the most complex and tiresome parts which is why it hasn’t been done (and also explains why some services don’t have logins at all).
I’ve decided to suck it up and just start hammering away at it until I get the thing going. It’s much like when I first started out coding Geon and I was using RSS feeds for everything, it was just the first way I found to do things. After fiddling around for a while and getting some advice from a real developer mate I found that had I just taken the time to research it the whole idea of using other formats was so much easier. I’m sure with an afternoon of searching under my belt I’ll be ready to tackle the big bad demon that is the client/server architecture of Geon.