I won't say anything about the trip up, but I've been in San Francisco since Sunday afternoon (local time).  Monday was Memorial Day and the members of the SynthaSite team at the time I joined in November last year decided that we should get together for brunch, and then we headed out to see some sights around the area, taking a quick trip over the Golden Gate bridge and into Sausalito.

It was an overcast day, but I did get a glimpse of how beautiful the city can be.

Tuesday I pretended I had the capacity to do work and visited the SynthaSite offices in San Francisco.  Didn't get much done, but felt the office here in San Francisco shared a similar vibe to the one in Cape Town (although open plan feels weird after being in a three/four-person room for so long).

I've made it to Google I/O, which is way bigger than I expected it to be (and, according to one of the shirted staff-members, more than they originally expected too).  Hundreds of people were registering when I arrived, and by the time I got to the front of the A-B table (which was a good 75 people long), the A-B queue was longer than when I arrived.

Will try write something after each session, assuming the wireless works better than it does now...

On Saturday, I'm heading off to San Francisco to attend Google I/O and also spend some time with my colleagues at SynthaSite in our US office.  Of most interest at the conference (at least in my personal capacity) is Google App Engine, but pretty much everything sounds interesting (with GWT being the big exception), and I can just imagine that making the decisions on what sessions to attend will be hard to do.  (And, you know, I guess I'm supposed to keep an eye out for things that might be useful to the company, or something...)

Over the weekend, I'll hopefully be heading to Sebastopol (in California Wine Country) for the Pylons/WSGI Sprint being held at O'Reilly Media's headquarters there.  There's two days of sprints, and I'm hoping to be there for most of both days - but it depends on travel arrangements.  If I get the time, I hope I can pop out and see a bit of the surrounding country and maybe one or two of those "places of interest".

In between the gatherings and travel, and before I head back, I'll spend time at the SynthaSite offices, doing what I'd generally be doing in Cape Town, but with better connectivity and less rainy cold winter.

If you want to catch me while I'm in San Francisco (or in London for the half-day I'll be there on the trip back) send me an email or leave a comment.

A team apart

For about two weeks, ending about two weeks ago, we had a full house of current employees at the SynthaSite offices in Cape Town - which has allowed everyone to get to know everyone else both at work and at play.  Over the past two weeks and continuing for another week or so, people have been heading back to the US office or heading to work from there for the known future.

The time together was great and necessary, and the time apart is necessary also, but it's hard to not want to see my new and old friends at the office.  The offices feel too quiet (although we've got new friends starting next week).

It is early days yet, but I know from previous experience how distance can allow one to treat people unfairly - it is easier to disappoint and easier to pretend to forget and easier to believe that the other is being stupid or lazy when you don't see each other regularly.  Yes, even geeks.

I'm quite interested in the challenge of making this not happen, and I'm hoping to see how our experiments in project management and communication and structure turn out.

I identified tools, process and people as our main strengths that will help us get through this new period, and then realised they were also our greatest challenges.  It's amazing how much your outlook can affect how you feel about a prospect like this.  If you start out, like I did, with "We've always been good with tools, but...", it leaves you feeling like you're entering a big unknown without much help.  But if you say "This might mean having to retool somewhat, but we've learned a lot about getting tools right", it makes you feel up for the fight.

I'll try write up my observations as they happen - although this recent three week break wasn't for lack of things to write but more for lack of the energy to write.  (I'll try catch up, but no promises...)

Pictures from the boat trip

This past week at SynthaSite has been the first with the full newly-expanded international team together in the Cape Town office. This has been an opportunity to get to know the new hires and for everyone to come together with their ideas and come up with goals, plans, and specifications. Which meant a week with at least one meeting going on at any one time.

A big potential challenge to new hires, especially in management and other senior positions, is balancing their ability to contribute new things to your existing team but not getting swept away with them and hurting the common thread in your team. I must admit that I was a little worried about the decisions being made in meetings I wasn't a part of. This is a bad habit I've picked up over the years, and despite all indicators to the contrary and belief in those involved in the meetings, I couldn't entirely shake it.

On Thursday, the outcomes from the various meetings over the past few days were presented to the whole team. The most striking part of the meeting to me was how those who weren't in the earlier meetings were able to accurately predict the long-term and short-term goals and features and markets and so forth that were presented. The next most striking was how flexible and accepting those who'd spent hours in meetings to come up with these outcomes were of additions and removals from what they presented.

That was a perfect precursor to our reward for the week's work and a celebration of meeting a few internal targets in the last month — a boat trip out from the Cape Town waterfront on Friday afternoon.

Pictures from the boat trip

Such a trip does have the potential to be a disaster — making a bunch of people wet and cold, forcing them to maintain their balance and their stomach, and otherwise messing with people isn't the best setting if there are issues between your people or if there's nothing binding them already. We did have new hires, after all.

But our new hires are much like the rest of us. No suits or fancy clothes when we're all office-bound. Shoes are optional. But when it comes to work, serious. More experienced than most of us, and older than most of us, but with the same youthful excitement and wonder for the space we're in and what we're doing. They're also just nice people — I've enjoyed watching every possible combination of new and old employee having multiple one-on-one conversations over the past week.

So, no disaster.

The boat trip itself was a lot of fun for me, despite getting absolutely soaked and nearly falling overboard a few times. I guess one has to do it to understand how that can be enjoyable, since I can't think of much to say in explanation. We ended up cutting the trip a bit short to avoid the setting sun and the ensuing cold and to rather have a warm supper in a warm restaurant. The review and exchange of photographs meant many laughs all around, and the shared adventure meant ample topic for discussion.

Pictures from the boat trip
Tags: ,

About a week ago, we released the latest iteration of SynthaSite.

We had a pretty tough iteration compared to usual - probably the biggest stumbling block being people in the US attending conferences, seeing people, and the travel and recuperation time around that.  We managed to do some pretty cool stuff with those of us who had more stable availability (aka being left behind), which makes me very excited about what we can achieve when we're working full steam ahead.

Probably the biggest wins, as expressed by our users, were around styles - we added 22, and also enabled a whole bunch of them to have customisable banners.  Behind the scenes, I was pleasantly surprised to see initiative was taken in that we now have some tools to speed up these processes.

We've also majorly beefed up our support materials - we have a bunch of new tutorials that are easily available within our site builder, and a number of other goodies.

I've been enjoying watching our support systems grow over the past 3-6 weeks - we're starting to see support regulars helping others as well as an increasing proportion of support queries beyond the standard tool familiarisation ones.

Two or three rare, but long-standing, bugs have also been squashed as well, which has made a few of our users who had the right combination of factors very happy.

With my "process enablement" cap on, it seems that we've now grown confident in our release and update processes after employing them on the past few iterations.  That means a lot less stress for everyone involved, and I even think everyone actually is starting to perhaps even sometimes enjoy the QA period - discovering how everything comes together, saving us from face-palming, and so forth.

That I'm having more fun working recently than I can recall having before hasn't changed, and part of that is working with some of the best people in the country (and occasionally in the industry as a whole) here at SynthaSite.  And now we're hiring (in both San Francisco and Cape Town, but I'm talking about the team here in Cape Town).  If that interests you and you think you're pretty hot (even if you might need some experience to fully shine), I don't think you can find a better place to work in Cape Town.

There are four positions open in Cape Town - two technology and two admin/support positions.  (And we're always open to getting to know people who are as passionate about making a great product as we are.)

The sysadmin position will join Lisa and I in the "systems" team mostly on the infrastructure side.  I've been doing most of the system administration in the company since I got there, automating as I go, but it's not something I can do as well as I'd like and still work on the things I most want to work on.

This job is probably fairly flexible.  You might be starting out, in which case we'll help you grow into the position.  You might be hard-core, in which case we'll generally keep out of your way.  Or you might want to do a bit of sysadmin and a bit of platform or product development.  Experience with Python and advanced Bourne shell scripting would be useful.

We also need someone to spend most of their time researching and building platform prototypes and then production systems as we move through iterative and large-scale improvements to our platform.  This is the "platform engineer".  Experience building platforms or using the sorts of tools that go along with building them (memcached, for example) is preferable, as is experience with multiple languages (I'd say Java and Python especially would be useful, but then my voice is just one of many).

The other two positions are for a copywriter and a support person - although, there's always scope to get involved in any number of other activities - QA, research, user testing, and so forth.

As I mentioned a few weeks back, the SynthaSite team were taking a few days break from the usual schedule to come up with a shared consistent view of what it is we are building and how we want to build it.

It was probably the last time we'll ever get so much dedicated time to work together as a team, as the process of some of us moving to San Francisco has begun.  I'm not sure everyone appreciated that (I don't think I did), but I was impressed at the results of our process of hiring the best and most passionate - the end result was something we can be proud of.

The SynthaSite team doing some release planning

We first went back to school to learn the theory of our Agile process (initially vaguely Scrum, but becoming more Scrum-like, especially after this discussion), and applied those theories to made-up projects after breaking up into smaller teams.

The pocket rocket vision After dreaming up products (ours, the "Pocket Rocket", was a jetpack, although it seems it is either a vibrator or moped in real life), we came up with a product vision for our projects using a common elevator pitch formulation - the target market, the problem they have, what the product is, who else is trying to solve the problem and why you're better than they are.

The Pocket Rocket had two markets - the jetsetters (that one never gets old) and the military.  It's for getting from one place to another on your own schedule - unconstrained by traffic, surfaces, and so forth.  (The other team had a much more realistic product.)

We then practised creating user stories for our products - in the form:

As a stakeholder-type I would like some feature so that some reason

After that, we explored two methods of prioritisation - the Kano model and relative weighting.  The Kano model primarily allows you to determine what class of value a particular story falls in - based on the effect caused on your user base if you don't do it, if you do it, or if you partially do it.  Relative weighting allows you to assign relative weighting in terms of both value of the feature, and the cost of the feature.  Using these, you can get numbers out on what the best value for cost features are.  Neither is useful in isolation, but in combination can allow you to develop the features your user base demands rather than simply wants, and capitalise on those things that would be quick wins.

Planning poker deck

Finally, we played some planning poker - we each got a set of cards (0, 1, 2, 3, 5, 8, 13, 20, 40, 100 - the above set is a Crisp Planning Poker deck), and as each story came around for estimation, we showed the card that represented our guess at the effort involved in doing the work, relative to other tasks.

After that, and a break, we set about doing it again for real on SynthaSite (everything - the site builder, the web site, tutorials, support, our development and staging environments, &c.).  It was a lot harder initially to come up with proper user stories and to estimate, since it was a lot less abstract than our example projects, and we were a lot more passionate about the real project.  But, after a while, we got into a rhythm, and we came up with something that both looked and is really impressive at the end of the day:

The populated SynthaSite product backlog

We ran into a weird problem at work today.  We use CodeIgniter for our web site, and due to some configuration (which, frankly, astounded me when I heard about it), we generate 404s on pages if we get unknown query string parameters.  We're testing integration with other systems, and some of them automatically add additional query string parameters when returning to our pages.

A solution was mooted that involved using a standalone PHP file that used file_get_contents with an HTTP URL to strip out the query string parameters.  Which is not the solution we want when we're trying to make sure we don't have performance-restricting aspects to our service — it would double up HTTP requests.

Normally, mod_rewrite doesn't interact with query strings — it maps the incoming resource to another resource, and query string parameters aren't part of the resource. But hidden in the mod_rewrite documentation is this:

Modifying the Query String

By default, the query string is passed through unchanged. You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine new and old query strings, use the [QSA] flag.

In our case, we just added a question mark to the right-hand-side of the rewrite rule, and we saved ourself an HTTP request.

For the third time in a row, I'm working at a company where I've worked with at least two of my co-workers before.  Jenni and Michael at Jam Warehouse working on KnowledgeTree, Bryn and Shayan at CareerJunction, and Lisa and Tracy now at SynthaSite.

I've mentioned before how each job (with one exception) has brought with it a new addition to my "Dream Team" of people I'd love to work with again - with whom I imagine any challenge is surmountable.

But there are other side effects of working with people again - they act as catalysts to memories of the past (at least, to someone whose memory is as shredded as mine).

The team at SynthaSite is taking a few days to get everyone aligned on what it is we're doing and building and how we expect to work together with each other.  Which, I imagine, can seem a lot like team-building.  It's happening at a small conference centre at the Waterfront in Cape Town.

Before Lisa and I even started working together, we were in the same conference centre doing "actual" "team-building" exercises.  You know, the ones that involve holding hands and silly games like squeezing the next person's hand when your hand is squeezed.  And silly facilitators losing all credibility when they try to suggest that you may have set a world record.

Which then reminded us of other team-building exercises at that company, which then brought on memories of the air-conditioner fights at our offices, and then, at least for me, a lot of thinking of the great and not-so-great times with some great and not-so-great people.

And, then, Tracy mentioned a few things about how great it was at the company where we worked together - at least through my innocent and politically-shielded first-time-job eyes - and the great and not-so-great times and people there.

The great times and people mostly come to mind the quickest and remain the longest (as fortune cookies and self-help books have asserted) - but I suspect that's only after you've been allowed to process the experience in a background process while seemingly having forgot about it all.

I guess that doesn't help if you're actively disliking your current employ, but at least you're likely to look back fondly if you're working with great people - which I guess means you need to look for great people while interviewing potential employers as much as they need to do so when interviewing potential employees.

One of the interesting upcoming challenges at SynthaSite is the migration of parts of the company to San Francisco, while leaving what is currently the bulk of (and, interestingly, the newest additions to) the company behind.

But most of those challenges are around "soft" issues like effective communication and retention of culture, and while I hope to be able to figure out important lessons around that in future, now I mostly want to express my surprise at how little the technology - hardware, software, and network - stands in the way of this move.

When the move was first discussed (admittedly only days after I arrived), I was told I'd probably need to go over to San Francisco for a few weeks to help the rest of the team set up.  And, well, that sounded about right.  As a company that develops software as one of its main functions, and as a company that needs accurate business information for business development, "customers" (ie, people who sign up for free to create their own web sites), and "sales leads" (ie, people who we want to sign up for free to create their own web sites), and as a company that has particular needs in terms of informing and satisfying investors, we need a lot of tools.

Tools for project management, issue management, support, team collaboration, revision control, building, testing, deploying, scheduling, mail, company information and documentation, and plain old file sharing.  And that's just the stuff I use on a daily basis.  Business also has and needs tools.

However, it seems that that estimate of a few weeks was way off.  Being able to work effectively from an office in San Francisco and being able to work effectively from your home in Cape Town and being able to work effectively from wherever you find yourself aren't particularly different. 

Because we've had people who've had to travel a lot, and because we have people who would rather work from home and actually see their kids (whether human or canine) every once in a while, we're almost entirely ready for this change - almost all of our tools are already not in our Cape Town office.

So, while I might like a chance to see the new offices and catch a conference (The Python community conference, PyCon, is in Chicago roughly around the time we'll be setting up offices, after all), there's not much I need beyond a IP-over-KVM system and one (or, at a stretch, two) servers for things that need to be in the office (like a file and backup server), and I can do the whole thing from Cape Town.

This situation is just a fortuitous coincidence - the attitude towards tools at SynthaSite has always seemed refreshing and enlightened.  If it's needed, get it.  If it can be externally managed, do that.  I get the sense that the few tools that aren't externally managed are being eyed carefully every once in a while for potential replacement or a move to a managed solution (much like what we did with our support system).

(Of course, to those from outside South Africa, this may come across as absurd or just obvious.  Having been stuck with poor connectivity in the past, it's never seemed reasonable to rely on external, especially international, services.  And still being stuck with pretty poor connectivity, we can't reasonably host tools in South Africa for our international team mates.)