home page

Welcome to my blog.

C++Now 2016 videos available
17 july 2016

My C++Now 2016 talks are now available on YouTube!

First talk:
Implementation of a multithreaded compile-time ECS in C++14

Second talk:
Implementing static control flow in C++14

All the material is available here, on GitHub.


trip report - C++Now 2016
16 may 2016

I’m back from C++Now 2016, where I participated as a speaker and as a student/volunteer.

I’ve written a brief trip report. I had a fantastic time at the conference and wanted to talk about my experience.

The report is mostly focused on my favorite code snippets/techniques shown during the talks and on my sessions (and the feedback I’ve received on them).


meeting c++ lightning talks
12 december 2015

My Meeting C++ 2015 talks are now available on YouTube!

First lightning talk video:
‘static_if’ in C++14

Second lightning talk video:
“Meaningful” casts

All the code is available here, on GitHub.


new tutorial, meeting c++
06 december 2015

I’ve uploaded a new Dive into C++14 episode on YouTube:

  • “Dive into C++14 - [3] - Generic "unique resource” wrapper"
    Watch on YouTube

The third tutorial in the “Dive into C++14” series covers the implementation of a generic “unique resource” class, with the same ownership semantics as std::unique_ptr. The tutorial shows the implementation of the resource class and the abstraction of the behavior of several resource types (heap-allocated pointers, OpenGL VBOs, int-based-handle APIs). It also shows a simple implementation of “scope guards” as unique resources, to show how abstracting “uniqueness semantics” can be useful even in unexpected situations.

I’m currently in Berlin’s Tegel airport, flying back home after a fantastic experience at Meeting C++ 2015. I had a great time at the conference, and also gave two lightning talks.

You can already find the code for them on Github - when the videos will be uploaded I will update the repository readme.

my cppcon 2015 talks
30 october 2015

Hello everyone!

My CppCon 2015 trip report and talks are now available for free on YouTube.

[VLOG] CppCon 2015 report, upcoming tutorial, Patreon
Watch on YouTube

Talk videos:

Enjoy! You can find all the code and slides on this GitHub repository.

Also, I’m now on Patreon - your support is always extremely appreciated :)

dive into c++14!
6 june 2015

I’ve published two new video tutorials on my YouTube channel. The videos introduce a new series: “Dive into C++14”.

Like the previous series, dedicated to the C++11 standard, “Dive into C++14” will show the convenience and power of the latest standard (C++14) through videos regarding various topics.

The format of the videos is what makes “Dive into C++11” and “Dive into C++14” different from other tutorials: well-commented and well-formatted independently compilable chronologically sequential code segments will show the audience the thought process behind writing modern C++14 code.

Dive into C++14 - [1] - Introduction to C++14 core language features
Watch on YouTube

The first video is a brief introduction to some of my favorite new C++14 core language features. The target audience is newcomers to the C++14 standard who already have some experience with C++11.

Dive into C++14 - [2] - for_each_argument explained and expanded
Watch on YouTube

The second video covers a very interesting code snippet originally posted on Twitter by Sean Parent: for_each_argument.

It shows and explains the usage of C++14 compile-time integer sequences, and analyzes a very interesting iterative implementation of an alternative version of Sean’s function that takes the desired arity as a template parameter.

Feel free to fork/analyze/improve the source code on my GitHub page. You can find previous episodes here: Playlist

new dive into c++ episode
21 march 2015

I’ve uploaded part 5 of Dive into C++11 on my YouTube channel.

You can watch the video here.

In this episode we’ll see various ways of implementing entity management in your games, starting with a very simple “one vector per object type” approach. We’ll consider a “polymorphic inheritance tree” approach as well, and finish the video by re-implementing our Arkanoid clone with a simple but effective component-based design.

The goal of the episode is showing the thought process behind the design and improvement of an entity management system.


delver's choice
01 february 2015

This year, me and some of my friends participated to the Global Game Jam 2015, a worldwide 48 hour game-development jam.

We made an accessible, simple and fun dungeon-crawler that can be played only using 4 numeric keys. You can try find it here!.

The game is currently work-in-progress. I’m improving the code and the balance and adding more features.

Similarly to Open Hexagon, the game is free, multi-platform and open-source. The code and the assets can be found on my GitHub page.

Enjoy! Looking forward to hear your thoughts or receive your contributions :)

new year, new tutorial video
06 january 2015

Happy new year everyone! Hope you enjoyed your holiday.

A new tutorial video is available on my channel:

Handle-based entity management experiments

In this video I experiment with entity management and storage. I show a smart-pointer cache-unfriendly approach and a more efficient (yet harder to implement) handle-based cache friendly approach.

Hope you find it interesting!

OH2.0-RC2 .deb available
22 october 2014

Andy Meyer, a Linux user and Open Hexagon fan, has packaged the 2.0-RC2 version for Debian systems.

Thanks Andy!

You can find the package here or on the projects page.

Servers are still down at the moment. I’m very busy with university and other projects - I hope to find some free time soon to work on them.

CppCon2014 video and stuff
09 october 2014

The official recording of my CppCon2014 talk, “Quick game development in C++11/C++14” is now available!

Hope you’ll find it interesting.

I’ve also added a new work-in-progress section to my site, “stuff”, where I will keep track of things I like and share them with everybody.

post-summer update
27 september 2014


I’ve recently uploaded a video on my YouTube channel to give everyone some updates about my projects and share my new experiences.

To put it briefly, I’ve had a very busy summer and couldn’t find much time to work on my main projects such as Open Hexagon or Operation Bloodshed. Many minor updates to them and to my libraries were however released.

In september I’ve also spoke at CppCon 2014 in Bellevue about game development with C++11/C++14. It was an amazing experience!

The slides are already available, the video of the talk should be released soon by the CppCon staff, along with an interview by Channel 9.

That’s it!

I hope I’ll be able to find more time to work on my projects and finally release OH2.0.

open hexagon 2.0 RC2 released
02 may 2014

Get it on the projects page!

Please report issues and give your feedback on the official Facebook page.

dive into C++11 - episodes 3, 4
05 january 2014

Hello everyone, hope you had great holidays!

I’ve finished part 3 and 4 of my C++11 tutorial series, Dive into C++11.

They’re available on YouTube.

Part 3 talks about C++ variable lifetime and manual memory management. Part 4 explains what smart pointers are and how to use them.

I’ve also uploaded a new operation bloodshed devlog.

Hope you find the videos interesting!

(I’ve also added links to the Open Hexagon 2.0 release candidate in the downloads page. 1.92 servers were shut down so that version may have issues starting as the IP address does not exist anymore. 2.0 RC1 should be playable.)

new tutorial - dive into C++11 [2]
01 december 2013

Let's expand our Arkanoid clone and our C++11 knowledge.

Learn more about `constexpr` and uniform initialization, and how to deal with FPS and framerates.

Watch on the TUTORIALS page.

new tutorial - dive into C++11 [1]
24 november 2013

Let's build an Arkanoid clone from scratch in 40 minutes, using C++11 and SFML 2.1!

Watch on the TUTORIALS page.

moved to new host
05 november 2013

Many, many thanks to Daniel Porter!.

operation bloodshed
07 october 2013

I’ve been working on a new project lately, operation bloodshed, an attempt at the creation of a spiritual successor to Operation Carnage, one of my favorite childhood games.

operation bloodshed

Operation Carnage is a 1996 abandonware arcade game with a very simple but addicting and fun gameplay. It has a very interesting shooting/strafing mechanic that is easy to learn but hard to master. Unfortunately, it also has some design flaws that I’ll try to solve in my game.

operation bloodshed

The gameplay is very fast-paced, a typical feature of overhead retro-shooters. I worked on persistent blood particle effects and used my custom pseudo-physics engine, SSVSCollision, to deal with collisions and enemy movement. It works quite well so far.

operation bloodshed is very work-in-progress, but I’ve recorded some video devlogs that you can watch on my youtube channel.

Here is devlog #13 showing some gameplay!

The project will be free, open-source and crossplatform.

I’m also trying to maintain an updated devlog here on TIGSource.

ludum dare 27 - 10corp
26 august 2013

I’ve finally participated in Ludum Dare 27, a 48 hour game-development competition.

My game is 10corp, a reflex-based, frustrating, puzzle platformer.


The game is written in C++11, using only SFML2.1 and JsonCpp as external dependencies. It is written using my personal “SSV framework”, written from scratch, which is free, open-source and available on GitHub.

I couldn’t manage to polish the game as much as I wanted to. There only are 7 playable levels, no gfx options, no key rebinding, et cetera.

Still, being my first Ludum Dare, it was a very interesting and learning experience and I’m glad (and surprised) I managed to create something (in my opinion) worth playing that could become a fun little game with additional polish.

Hope you enjoy my entry!

Gameplay #1 Gameplay #2

Also, Open Hexagon news:

09 august 2013

After adding discount to my static website generator, I was unsatisfied with the C code introduced in my project:

extern "C" 
    #include <mkdio.h>
// ...
FILE* f1 = fopen(mdPath.c_str(), "r");
FILE* f2 = fopen(mdResPath.c_str(), "w");
MMIOT* in = mkd_in(f1, 0);
markdown(in, f2, 0);

I looked for alternatives, but I couldn’t find any native C++ Markdown library or any C++ wrapper for C Markdown libaries. So I decided to create a C++11 wrapper for discount, called DiscountCpp. It currently implements very few functions from Discount, but offers a very easy-to-use interface to quickly convert Markdown to HTML.

The updated code looks like this:

#include <DiscountCpp/DiscountCpp.h>
// ...

Now I can sleep in peace.

P.S.: I also implemented syntax highlighting on the site thanks to highlight.js.

markdown and more
07 august 2013

I added discount to my static website generator.

Writing blog posts is now much easier!

ffmpeg, twitch.tv

I’ve also started occasionally streaming myself code on twitch.tv. It was painful to set up, but these are the commands I use:

  • Setting up loopbacks to record both microphone and pc audio

      pactl load-module module-null-sink
      pactl load-module module-loopback
      pactl load-module module-loopback
  • Launching the stream itself

      KEY="<your twitch.tv key here>"
      ffmpeg -f x11grab -s 1920x1080 -r 20 -i :0.0+1680,0 -f alsa -ac 2 -i pulse -c:v libx264 -preset ultrafast -pix_fmt yuv420p -s 1920x1080 -threads 4 -acodec libmp3lame -ar 22050 -qscale 3 -b 712000 -bufsize 512k -af aresample=44100 -f flv "rtmp://live-ams.twitch.tv/app/$KEY"
  • After launching the stream

      pavucontrol # to set up loopbacks redirection

school finals results

After the last blog post my exam score was announced: I graduated with 100/100 cum laude!

This is a great achievement for me. I am already looking forward to start computer science in university in a few months.

done with school finals
11 july 2013

Today was the last day of school finals. I'm very happy about how my exams went and even happier that I finally have a lot more free time!

I've also been working on Open Hexagon 2.0, which will be a big gameplay update with new levels and mechanics. Check the beta out on the official Facebook page.

open hexagon v1.92 linux release
22 june 2013

Finally, a multi-architecture (both 32 and 64 bit) .tar.xz archive is available!

Download on the projects page, as usual. :)

open hexagon v1.92 released
15 june 2013

Friend list and key customization added. (minor update)
If you're using the auto updater to update, delete 'config.json' from your folder first!

open hexagon auto updater v1.1 released
15 june 2013

Rewritten from scratch... opening the way for cross-platform updating.

two new video tutorials available!
11 june 2013

I've created two tutorial videos where I explain how to speed up collision broad-phase detection using a 2D grid spatial partitioning algorithm.
Check them out in the tutorials section!

reinventing the wheel + etc
10 june 2013

In the latest months I've been mostly working on my libraries that you can find on GitHub.
I've "reinvented" the wheel by creating my own cross-platform filesystem and my own template system (similar to CTemplate). You can find both of them in SSVUtils, on my GitHub page. Pull requests and comments are greatly appreciated!
I am happy to announce that the newest version of this website is generated using those libraries, without any Boost or CTemplate dependency.

Other news: real life is taking a lot of time away from programming. I will have my finals this month, and then I'll get into computer science education as soon as possible.

I've also added a donation button to the website: since I'm currently unemployed every donation would be really helpful, especially in paying the server. Consider donating if you like my work :)

Hopefully I'll find the time to make some new tutorials/youtube videos before my finals. Stay tuned!

back to work, update
07 may 2013

Hello everyone, I've been on vacation for a week and I'm back at home now. I'm very busy with school (final exams are in about 1 month), but I will use most of my spare time to work on my projects.

Current development is on Open Hexagon updates, but also on my libraries and on experimental prototypes. I've also added a donation button to the site, which you can use if you'd like to support my work.

I will try to keep you updated in the following weeks!

open hexagon v1.91 released
09 april 2013

Server improvements.

open hexagon v1.9 released
29 march 2013

A brand new level pack and an auto updating system!

open hexagon v1.84 released
15 march 2013

Security and performance update.

Download on the projects page.

open hexagon v1.83 released
14 march 2013

Security update.

Download on the projects page.

open hexagon v1.82 now available for linux
12 march 2013

Thanks to Lukasz Magiera (deb port) and Ethan Lee (tar.gz port), Open Hexagon v1.82 is now available on Linux.

Download on the projects page.

open hexagon v1.82 released
11 march 2013

Bugfix and minor improvements update.

Download on the projects page.

open hexagon v1.81 released
10 march 2013

Bugfix update. Scores have been unfortunately wiped for security reasons.

Download on the projects page.

open hexagon v1.8 released
10 march 2013

Online functionality update! High scores, leaderboards, version checking. Also, a lot of bug fixes and improvements.

Download on the projects page.

.deb packages for OH v1.7 available
06 march 2013

Download on the projects page.

Thanks Łukasz Magiera! :)

open hexagon v1.7 released
03 march 2013

Brand new 3D effects, a circular level, a lot of bug fixes and code cleanup. Download it and share your creations :)

Update trailer

Update: Linux port released! Thanks Ethan Lee!

"tutorials" section created
12 february 2013

I added a new section to the website where I will share my tutorials and my articles. Check it out!

open hexagon v1.6 released
14 january 2013

Bug fixes, custom sounds, and other small changes. Download from the projects page.

open hexagon v1.52 released
01 january 2013

Fixed some annoying bugs. Download from the projects page.

blog under construction
29 december 2012

When the code that generates the blog entries is ready, the blog will be displayed right here, on the home page. Stay tuned!