Collascii - The Future Editor of Yesterday, Tomorrow

2019-05-20 (Last edited 2020-02-13)
software olinsoftsysteam

Collascii is a terminal-based text editor designed to make ASCII art - rather than the limiting insertion-based model that most text editors today, collascii treats documents as a grid of characters, similar to image manipulation programs like Photoshop, but for text! With collascii, you can type forwards, backwards, upwards, and downwards; paint with characters using your cursor; and draw lines and arrows across a canvas. Additionally, collascii is collaborative, so you can share a canvas with your friends and see their changes live, ala Google Docs.

Collascii was written in C by myself and two other students (Adam and Matt) as the final project in the Software Systems (SoftSys) course at Olin.

Over the course of the four weeks that we spent on it, I worked on various aspects of the project:

  • Creating the data structure for holding the “canvas” of characters, and functions for manipulating it and loading from and writing to files.
  • Writing an implementation of a network protocol to communicate with a central server and other clients using BSD sockets. This built off of what I learned from writing an HTTP server earlier in the course.
  • Building the current user interface, with distinct areas to show the canvas, commands and information about the current editing mode, and general status.
  • Adding mouse support
  • Expanding the editing modes API
  • Implementing drawing of remote cursors for things
  • Creating a plaintext slideshow to use as our final presentation, so we could present collascii with collascii
  • Set up Continuous Integration for our pull requests, with automatic compilation and executable uploading on releases.

The project lives on GitHub at https://github.com/olin/collascii, with precompiled executables for 64-bit Linux, as well as instructions for compiling it yourself.