Apart from being a musician, in my day to day life I'm a web developer. I mostly work using PHP using the great framework Laravel. I've occasionally done things using Ruby on Rails, but I'm not really that proficient with it.

I've been working on a couple of open source packages that help to make people's lives easier when they develop. Want a list? Here you are then:

Bootstrapper

Twitter Bootstrap made easy for Laravel. If you have a look around the site, you'll see all the usual Bootstrap stuff, like the navbar at the top. Bootstrapper provides a wrapper around all that stuff so you don't have to. There's all sorts of stuff that can be a pain to do by hand - like getting the active state on the navbar, creating a carousel and all sorts of stuff.

The package was originally written by Patrick Talmadge, and it had a bit of help from Anahkiasen (Maxime Fabre) who kept it up to date a bit, but I've mostly been maintaining it since Bootstrap v3. Since I've been working on it, I've added support for Panels, Accordions and made sure that we have support for Bootstrap 3. There's a couple of really useful features I added for my own purpose:

  • Depending on what I'm doing, I usually want to use the Bootstrap CDN instead of having to upload the file to the server. There's a whole bunch of caching that also gets done which I really like. I also kept forgetting what the links to the CDN are. So, I added a helper function to output the CDN links. Plus, it adds a link to the JQuery CDN as well!
  • Accordions are really cool. Like, I think they're awesome for hiding content that you still want to show if they're interested. They're also a bit of a pain to sort out by hand, because there's so many divs and classes that you have to organise. So, I added support for it.
  • Someone asked for modal support. I'm not entirely sure that Bootstrapper needed to support it, but it wasn't that difficult to organise so we have that
  • We now follow semantic versioning (sort of - we actually update the minor version when we make a breaking change). Previously, if I wanted to pull in Bootstrapper as a dependency, I had to add "patricktalmadge/bootstrapper": "dev-develop". This is bad. A package like Bootstrapper should be using tags. Now, you can pull the bleeding edge in, or you can add "patricktalmadge/bootstrapper": "4.1.*" so when I push up changes it won't break everything in your code when we move up to 4.2.

On the to do list is to make things a bit nicer internally. Everything is done using static methods, probably because when you make calls in Laravel you use things like Route::get(). Now, that might look like a call to public static function get(), but it isn't - it actually calls a class method public function get() (if you want more information, then feel free to read the Laravel documentation).

Now, calls like Navbar::create() are fine, but things like ButtonGroup::radio() should probably call public function radio() instead of public static function radio() but I'm not entirely sure that we need to work on this. If I get a spare week then I'm planning on making facades for each major component, and then we'll finally hit version 4.2.

BoardGameGeek

BoardGameGeek is the best website in the world if you want to know about Board Games (sidenote: I'm a massive board gamer. I really like board games. You should see my room. It's like a bomb went off in a board games shop). It also has a god awful API, so I wanted to provide a wrapper.

It doesn't save all the heartache - calls to the API are still ridiculously slow - but it makes life a lot nicer. Instead of having to handle XML (Why is it XML? Because the API is about 5 years old. At least), you can just handle an object which isn't as awful. I'm mostly using it to handle the Sheffield University Board Gaming site. It's missing a wrapper for each API call, but soon I'll be writing those.

If you want to use it, require it inside your composer.json file like so: "patrickrose/boardgamegeek": "dev-master". When I finish writing all the calls, it'll become v1.0.0.

Artist Data

I've not yet written this, but it's on my to do list. Artist Data was recommended to me by Jamie McClennan when I spoke to him about folk music and web development. It's a pretty awesome service that does all the piddly publicising that you don't want to do. Create an event on there and it'll make a Facebook event for you, post it on Twitter, send it to other places and all that annoying stuff that is boring as hell to do.

Although they provide a widget, I like to do things in my own way and I imagine other web developers do as well. So I'm planning on reading the XML feed they provide and allowing developers to do things in an object orientated fashion.

When I get somewhere with it, I'll let you all know. Keep an eye on my GitHub if you're desperate to know about it.