Securing Webservers (Ubuntu 12.04 LTS)

So I set up a lot of boxes and quite a few of them get hammered on pretty hard by attackers looking to break them open. I’ve been doing more than usual in the way of this lately so figured I’d do a quick round up of some of my favourite tools to make life easier. These aren’t just applicable to webservers but most of the boxes I use these on are.

Recently things have changed, with IPv6 becoming not just a nice-to-have but a need-to-have these days you’ll tend to run into quite a few tools that work great for IPv4 but aren’t applicable or don’t work on IPv6 yet.

Read on after the break! Continue reading Securing Webservers (Ubuntu 12.04 LTS)

Streaming Radio – Doing it right

This is something that has come up time and time again now, and with Amazing Radio going online-only with nothing but a single Shoutcast server streaming one format at one bitrate, now seemed like a good time to write about online streaming of radio stations.

Let’s start by briefly looking at real broadcast operations – on FM and AM we try and maximise coverage (within our license), maximise compatibility, and of course we want to add as much value as we can with metadata like RDS (and now things like RadioDNS). We’re trying to reach as many people as possible, with as little fuss as possible, and trying to give people the best possible service.

This is not what many broadcasters do with their online offerings, which is a real shame, considering the potential that many stations have. So what constitutes a best-effort service? What makes life easier for listeners, and how can you make your station’s output as widely available as possible? I’m just going to skim over the technology here and break things down. I’m also going to discuss briefly what we’ve done with the streams at Insanity Radio 103.2 FM, and how we’ve worked them into apps and our new Radioplayer implementation. Continue reading Streaming Radio – Doing it right

Serializing and scoping Mongoid criteria

So, while working on a project, I ran into a snag. I’ve got a partial which renders a list of images, and I want that partial to be auto-updated. That partial is used in multiple controllers and actions and is passed lots of different arbitrary data sets. How do you manage auto-updating that partial, and additionally, gain the ability to access that list’s criteria in other areas? I also have a ‘grid view’ of the images – I want to be able to pass my image list along to that and have it render it, but I still want to paginate (and on the grid view, pagination is done by different amounts).

Mongoid lets us build (much as ARel lets us do in ActiveRecord) criteria up, which consist of a few things, but mostly a selector (“Which records?”) and options (“How do you want them?”). So the answer is actually pretty straightforward – we serialize these objects and then use them to build our base criteria, on which we can then do pagination. Neat, right?

So, how do we do this? Easy, actually. Continue reading Serializing and scoping Mongoid criteria