Random Bits...
iPhone redux
In my last post, I mentioned that I see computing platforms like the iPhone to be the wave of the future for mobile computers that also include a phone. Jeff Atwood over at Coding Horror posted a considerably more thought out version that arrives at the same conclusion :-). Worth taking a read of.
Software Developer's and education
Our development teams at airG have grown quite large, and there is a real mix in knowledge level. Note, I'm not referring to talent/innate ability, I mean knowledge - the stuff you acquire from doing stuff or from others showing you stuff. However, it seems that there are only a few people actively pursuing improving their knowledge. Or maybe, they are all trying to, but they're not all sure how to do so. It's a large problem that shows up in small details.
Something that an experienced (whatever that is) developer might consider 'common-sense' isn't common at all. They learned it from someone else, or through reading what others have done - basically educating themselves on what they should be doing. But what happens when you have a team of mostly junior - intermediate developers? How do they gain these basic concepts and then move onto more complicated ones if that knowledge isn't getting transferred around or picked up from external sources?
As such, a group of the more senior developers have gotten together, and we're trying to start with some of the basics we 'assume' people should know, but occasionally see being ignored and start gently educating people. Not too many things at once (who needs a list of 50 rules?? No one's going to remember them all). But a few across a couple of weeks, make sure it's adopted by everyone under the right conditions, let it become part of their work flow, their habits. Then add more and repeat.
Photography
I haven't posted much since my photography was on hold for awhile, but I've been doing a few things lately - photographing racers at the Test of Metal mountain bike race in Squamish, and on Canada Day, photographing road racers at the Yaletown Grand Prix.
I think I managed to get quite a few good shots at both races. I try not to focus just on the lead racers, but on as many riders as possible. I think all the competitors are worthy of photos :-). Oh, and an interesting thing with the Yaletown racer photos - I've been contacted by a manager of one of the teams in the race, asking if they could use some of the photos on their team page. They're not there as
of this writing, but hopefully soon.Billing
High-level design of our new billing platform is moving along nicely. I think we've come up with a solution to our database design that should last considerably longer that the current version and make it easy to scale out horizontally in future with minimal effort. Now I'm on to attacking the most difficult (or perhaps it's more accurate to say 'unknown') area of the new design involving a middle ware layer. There's a few commercial solutions out there (cha-ching $$). Will have to evaluate what they offer over rolling our own custom-solution.
As part of all this billing design, I'm thinking far more about scalability, but not just how it applies to our billing system, but how all of our platforms handle growing in capacity. There's a growing amount of information on the web from others who have gone through various growth patterns (think Flickr, Google, Yahoo, YouTube, etc). The best place I've found is the High Scalability site. If you even think you might need to deal with capacity, this is a site that can get you going in the right direction.
Training
Of course, after all that design, I'll also be helping to implement it all :-). Keep in mind, I've been more manager than developer the last three years so I'm going to have to dive back into coding. This ties back to the training goals I push on the junior developers - what's your plan for improving your knowledge?
My plan:
Three areas of improvement I want to work on (aside from the current material I'm studying for design and capacity ideas):
- More advanced Perl (and relearning some of the basics I might not have been using for all these years).
- Relearn Design Patterns, but not necessarily using the "Gang of Four" book. Instead I'm going to use Oreilly's Head First Design Patterns which has gotten a large number of recommendations.
- And finally, to dive into SQL and database concepts (again). I never use to find databases all that interesting. I use them, I'll set up some schema and I can normalize them, but never really got into them. That's changing. There's a whole world of complexity in there that's actually quite interesting, and when you apply it to go beyond simple queries on simple tables, and instead start dealing with huge volumes of data spread across tables, databases, servers and you have to figure out how all that's going to work - you take an interest ;-).
Labels: AirG, apple, billing, cycling, design patterns, development, education, iphone, perl, photography, scalability, sql

