It took me an unbelievably long time to grasp functional programming. In the lectures I took, it was described in terms of lambda calculus with lots of weird mathematical symbols that didn’t make sense to me.

However, little did I know that I had already learnt functional programming back in GCSE Maths, without even knowing it!

One of the really cool things covered by Abelson and Sussman’s classic series of lectures, Structure and Interpretation of Computer Programs (SICP), was how fundamental programming constructs could be implemented almost from nothing. This, of course, culminated in the implementation of Scheme within Scheme itself, but it’s interesting to look at some of the smaller building blocks.

The Android operating system (as does iOS, I believe) has a rather annoying “feature”. That is, whenever your device starts charging, its screen turns on, presumably to let you know that the device is now charging.

This sort of feedback is usually considered good interaction design. It’s important to inform the user when events occur. However, this must not come at the expense of annoying and inconveniencing the user.

I recently read a blog post dispelling arguments against HTTPS. I am certainly of the opinion that 99% of websites should use an encrypted connection. However, I do think critics of HTTPS do have some good points, and there are cases where an unencrypted connection is actually desirable.

A common misconception I’ve noticed amongst fellow programmers is the idea that constants can never be modified. Whilst it is true that a constant’s value may never change during runtime, it may certainly be appropriate for a programmer to modify it in the source code.