Showing posts from 2014

Berlin guide for intellectuals, part 1.

Berlin: "Capital city of Germany.  Poor but sexy.Intellectual: "A person who places a high value on or pursues things of interest to the intellect or the more complex forms and fields of knowledge, as aesthetic or philosophical matters, especially on an abstract and general level."

Part 1) A mini guide to Berlin for geeks, nerds, makers, and other thinking misfits.  I'm trying to list things here unique to Berlin, and Germany which may pique the interest of the intellectually curious.
I'm mainly writing this for my many friends who are visiting over the summer... but if you have any tips, or URLs to interesting things please email me ( ) or leave a note in the comments. Thanks! I have a *lot* more to add, but this is a good start I think. Hope someone finds it useful.  Sorry for the pretentious name ;) Club Mate “Do you have any more of that disgusting energy drink? It’s gonna be a long night.” — Julian Assange

Move over coffee!  Each seriou…

Dear Apple, please make Swift more fun

Dear Apple,

it was with great pleasure that I see you enjoy 3 letter key words.  Your use of 'let' and 'var' were inspired!  These allow people to line things up nicely in a 4 space world.  With 3 letters for the keyword, and 1 for the space.  Brilliant!

However python has more elegant type setting than Swift in this case.  It uses "def" rather than "func".

It is not too late to make Swift more fun!

For your consideration:

func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }
... now let's remove that c at the end of func...

fun sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }

See how the function name nicely lines up with the variables below!  That is type setting gorgeousity right there that is!

Pretty please, think hard about renaming func.  To either "fun" or to…

Statically checking python

With python, type checking is usually done at runtime.  Python will tell you of type problems when you run the code.  At runtime Python will tell you if there is a problem with the program 1 + 'a'. Since the types int and string can not be added together with the + operator.  This is why Python is often considered only a dynamically typed language, not a statically typed language.

However there are now tools to type check your python programs before you run them. Unfortunately it is not a widely known that you can type check python programs before you run them!

But what exactly are the benefits of static type checking anyway?  If you have 100% unit test coverage of your code, shouldn't that catch all the same bugs? Yes, it probably would. However, not all teams unit test all of their code.  Also, sometimes it might be dangerous to run the code to check for errors, or maybe the code takes a long time to run before it encounters errors.

You can check that:
interface meth…

Ba Ba Dum review

A new language learning website has come out, called Ba Ba Dum (build 128, version 1.1.1).  This is my review.

tl dr; don't use it for learning languages where the gender of the words matter - like in German.

I first heard about the website through some UI/UX/js/css/web people (thanks Leigh and Paul!).  Not only is this interesting to me from a web app perspective (that's what I do for my day job), but I'm also very interested in making games, as well as learning languages.  So, naturally I checked it out.

It's a great start, and very well made!  Not only did they draw all the illustrations, but made the fonts!  It's also, I think, a great example of content marketing, ie making something useful for people showing off your skills.  This project shows that these people can produce a quality product (see making of, and the credits).  Reviewing a project fairly without knowing the brief is always impossible.  So I'm reviewing it based on what I see of th…

Learning German faster

(NOTE: this article is a work in progress, as I try and gather references and evidence for all the claims made in the video.  Please feel free to comment if you have any relevant links)

In this video Chris Lonsdale does a talk about principles and actions that can speed up language learning.  I think it's very interesting, and useful... but I'm always sceptical.  Learning how to learn is important, and this video attempts to share some effective techniques for learning, and the principles behind them.

The arguments used in the video are not referenced to academic standards since it is a very short talk - and not an essay.  However the presentation is convincing, and it does cover a number of pieces of advice I've read in other places.  I'm going to try and provide links to further reading on each of the techniques and pieces of advice listed.

What doesn't work? He mentions some things that don't work.
Talent.Immersion. Talent is needed. Citations needed.

He ad…

Welcome to your new NSA partner network. Tech art in Berlin.

Whilst walking around the Afterglow art hack day opening in Berlin, my phone buzzed as I had received a text message.  Opening up my phone I saw this:

I immediately had a scary thought.  "Had someone hacked into my phone?"

My next thought was "oh, someone is hacking the mobile networks".  "Damn, I forgot to turn my phone off like I usually do before coming to hacker events".

My phone didn't have service to either of the networks it usually connects to, so someone was definitely jamming the phone systems.

This message was a very impressive piece of tech art indeed.  It made me think, and feel something.

We are starting an EU/UK tech online magazine. Want to know when it is released?
Email notify me when it's ready
Want to be interviewed?

"The revolution is over. Welcome to the afterglow." reads the opening line to the transmedial festival in Berlin.

The transmedial festival brought back Cyber punk type thoughts from the last 15-20 year…

redmine, Bad Gateway error, file upload max size

Redmine and other ruby on rails apps can have issues with large file uploads or file uploads with a slow internet connection.

In redmine you may get the dreaded 502 Bad Gateway error showing up in the user interface.

Here are the pieces: Apache, unicorn, rails, and redmine.

Short version is you need to set the timeout config variable to something higher... like perhaps 120 seconds.  It's not the best solution, but it will let you upload files.

Here is a blog post which describes unicorn.rb configuration.

There's a setting in the redmine administration section of the tool to increase the maximum file size if you need to do that.

You may find apache error log entries like this:
[Thu Jan 30 11:11:08 2014] [error] (103)Software caused connection abort: proxy: pass request body failed to (localhost) [Thu Jan 30 11:11:08 2014] [error] proxy: pass request body failed to (localhost) from 1x.1x.1x.1x ()
Also, you may also need to change your web server con…