Curriculum Vitae

My name is Dave Wilkinson, better known as wilkie. I develop large scale distributed systems and am looking for a position that will allow me to use that specialization to make better the open web. I have a strong desire to develop technology that can be accessed by anybody and push progress of a public commons without constraint. I specialize in the research and development of low-level distributed systems that reduce barriers of entry and push more control, authority, and rights to those that use the system. My overall goal is to provide a system that guarantees the freedom to compute.





Work Experience

Software (ruby/rails, javascript/coffeescript) - Web Application

!rstatus screenshot

A free and open-source, federated microblogging platform I founded with a team of friends, resembling twitter and, that emphasizes personal use and self-ownership of data. That is, this software is designed to be easily deployed on a hosting service or a personal server. The ownership and authority over the content is primarily in the hands of the individual, instead of a company that runs a centralized service such as twitter. It uses the ostatus protocol to distribute content within a social graph to nodes and servers maintained by other people.

Considering it is a social system at heart that attempts to liberate data to individuals, became very successful. The rate of adoption out-paced with 6,000 unique users in our opening week. We have over 60 contributors from all across the world which further suggests its appeal and need in the global world. I am a core maintainer along with Carol Nichols, and help organize new feature efforts and review pull requests, although our development model allows for any past contributor to commit and merge at any time.

lotus (ruby/sinatra, javascript) - Web Framework

!lotus screenshot

Building off of the experience of building, I started the Lotus project. While was engineered to be a federated microblogging solution, it was not very conducive to building new types of federated, self-hosted websites. Therefore, I ripped out the backend of and refined it. Lotus contains several sub-repositories that will allow you to build a federated website using simple building blocks.

This is very much an experiment in modular MVC. The lotus base project contains the non-persistent models which define the data and relationships, useful for clients. The lotus-mongodb project adds persistence using mongodb, a useful key-value store for extensible data (where the schema is unknown.) The rack-lotus project contains the controllers and routes that drive the web API. To give you a base to start out from, the lotus-site project gives a set of views and javascript already designed to produce a responsive website that can be easily extended. Furthermore, the lotus-i18n project adds internationalization that will be shared among all federated sites.

With these base projects I have implemented a distributed, federated social framework for microblogging (tweets), blogging, and image sharing. It will be easy to add other types of sharable objects, and external systems hosted by others will gracefully support them even if they do not understand them. Any site that you produce with the framework will be easily deployable to enjoy a low barrier of entry for non-technical folks.

xomb (D, assembly) - Systems Design and Implementation

!xomb screenshot

XOmB is a novel exokernel-inspired operating system project aimed at developing the most flexible OS architecture possible as a means of building more efficient systems and building systems more efficiently. Our immediate aim is to build a research and education platform, but by doing so we contend XOmB offers the opportunity to develop more streamlined OS implementations for general purpose and server use. The flexibility we aim to achieve should allow the same kernel to be deployed in many scenarios, adapting the userspace if needed.

The design of the XOmB kernel does not impose any unnecessary abstractions, and thus avoids hiding state from the applications or incurring additional overheads (e.g. implementing a database on top of a filesystem introduces numerous inefficiencies). Due to minimizing abstractions imposed by the OS, XOmB will be able to provide a software base sufficient to build new interfaces without having to tear down or re-engineer the kernel.

We (myself and James Larkby-Lahet) diverge significantly from prior efforts in our treatment of state with the XOmB exokernel. We relegate even more kernel code to userspace libraries, which are untrusted and can be customized (completely modified or replaced) on a per-application basis. We do so by extracting two key components of the exokernel: device drivers and system state. These components are implemented in userspace where they are met with easy debugging and hardware enforced safety.

gutenberg (ruby, javascript/jQuery) - Content Generation

!gutenberg screenshot

I am very interested in hypermedia and exploring its use to transform traditional media into something more substantial in this information era. To that end, gutenberg is a project that turns a flavor of markdown into a website that is typeset using javascript code on the client side. The idea is that books can contain links to other books and other external information and to provide, eventually, a seamless experience in reading this information.

The project consists of ruby code that will render the markup into html, css, and images and package them with javascript. It is designed such that without javascript or using a screenreader (typically used by blind individuals), the book is still readable as a basic webpage. The book output can also be easily parsed by html parsers and generates a very minimal markup. The rest of the work to make the book into a dynamic frame with full typesetting is done completely in javascript. Styling can be provided by stylesheets and images provided by the library or easily extended by adding custom css and javascript.

An example of the project in action can be found here and compare this to the plain html without any javascript here.

reuleaux-selectors (javascript) - User/Human Interfaces

!gutenberg screenshot

As a queer individual, I'm concerned with forms of available representation and allowances of diversity in the technological space. The role of personal gender identification is a part of human interfaces that has been untouched regardless of the fact that dropdown gender selection of simply male and female is unacceptable. Textfields, while better, allow for so much choice that people may pigeonhole themselves and would be otherwise incomparable.

Along with Lindsey Bieda, we designed and implemented a new form of gender and sexuality selector that we feel is a stage of evolution that provides a familiar selector that is both comparable and highly representative of the queer identity. We see the primary use of such a selector for social networking sites as a means of representing oneself as one pleases, and also for dating services to offer better support for the preferences and identity of queer individuals.

Play around with the selectors here.

apsis (C++, assembly, GLSL) - General-Purpose Game Engine

!apsis screenshot

Going along with my open source game coding competition, I am currently developing a free and open-source (early stages) game engine builder. To jumpstart games and creative expression, I have created a framework that gives you the building blocks for creating game engines.

Here is how it works: Create an Engine. Add a Map to draw tile-based maps. Add an Actor to represent the player. Attach an Up, Down, Left, Right modules to the player actor to give it a set of rules that let it respond to input and move in all four directions. Add a MapCollider rule so that you do not go through walls. You now have a basic top-down 2D scroller much like Zelda games. Remove the Up and Down rules on the player actor, and add Jump and Fall rules, and now you have a 2D side-scroller.

By building games via a set of rules, you can be provided a set of predefined rules to quickly make traditional games, but also allow extensibility by defining new rules. This will be perfect in an educational environment where predefined rules can be used to get things rolling, but programming concepts can be introduced gradually to beginners when they want to do something fancy.

I hope to bind the logic and rule creation to a language that is better suited for beginners such as Lua or Ruby. That way, the game engine itself is written in OpenGL/C++ but the extensible components can be an easy to use scripting language.

Occasional Contribution




If you'd like to comment, just send me an email at or on either Twitter or via my mastodon profile. I will love to hear from you! Any opinions, criticism, etc are welcome.


If you'd like to make a donation, I don't know what is best for that. Let me know.


All content off of this domain, unless otherwise noted or linked from a different domain, is licensed as CC0