A Cooking Show For The Rest Of Us 

19 February 2015

The Katering Show feels like a cooking show I could really sink my teeth into. If I hadn't already bitten off more of life than I can chew right now. I give it five ironic gold star stickers out of five.

SpiderOak is serious about privacy 

19 February 2015

SpiderOak is a service a bit like Dropbox, which makes it easy to backup, sync and share files. But they take data privacy so seriously, they put this prominently on their page about mobile access:

Here's the deal: when accessing your data via the SpiderOak website or on a mobile device, you must enter your password. The password will then exist in the SpiderOak server memory for the duration of your browsing session. For this amount of time, your password is stored in encrypted memory and never written to an unencrypted disk. The moment your browsing session ends, your password is destroyed and no further trace is left.

The instance above represents the only situation where your data could potentially be readable to someone with access to the SpiderOak servers. That said, no one except a select number of SpiderOak employees will ever have access to the SpiderOak servers. To fully retain our 'zero-knowledge' privacy, we recommend you always access your data via the SpiderOak desktop application, which downloads your data before decrypting it locally.

I think they've done just about as well as you could possibly expect to explain this issue clearly, while also providing the features that everyone wants.

How the sun sees you 

26 September 2014

Wow. Just wow. I'm putting some sunscreen on.

Fame and the Internet 

25 September 2014

I didn't know anything about the events mentioned in this video, but you don't have to in order to understand the point. And the core message is very much worth understanding, and spreading, because as the video explains, the very nature of fame has changed considerably due to the Internet, and none of us knows if it might happen to us.

What is Functional Programming? 

19 September 2014

Usually, when you ask a question, [if] everybody tells you something different, you know it's maybe not that easy.

Manuel Chakravarty presented an excellent talk last month about Functional Programming, and how the Swift language fits into that world.

I've been unable to fully wrap my head around this topic for years, and I felt like I was missing something. So I was extremely grateful to have someone with his expertise explain that there is no single definition of what Functional Programming is, but rather that there are a whole set of techniques and technologies that can be useful to improve software quality. And after talking to him last night, I'm going to try learning a little Haskell, just to start rewiring my brain so I can write better software myself.

David Mitchell on Machines 

05 September 2014

And it's also why machines now... pause.

It's not all progress, then.

Posting a sentry

15 August 2014

Sentry is brilliant. If you have to know anything about the operations of some specific software, that is.

And, you can choose between paying for a hosted service at getsentry.com, or hosting the code yourself. I wasn't sure whether it was the right solution for a project, so I opted to try hosting on Heroku and see if that worked.

My first attempt used the fully free Heroku option, including the free hobby postgres database, and that worked fine, but quickly hit the database row limit of 10000 rows. So then I looked into the new AWS RDS Postgres option, since AWS has more flexible plans generally than Heroku, which means you pay either more or less depending on your usage, where Heroku makes the price more stable from month to month. There are a couple of ways to get sentry running on Heroku, and django-sentry-on-heroku is the closest to how I ended up getting it working, but I also looked at sentry-on-heroku for inspiration.

So I created the database, and updated the DATABASE_URL environment variable in the Heroku app, and it worked fine again, this time without the database row limits. However, very soon the app stopped responding and just became practically unusable. Looking into the AWS console I realised that the region had defaulted to US West, where Heroku is hosted in AWS US East. So the procedure to migrate was to create a new RDS instance in US East, and configure it the same way, and then copy the database across. With the postgres server in the same AWS zone as the Heroku web server, it works great again.

The procedure for migrating the data was:

pg_dump -Fc "postgres://sentryadmin:password@sentrydb.random.us-west-2.rds.amazonaws.com:5432/sentrydb?sslmode=verify-full" > sentry.dump
pg_restore --host=sentrydb.random.us-east-1.rds.amazonaws.com --username=sentryadmin --dbname=sentrydb sentry.dump

We are using the Cocoapod "Raven" in our iOS projects to log directly from iOS devices to our sentry server, so we can easily see what's happening with the iOS apps we've made. It's really handy to be able to watch the iOS apps remotely.

Update 18th August 2014: I've just changed the sslmode to verify-full from required now that AWS RDS supports certificate verification, as per the AWS Postgres docs. I'm also not sure that the pg_restore command above uses SSL, so you should use a temporary password for that restore, and immediately change the password afterwards, then ensure you set the Heroku DATABASE_URL with the verify-full option as well. I also neglected to add the blog post I initially used to get Sentry up and running on Heroku.

Developers Don’t Just Build 

12 June 2014

I love this description of developers that Horace Dediu wrote, in reply to comments about WWDC 2014:

Developers don’t just build. Using an analogy of building or construction, they are architects and designers as well as contractors and craftsmen and artists as well as builders. And not of just of houses but of cities and communities. They see and think through tools and techniques for building and innovations in building materials. Innovations which allow them to imagine first and, later, to build new cities in ways that were never before possible.

Thinking Like A Bézier Path 

28 May 2014

David Rönnqvist has created the best tutorial I've ever seen. Worth viewing just to play with the curve drawing.

Balance Your NSNotification Observers 

02 May 2014

One aspect of using NSNotifications I hadn't encountered before, is that you can add the same observer for a particular notification multiple times, which will result in that observer having it's method called multiple times.

I tend to balance out my own calls, which might explain why I've not seen it before, but in examining other code I came across this and I didn't actually know about this behaviour.