Categories

This details a project called language_design that I started September 2015 and worked on sporadically ever since. It was written in Scala.

The initial aim was to build a language that mixed aspects of Scala and Erlang. It would be strongly & statically typed, have actors, and be roughly functional. Functional in the sense that immutability was encouraged and functions were used everywhere, but purity wasn’t a big concern.

It had a feature where, given a function fun lines(reader: Reader): List[String] in scope and an r: Reader, you could call r.lines(). The point was to feel like objects (like Java), even the language didn’t have any. That was cool.

Actors would be typed, and could implement interfaces. Actors could only be sent messages it could handle. Example: an actor could implement the Sink[T] interface, handle message Next(item: Int), then be used wherever a actor Sink[T] was needed. Continue reading Programming language experiments

Recently I’ve been working on a closed-source application for a client. It’s an Android implementation of a recently invented card game, with both single player and multiplayer modes. I had to write a custom server for it (I chose the Play framework with Scala). The fact that the system had effectively two server implementations – one for single player coordinating bots, and one for multiplayer – combined with my lack of experience building such systems meant I created a lot of duplication when implementing the rules of the game. Continue reading Battling maven repository hosting

Towards the end of last year, I worked on a prototype physics engine based on a GPU Gems chapter – a realtime physics simulation running on the GPU. So far I’ve only written it for the CPU as I’ve never done any GPU work before. (judging by the problems I’ve had with the physics side of things, it was probably a good idea not to heap on an order of magnitude more GPU problems…)

Here’s a video of it in action:

After I managed to get rotation pretty much ‘working’ – it still does odd things – it worked pretty well. It’s operating on the pixel/metre scale, because I was lazy… so everything here is massive skyscraper-sized entities. Quite by accident, it appears to have ‘conservation of momentum’ – if I draw a ‘C’, and fill it with particles it will accelerate like a rocket snail.

Eventually, I’ll work out how to port it to GPU, hook it up with OpenGL, and make it 3D… but that’ll be a while.

In the meanwhile, read the code at Github, and… I’ve not got the build properly set up on Jenkins so you can’t download it.

I’ve recently been working on a game called Balloon Box. It’s a 2D desktop platformer in which the player controls a cardboard box, navigates through an abandoned factory which is known for its pneumatic material transport system. (When I implement it) you will have to avoid cardboard-dissolving acid and knife racks, and collect balloons and batteries. Read the story on Github.

Yesterday, I quickly hacked up an implementation of the Space Colonisation algorithm, for growing trees. By trees, I don’t mean the binary trees – the living sort, just represented by segments and forks.

My inspiration was from Procedural World and this article. The idea of Space Colonisation is to colonise/fill a limited area. A tree like this would grow from the bottom up (as they usually do), gradually taking up all the available space. Trees generated by this algorithm (as far as I know) rarely have intersecting branches, and look organic.

I recorded myself singing the Misty Mountains song from The Hobbit movie (with some extra verses from the book). This is just me, with ~23 tracks. I filmed the video some time after the recording, so the A/V isn’t in perfect sync (and I need to open my mouth more).