Archive Page 2

Labelling Bugs as Features

12Jun09

bug

Dreamhost

10Jun09

logo

I’ve been using Dreamhost services for a few years now and thought I should finally write about my experiences. They’ve all been positive.

Not surprisingly, Dreamhost are a host provider. They’re a Unix shop with a wealth of support for all my favorite open source technologies. They provide shell access to your domain but also have a very rich web panel for doing almost everything.

The web panel allows you to configure account users, email users, ftp users, database users, databases, applications (one-click installs for various open source apps including CMS, forum, gallery, etc type software). By default, domains are stacked with admin tools, like phpmyadmin and squirrelmail, but Dreamhost also integrate with Google Apps if you prefer to host your email, calendars, documents, and even web pages with Google using the Apps product suite (highly reccomended). In both scenarios, standard, common-sense subdomains are automatically set up on your behalf, like mysql.[domain].com, mail.[domain].com, calendars.[domain].com, documents.[domain].com, etc.

Other dreamhost web panel tools include backup/restore, task scheduling (cron), stats reporting, subversion, htaccess / webdav, etc.

All of that, plus unlimited hard disc, plus unlimited bandwidth, plus support for an unlimited number of domains and emails, plus great service – all for $5.95 US / month. Trust me, it is both too good to be true, and true at the same time.

Dreamhost hosts this site, but I’ve also set up 3 other accounts (1 account hosts 18 domains) on Dreamhost, and in each case there was not a business need that couldn’t be satisfied by their offering quickly and easily.

Angry Man

10Jun09

Throw-it-Over-the-Wall-Mentality

03Jun09

I’ve struggled with this throughout my career, but it’s never made sense to me until recently.

A colleague said something about operating in isolated environments so that one skill-set does not influence another skill-set. He was referring specifically to analysts not having access to development resources so that the requirements gathered from the client are true and pure and not tainted by technology. It may explain why I’ve come across so much resistance in past experiences to open and collaborative environments, although I’m sure there were also those who were just reluctant to the general concept of transparency (for other obvious reasons).

While this particular point was interesting, and I must agree that it is always a challenge gathering requirements without proposing solutions, I still think there is too much to be lost by adopting a throw-it-over-the-wall-mentality.

I’ve spoke before about the importance of transparency and I don’t think working in silos is conducive to successfully delivering quality software. First of all we end up with specialists instead of generalists. Specialists are great for some tasks (typically for review and training (especially in niche areas like UX)), but generalists are what we need in software development teams. Analysts need to understand and appreciate the complexities of the software they are using as do the business/consultants/clients. The scale will vary from one end of the spectrum to the other, but the closer we can always keep everyone together, the much better the outcome. Developers must also be close to the business to appreciate and understand their pains. The only way that all of this can take place is if we stop throwing things over the wall and start talking, start working collaboratively, start sharing ideas and visions.

One of the first things you will notice if you are in a throw-it-over-the-wall type of environment is an emphasis on contracts or agreements. When the team A lead is telling the team B lead that the most important part of the design is the interface between team A’s component and team B’s component you are in trouble. The fact that team A wants to know nothing about the design of team B’s component is a sign of silos forming.

More subtly, the contract or agreement will be between a development team and another team. The outputs of one team serve as inputs for the other team. It makes sense that developed source code goes through a quality assurance cycle performed by another team for example. But, when the tester starts to require that the software be packaged in such a way that they would never need to ask a developer a question, things have gotten out of hand. Ideally, the tester would be working along side the developer, developing the test cases at the same time or before the developer.

The other problem with throwing things over the wall is that it just takes too long. People start to hold on to things because they are scared to throw it over and have it thrown back (especially if it’s not thrown back soon enough to do anything about it). This is a bad spot to be in, and will take some time to fix. People in these environments are generally very defensive and self-serving. People need to get used of working together as a team with collective ownership of all software artifacts.

It does seem like pretty basic stuff, but the truth is it requires a lot of discipline to support this type of transparency and teamwork. We all have tendencies to just do the work ourselves and not collaborate because we think it will be easier, but there are a wealth of tools / ideas for making collaboration easier and, in some cases, making it something we can’t hide from. Things like open work spaces, on-site development, scrum walls, etc are all good examples.

Melbourne, Australia

03Jun09

p1010620
p1010615
p1010600

Went to Melbourne a while back for a long weekend. Kelly was on training for a week, but she decided to go up on the Thursday beforehand, and I decided to tag along for the weekend.

I have to say, it became my second favorite city in Australia next to Perth. I’ve since then learned that the weather is quite a lot to deal with and may recall my vote, but that weekend it was perfect!

p1010580
p1010567
p1010537

We covered quite a lot of ground as well. We stayed in Williamstown right on the bay with a pretty sweet view of the city (a photo my wife wants to make art). We traveled to Ballarat to visit a wildlife park where we played Canadian tourists and were allowed to pet the kangaroos and koalas (and snakes). We traveled to Phillip Island where, whilst we don’t have any pictures, witnessed a flock of hundreds of penguins waddle in from sea to their homes scattered across the island. And, we circled the bay pretty much from one tip to the other stopping at random beaches and look outs. We spent one evening in the city where we had a nice dinner and watched the film ‘Australia’ on it’s opening night.

Definitely, a place I want to visit again. In fact the drive from Adelaide to Sydney with a decent chuck of time in/around Melbourne is what I have in mind. Will just have to time things for more good weather…

I’ve posted more photos here and here.

Australian Seismic Survey

03Jun09

Soooo funny…

BlackBerry Curve 8310 Smartphone

03Jun09

pic1

Yes, I now have a Blackberry and an IPhone.

It’s kind of a sore spot, but basically I picked up my IPhone (with 2-year, heavily data-bundled contract) less than 24 hours before work asked me if I wanted a company BlackBerry. Doh. I actually resisted the idea of having 2 phones for some time, before business travel became prominent and having the company phone started to make sense.

Having the 2 phones hasn’t been too much of a hassle, and it’s been nice to lend the IPhone out to family and friends when they come to visit from Canada. When it’s not on loan, I mostly use the IPhone as an IPod during the weekdays to watch/listen to podcasts on the bus and sometimes surf the net. I always use the IPhone on weekends and on road trips for music, maps, and GPS.

It seems the BlackBerry can do all of that as well. The UI is much less user friendly, but much more option rich. I don’t want to make the Microsoft/Apple comparison, because I have been really impressed with the BlackBerry even though the menus are endless and more difficult to navigate.

The BlackBerry is extremely reliable. Where the IPhone trips up every now and again, requiring a read up on the latest bugs/updates/workarounds, the BlackBerry is always solid. And while generally I prefer software that doesn’t make me worry about configuration, the countless configuration possibilities have come in handy. For example, setting ring tone, vibrate, and volume settings for every possible type of notification is very useful, because I can make the different notifications very distinct. I also must admit that having a real keypad is much nicer for drafting emails. It makes it a nice fit for business, and for that reason using the BlackBerry for work and the IPhone for pleasure has been handy.

One annoyance I’ve had is the BlackBerry’s strange habit of turning itself completely off every so often. The only way to restart the phone is to pull and replace the battery. I’m sure there is a solution somewhere, but I haven’t taken the time to check.

All in all, it’s a good phone for business. I suspect the newer touch models are getting closer to the ‘1 device fit for both business and fun’, but the 8310 is not there (I’m sure most employers prefer it that way as well).

Thoughts on Importance of Knowledge Sharing

26May09

Dilbert.com

Agile Hitler

05May09

Thanks to Max at codesqueeze for an introduction to Agile Hitler with Hitler’s Nightly Build Breaks. :)

Found a few others as well…

Hitler does unit testing

The Downfall of Agile Hitler

Even more Hitler gems:

No Twitter for Hitler

Hitler gets banned from Xbox Live

Racquet Network

01May09

banner-page

I’ve been working on a side project (not lately my partner would tell you), for a few years now called Racquet Network (RN). It must be starting to get street cred, cause we’ve recruited several hundred members in the last year or so.

Brent has been doing all of the operations, customer service, website admin, website design, and marketing. Without those efforts I bet the site would be pretty much inactive.

I’ve been doing design and development and while happy with many of our capabilities and accomplishments, never feel I can give it the time it deserves.

The technology is php/mysql/apache on a 3rd party shared hosting unix box provided by Dreamhost. Dreamhost has a great service offering for cheap cheap. Both hardware and software offerings by Dreamhost enable us in every way imaginable, from ftp, ssh, webdav, to domain, email, database admin, to scheduling of automated cron jobs, to one click installs that are fully supported and maintained by Dreamhost!

RN is a blend at the moment of an open source content management system (wordpress), open source forum application (phpbb), and a custom application (where I come in) for profiling, score keeping, and management of a general racquet sport resource database.

When I started in 2004, the forum was in place and was largely the means for managing user accounts/player profiles. The rest of the site was mainly static with a beta score keeping tool and that’s about it.

I didn’t like the dependency on the open source forum software for management of our user accounts, and it was really limiting our ability to build tools (had to build around another application’s evolving data model), so after a year or so of fiddling, the first major project in 2006 was a brand new player profile tool set. The concept was pretty straightforward with basic CRUD functionality satisfying most requirements. I built a registration sequence with disclaimer, associated memberships, and a configurable hook to paypal for registration payment if so desired. I built view profile and edit profile pages as well as a player listing and search tool. Luckily enough, I had previously built similar tools for web-based management of relational databases both during my time on i2Services with Veritas and for the Weaselhead Preservation Society as well. Learning experiences prompted me to build the tools as generic libraries that could be re-used to administer other areas of our data model should we decide. For example, our scoreboard is powered by a subset of that library. The advantage being that we only need to maintain one instance of the management tools and all of the pages that make use of the libraries render a similar, consistent, and standard user interface. If we enhance the list results functions for example, all list pages will immediately benefit. Of course, once we had designed our own data model and tool set, there was the project of migrating all of the data from our forum app into our custom app, but it was well worth it.

The player profile tools brought huge value to Racquet Network and provided a great foundation to support our new members. At this point players could join, populate their profile, contact other players, and report scores.

Meanwhile Brent was marketing away and really ramping up quickly on Search Engine Optimization (SEO) strategies. He had developed a great deal of static content that was starting to get recognized by the search engines and bringing new people to our site. At that time, we had resource content for 4 or 5 cities in Canada and saw the potential for other cities in Canada and beyond. As well, Brent had kicked off a number of Calgary based programs that were gaining attention and attracting players seeking instruction and instructors seeking freelance work. We knew this same success could be recognized in other cities, but didn’t have an infrastructure to support the desired scale.

This inspired my next major project which was to design and implement a tool to manage the static resource content in a much more dynamic way. I took the time to model a number of key entities and developed a proof of concept app that pulled all widget content for the Calgary tennis club page from this dynamic model. I then merged the resource model with our existing player and score keeping models so that players could be associated with cities and clubs and could report scores against cities and clubs. Before long, Brent had populated the resource database with content for the 4 or 5 Canadian cities and I had designed and redesigned all of the attractive widgets that were statically served on each club page prior. We went through a bit of a transition hump where we were penalized by the search engines for lack of meaningful page urls (i.e. index.php?club_id=4…), but after pouring over SEO articles we joined the amazons of the world and massaged the tool to power over 1200 dynamic generation possibilities that are now all fully indexed and highly ranking in Google!

This flexibility has brought new requirements to the player profiling tools of course so that we can allow them to join and leave any combination of those 1200 clubs. I’ve been working through that lately, while also dreaming up the next version of our competitive ladders management tool set.

Brent has also moved all of the remaining static website articles to a fully internationalized implementation of wordpress, and for that I couldn’t be happier. I’ve got some ideas on how we can provide a more seamless look and feel between the website and web app, but for now I am happy to have the clean separation.

Once the ladders software is rewritten, I am anticipating my ever-growing list of change requests (powered by mantis), will need some definite attention, and hope to move from framework mode into feature development. There are so many feature ideas that I know we have a framework to support now, and can’t wait to get to them!




Follow shaunmacrae on Twitter