Tyray: a ray tracer in Rust

Over the holidays I wrote a tiny ray tracer in Rust. A ray tracer is a program that renders a 3D image by simulating the way light travels between light sources and a camera. Advanced versions of ray tracing techniques are used to render 3D movies such as the famous …

Catena: SQL on a blockchain

A blockchain allows different entities share a database without having to entrust that database to a single entity. Catena provides an SQL database on top of a blockchain, providing all the benefits of blockchains (resiliency, distributed operation, openness) while providing a familiar interface to its users.

Rethink.swift – A Swift driver for RethinkDB

RethinkDB is the first open-source, scalable JSON database built from the ground up for the realtime web. Rethink.swift is a work-in-progress framework that allows interfacing with RethinkDB from the Swift programming language. Connecting and querying RethinkDB from Swift is straightforward and is frictionless because of all the syntactic sugar Swift provides …

Chartly: build data visualisations in the browsers using puzzle pieces

Chartly.js is a web component that allows end users to create (‘program’) a chart using the Blockly visual programming environment. Charts are ‘compiled’ to a JSON specification for the chart. At run time, Chartly interprets the JSON and draws the chart using d3.js. Chartly is open-source under the MIT license. …

Prevent form spam using in-browser proof-of-work

Automated bots abuse comment forms to put advertisements on websites. Traditional CAPTCHAs prevent spam by exploiting the fact that computers cannot solve a particular problem easily, and that humans that can solve them are scarce/expensive/slow (but available in the regular use case). Proof of work, by contrast, exploits the fact that …

A recursive descent parser generator in JS

Ll.js provides a simple way of parsing about anything using a recursive-descent algorithm. The grammar to be parsed is written in a friendly DSL (domain specific language) in JavaScript itself that resembles EBNF. Each parser term can be annotated with a function; when the final parse tree includes the term, …

TJShow: an interactive show controller

TJShow is show controller software to create highly interactive and highly integrated shows. With the easy-to-use interface, you can create rich multimedia timelines and interaction, and control a plethora of devices and media using industry standard protocols. TJShow is the result of a research project I performed in 2006 together …

Cactus: the 3D engine I wrote when I was 15

Cactus is a software 3D rendering library written in clean C/C++ and is a port of Peter Walser’s idx3dIII engine in Java (currently nowhere to be found on the internet… luckily, the Internet Archive still has a copy; original source code is available here). Although it is outperformed by 3D …