• tel: 0845 475 2487 (UK)

Understanding Developers

Developed by Colin

Or, how a non-developer can make sense of the terminology we sometimes spout… It all starts from a simple question:

Is .NET a programming language?

No, .NET isn’t a programming language, it’s a framework.

Framework! Like Ruby on Rails!

Yes like Ruby on Rails. A framework is a load of bits of code that someone has packaged up to help developers create applications. Ruby on Rails, .NET, Django and Cake PHP are all examples of frameworks.

So frameworks are libraries?

Not really. A library tends to be focused on a particular piece of functionality – for example you might have a libraries that lets your code talk to Twitter.. In the world of Ruby, libraries are often packaged up into gems – little bundles of functionality which you can add to your app. In fact that’s a good way of looking at a library – just a bolt-on of focused functionality.

Right. So what was a programming language again?

The programming language is where it all starts. A programming language, like C#, Ruby, PHP or Python, is used to write libraries and frameworks. The language, the libraries and the frameworks combine to allow you to write an application.

You need a lot of stuff to get started then…

Well really the programming language is the bare minimum – you could write an application using just those bare essentials. But bolt on a framework like Ruby on Rails and you get things like easier ways to access the database or do localisation, and add a library to speak to Facebook and Foursquare. This enables your application to get up and running much more quickly because you don’t have to write all of that code again. You’re standing on the shoulders of giants; you’re not reinventing the wheel.

But what about security? How do you know all of these frameworks and libraries are safe to use?

Two reasons. Firstly, many libraries and frameworks, such as Ruby on Rails and the vast majority of Ruby gems are open source. This means you can look at the code yourself and check that it’s not malicious. Additionally, hundreds of other eyes are looking at that same code – in the case on Ruby on Rails some of the world’s best coders will have had a hand in developing the framework. Secondly, in the case of frameworks such as .NET, a multi-billion dollar organisation will have developed a rigorous Q&A process with automated testing and security auditing to make sure it lives up to its billing. If Microsoft can rely on .NET to run its business, chances are you can too. And recently even Microsoft has begun open-sourcing its code, so you can review it by eye if you want – all 1 bajillion lines of it.

Surely there’s no way to be sure unless I’ve written it myself though?

Possibly, but chances are you’re more likely to fall into the same holes as other developers – for example creating a web framework which falls prey to XSS vulnerabilities or other such security issues. A peer-reviewed third party framework will have been there and done that, with thousands of developers and users checking it for security problems every single day. Like I said – standing on the shoulders of giants.

Ok. I’m getting it. Language > Library/Framework > Application. So what’s a platform?

Oh God. Well a platform is at the top end of the scale. You build applications on a platform, but a platform itself will likely have been built using a framework. Sometimes platforms are applications as well – applications which provide developer APIs for example. A good example is Facebook – technically it’s a vast application, but it also provides lots of ways for developers to build on top of it and interact with the Facebook application and its users.

Excellent. So this new language we’re writing with Facebook on top of the C# library – when will that be ready?

You mus- Ahem. Well now you know so much, you can write it yourself. Get back to me when it’s done, there’s a good manager.

NYVJ3JMK8P7M

How We Track Projects

Developed by Colin

Depending on time of year, current workload, phase of moon, and other factors, the Go Tripod team may not always work from the same location. And even if we do, we’re often in Do Not Disturb mode with headphones on. We’ve found that the best way to keep track is by using the Campfire chat system, which allows not only standard back-and-forth yapping, but sharing of source code and images. A killer feature for us is the ability to see what’s been talked about if we’ve not been in the chatroom for a few hours; Campfire offers transcripts of everything that’s been said in your absence.

So we’re always in Campfire, and it’s an integrated part of our working day. As Go Tripod is going from strength to strength, we’ve started to need a way of doing a similar thing with projects – a very simple way for anyone to see and overview of projects that are on the go right now. We’ve kind of tried this before, but the stuff that we’ve tried either hasn’t been simple enough or we’ve only used it rarely because it’s separated out from every other part of our work. In the latter case, it just gets left by the wayside and forgotten.

The idea sprang to mind to somehow involve Campfire in the proceedings. Maybe we change the room title to reflect the current open projects? The problem with the room title is that it’s a bit out of the way up the top of the screen and could be affected by the same issue as I described above – out of sight, out of mind. So the solution needed to be integrated. In fact we basically needed another team member in Campfire, our communication method of choice, talking to us and updating us. Some kind of automated team member… Some kind of robot?

The Technical Bit

I did a quick search – Tim Riley’s Campfire Bot looked absolutely perfect, with its plugin system, so I tried to use that. Unfortunately I couldn’t get the latest source code to work, and I had other issues when I tried to use the Tinder library which underlies the Campfire Bot.

A quick scout around for some more libraries led me to Broach, a simple wrapper for the Campfire API, and the 37 Signals example code for the Campfire Streaming API, which uses the twitter-stream library. I quickly put together a proof of concept using these tools and some sneaky code which allowed us to issue commands to the bot from the Campfire window itself.

The Results

A picture tells a thousand words:

List Projects with GoTripodBot

A list of current projects! And Simon decides to add another:

Open a Project with GoTripodBot

GoTripodBot is a helpful fellow:

Getting Help from GoTripodBot

And a brief insight into the world of development (I wrote some unit tests after this):

Development issues with GoTripodBot

Conclusion

Of course there’s a lot more to our project management process than this (and a lot more projects to manage than I’ve shown!) but having such easy transparency into this top layer of our work is really going to improve our awareness of what’s happening right now in the world of Go Tripod.