[
    {
        "lang": [
            "Rust", 
            "WASM"
        ], 
        "link": [
            {
                "href": "https://olivia-ni.com/", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/obj-site", 
                "name": "Code"
            }, 
            {
                "href": "https://olivia-ni.com/pdf/out/portfolio-small.pdf", 
                "name": "PDF"
            }
        ], 
        "name": "Olivia Nava Igual", 
        "tags": [
            "Web"
        ], 
        "imgs": [
            "olivia1.jpg", 
            "olivia2.jpg"
        ], 
        "desc": "In 2025 I helped [Olivia Nava Igual](https://www.olivia-ni.com/)\ndesign, implement and host her artist's portfolio, including a few\neaster eggs and a responsive design that works well on mobile,\ndesktop, and print.\n"
    }, 
    {
        "lang": [
            "Rust", 
            "WASM"
        ], 
        "link": [
            {
                "href": "https://www.dustyrobotics.com/", 
                "name": "Website"
            }
        ], 
        "name": "Dusty", 
        "tags": [
            "Work", 
            "Robotics", 
            "Graphics", 
            "Web"
        ], 
        "imgs": [
            "dusty1-crop.webp", 
            "dusty2.png"
        ], 
        "desc": "In 2024 I collaborated with Dusty Robotics, a company making\nrobots that print building plans and layout on the floor of\nconstruction sites.  I rewrote their plan viewer in Rust and\nWebGL, achieving much better performance, and mentored their team\nin graphics programming, API design, and software optimization.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://engineering.fb.com/2020/08/24/production-engineering/scaling-services-with-shard-manager/", 
                "name": "Website"
            }, 
            {
                "href": "https://research.facebook.com/publications/shard-manager-a-generic-shard-management-framework-for-geo-distributed-applications/", 
                "name": "Paper"
            }
        ], 
        "name": "Meta", 
        "tags": [
            "Work", 
            "Library", 
            "Research"
        ], 
        "imgs": [
            "meta1.jpg", 
            "meta2.webp"
        ], 
        "desc": "In 2023 I collaborated with the [Shard\nManager](https://engineering.fb.com/2020/08/24/production-engineering/scaling-services-with-shard-manager)\nteam at Meta, that was exploring using\n[Immer](https://github.com/arximboldi/immer) to improve\nperformance. As part of this collaboration, I added support for\n_transients_ for maps and sets in Immer, and mentored their team\nin best using immutable data-structures. The project was deployed\nat scale, this is critical infrastructure serving millions of\nmachines. We lowered the average latency by an order of magnitude,\nand memory usage was halved.\n"
    }, 
    {
        "lang": [
            "C++", 
            "QML"
        ], 
        "link": [
            {
                "href": "https://www.steinberg.net/cubasis/", 
                "name": "Website"
            }
        ], 
        "name": "Cubasis", 
        "tags": [
            "Work", 
            "Music"
        ], 
        "imgs": [
            "cubasis-crop.webp", 
            "cubasis2.png"
        ], 
        "desc": "In 2021 I consulted with the\n[Cubasis](https://www.steinberg.net/cubasis/) team to help them\nrewrite their whole data-model using a [Value-Oriented\nArchitecture](https://sinusoid.es/do/squaring-the-circle). This\nallowed them to improve the whole responsiveness of the app by\ndecoupling the UI and data-model threads, fix long-standing bugs,\nand improve the overall maintainability and performance of their\ncode.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://www.automaton.build/", 
                "name": "Website"
            }
        ], 
        "name": "Automaton", 
        "tags": [
            "Work", 
            "Robotics", 
            "Graphics"
        ], 
        "imgs": [
            "automaton1-crop.jpg", 
            "automaton3.jpg"
        ], 
        "desc": "In 2021 I collaborated with\n[Automaton](https://www.automaton.build/) and\n[Magnopus](https://www.magnopus.com/) to build a novel approach\nfor film recording using robotics robotics and on set real-time\n3D-graphics. I built designed the whole system's data-flow and\ncommunication architecture for real-time and low-latency, using\nvalue-oriented actors built with\n[Lager](https://github.com/arximboldi/lager) and\n[Immer](https://github.com/arximboldi/immer) at their core; and\nbuilt the scene visualization and control software on top of\n[USD](https://openusd.org/).\n"
    }, 
    {
        "lang": [
            "C++", 
            "QML", 
            "WASM"
        ], 
        "link": [
            {
                "href": "https://bronze.ai", 
                "name": "Website"
            }
        ], 
        "name": "Bronze", 
        "tags": [
            "Work", 
            "Music"
        ], 
        "imgs": [
            "bronze-small.png", 
            "bronze.jpg"
        ], 
        "desc": "Since 2020 I am collaborating with [Bronze](https://bronze.ai),\narchitecting and building the next generation of their AI powered\ncomposition and arrangement software, enabling artists to make non\nlinear, generative and augmented music. Since 2022 I am also CTO\nof the company.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://www.youtube.com/watch?v=e2-FRFEx8CA", 
                "name": "Video C++ Russia Piter'19 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=SAMR5GJ_GqA", 
                "name": "Video C++ on Sea'20 (Youtube)"
            }, 
            {
                "href": "https://sinusoid.es/talks/cpprussia19-piter", 
                "name": "Slides (C++ Russia)"
            }, 
            {
                "href": "https://sinusoid.es/talks/cpponsea20", 
                "name": "Slides (C++ on Sea)"
            }
        ], 
        "name": "Squaring the circle", 
        "tags": [
            "Talk"
        ], 
        "imgs": [
            "squaring.svg", 
            "squaring-large.jpg"
        ], 
        "desc": "The talk _Squaring the circle: value-oriented design in an\nobject-oriented system_ teaches how using innovative concepts in\n[Lager](lager) one can also use value-oriented design and\nimmutable data-structures in legacy systems or user interfaces\nwritten with traditional object-oriented toolkits, providing a\npath for modernization and improvement of all codebases.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://audulus.com", 
                "name": "Website"
            }
        ], 
        "name": "Audulus", 
        "tags": [
            "Work"
        ], 
        "imgs": [
            "audulus-logo.jpg", 
            "audulus.png"
        ], 
        "desc": "In 2019 I consulted [Audulus](https://audulus.com), an\nadvanced modular synthesis app for iOS, helping them use\nvalue-oriented design principles in their next gen document model\nand audio engine.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://sinusoid.es/zug/", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/zug", 
                "name": "Code (Github)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=vohGJjGxtJQ", 
                "name": "Video CppCon'15 (Youtube)"
            }
        ], 
        "name": "Zug", 
        "tags": [
            "Library", 
            "Research"
        ], 
        "imgs": [
            "zug.svg", 
            "zug-large.png"
        ], 
        "desc": "Zug is a C++ library providing\n[transducers](https://clojure.org/reference/transducers). Transducers\nare composable sequential transformations independent of the\nsource. They are extremely lightweight, and can be used to express\nalgorithms over pull-based sequences (iterators, files) but also\npush based sequences (signals, events, asynchronous streams) in a\ngeneric way.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://prenav.com", 
                "name": "Website"
            }
        ], 
        "name": "Prenav", 
        "tags": [
            "Work", 
            "Graphics"
        ], 
        "imgs": [
            "prenav.png", 
            "prenav-large.png"
        ], 
        "desc": "In 2019 and 20 I collaborated with [Prenav](https://prenav.com),\nrearchitecting their structural inspection software using\nunidirection-dataflow with [Lager](lager), mentoring their team on\nvalue-oriented design and modern C++, and building new core\nfeatures.\n"
    }, 
    {
        "lang": [
            "C++"
        ], 
        "link": [
            {
                "href": "https://www.youtube.com/watch?v=_oBx_NbLghY", 
                "name": "Video CppCon'18 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=NMol_5-2owo", 
                "name": "Video Meeting C++'18 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=cFivdQDidb8", 
                "name": "Video StdCpp'19 (Youtube, Spanish)"
            }, 
            {
                "href": "https://sinusoid.es/talks/cppcon18", 
                "name": "Slides (CppCon'18 Version)"
            }
        ], 
        "name": "The most valuable values", 
        "tags": [
            "Talk"
        ], 
        "imgs": [
            "values.png", 
            "values.jpeg"
        ], 
        "desc": "This is one of my most philosophical and important talks,\nexplaining what \"value oriented design\" is and how to use it to\nbuild a UI with a unidirectional data-flow architecture using\n[Lager](lager).\n"
    }, 
    {
        "lang": [
            "C++", 
            "QML"
        ], 
        "link": [
            {
                "href": "https://www.omicronenergy.com/en/products/mpd-800/", 
                "name": "Website"
            }
        ], 
        "name": "OMICRON Energy", 
        "tags": [
            "Work"
        ], 
        "imgs": [
            "omicron.png", 
            "omicron-large.png"
        ], 
        "desc": "In 2019 I collaborated with [OMICRON\nEnergy](https://www.omicronenergy.com/) to bring their C++ team up\nto date with modern development practices.  I also directly worked\non their Partial Discharge measurement software, introducing\napplication-wide refactorings and developing new features like\n\"user profiles\", allowing users to completely reconfigure their\nintricate UI to adapt to different use-cases and experience\nlevels.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://sinusoid.es/lager", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/lager", 
                "name": "Code (Github)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=e2-FRFEx8CA", 
                "name": "Video C++Russia Piter'19 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=_oBx_NbLghY", 
                "name": "Video CppCon'18 (Youtube)"
            }
        ], 
        "name": "Lager", 
        "tags": [
            "Library", 
            "Talk", 
            "Research"
        ], 
        "imgs": [
            "lager-small.svg", 
            "lager.jpeg"
        ], 
        "desc": "This is a [Redux](https://github.com/reactjs/redux)-like library\nbringing the simplicity and power of the uni-directional data-flow\narchitecture---like the [Elm\narchitecture](https://guide.elm-lang.org/architecture)---to C++.\nIt also brings concepts from Clojure like _cursors_, that help\nbridging the gap with OO-style components.\n"
    }, 
    {
        "lang": [
            "C++", 
            "Rust", 
            "QML", 
            "Clojure"
        ], 
        "link": [
            {
                "href": "https://kapela.live/", 
                "name": "Website"
            }
        ], 
        "name": "Kapela", 
        "tags": [
            "Work", 
            "Music"
        ], 
        "imgs": [
            "kapela.svg", 
            "kapela.jpg"
        ], 
        "desc": "In 2018 and 19, I've lead the development team, architected and\nwritten a lot of the code behind [Kapela](https://kapela.live/), a\nsystem for doing connected performances, in a new way of\nexperiencing live electronic music.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://www.youtube.com/watch?v=y2___qaG_9Q", 
                "name": "Video (Youtube)"
            }, 
            {
                "href": "https://sinusoid.es/talks/cppcon17-lt", 
                "name": "Slides"
            }
        ], 
        "name": "Programming: the last 4000 years", 
        "tags": [
            "Talk"
        ], 
        "imgs": [
            "cppcon17-lt-small.png", 
            "cppcon17-lt.jpeg"
        ], 
        "desc": "At [CppCon'17](https://cppcon.org/) I did a personal commentary on\nthe history of programming, making an analogy to the eras of\nwestern civilization.  I try to advance the conversation on what\n_modern_ C++ is, and make a guess on whatever comes next.\n"
    }, 
    {
        "lang": [
            "C++", 
            "Scheme"
        ], 
        "link": [
            {
                "href": "https://zenaud.io", 
                "name": "Website"
            }
        ], 
        "name": "zenAud.io", 
        "tags": [
            "Work"
        ], 
        "imgs": [
            "zenaudio-small.png", 
            "zenaudio.png"
        ], 
        "desc": "During 2017 I collaborated with [zenAud.io](https://zenaud.io), an\nexciting company building software for live peformance.  I built\nan OpenGL backend for its flagship product and consulted to\nimprove the overall UI architecture and audio engine in order to\nachieve better performance and maintaineability.\n"
    }, 
    {
        "lang": [
            "C++", 
            "Scheme"
        ], 
        "link": [
            {
                "href": "https://sinusoid.es/schmutz/", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/schmutz", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Schmutz", 
        "tags": [
            "Library"
        ], 
        "imgs": [
            "schmutz-small.svg", 
            "schmutz.png"
        ], 
        "desc": "As a spin-off for [Immer](immer) I have been working on a library\nto declare Scheme bindings for C++ code using a simple embedded\nDSL. Think of it as [Boost.Python](http://www.boost.org/libs/python)\nor [LuaBind](https://github.com/luabind/luabind) but for Scheme.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://www.youtube.com/watch?v=sPhpelUfu8Q", 
                "name": "Video CppCon'17 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=56dA2kHHJnM", 
                "name": "Video ICFP17 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=ZsryQp0UAC8", 
                "name": "Video CppNow'17 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=9nupb1SNo3Q&t=18s", 
                "name": "Video MeetingCpp'16 (Youtube)"
            }, 
            {
                "href": "https://public.sinusoid.es/talks/immer-cppcon17", 
                "name": "Slides (CppCon'17 version)"
            }
        ], 
        "name": "Postmodern immutable data-structures", 
        "tags": [
            "Talk"
        ], 
        "imgs": [
            "immer-talk-small.png", 
            "immer-talk.jpeg"
        ], 
        "desc": "During 2017 I have been talking at multiple conferences about\nimmutable data-structures and [my efforts](immer) in bringing them\nto C++ developers and systems programmers in general.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://sinusoid.al", 
                "name": "Website"
            }, 
            {
                "href": "mailto:juanpe@sinusoid.al", 
                "name": "Email"
            }
        ], 
        "name": "Sinusoidal Engineering", 
        "tags": [
            "Work"
        ], 
        "imgs": [
            "sinusoidal-small.png", 
            "sinusoidal.png"
        ], 
        "desc": "Since 2017 I am working as a consultant software engineer with a\nfocus on interactive software, framework design, performance,\nmodern C++ and open source/libre software.  Always looking for new\nchallenging projects: [drop me a line](mailto:juanpe@sinusoid.al)\nand let's work together!\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://github.com/arximboldi/immer", 
                "name": "Code (Github)"
            }, 
            {
                "href": "https://asciinema.org/a/3i7smcgv5g52314lklmksqdxt", 
                "name": "Video (Asciinema)"
            }
        ], 
        "name": "Ewig", 
        "tags": [
            "Library"
        ], 
        "imgs": [
            "ewig-small.png", 
            "ewig.png"
        ], 
        "desc": "[Maria Carrasco](http://carrasco.in) helped me write this text\neditor to show-case [Immer](immer), my library of immutable\ndata-structures.  It's code is extremely simple yet it performs\nbetter than most serious editors.  The *undo/redo* feature is just\n10 lines of code, yet it can copy-paste a gigabite worth of text\nwith no problem!\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://sinusoid.es/immer", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/immer", 
                "name": "Code (Github)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=sPhpelUfu8Q", 
                "name": "Talk CppCon'17 (Youtube)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=56dA2kHHJnM", 
                "name": "Talk ICFP'17 (Youtube)"
            }, 
            {
                "href": "https://public.sinusoid.es/misc/immer/immer-icfp17.pdf", 
                "name": "Paper ICFP'17 (PDF)"
            }
        ], 
        "name": "Immer", 
        "tags": [
            "Library", 
            "Talk", 
            "Research"
        ], 
        "imgs": [
            "immer-small.svg", 
            "immer.svg"
        ], 
        "desc": "A library of persistent and immutable data structures in C++ that\nare fast, customizable and easy to embed in higher languages.  It\nimplements modern cache-efficient data structures like\n[RRB-Trees](https://infoscience.epfl.ch/record/213452/files/rrbvector.pdf),\nwith some improvements of its own---there is a paper about these\nin the kitchen.\n"
    }, 
    {
        "lang": "Clojure", 
        "link": [
            {
                "href": "https://sinusoid.es/mittagessen", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/mittagessen", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Mittagessen", 
        "tags": [
            "Web"
        ], 
        "imgs": [
            "mittagessen-small.png", 
            "mittagessen.png"
        ], 
        "desc": "A web app to choose a place to eat close to the Ableton office, in\nBerlin mitte.  I made this app on my last week of work, in march\n2016, as a farewell present for my colleagues that eat outside of\nthe office.\n"
    }, 
    {
        "lang": "JavaScript", 
        "link": [
            {
                "href": "http://kostspielig.github.io/zbeats", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/kostspielig/zbeats", 
                "name": "Code (Github)"
            }
        ], 
        "name": "ZBeats", 
        "tags": [
            "Web", 
            "Music"
        ], 
        "imgs": [
            "zbeats-small.png", 
            "zbeats.png"
        ], 
        "desc": "This is an Ableton Live inspired web app to make music by playing\nmultiple clips.  Tempo can be adjusted and everything is kept in\nsync.  The app was done mostly by [Maria\nCarrasco](http://www.carrasco.in) but I helped with some of the\nWebAudio, synchronization and React.js stuff.\n"
    }, 
    {
        "imgs": [
            "loop-small.png", 
            "loop.jpg"
        ], 
        "tags": [
            "Talk", 
            "Work", 
            "Music"
        ], 
        "link": [
            {
                "href": "https://loop.ableton.com/program/state-open-source", 
                "name": "Website"
            }
        ], 
        "name": "Share the code: open source music tech", 
        "desc": "I organized and moderated a panel at the\n[Loop](https://loop.ableton.com) conference, where [Gianfranco\nCeccolini](http://moddevices.com/), [Marije\nBaalman](http://marijebaalman.eu/), [Soledad\nPenad\u00e9s](http://soledadpenades.com/) and [Paul\nDavis](https://en.wikipedia.org/wiki/Paul_Davis_(programmer))\ndiscussed the challenges and opportunities in open source music\ntechnology. [Sole](http://soledadpenades.com/2015/11/18/on-loop-2015)\nand [Paul](https://community.ardour.org/node/12978) wrote about\ntheir experience.\n"
    }, 
    {
        "lang": [
            "C++", 
            "Clojure"
        ], 
        "link": [
            {
                "href": "/talks/transducers-cppcon15", 
                "name": "Slides (HTML)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=vohGJjGxtJQ", 
                "name": "Video (Youtube)"
            }, 
            {
                "href": "http://cppcast.com/2015/12/juanpe-bolivar/", 
                "name": "Interview (CppCast)"
            }
        ], 
        "name": "Transducers: from Clojure to C++", 
        "tags": [
            "Talk", 
            "Work"
        ], 
        "imgs": [
            "transducers-small.png", 
            "transducers2.jpg"
        ], 
        "desc": "I presented the work on [Atria](/do/atria) at\n[CppCon](http://cppcon.org/) in 2015.  The session describes the\ntransducers module and its implementation wich, somewhat\nsurprisingly, is very performant and less stateful than the\nClojure counterpart.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "http://www.github.com/ableton/atria", 
                "name": "Code (Github)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=vohGJjGxtJQ", 
                "name": "Video CppCon'15 (Youtube)"
            }
        ], 
        "name": "Atria", 
        "tags": [
            "Library", 
            "Work"
        ], 
        "imgs": [
            "atria-small.png", 
            "atria.jpg"
        ], 
        "desc": "Developed at Ableton from 2014, this is a collection of core C++\nlibraries with an emphasis on functional programming and\ninteractive immutable data models. It's *transducers* module was\n[presented in CppCon\n2015](https://www.youtube.com/watch?v=vohGJjGxtJQ).\n"
    }, 
    {
        "lang": [
            "C++", 
            "QML"
        ], 
        "link": [
            {
                "href": "http://www.github.com/ableton/aqt-cassowary", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Aqt Cassowary", 
        "tags": [
            "Library", 
            "Work", 
            "Graphics"
        ], 
        "imgs": [
            "cassowary-small.png", 
            "cassowary.png"
        ], 
        "desc": "Developed at Ableton in 2015, this plugin brings the power of\nthe [Cassowary constraint solver](http://overconstrained.io/) to\nQML, the Qt based JavaScript superset for declarative user\ninterfaces.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "https://github.com/arximboldi/cooper", 
                "name": "Code (Github)"
            }, 
            {
                "href": "/talks/europython-2015-lightning-talk", 
                "name": "Slides (HTML)"
            }, 
            {
                "href": "https://pypi.python.org/pypi/cooper", 
                "name": "PyPI"
            }
        ], 
        "name": "Cooper", 
        "tags": [
            "Library"
        ], 
        "imgs": [
            "cooper-small.png", 
            "cooper.jpg"
        ], 
        "desc": "Decorator library for safer cooperative methods in Python.  It\nallows to leverage the power of Python's multiple inheritance\nwithout so much of its drawbacks.  It was presented in a lightning\ntalk in [EuroPython 2015](https://ep2015.europython.eu/en/).\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "/talks/moderncpp", 
                "name": "Slides (HTML)"
            }
        ], 
        "name": "Modernize Your C++", 
        "tags": [
            "Talk", 
            "Work"
        ], 
        "imgs": [
            "modernize-small.png", 
            "modernize.png"
        ], 
        "desc": "I did this talk on modern C++ both in an *Ableton Dev Salon* and a\n[Berlin C++ Meetup](http://www.meetup.com/berlincplusplus/)\nbetween 2014 and 2015.  Through a provocative fable, it discusses\nvalue semantics and non-intrusive polymorphism and introduces the\n[Atria](/do/atria) library.\n"
    }, 
    {
        "lang": [
            "CoffeeScript", 
            "JavaScript"
        ], 
        "link": [
            {
                "href": "https://sinusoid.es/mixco", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/mixco", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Mixco", 
        "tags": [
            "Library", 
            "Music"
        ], 
        "imgs": [
            "mixco-small.png", 
            "mixco.png"
        ], 
        "desc": "This is a framework for doing advanced controller mappings for\n[Mixxx](http://www.mixxx.org). It promotes a more *literate* and\n*declarative* way of building the scripts, and auto-generates a\nlot of the boilerplate through a compilation step.  It also uses\nall the fancy technologies of the time (Gulp, NodeJS, etc.).\n"
    }, 
    {
        "lang": [
            "CoffeeScript", 
            "JavaScript"
        ], 
        "link": [
            {
                "href": "https://sinusoid.es/heterarchy", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/heterarchy", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Heterarchy", 
        "tags": [
            "Library"
        ], 
        "imgs": [
            "heterarchy-small.png", 
            "heterarchy.png"
        ], 
        "desc": "This library adds cooperative Python-style multiple inheritance to\nCoffeeScript.  The implementation is based on the famous [C3\nlinearization Dylan paper](linearization).\n"
    }, 
    {
        "lang": "Clojure", 
        "link": [
            {
                "href": "https://github.com/arximboldi/sinusoides", 
                "name": "Code (Github)"
            }
        ], 
        "name": "sinusoides", 
        "tags": [
            "Web"
        ], 
        "imgs": [
            "sinusoides-small.png", 
            "sinusoides.svg"
        ], 
        "desc": "This website serves as portfolio and playground for\nexperimentation with web technologies.  It has survived several\nrewrites since it was first published in 2011.  It is currently\nbuilt with [ClojureScript](http://clojurescript.net) and\n[Reagent](https://github.com/reagent-project/reagent)\n"
    }, 
    {
        "lang": "Bash", 
        "imgs": [
            "dotfiles-small.png", 
            "dotfiles.png"
        ], 
        "link": [
            {
                "href": "https://github.com/arximboldi/dotfiles", 
                "name": "Code (Github)"
            }
        ], 
        "name": "dotfiles", 
        "desc": "Since I discovered [GNU Stow](https://www.gnu.org/software/stow/)\nI realized that there where no more excuses for not using a VCS\nfor my dotfiles.  Here are my settings for XMonad, Emacs, Bash and\nand friends.\n"
    }, 
    {
        "lang": [
            "CoffeeScript", 
            "JavaScript"
        ], 
        "link": [
            {
                "href": "http://www.eatoutberlin.com", 
                "name": "Website"
            }
        ], 
        "name": "Eat Out Berlin", 
        "tags": [
            "Web"
        ], 
        "imgs": [
            "eatout-small.png", 
            "eatout.png"
        ], 
        "desc": "[Maria Carrasco](http://carrasco.in) and I are hungry people\nso we made this site to collect the food places we like best in\nBerlin, and play with AngularJS along the way.  The content is an\nethernal work in progress, with most descriptions being just mocks\nfor now.  Pics are nice though.\n"
    }, 
    {
        "lang": [
            "CoffeeScript", 
            "JavaScript"
        ], 
        "code": "https://github.com/jmdrouin/incredible-art", 
        "link": [
            {
                "href": "http://www.arthackday.net/projects/juan-pedro-bolivar-puente-jerome-morin-drouin-black-hole", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/jmdrouin/incredible-art", 
                "name": "Code (Github)"
            }
        ], 
        "name": "Black Hole", 
        "tags": [
            "Web", 
            "Graphics"
        ], 
        "imgs": [
            "incredible-art-small.png", 
            "incredible-art.jpg"
        ], 
        "desc": "In 2013, [J\u00e9r\u00f4me\nMorin-Drouin](http://www.theincrediblecompany.com/) and I\nparticipated in the [ArtHackDay: Goin\nDark](http://www.arthackday.net/events/going-dark) in Berlin.  We\nmade this little piece about hidden things that can only be seen\nthrough movement---movement of the self, and movement of the\nstars.\n"
    }, 
    {
        "lang": [
            "C++", 
            "Haskell"
        ], 
        "link": [
            {
                "href": "/talks/meta.pdf", 
                "name": "Slides (PDF)"
            }, 
            {
                "href": "/talks/meta-16.05.2013.zip", 
                "name": "Materials"
            }
        ], 
        "name": "C++ Template Meta&shy;programming", 
        "tags": [
            "Talk", 
            "Work"
        ], 
        "imgs": [
            "meta-small.png", 
            "meta.png"
        ], 
        "desc": "In 2012 I talked about template metaprogramming at a *Ableton Dev\nSalon*, showing how C++ templates are lazy, purely functional,\nmeta-language with a unityped type system of its own.  Some of the\ncontent is a bit dated, as\n[Boost Hana](https://github.com/boostorg/hana) have refined the\ntechniques for C++14 and beyond.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "http://www.sinusoid.es/jpblib", 
                "name": "Website"
            }, 
            {
                "href": "https://github.com/arximboldi/jpblib", 
                "name": "Code (Github)"
            }
        ], 
        "name": "jpblib", 
        "tags": "Library", 
        "imgs": [
            "jpblib-small.png", 
            "jpblib.png"
        ], 
        "desc": "The Jolly Python Basic Library is a collection of basic utilities\nthat I used in most projects, like metaprogramming tools,\nobservers, etc.  The library is now in a process of being split\ninto more meaningful components, like\n[Cooper](https://github.com/arximboldi/cooper).\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "http://www.ableton.com", 
                "name": "Website"
            }
        ], 
        "name": "Ableton", 
        "tags": [
            "Work", 
            "Music"
        ], 
        "imgs": [
            "ableton-small.png", 
            "ableton.png"
        ], 
        "desc": "I worked for Ableton between 2011 and 2016, where I was one of the\ncore developers of Push, a hardware instrument, and Live, a\nleading digital audio workstation.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "https://sinusoid.es/python-avanzado", 
                "name": "Website"
            }
        ], 
        "name": "Advanced Python Course", 
        "tags": [
            "Talk", 
            "Work"
        ], 
        "imgs": [
            "gfits-small.png", 
            "gfits.png"
        ], 
        "desc": "A course in advanced Python targeted at astrophysics programmers\nthat I held in 2011 [at the IAA](http://www.iaa.es/). It included\nOO and functional programming, metaprogramming, GTK, library\ninterfacing, TTD, Django and others.\n"
    }, 
    {
        "lang": "PHP", 
        "link": [
            {
                "href": "http://www.nongnu.org/cvg-moodle", 
                "name": "Website"
            }, 
            {
                "href": "https://savannah.nongnu.org/projects/cvg-moodle", 
                "name": "Code (Savannah)"
            }, 
            {
                "href": "http://tv.uvigo.es/video/23778", 
                "name": "Talk (Spanish)"
            }
        ], 
        "name": "CVG Moodle plug-ins", 
        "tags": [
            "Work", 
            "Uni", 
            "Web", 
            "Talk", 
            "Research"
        ], 
        "imgs": [
            "jsxaal-small.png", 
            "jsxaal.png"
        ], 
        "desc": "Collection of Moodle plug-ins that were developed as a couple of\ninternships in the University of Granada between 2009 and 2011 to\nadapt it to our specific needs. They might be useful to some other\nComputer Science departments.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://psychosynth.com", 
                "name": "Website"
            }, 
            {
                "href": "https://savannah.gnu.org/projects/psychosynth/", 
                "name": "Code (Savannah)"
            }
        ], 
        "name": "GNU Psychosynth", 
        "tags": [
            "Uni", 
            "Library", 
            "Music", 
            "Graphics", 
            "Research"
        ], 
        "imgs": [
            "psynth-small.png", 
            "psynth.png"
        ], 
        "desc": "A framework for the development of modular, interactive and\ncollaborative synthesisers targeted at live music performance. It\nwon the Spanish Inter-University Free Software contest in 2008.\nWritten in 2007 onwards.\n"
    }, 
    {
        "lang": [
            "C++", 
            "JavaScript"
        ], 
        "link": [
            {
                "href": "http://www.mixxx.org", 
                "name": "Website"
            }
        ], 
        "name": "Mixxx", 
        "tags": [
            "Music"
        ], 
        "imgs": [
            "mixxx-small.png", 
            "mixxx.png"
        ], 
        "desc": "Mixxx is a professional DJ software. I am mostly a user, but since\n2010 I have made a couple of patches and maintain the\nJavaScript MIDI mapping for the [M-Audio Xponent\ncontroller](http://www.mixxx.org/wiki/doku.php/m-audio_xponent).\n"
    }, 
    {
        "lang": "Haskell", 
        "link": [
            {
                "href": "/static/soft/hcryp-10.07.2011.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "HCrypt", 
        "tags": "Uni", 
        "imgs": [
            "hcrypt-small.png", 
            "hcrypt.png"
        ], 
        "desc": "Collection of cryptographic and modular arithmetic programs\nwritten in 2011 for a course in cryptography in the University of\nGranada. It includes high performant symmetric and asymmetric\ncryptographic programs, hashes, among other things.\n"
    }, 
    {
        "lang": "Matlab", 
        "link": [
            {
                "href": "/static/soft/mia-18.02.2011.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Artificial vision toolkit", 
        "tags": [
            "Uni", 
            "Graphics"
        ], 
        "imgs": [
            "mia-small.png", 
            "mia.png"
        ], 
        "desc": "An image processing and artificial vision toolkit with an user\ninterface. It includes several algorithms, including border and\ncorner detection and block matching. Written in 2011 in a course\nin models of artificial intelligence.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "/static/soft/pdp-27.01.2011.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "MPI algorithms", 
        "tags": [
            "Library", 
            "Uni"
        ], 
        "imgs": [
            "mpi-small.png", 
            "mpi.png"
        ], 
        "desc": "Some algorithms implemented using MPI and C++. Some of them, like\nbranch and bound-based, are implemented generically such that new\nalgorithms require minimal effort in filling the apropiate\nhooks. Written in 2010 for a university course in parallel\nprogramming.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "/talks/charla-juegos.pdf", 
                "name": "Slides (PDF)"
            }, 
            {
                "href": "/talks/charla-juegos.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Desarrollo r\u00e1pido de videojuegos con el panda y la pit\u00f3n", 
        "tags": [
            "Talk", 
            "Uni", 
            "Graphics"
        ], 
        "imgs": [
            "panda-small.png", 
            "panda.png"
        ], 
        "desc": "Another of the workshops organized by the [Hacklab Colina\nRoja](http://www.colinaroja.org). In this one from 2010 I talked\nabout the fundamentals of game development, with examples built in\nPanda3D and Python.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "https://launchpad.net/noxim-utu", 
                "name": "Code (Launchpad)"
            }
        ], 
        "name": "Noxim 3D", 
        "tags": [
            "Uni", 
            "Research"
        ], 
        "imgs": [
            "noxim-small.png", 
            "noxim.png"
        ], 
        "desc": "Noxim 3D is a modification of the [Noxim Network-on-Chip\nsimulator](http://noxim.sourceforge.net/) to support 3D\nnetworks. It can simulate several routing algorithms and the TSV\ndisposition is fully configurable. I wrote it in 2010 in the\nUniversity of Turku under the supervision of Alexander Yin.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "https://savannah.nongnu.org/projects/pigeoncide", 
                "name": "Code (Savannah)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=ITEoz1KrCeY", 
                "name": "Video (Youtube)"
            }
        ], 
        "name": "Pigeoncide", 
        "tags": [
            "Uni", 
            "Game", 
            "Graphics"
        ], 
        "imgs": [
            "pigeoncide-small.png", 
            "pigeoncide2.png"
        ], 
        "desc": "A game written in 2010 with [Alberto Villegas\nErce](http://albertovillegaserce.blogspot.com/) and others in the\nUniversity of Turku were one is a crazy kill convinced to\nmassively extermine pigeons. The game features cool flockin AI and\nis looking for a 3D designer.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "/static/soft/yaas-28.08.2010.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Yet Another Auction System", 
        "deps": "django==1.2\nPIL (Python Imaging Library)\n", 
        "tags": [
            "Uni", 
            "Web"
        ], 
        "imgs": [
            "yaas-small.png", 
            "yaas.png"
        ], 
        "desc": "An online auction system written in Django for a course on web\nsystem development in the University of Turku in 2010. It lacks a\nproper payment system but features a multi-format REST\ninterface among some other cool features.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "https://savannah.nongnu.org/projects/jagsat", 
                "name": "Code (Savannah)"
            }, 
            {
                "href": "https://www.youtube.com/watch?v=BZKwVIwxyrU", 
                "name": "Video (Youtube)"
            }
        ], 
        "name": "Code of Greed", 
        "tags": [
            "Uni", 
            "Game", 
            "Graphics"
        ], 
        "imgs": [
            "jagsat-small.png", 
            "jagsat.png"
        ], 
        "desc": "A computer based Risk implementation featuring a novel touchable\ninterface. Written in 2010 under the supervision of the\n[TribeFlame]( http://www.tribeflame.com/) game company in the\nUniversity of Turku.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "/static/soft/overdose-0.1.2.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Overdose", 
        "tags": [
            "Uni", 
            "Game", 
            "Graphics"
        ], 
        "imgs": [
            "overdose-small.png", 
            "overdose.png"
        ], 
        "desc": "A 3D game were you are a ruined trader who chooses to end his life\nby taking as much drug as he can &mdash; if the dealers and cops\nlet you! Written in 2008 for a university course in computer\ngraphics with its own engine on top of SDL.\n"
    }, 
    {
        "lang": "Haskell", 
        "link": [
            {
                "href": "/static/soft/hmech-24.06.2010.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "HMech", 
        "tags": [
            "Uni", 
            "Game"
        ], 
        "imgs": [
            "hmech-small.png", 
            "hmech.png"
        ], 
        "desc": "Artificial intelligence for the Battletech board game, the virtual\nboard where it runs can be [downloaded\nhere](/static/soft/Entorno_BattleTech_09-06-03.zip). It includes a 60\npages document describing its inner algorithms. Written in 2009\nfor a course in knowledge modelling in the University of Granada.\n"
    }, 
    {
        "lang": "Haskell", 
        "link": [
            {
                "href": "/static/soft/hform-0.1.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "HForm", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "hform-small.png", 
            "hform.png"
        ], 
        "desc": "A tool for evaluating and simplifying predicate logic\nexpressions. Includes a GTK user interface. Written in 2009\nfor a course in lambda calculus held in the University of Granada.\n"
    }, 
    {
        "lang": "Java", 
        "link": [
            {
                "href": "/static/soft/pc-27.05.2009.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Concurrent traffic simulator", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "pc-small.png", 
            "pc.png"
        ], 
        "desc": "A traffic jam simulator. Introduces non-determinism by running\neach car in a separate thread and the road topology is driven by\nan extensible framework. Written in 2009 for a course in\nconcurrent programming.\n"
    }, 
    {
        "lang": "Java", 
        "link": [
            {
                "href": "/static/soft/jpoker-23.01.2009.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "JPoker", 
        "tags": [
            "Uni", 
            "Game"
        ], 
        "imgs": [
            "jpoker-small.png", 
            "jpoker.png"
        ], 
        "desc": "A poker program with a SWT UI and a simple aritificial\nintelligence. Written in 2008 for a course in object oriented\nprogramming.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "/talks/c-modular.pdf", 
                "name": "Slides (PDF)"
            }, 
            {
                "href": "/talks/c-modular.tar.gz", 
                "name": "Slides (Latex)"
            }, 
            {
                "href": "/talks/c-modular-src.tar.gz", 
                "name": "Code (tar.gz)"
            }
        ], 
        "name": "ANSI C Modular", 
        "tags": [
            "Talk", 
            "Uni"
        ], 
        "imgs": [
            "cmodular-small.png", 
            "cmodular.png"
        ], 
        "desc": "In 2008, as part of one of the few *Hackea y Lucha* workshop\nsessions we did at the [Hacklab Colina\nRoja](http://www.colinaroja.org), I held a session on modularity\nand C, covering libraries and binary compatibility, object\norientation, and plugin systems, backed up with a lot of sample\ncode.\n"
    }, 
    {
        "lang": "PHP", 
        "imgs": [
            "dicc-small.png", 
            "dicc.jpg"
        ], 
        "link": [
            {
                "href": "https://sinusoid.es/rae", 
                "name": "Website"
            }, 
            {
                "href": "/static/soft/rae-07.01.2011.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "\u00a1Mete tu palabra en el diccionario!", 
        "desc": "Automated XSS exploit of the official Spanish dictionary to\nsimulate user given definitions of non existant words. I notified\nthe bug to the dictionary maintainers, and the attack does no\nlonger work.\n"
    }, 
    {
        "lang": "ASM", 
        "link": [
            {
                "href": "/static/soft/asmpaint-09.01.2008.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "ASM Paint", 
        "tags": [
            "Uni", 
            "Graphics"
        ], 
        "imgs": [
            "asmpaint-small.png", 
            "asmpaint.png"
        ], 
        "desc": "A command based drawing application with support for script based\nanimations. Written in 2007 as part of a course on computer\norganization. It uses its own thin wrapper over SDL to interface\nwith the graphic hardware.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "/static/soft/ec2-24.06.2008.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "PC speaker player", 
        "tags": [
            "Uni", 
            "Music"
        ], 
        "imgs": [
            "ec2-small.png", 
            "ec2.png"
        ], 
        "desc": "This includes two tools for playing music on the PC speaker: a\nMS-DOS raw audio file player with filters and FX, and a Linux 2.6\nOSS driver that exposes the PC speaker as an audio\ninterface. Developed in 2008 for a course in computer\norganization.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "/static/soft/plisc-0.1.2.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "PLIS compiler", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "plisc-small.png", 
            "plisc.png"
        ], 
        "desc": "Compiler of my own language with C-like semantics but maybe\nshorter syntax. Written in 2007 as part of a course in\ncomputer organisation in the University of Granada.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "/static/soft/mailcrawl-0.2.0.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Mail Crawl", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "mailcrawl-small.png", 
            "mailcrawl.png"
        ], 
        "desc": "A multi-threaded web crawler that finds email addresses on the\nweb. You may give it a list of root web pages and it will follow\nlinks dumping all unique email address it finds. Written in 2007\nas part of a course in formal languages in University of Granada.\n"
    }, 
    {
        "lang": "C++", 
        "link": [
            {
                "href": "/static/soft/yann-0.0.1.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Yet Another Neural Network", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "yann-small.png", 
            "yann.png"
        ], 
        "desc": "A program that executes layered neural networks. It uses a\npipelined multi-threaded evaluation algorithm that is described in\nits documentation. Written in 2008 for a university course in\ncomputation models.\n"
    }, 
    {
        "lang": "Java", 
        "link": [
            {
                "href": "/static/soft/harmonic-03.01.2008.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Harmonic", 
        "tags": [
            "Uni", 
            "Web"
        ], 
        "imgs": [
            "harmonic-small.png", 
            "harmonic.png"
        ], 
        "desc": "A clone of the [Last.fm](http://www.last.fm) site. It uses\nservlets and its own dispatching and DOM manipulation\nframework. The application itself was never fully finished.\n"
    }, 
    {
        "lang": "Python", 
        "link": [
            {
                "href": "/static/soft/member-28.10.2008.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "Member Manager", 
        "tags": [
            "Uni"
        ], 
        "imgs": [
            "member-small.png", 
            "member.png"
        ], 
        "desc": "A program for the management of the members of an\norganisation. Features a GTK UI and multiple database systems\nsupport. Written in 2008.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "/static/soft/glmorph-12.05.2008.tar.gz", 
                "name": "Source (tar.gz)"
            }
        ], 
        "name": "GL Morph", 
        "tags": [
            "Uni", 
            "Graphics"
        ], 
        "imgs": [
            "glmesh-small.png", 
            "glmesh.png"
        ], 
        "desc": "A simple program for doing grid-based morphing transformation\nwritten in 2006. It includes a grid editor and an animation\nplayer.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "http://www.gnupdf.org", 
                "name": "Website"
            }, 
            {
                "href": "https://savannah.gnu.org/projects/pdf", 
                "name": "Code (Savannah)"
            }
        ], 
        "name": "GNU PDF", 
        "tags": [
            "Library"
        ], 
        "imgs": [
            "gnupdf-small.png", 
            "gnupdf.png"
        ], 
        "desc": "Since 2006 I occasionally contribute to the GNU PDF project. My\ngreater contributions are in the filters subsystem. It is a *FSF\nhigh priority project* so you are very welcomed [to\njoin](http://planet.gnu.org/gnupdf/?p=9).\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "https://jump.gnu.sinusoid.es", 
                "name": "Website"
            }, 
            {
                "href": "https://savannah.gnu.org/projects/gnujump", 
                "name": "Code (Savannah)"
            }
        ], 
        "name": "GNU Jump", 
        "tags": [
            "Game", 
            "Graphics"
        ], 
        "imgs": [
            "gnujump-small.png", 
            "gnujump.png"
        ], 
        "desc": "Since 2005, when I had too much free time at high school, I\ndevelop and maintain this simple yet addictive arcade game\nwere one should jump ad-nauseum to survive.\n"
    }, 
    {
        "lang": "C", 
        "link": [
            {
                "href": "http://luciferino.sourceforge.net", 
                "name": "Website"
            }, 
            {
                "href": "http://sourceforge.net/projects/luciferino", 
                "name": "Code (SourceForge)"
            }
        ], 
        "name": "Luciferino", 
        "tags": [
            "Game"
        ], 
        "imgs": [
            "luciferino-small.png", 
            "luciferino.png"
        ], 
        "desc": "In 2003-2006 I developed this aim-and-shoot sidescroller game\nengine. It was never fully completed, but its core was reused to\nlater write GNU Jump.\n"
    }
]