Cameron Eldridge

Software Developer

As a programmer, I try not to forget that I am a consumer of code as much as we are all consumers of programs.

I believe it is important to write code in ways that are both logically and visually pleasing.

I like using strong and expressive logical systems to create safe but powerful applications.

I apply a range of techniques from across multiple disciplines, to solve each problem as accurately as I can.

I use Rust whenever possible. I know JavaScript about as well as anyone can expect to. I am always ready for another language.

I make websites, apps, games… and pretty much anything else I feel like building.

I just like writing code.

Projects

Apps

A sales and inventory tracking solution specialized for con(vention) artists. With over 200 users signed up and sales recorded at more than 20 conventions worldwide, this has been my biggest project to-date. Right now there are web and iOS apps, with Android hopefully soon to follow.

Tools

A replacement for the standard cat tool featuring syntax highlighting, Git integration, and other useful features for displaying code on your terminal. CSS-like “Syncat stylesheets” allow for fine-grained highlighting of the parse tree, as parsed by Tree-sitter.

Paper typesets your text files directly in your terminal making quick reading of documents much easier. It works particularly well with Markdown and can even integrate with Syncat to highlight code blocks. Some of the rendering options for Markdown documents can be customized using the same Syncat stylesheets.

Games

In a place where the only colour is white, you have discovered a spark of something new. Explore the world which reveals itself around you as you bring colours back and discover the truth about why they were missing in the first place.

Writing

If reading blogs is something you're into, on rare occasions I will post a thought I have. I guess you can look if you want to.

ConArtist

ConArtist had been my main project since around 2016 and, having undergone numerous rewrites and redesigns since then, was released to the public at the end of 2018. It now has over 200 sign-ups (but, admittedly, only 20 or so actual users).

The initial project was built using Node.js, Angular, and React Native, but I soon found all three of these technologies to be hard to maintain. The final (current) version consists of:

  • a Rust web server, on top of
  • a PostgreSQL database, exposing
  • a GraphQL API, to
  • a React web app, and
  • a Swift native iOS app.

A native Android app is left as a project for my future self.

ConArtist

The money counter for the busy tabler

Syncat

Syncat uses Tree-sitter to build a parse tree of your source files. It then matches the parse tree to a Syncat stylesheet, which is similar in appearance and behaviour to CSS, allowing detailed and accurate syntax highlighting.

Extra features include Git integration, line numbering, print invisible characters, and adding a frame around each file.

Watch as your files go from looking like this:

fn main() -> Result<(), Error> {
    println!("Hello world");
    Ok(())
}

To this:

~   1 │ fn main() -> Result<(), Error> {¬
    2 │     println!("Hello world");¬
+   3 │     Ok(())¬
    4 │ }¬

Syncat is available for download from crates.io, so if you have Cargo set up, you can install it by running the following command:

cargo install syncat

─────────────────────────────────────────────────────────
    Paper
─────────────────────────────────────────────────────────

Paper is a command line application that takes Markdown
files and prints them just like you see it here---page,
shadow and all.  Despite Markdown being designed to be
easy to parse even as plain text, there's no denying that
a properly formatted document is easier to read.

Pretty much every feature of Markdown is supported
including a number of extensions as well as automatic
line wrapping.

Paper can even integrate with Syncat to highlight
tagged code blocks in your document.  Certain other
settings can be customized by use of the same Syncat
stylesheets.

Paper is hosted on crates.io, so if you have Cargo 
set up, you can install it now with just one command:

cargo install paper-terminal
                                                   sh

    

White

White is a puzzle platform game, and the first full game I actually built from start to finish. It was also the first time I made all the components myself: code, graphics, music, and sounds.

The game takes place in a world where there are no colours other than pure white. One day, however, the main character sees a spark in his room of something that is not white, and it opens up the whole world to him.

White was made with GameMaker Studio. An early version was submitted to the GMC Jam, a 3-day game making event, and won me a few prizes! After that, I took a few months to finish building up the full game, which is now available to be played on a few other sites online.

You can download White for Windows (it works best that way), or play in browser here.

Thanks for visiting.