Skip to content
View nsensfel's full-sized avatar
Block or Report

Block or report nsensfel

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nsensfel/README.md

Welcome to my GitHub profile

I am currently looking for a career opportunity in software development for projects in the European space industry. Here's my LinkedIn account, and my personal website.

The collection of repositories here is mostly restricted to projects I do in my spare time. These do not generally involve anything related to embedded systems programing, as I do not wish to be working on the same challenges at work and at home.

Below is a list of projects I am currently working on. Do not be fooled if GitHub indicates that the last commit was made a while back: it doesn't account for branches, and I tend to make very long branches which I merge back into master only when I deem the branch's feature has been fully completed.


relabsd

Daemon that turns your input devices into joysticks by converting relative axes into absolute ones. It was originally intended as a tool to allow the use of the SpaceNavigator (a 3d mouse, which is definitely an oddity) as a 6 directional joystick (something supported by every input library), but I made it generic enough that it can be used for other purposes.

Website: Not available yet.

Related repositories: main repository


Tonkadur

Compiler and languages for narrative orchestration of interactive media.

Coded in Java.

This is an alternative to Inkle's Ink and Yarn Spinner: a language allowing you to easily describe the narrative of a game, which is then interpreted by the game engine to present the player with scenes, characters, dialogues and reply options.

Tonkadur distinguishes itself by not using just a single language, but two: Fate and Wyrd.

Fate is what one would expect for narrative scripting (with some extra bells and whistles, of course). It's a strongly typed language with clear LISP and C inspirations. The objective for Fate is to provide the user with as much tool as they need to concisely describe their narrative, while also providing tools to greatly reduce the risks of mistake. It goes beyond what is usually available for this type of language, with reference manipulation, lambda functions, loops, and structures.

Wyrd is closer to a RISC assembly language. Very few instructions are available when writing in Wyrd, and it's a good thing: the objective here is to make it extremely easy to add support for Wyrd to an existing engine. Tonkadur simply compiles Fate to Wyrd, allowing users to have access to a very large array of instructions when writing while not having to worry about the implied complexity this adds to properly supporting the language.

Of course, this comes with a price: performance is not as good as if Fate was interpreted directly. However, in the context of narrative scripting, WCET is not exactly considered a critical factor.

This project is meant to be used in Tacticians Online, but as with Ataxia, it is completely separate and can be used by anyone.

Website: https://tonkadur.of.tacticians.online/

Related repositories: main repository, interpreter (Python 3), interpreter (Elm), interpreter (Discord/Python 3).


Tacticians Online

Multiplayer browser game.

Server coded in Erlang, client coded in Elm. Playable demo available at https://tacticians.online, except when my dying router has a breakdown.

Creating a multiplayer game is always a nice, endless source of challenges. It might not get down to low-level programming, but it does involve tackling issues from a wide range of programming fields that complement those I handle at work, be it networking, database management (see my Ataxia project), GUI, procedural asset creation, multi-threading, web development, or system administration.

While this is a pet project, I do take it seriously and learn about legal procedures/obligations in order to ensure its success, be it data privacy laws or trademarks (which I registered in both the EU and the US).

Website: https://tacticians.online

Related repositories: client, server, data set, browser plugin, database management system, misc. design stuff, narrative scripting.


Ataxia

Distributed NoSQL database for Erlang.

Coded in Erlang. Still missing the most important features.

This is meant to be the database interface for Tacticians Online. The targeted environment is that of a large collection of heterogeneous small servers (e.g. some cheap ARM development boards) interconnected by some pretty basic Ethernet (so bandwidth usage is the main scalability limiter). The whole database has to be kept consistent even when a transaction fails (well, the whole ACID properties are meant to be verified) as well as when a node goes down (those are cheap boards, after all).

It uses its own language for queries, where the user basically builds the abstract syntax tree of a function to either select of modify a particular item.

This project is still in its early stages of development. Indeed, the whole "distributed" and "fault-tolerance" parts are still missing. I do already use it for Tacticians Online though, with it running on a single node with all the limitations that I expect will end up being required in its final form (e.g. each query can only access a single entry).

Website: Not available yet.

Related repositories: main repository.


JabberHive

Distributed Markov-chain based reply-bot.

Coded in C and Python.

Construct a reply-bot by networking program nodes. These nodes are split into three categories:

  • Gateways, which interact with things other than JabberHive (e.g. IRC, Discord, or the command line).
  • Filters, which transform JabberHive queries and answers.
  • Servers, which store knowledge and perform the Markov-chain sentence generation.

Website: https://jabberhive.org/

Related repositories: See related tag.

Pinned

  1. relabsd relabsd Public

    Turns your input devices into joysticks by converting relative axes into absolute ones.

    C 16 1

  2. tabellion tabellion Public

    Verification tool for VHDL (or at least the prototype of one).

    Java

  3. tacticians-client tacticians-client Public

    Web-based client for Tacticians Online, written in Elm.

    Elm 1

  4. jabberhive-irc jabberhive-irc Public

    Gateway to the Internet Relay Chat for JabberHive chatbots.

    C 1

  5. tacticians-server tacticians-server Public

    Server for Tacticians Online, written in Erlang.

    Erlang 1

  6. tonkadur tonkadur Public

    Narrative scripting/programming tool. Write stories in your favorite editor using a feature-rich language, compile them into a very small and simple language to easily integrate them into your game.

    Java 2