What is Open Source?

Open source software is software with source code that anyone can inspect, modify, and enhance. “Source code” is the part of software that most computer users don’t ever see; it’s the code computer programmers can manipulate to change how a piece of software—a “program” or “application”—works.


I participate in a number of free and open source software projects. You can find most of them listed on my GitHub account.

Loading data from GitHub.


Want to donate to support my work on open source software?

  Donate via PayPal

  Buy me a coffee

  Amazon Wishlist

GitHub Profile

StackOverflow Profile


Most of my Perl projects can be found on The CPAN. They are also mirrored at https://cpan.toby.ink/, where signed checksums can be found.


Type::Tiny is a small Perl class for writing type constraints, inspired by Moose’s type constraint API and MooseX::Types. It has only one non-core dependency (and even that is simply a module that was previously distributed as part of Type::Tiny but has since been spun off), and can be used with Moose, Mouse, or Moo (or none of the above).

Type::Tiny is used by over 800 Perl distributions on the CPAN (Comprehensive Perl Archive Network) and can be considered a stable and mature framework for efficiently and reliably enforcing data types.

Type::Tiny is bundled with Type::Library a framework for organizing type constraints into collections. Also bundled is Types::Standard, a Moose-inspired library of useful type constraints. Type::Params is also provided, to allow very fast checking and coercion of function and method parameters.

Type::Tiny website


Zydeco is a Perl module to jazz up your object-oriented programming. It fuses together:

  • Classes, roles, and interfaces, including parameterizable classes and roles (a.k.a. class generators and role generators).
  • Factories to help your objects make other objects.
  • Powerful and concise attribute definitions.
  • Methods with signatures, type constraints, and coercion.
  • Method modifiers to easily wrap or override inherited methods.
  • Multimethods.
  • Powerful delegation features.
  • True private methods and attributes.
  • Syntactic sugar as sweet as pecan pie.

Zydeco is a Perl extension that adds cute syntax for object-oriented programming, and tries to steer you towards (what I consider) best practice design.

Zydeco website


Some highlights and recent projects:

  • match::simple

    Simplified clone of smartmatch operator.

  • Newtype

    Perl implementation of an approximation for Haskell’s newtype.

  • PerlX::Maybe

    Return a pair only if they are both defined. Syntactic sugar for key-value lists.

  • results

    Why throw exceptions when you can return them? Port of Rust’s error handling to Perl.

  • Test::Modern

    Precision testing for modern Perl.



Tada is an opinionated command-line todo list manager. It offers commands to:

  • Add and remove tasks to your todo list.
  • Find the most important tasks on your list.
  • Find the most urgent tasks on your list.
  • Find the quickest tasks on your list.
  • Find tasks by project or context.
  • Mark tasks as done.
  • Reschedule overdue items based on how tada thinks you should reschedule them.

It is a command-line tool as well as a programming library, so should be useful to Rustaceans and non-Rustaceans alike!

tada (crates.io)


Most of my open source PHP code is WordPress plugins and themes. A selection can be found on GitHub.

  • Thyme

    WordPress theme based on Roots Sage 10. (Some of its internals refer to “parsley” which was my theme based on Roots Sage 9.) It’s the theme I use for this site.

  • Mastodon-Friendly RSS Widget

    Subclass of the built-in RSS Widget, but copes better with Mastodon feeds.

  • Cookie Kwan

    A simple GDPR consent getting script.

  • Tobyink’s Contact Form

    Very simple form-to-email contact form for WordPress, with ReCAPTCHA support.

  • WP Ctrl Semicolon

    Adds a keyboard shortcut to WordPress, allowing admins to quickly edit any page.

Another PHP project is Tada Server — a web-based todo list, compatible with my Rust project, tada.

General Policies


My preferred licence for new open source software projects is the GNU GPL, either version 2 or version 3. (Version 3 preferred for web and network related projects. Perl projects, I would typically also license under the Artistic Licence. Rust projects, I would typically also licence under the MIT Licence and the Apache Licence 2.0.

Source Code Management

I generally prefer to use Mercurial for version control, but will use Git if need be. The hg-git plugin also exists, which I use to mirror my Mercurial repositories on GitHub.

Contributing to My Projects

If you have any bug fixes or other improvements to my projects, the best way to contribute them is to submit a pull request on GitHub. For more information, see my guide on contributing to my free software projects.


Want to donate to support my work on open source software?

  Donate via PayPal

  Buy me a coffee

  Amazon Wishlist