How to Read 100s of Millions of Records per Second from a Single Disk

This article gives an overview of the implementation and performance of two recent additions to LocustDB, an extremely fast open-source analytics database built in Rust. The first addition is support for persistent storage, the second is an lz4 compression pass for data stored on disk or cached in memory. Benchmarking LocustDB on a dataset of 1.46 billion taxi rides demonstrates excellent performance for cold queries, reaching > 95% of sequential read speed on SSD and > 70% of sequential read speed on HDD. Comparing to ClickHouse, queries with similar data volume are as fast or faster, and disk space usage is reduced by 40%.

Continue reading

How to Analyze Billions of Records per Second on a Single Desktop PC

Introduction

This article gives an overview of LocustDB [1], a new and extremely fast open-source analytics database built in Rust. Part 1 gives some background on analytical query systems and my goals for LocustDB. Part 2 presents benchmark results produced on a data set of 1.46 billion taxi rides and demonstrates median speedups of 3.6x over ClickHouse and 2.1x over tuned kdb+. Part 3 is an architecture deep dive that follows two SQL statements through the guts of the query engine. Part 4 concludes with random learnings, thoughts on Rust, and other incoherent ramblings. Continue reading

New roadmap after finishing multiplayer

I now have a working implementation for a multiplayer server that allows for running a game across separate machines that can run both the JavaScript and the JVM version (link to demo). It’s too slow to be really usable yet, but all the core algorithms are in place. Multiplayer was the last difficult technical problems that I wanted to tackle, so from now on I intend to focus mostly on improving existing features and getting the word out about CodeCraft. For this post, I have compiled an overview of what I want to do on the technical side of things over the next few weeks. If you have any feedback or suggestions, let me know in the comments or on twitter. Continue reading

Multiplayer

Ever since I began working on CodeCraft, I wanted to implement a multiplayer mode which would allow players anywhere in the world to pit their AIs against each other. With most other parts of CodeCraft taking shape, I now spent some time working on that aspect of the game. In this post I want to talk about some of the design challenges and outline my plans for multiplayer. Continue reading

@CodeCraftGame

CodeCraft now has a twitter account which I will use for frequent updates about new features. I think Twitter is a nice fit for this, and I should also be able to integrate the feed into the website which is neat. I will still use this blog whenever I have more substantial content.

CodeCraft.js demo

There is now a working Javascript/WebGL version of CodeCraft, go check it out: http://cswinter.github.io/codecraftjs-demo/

Getting this to work was surprisingly easy, mad props to everyone behind Scala.js for creating such an awesome piece of technology.

I will now be adding a Javascript API and an in-browser editor and command line and use that to create an interactive tutorial. So there is still some work to be done, but I expect to have most of this up and running by early August.

Some thoughts post-launch

More than a hundred people clicked through to the CodeCraft tutorial over the last few days, which is a nice start. I don’t have any other statistics though, so I have very little visibility into how many of those are actually using CodeCraft, or don’t know/like Scala/Java, or think the idea or implementation suck, or don’t have the time/patience to perform all of the setup and go thought the tutorial. If you have any thoughts on CodeCraft, do share them, it really helps me figure what I need to be working on!

Looking forward, I think at this stage there is not much point to improve the actual game. My main focus will now shift to growing the user base and gaining more insight into what people are looking for. I have two main projects to that effect: The first is to set up an actual website which can serve as a platform to promote CodeCraft and gather some statistics. The second one is to use Scala.js to create an interactive Javascript version of the game that runs right in your browser. This will eliminate the need to perform any setup and make CodeCraft accessible to a much larger audience. As always, I will keep you informed of any progress.

CodeCraft alpha launch

Today, I am releasing the alpha version of the real-time strategy programming game CodeCraft. (previously called CodingGame, but I want to avoid confusion with codinggame.com). This is the first public release, so there will be various bugs, rough edges and missing features, but all the core functionality is there now. There will be regular releases from now on to incorporate your feedback.

I put up a tutorial and overview of the API on github, so if you want to give it a try go on and head over there. Currently, CodeCraft can be used with both Scala and Java. Happy coding!

May Progress Update

Edit: Didn’t quite manage to finish everything today, so release will be tomorrow (Friday), or on Monday at the latest.

The game mechanics, API and graphics for CodingGame are starting to look decent, and I am now ramping up for an alpha release on June 11. Until then, I will be tying up various loose ends and complete the following remaining tasks: Continue reading