Distracted Engineer


A view on anything from an easily distracted engineer

redbook.me has an API?

redbook.me has recently undergone a fairly significant overhaul of its underlying codebase. When I built redbook initially a few years ago it was flat, very flat. The backend of redbook.me is written in PHP and I’m ashamed to say that while it worked fine, I had a PHP for every page and some core functions in a common file. Code duplication everywhere and not a class in sight!

When I decided to go back and improve redbook.me, the first thing I thought to do was to rewrite everything from scratch. And I tried. But the task proved to be just a little bit too big. So I took the iterative approach - slowly improving the existing code with a direction towards better practice.

The situation has improved significantly over the last few months and recently it has taken a substantial jump. redbook.me now uses lots of the new shiny features of PHP 5.3 including, namespaces, PHP5 classes, etc. In addition, I’ve restructured the code so that it uses something close to a Model, View, Controller (MVC) object oriented design.

When making the improvements I drew inspiration from projects such as Ruby on Rails and Symfony2. Actually, I’m using some of the Symfony2 components in redbook.me to handle HTTP requests and sessions. No sense reinventing the wheel!

So what does all this mean? Well now that redbook.me is built to better industry standards, the speed that I can improve it has increased considerably. Also, the site just runs better (shocking!). A pretty awesome side effect of the new structure is that I actually ended up with an API. The frontend javascript is already using it, I just hadn’t looked at it that way before. What this means is that redbook.me can easily be extended to other interfaces such as iPhone, Android, etc without significant changes to the backend code. I could even allow public access to the API for third parties.

I feel like I’ve discovered all these benefits of object oriented design a bit late but hey, better late than never! The effect these improvements has had on my enthusiasm for improving the product is pretty strong. Indeed, I’ve even decided to start commercialising! Check out redbook.me.


Marketing & redbook.me

Lately I’ve been struggling with a bit of an obsession. I’ve mentioned previously (here) that I built an availability and roster system for the pizza shop I used to work for. Well, the project has slowly been digging its claws into me and I’ve been spending quite a deal of time on it. I’ve made a heap of improvements to the underlying architecture (it’s really stable and fast!), but also I’m starting to think a bit more commercially. Basically, I think the product is finally at the stage where I believe other businesses could use it - that is, in addition to the shop I used to work at ;-).

The application has always been referred to as “Redbook” because before it existed, we did actually use a red book to record when staff were and weren’t available. I’d been fighting against keeping the name for a while because I was afraid other’s wouldn’t get it. Recently, however, I changed my mind and decided to go with it. Hence, I submit to you redbook.me - the product page for my web app. (It’s got a cool Web2.0 sounding name and everything! :-P)

The redbook.me page is intended to be super simple and describe the product - what it does, how much it costs, etc. My sincere hope is that it will get some interest and I’ll be able to share redbook.me with other people.

I believe that redbook.me is really useful and that business owners and their staff, espically in the hospitality industry, will greatly benifit from using it. If you’re so inclined, I would appreciate any comments you have on the product or the page.

 

 


Red Wine Experiments

For a while now I have been aware of my lack of knowledge of wine. For the most part my consumption of alcohol has been limited to beer and spirits - mostly Scotch and Bourbon. Wine is a little daunting… perhaps its the culture, the number of types and brands or maybe its just that you don’t want to be associated with some “wine snob”.

Lately, I have taken the plunge into trying red wine. One of the advantages of wine is that relatively cheap and depending on the day of the week, good for you (red wine at least). So basically I’ve resolved to trying a bottle every so often to get a feel.

So what have I tried so far? So far I’ve tried two Pinot Nior red wines. First one was a 2008 Monkey Bay and the second one (pictured) was a 2009 Jacob’s Creek. Both were about $15 a bottle and went down fairly nicely. Of the two, I found the Jacob’s Creek slightly easier to drink.

Jacob's Creek

So where to from here?

My plan is to try a few more Pinot Noir’s and at the same time try and find out what the next step is….

On a completely unrelated note, I have also dived into Instragram lately and am finding it incredibly easy and natural to use. I think it’s the simplicity… just take a photo, do something funky with in using a filter, share with Instragram and optionally other services. You may have guessed that the photo above is taken with Instragram ;-)


Backend Selection Issues

For the last couple of weeks I've been struggling with a problem with the roster management application I'm building. As I've mentioned before, I've already got a working version of the app running, but I'm not happy with how its built and am trying to do an overhaul.

I have made a little progress with the front end - I've been playing with Twitter's Bootstrap CSS for the styling and using jQuery for the front end programming. Here's a quick screenshot of part of what I've come up with.

Frontend

What I've been stumped by lately however is how to approach the backend. Currently the application runs on a basic LAMP stack (Linux, Apache, MySQL and PHP) but I am thinking that perhaps better solutions exist for what I am trying to do. One of the options I've been suggested is to use Google's Appengine platform. I really am interested in this, but its a bit of a change from the style of web development I'm used to - it's built on Java (and Python) which I know, but am not as experienced in as PHP and it uses an object-style datastore (kinda NoSQL) instead of the traditional MySQL table style database that I'm used to.

Basically, I can't decide which approach to take. I can either go the route I'm used to (PHP + MySQL) which has the added advantage of being easier to deploy more places, or use Appengine which is possibly more suited to the application in terms of data stores but a less familiar language and lesser in deployment options. Of course, there are probably other options I have yet to think of yet which could complicate the decision even more.

So what should I do? I'd really appreciate some feedback if you have any experience in this field. At the moment I'm leaning towards going the LAMP option due to it possibly leading to quicker development..


I want to Cowork

One of the things I’ve seen, and would really like to do at some point during my career is Cowork. Coworking is where people can come to work in a shared office or workspace as an alternative to working in a corporate office or from home. It has a few advantages such as freedom, progressional networking, inspiration, and for the who would otherwise be working form home - company.

I’ve been really interested in coworking for a while now but, sadly, I have yet to get myself into the position where I can do it. Currently I work in Nerang, Queensland, which involves a fairly significant commute for me and the ability to work somewhere other than my office would be fantastic. Unfortunately, due to the nature of my work and the draconian security restrictions of my employer’s network its not really something I can easily do.

There is a small chance, however, that sometime in the future I’ll be working for someone that will enable me to cowork - even if its only part-time - or better yet, I’ll be working for myself. It’s the latter that I’m really excited about. If fact, if I am successful in starting my own business I have every intention of coworking. Or perhaps renting some office space and opening it up for others to use as a coworking space - there’s even an opportunity to turn that itself into a business.

Lately I’ve been quite seriously toying with the idea of renting some close-to-city office space and turning it into a coworking space as a for (small) profit exercise. There a few of these coworking operations currently running is Brisbane, but not many - especially compared to somewhere like San Francisco. Two notable locations are:

Both of these locations offer the ability to casually rent a desk for a day as well as better priced, more permanent desks. I think there are seriously good business opportunities in this space, and I’m seriously keen to get in on the action. Sadly, for me to do this alone, I am not quite financially gifted as yet - though I have quite number of good ideas that I think could make this successful.

So this is where I ask anyone who thinks they could also see the potential in this sort of thing to contact me, and if I’m lucky perhaps I can get coworking after all!

If you are actually interested, please contact me at chris@rednesstech.com