The last time Hackerfall tried to access this page, it returned a not found error. A cached version of the page is below, or clickhereto continue anyway

felixangell.com

This is a recent example of Ark using GLFW bindings to render a triangle using OpenGL.

Ark is a compiled programming language written in Go, it uses the LLVM framework as a backend, and the frotend is hand-written. It's the side-project I've spent the most time working on. You can check out more on the language itself on thewebsite and the language reference (both of which I wrote!). To sum up the language, it features many modern concepts: native utf8 support, lambdas, named types, tagged unions, a directory-based module system, generics, pattern maching and more. The language is focused on systems programming, from simple (and complex) desktop applications, to operating systems, and compilers. Because it's written using the LLVM framework, it's very fast and is comparable to the speed of a language like C - and in some cases it's faster.

Root Java

A quick example game I scratched up using Root.

Root is a simple game framework, it uses LWJGL for OpenGL bindings. It follows modern rendering techniques (sprite batching, the use of shaders, etc.) The framework was mostly inspired by LibGDX and (the defunct) Slick2D, I wrote it as a more compact/minimal alternative to LibGDX that similarly uses modern rendering techniques, though it conforms to the simplicity that I loved about Slick2D.

Nate Java

A recent demo of the editor, specifically the syntax highlighter

I made Nate to solve my own frustrations with text editors. Most of these boil down to aesthetic appearance, customizability and usability. My favourite editors are Sublime Text and Emacs. I've always found Emacs a pain to configure, especially the tabbing settings. Sublime is nearly perfect, though I don't have the same freedom as I do with emacs. Nate is an attempt to create my idea of the 'perfect editor'. I want it to be easy to customize, fast, and beautiful.

The editor itself is implemented in Java. I don't use any GUI frameworks, all of the UI is written from scratch in a framework I wrote. The framework is graphics accelerated, and uses OpenGL to render each component. The configurations use TOML, I chose this since it's easier and quicker to type than say JSON.

A test rast application that can render simple geometric shapes, and can also render images.

I wanted to learn more about how graphics are rendered, so I wrote a simple software rasterizer in Java that is completely software accelerated, i.e. it doesn't make use of the GPU for rendering graphics. It's very primitive, and can only render basic geometric shapes, and plot pixels, with some modification it could also render images - though the current set of tools it provides is more than enough to render simple graphics.

I wrote this for a blog series on how to write a simple virtual machine in C, which you can read here. Writing about programming, and teaching people is another thing I enjoy doing. I quite like keeping a blog where I can post. The repository contains two versions, the first being a simplified version with very few instructions, and a more advanced version that can load programs from files and has more instructions e.g. basic flow control. The virtual machine itself is not complete, and is more for educational purposes.

In the text-editor is LLM markdown, on the right (in the browser) is the rendered result.

LLM is a small side-project that implements a simple markup language in C++ using the FastCGI protocol to pipe HTML straight to the web server. It uses a lisp-y syntax, and is relatively fast. The project currently is usable for creating websites, and will eventually be expanded to be an actual server-side programming language.

A package manager that uses GitHub as its core platform. Arkade was mostly inspired by the Cargo package manager (for Rust) and Go's built-in package manager. It is written in C, and includes a hand-written TOML parser (written by yours truly). Currently it only supports GitHub for projects, projects created with Arkade are pushed to GitHub, it fetches dependencies from GitHub, and uses git tags for versioning dependencies and the package itself. The language will eventually be used as the recommended package manager for programming Ark, and hopefully will be used on on the Ark project too.

ODB is a simple shell implemented in the C programming language

I spontaneously wrote ODB with a friend in a few days as a small project for us to both work on. We were both interested in implementing a shell, and wanted to see how much work it would take to get a simple shell functioning, as well as try implement some trickier features like auto-completion, and tab completion.

Continue reading on felixangell.com