Mar
3

Alpujarras


Some more, older, photos from Andalusia, this time from the Alpujarras.

Mar
3

Montefrío

Some photos of our recent trip to to Andalusia, Spain.  Here we visit Montefrío, a town hidden in the mountains boasting a fascinating round, domed church and an old Moorish fort.

Dec
29

Removing elements from dynamic arrays in D

Removing elements from associative arrays in D is easy, as we can use the handy “remove” method. When it comes to regular dynamic arrays, however, the story is a little different. There is no such method for removing elements and the documentation doesn’t make it completely obvious.

To complicate the situation more, the technique required depends on the version of D you are using.
DMD version 2.060 is out and with it comes the deprecation of std.algorithm.indexOf. Instead, std.algorithm.countUntil should be used in its place.

Here is an example:

import std.stdio;
import std.algorithm;

void main(string[] args) {

	auto items= ["item1", "item2", "item3"];
	writeln(items);
	auto index = countUntil(items, "item2");
	writefln("Index of 'item2' is: %d", index);
	auto mutated = remove(items, index);
	writeln(mutated);

}

It generates the following output:

["item1", "item2", "item3"]
Index of 'item2' is: 1
["item1", "item3"]
Dec
26

QTD compile error using DMD (Solved)

I’ve just been struggling to build QTD on my Ubuntu box.  QTD is the D programming language binding for the QT framework.  The error I was getting was:

CMake Error at cmake/FindD.cmake:41 (message):
  D compiler is not found
Call Stack (most recent call first):
  CMakeLists.txt:65 (FIND_PACKAGE)

This is strange because DMD is installed. After some investigation I found that the compiler isn’t found because the cmake file (cmake/FindD.cmake) searches for the version using a regex in the output to “dmd” (around line 13):

string(REGEX MATCH "(Digital Mars|DMD32) D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}")

This is the guilty line. When I type “dmd” on my command line, the first line looks like this:

DMD64 D Compiler v2.060

This clearly doesn’t match the above regex. To fix the problem you can modify the regex above in the file “cmake/FindD.cmake” to look like the following:

string(REGEX MATCH "(Digital Mars|DMD32|DMD64) D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}")

This fixes the problem.

Apr
29

Hiking in the Alps

Here is a panorama of Walchensee in the German Alps (taken from the top of Jochberg).

Walchensee from the top of Jochberg

Apr
23

Happy Birthday ZX Spectrum

Sir Clive Sinclair’s ZX Spectrum is now 30 years old.

I have fond memories of playing Manic Miner and Jet Set Willy on this machine, as well as writing out computer programs from magazines.  This little box of circuits is probably what launched my interest in computing and inspired me to learn how to do programming.

Notice that the chiclet keyboard has come back into fashion, albeit without the rubbery keys that would sometimes get stuck, or just wouldn’t respond.

Look how things have changed over 30 years and imagine where we’ll be in 30 years time.

Anyway, enough reminiscing… happy birthday!

Apr
18

RESTful API Design

It seems that everybody loves REST and many people are quick to espouse the virtues of this light weight form of web services.  Implementing a good RESTful API isn’t, however, always as easy as it seems and there are many issues such as paging or supporting multiple versions of your API that can stump the avid developer.  This is an excellent video explaining pragmatic solutions to these and other problems when designing your own RESTful interface.

Mar
22

The Vice Guide To North Korea

With the death of Kim Jong Il being in the news recently, I was reminded of a really interesting documentary that I saw a while ago. Being quite uneducated about North Korea at the time and hearing people such as Christopher Hitchens describing it as being like a “1984 state”, I was interested to find out more about it so I started looking for information about it on the Internet.
I stumbled upon the “Vice Guide to North Korea”, an incredible look into North Korean society that was, quite simply, beyond anything that I could have imagined.

Mar
22

Regex Performance in D Programming Language

Note: The problem described in this post was for DMD v2.054 and it no longer occurs with the more recent DMD v2.058  (see below for details or view the discussion at the D Forums).

I am currently working on a Ruby project that uses a lot of regexes on large volumes of text.  It is currently running too slowly, so I decided to try to optimise it by implementing the regex matching code in the D programming language.  D has given me a lot of joy (compared to C or C++)  by making things like string (with Unicode) handling a breeze without taking the performance hit of supposed “productivity” languages.  I painstakingly reimplemented my Ruby functions in D expecting a huge performance boost (actually I expected an order of magnitude performance jump) but instead I was shocked to see that Ruby outperformed my D code by a significant margin.  The Ruby implementation was finished after 80 seconds, whereas the D program required around 280 seconds using the exact same regexes and the exact same input.

Read the rest of this entry »

Mar
18

The Renaissance of Indy Gaming

space_invader

In the olden days you could pick up a tape cassette containing a Spectrum or Amstrad game for a few pounds (yes, I’m British).  At this time, the gaming industry was in its infancy and the business side of the game was highly underdeveloped.  Games were written by a single (or a very small group) in squalid conditions and these programmers were like rock stars, or mad scientists working alone in their lab (complete with the associated lightning and electrical apparatus).  Some games turned out to be “smash hits” (Monty Mole, Manic Miner, Dynamite Dan to name a few), others were of very poor quality but hey, that’s the price you pay for experimenting.  How things have changed!

Read the rest of this entry »