Open Source projects
Below are a few of my open source projects, currently published on my Gitlab and Github pages.
I’m also contributing to other projects such as Faraday, the Clojure DynamoDB client; Hickory, a library for parsing HTML into Clojure structures; and TickedPriorityQueue, a small .Net library for priority-based event ticking.
Relevance is a smart tab organizer for Chrome, written in ClojureScript.
It keeps private statistics of how long do you spend reading a page. When you activate it, it’ll create a natural arrangement sorting the tabs by a heuristic based on the time you’ve spent on the page and the site it belongs to. It will also decay these statistics, so that pages or domains you haven’t visited in a while gradually become less relevant.
It’s built using Khroma, re-frame and
You can find the repository on Gitlab. Here are the posts related to it and a longer description with version notes.
Macchiato is a new ClojureScript project started by the indefatigable Dmitri Sotnikov. The goal is to provide a platform for building ClojureScript-based apps on top of Node.js
It’s greenfield work, since up until now most effort for ClojureScript has been on the browser side. I am currently helping on defining database access. This has turned out to be a small library factory, as we test different approaches on a scratchpad project and spin out sections that we realize can be useful libraries on their own (such as macchiato/sql and macchiato/futures).
Macchiato and its satellite libraries are released under the MIT license.
Khroma is a library providing idiomatic Clojure access to the Google Chrome extension API. It’s distributed as an Eclipse-licensed ClojureScript library.
Khroma was started by Suprematic, and it’s still available on their Github repository. I took over active development while working on Relevance, an experimental tab analysis and organizer. I also created Khroma-tests, a set of examples and tests handling the very peculiar case of testing a Chrome extension.
khroma-tests is included on the main khroma repository as of release 0.3.0.
Tropology is both an experiment on visualizing thematic conceptual relationships, as well as a sandbox in which to test Clojure libraries and methodologies. It periodically crawls TVTropes.org, parses its content, stores it into a PostgreSQL database, then lets users walk through the topics discussed while visualizing a concept interest graph.
It’s built using Reagent as a React wrapper and following the re-frame pattern for reactive programing. It’s released under the Eclipse Public License.
You can read more about Tropology on the articles I’ve written about it on this site.
Kinect 2 Remote
The Kinect2Remote is a MIT-licensed .Net library for transferring Kinect 2 body information over the network using RabbitMQ. It allows for sharing a sensor across multiple machines, off-loading heavy calculation to remote computers, centralizing data from multiple sensors, and many other uses not available directly on the Kinect2 SDK. Users can easily write their own body-processing functions as plugins and include the resulting data on the information being sent.
I have used it on multiple interactive installations to transfer body information from multiple Kinects into a single rendering machine. This allowed us to share data and allow remote computers to implement more expensive heuristics without interfering with rendering.
UnitySteer is an open-source MIT-licensed AI library of steering behaviors for autonomous agents, which can be used to have a group of agents reacting to each other such as flocks of birds, human crowds or animated particles.
UnitySteer provides granular performance control, allowing you to configure how often are an agent’s force calculations run (otherwise they’re just interpolated), how many agents get updated per frame, and their priorities.
It’s in use on multiple Unity projects, both by myself and by others, including our interactive installations for the particle agents you can see on the video on the home page.
There’s two UnitySteer-related repositories:
You can find the latest articles here.
LibNoise.Unity is a C# LGPL-licensed library for coherent noise generation that can be used to procedurally create natural behaviors and formations that do not appear repetitive to the viewer.
It is provided as a set of C# classes that you can build into a DLL, or embed on your project. LGPL is much more permissive than GPL, but make sure you read the license before embedding it on an application.