New functionality: ‘add something’

With the release of Tank4.0 we wanted to address a couple of those small things that have been bugging us for ages. One of these aspects was the way one added things to a site.

Keep reading →

We took a nose-dive, and took you with us

We’re sorry. There was a hiccup during the roll-out of Tank4.0, and at 14h17 this afternoon all sites, including our app, went ‘down’.

Keep reading →

Almost in the clearing

We’re putting the final touches on to Tank4.0: and if everything goes according to plan it should be available to everyone in the next couple of hours, maybe even sooner.

Keep reading →

Breaking cover

We’ve been quiet for a while so we thought we’ll share a couple of our ideas to give you an idea of what we’re working towards: a realign of the interface that drives the app.

Keep reading →

On a need-to-know basis

We’re putting the finishing touches on tank’s long-elusive 4th feature: pods. It’s been keeping us busy, but apart from the development aspect, it’s more what one can do with pods that’s been keeping us busy.

Keep reading →

Alpha and Omega, and everything in between

Omega is now available to all sites via the skin tab. If you have a square logo this skin might be right for you.

Keep reading →

Beta-testers wanted for Omega

We’re looking for beta-testers for Omega, a new skin that will soon enough replace Tango. Apply within.

Keep reading →

Alpha: redux

We’re revisiting Alpha and we’re keen to hear what (other) features you think we should include: keep reading to find out what we’ve got so far.

Keep reading →

Welcome to our new server

If you are reading this it means you are now viewing tank on our new server. We’ve been planning the move for a couple of months now - these things are never easy considering the amount of data involved - and we’re glad everything went so smoothly.

Keep reading →

Beta-testers wanted for Alpha

We’re putting the finishing touches on our newest skin - Alpha - and we are looking for a couple of beta-testers.

Keep reading →

It was time to up our game

So we just re-designed everything: you’ll notice an entirely new interface when you log-in next. We were under the impression that our previous interface was simple and easy to use, but, strangely enough, compared to the new version it wasn’t.

Keep reading →

It’s time for a tactical maneuver

The term hull-down describes the situation where the upper part of a vessel or vehicle is visible, but the main, lower body (hull) is not. This allows it to observe and fire upon the ground ahead, while the hull is protected from enemy fire behind hard cover. Taking advantage of hull-down positions is an element of tactical movement.Wikipedia

The app is now officially in a hull-down position. We’re open for business, one step at a time.

Running it past a couple of designers; part 1

We’ve been letting a couple of designers in to poke around our framework. No training, no manual, just a bit of direction via gtalk. It’s part of a general push to get designers more involved in this project, both from they way they work, to the way we operate. Pioneerunit was constructed during the chat.

Keep reading →

Too much reality for you to handle?

We’ve recently made a series of changes that affect everything, and, subsequently, if we had more sites running on the framework, the implications would’ve been quite time-consuming to fix. That said, we had enough real sites up and running to show us where to make these very changes.

Keep reading →

It’s all about jump-starting…

We’ve just finished up another portfolio piece, this time for a slightly different kettle of fish: a clubbing website called e-vent. It’s been my ‘contribution’ to the Cape Town (clubbing) scene, and has had it’s fair share of re-designs over the years. The site has been around since 1999 and has evolved into a small community commenting about the local scene, or lack thereof. I also post flyers on a semi-regular basis. I’d go as far to say it was a blog before that phrase was even coined.

Keep reading →

Time to eat one’s own dog food

Yesterday I decided that it is time to call a feature freeze. This might sound off-centre in context of so-called ‘rapid development’ and ‘organic growth’, but the thing is - the more things you add the more things break. The longer you put off polishing screens and ironing out bugs, the bigger the chance that you’ll never get to addressing those very issues. We have more ideas than we will ever get to implement. Usability, stability and that “wow” factor is as important.

Keep reading →

Say something already

We’ve just (ok a little while ago) enabled comments on the blog. When I say enabled I mean built the functionality from scratch. While I’m not the most appropriate person to get into that aspect (there are more qualified people around, huh Le Roux?), the point is that now more things are in place. Our blog is suddenly a blog. At last, we can start punting this site around and hopefully get some feedback.

From CakePHP to Django

We started writing Dynamo in PHP using the CakePHP framework. Initially, we didn’t really have a plan, so I started on some pages and news functionality, showed it around, got input, went back, made some changes and the whole process would start again. We were basically prototyping. We would get ideas like the pages screen then implement it while writing loads of “throwaway code” only to move things around again later.

This all got developed over quite a few iterations. I came up with the idea for sections so that you can “mount” some of your content on a url on a per-site basis and assign it a template (out of a pool of templates assigned to a “skin”). All the thinking happened while we were developing, so we backtracked quite often and rethought big pieces of functionality.

Eventually I realized that CakePHP’s templates (which are actually just PHP code) won’t cut it. We might allow some power users to edit their own templates or we might partner with some other company or designers and give them their own account with admin rights so that they can add sites and make their own skins and templates. Therefore, I had to look at a templating solution. I was hoping that someone somewhere made something like a “cross-platform templating language” that is implemented in PHP and also Python in case we decide to rewrite the backend later, but didn’t find one.

Basically I realized that once we have many sites each with their own skins there is no turning back - it would be too much work to change. I eventually started writing my own basic templating engine (based off Vemplator), but realized it was a lot more work than I initially thought. In general I couldn’t figure out how to make the code scale as we add more features and sites, so I started to feel a bit uneasy. I was losing sleep.

At some stage I got pulled in to help develop SASIX. This took a while and gave me time to think a bit about Dynamo. After SASIX launched, I gave Dynamo’s codebase one look and basically informed everyone that I’m rewriting it in Python using Django. I just don’t like PHP enough to bother trying to fix it up - for reasons I would rather not repeat here. Also, I’ve been using Python for some pet projects and “non-production” code here and there for a while now and even though I initially discovered it long ago, I’m still in love. I’ve also been following Django’s progress with envious eyes for the past year.

I think starting from scratch was a good idea. The PHP based codebase was already getting a bit messy. In part because we kept chopping and changing things, because PHP code has the tendency to get messy and also because in certain places the “one service that powers lots of accounts and different highly ‘template-able’ sites” didn’t easily map to the CakePHP framework. I hacked the framework here and there but they just become unmanageable. Certain parts of the code really could benefit from the language features in Python and also features inside Django - particularly the excellent ORM code, the url mapper, middleware and various handy shortcuts and utilities. The fact that I know exactly what features are important and we already worked out how we want it to work certainly helps as well.

The Python codebase now already has most of the features the PHP version had and in some cases even a few more. Everything just feels nicer, cleaner and more organised. I feel like I can scale the code and add features without worrying about breaking backwards compatibility and I’m very sure that the skinning/templating “system” will not come back and haunt me a few months down the line. I’m convinced that Python more closely maps to the way I think.

Soon I’ll be blogging more about what parts of Django I’m using, what parts I decided not to use (notably the admin interface and the authentication and sites frameworks), how the system fits together, what thinking went into it and all that.