Welcome to my website!

My name is Garrett May. Here is my website featuring several aspects about me, such as about myself, and projects that I've worked on.

Programming language progress

It has been over 5 years, and many people would have presumed I had given up on this programming language. This is not true! I have indeed been working on it in the background; however, real life - such as university studies, and then work - had caught up with me, and required my focus.


In the future, I aim to continue this blog post on the programming language, as it is interesting. In the meantime, I will mention a few things that I have worked on:

  • Created a custom lexer, which provides nice(r) output for syntax errors
  • Created a custom parser, which provides nice(r) output for semantic errors
  • Working on a formal-ish Hindley-Milner type system, which would make most typing fairly obvious with type inference
  • Working on handling compile-time executed code. The general concept behind this is fairly simple; however, some work needs to be done to ensure that this works correctly (such as the handling of primitives in the language)
  • Working on the standard library. This needs to be built concurrently as the language is built, as the compiler will need to be able to know certain things i.e. some parts of the standard library may need to be native functions

I would like to make future blog posts on certain concepts which I find interesting throughout the process.


The following are milestones I wish to accomplish:

  • To be able to write at least some basic programs in the language (such as a calculator)
  • To be able to handle the problems in Advent of Code


A new programming language

Having experienced several programming languages, none seem to suit my specific taste. Java, for example, is incredibly useful for creating programs such as servers, and can run almost anywhere nowadays. On the other hand, it lacks modern features such as properties, which can cause development to be a bit slower.


I'd like a language similar to Java, but with features that I have seen from other languages included, such as:

  • Properties and helper functions (C#)
  • Destructors (C++)
  • Functional aspects (Haskell)
  • Easier singletons (Scala)
  • Null type checking (Ceylon)
  • Operator overloading (Kotlin)
  • Easy to use (Python)

Several of these are present in other languages, and there may also be other features I would like. All of this will be decided as I go along, since I will be testing out the language to see if it is usable.


My first step is to create the lexer and parser in order to analyse words from a text file. This will ensure some checking can be done before handing over the rest to the interpreter.


Added GUI possibilities

I have added the possibilities for Graphics User Interfaces (GUIs). Currently, it isn't the most well-coded aspect, and I intend to change it in the future, but for now it works.

Read More