Jorel Ali

Jorel Ali

Software Engineer

Hi, I'm Jorel.

Since I was young, I was always fascinated how lines of code in Notepad could create simple programs in Windows if you save a file with the extension .vbs

I rediscovered my passion for programming when I was introduced to Minecraft and the Bukkit server implementation which allows you to write addon content using Java. This formed the basis for my exploration into computer science which I pursued at university.

Currently, I work in business intelligence and tinker and maintain my own personal projects, which can be found on my GitHub.

contact@jorel.dev

Email Address

JorelAli

GitHub Profile

Skepter

Discord Profile

Education

  • University
    2017 — 2020

    Completed a Bachelor of Science Degree (First Class Honours), studying Computer Science at the University of Warwick. University coursework projects included:

    Creating a compiler that compiles a subset of C code into LLVM IR in C++C++
    Creating a clone of Tetris using OpenGL in C++C++
    Creating a packet sniffing and filtering system in CC
    Using the Keras library to predict numbers from the MNIST datasetPython
    Working on a pair programming project to make a mobile robot explore a mazeJava
    Creating a web-based CV analysis and recommendation system using machine learning in a team of 5 peopleJava
    Creating a multiplayer LAN based mastermind game written in HaskellHaskell
    Creating a transcompiler in Haskell which converts Blockly code to HaskellHaskell

    Third year dissertation about creating an implementation of System P, a package calculus designed to eliminate dependency hell, in order to verify the claims outlined in its paper.

    Abstract

    The use of libraries in contemporary programs has been ever increasing as programs become more and more complex. Package managers play a pivotal role in the process of dependency resolution which consists of determining the set of independent program components that are compatible with each other. Traditional package managers rely on the use of version numbers to determine compatibility between libraries, however, these can lead to overly restrictive constraints.

    In 2016, a draft paper proposed System P, a calculus for packages, which aims to solve the dependency issues that traditional package managers face. In this paper, we create an implementation of System P in order to verify the claims that the draft paper proposes.

    (Dissertation is available on request: dissertation@jorel.dev)

  • Senior School
    2015 — 2017

    Completed A-Level qualifications in Maths, Further Maths and Computer Science, achieving A*AA grades.

    Additionally completed Physics at AS-Level, achieving an A grade.

Work Experience

  • Software Engineer
    2020 — Present

    Currently working as a Software Engineer for a company that creates powerful Business Intelligence solutions.

  • Database administrator assistant
    2016

    Performed a work experience placement as a database administrator assistant for an osteopathic clinic. Helped transfer a desktop database to a cloud based database. From this, I gained an insight of database systems (both local desktop based and cloud based) being used in the real world.

  • Sales Representative
    2014

    Performed a work experience placement as a sales representative of John Lewis in their Electronics Department. I advised customers on the best products to suit their needs and improved my confidence in communication skills.

Languages

  • Japanese
    2017 — 2018

    Studied Japanese at the University of Warwick for one year, learning the basics of the Japanese language.

    2018
    Attended a month long Japanese Language and Culture Seminar in Hiroshima:
    Improved my Japanese which was previously studied at Warwick
    Presented the cultural differences of foods to an audience in Japanese
    Visited two World Heritage sites: Miyajima and the Peace Memorial Park
    Participated in a student exchange program with a Japanese student

Other

  • 2023
    Registered FIDE Chess Arbiter
    2021
    Registered Level 2 ECF Chess Arbiter
    2020
    WSET Level 1 Award in Wines
    2018
    Registered Level 1 ECF Chess Arbiter
    2018
    University Chess Society Vice President
    Vice President of the largest university chess society in the UK
    2018
    University Rock Climbing Green Card
    Proficiency in rock climbing permitting ability to rock climb without an instructor

  • CommandAPI

    Aug 2018 — Now
    Java | Bukkit/Spigot plugin

    The CommandAPI is a Bukkit/Spigot plugin which provides an API for developers to use Minecraft's in-game command interface that was introduced in Minecraft 1.13.

    This project is my largest and most popular open source community project, amassing over 20,000 total downloads. After this project gained some traction, I created a Discord server which currently houses over 150 community members. I've recently published this project to the Maven Central Repository, the largest collection of Java open source components, which is accessible by millions of developers.

    Highlights of the CommandAPI include:

    A compile-time Java reflection usage annotation processor, which checks for fields at compile-time to eliminate runtime reflection errors
    Multiple API designs to meet the needs of developers so they are comfortable with writing code how they want to
    A server administrator-facing API to provide compatibility for legacy plugins to use newer Minecraft features

    The CommandAPI consistently encourages me to:

    Communicate and collaborate with a large cohort of developers to design new, innovative features
    Implement a powerful Minecraft library, with an easy-to-use and intuitive developer-facing API
    Write exceptional documentation for a variety of target users, both developers and Minecraft server administrators
    Maintain high quality code that meets Java standards and adheres to the Maven Central Repository requirements
    Provide continuous support and advice for new and veteran users using the CommandAPI
  • Elm Brainfuck IDE

    Nov 2019 — Dec 2019
    Elm | Single Page Application | Functional Programming

    Elm Brainfuck IDE is a web-based Brainfuck editor and interpreter. It builds on the knowledge of my previous Brainfuck projects, such as my Java based IDE and my NodeJS based interpreter.

    This project uses Elm, a purely functional domain specific programming language that compiles down to JavaScript. I chose Elm for this project as it allows the user to declaratively create HTML and CSS in a typed environment that is much safer than raw HTML and CSS. In addition, I was able to improve my functional programming skills whilst learning the basics of the Elm architecture.

    By using Elm to create this project, I learnt:

    How to write typed HTML and typed CSS in Elm
    How to create an easily extensible single page web application
    How to create a basic interpreter using a functional programming language
    The fundamentals of the Elm architecture and how to effectively use the model-view-controller software design pattern
  • Setup Elm GitHub Action

    Oct 2019
    JavaScript | GitHub Action

    Setup-Elm is a GitHub Action that provides a means for continuous integration for Elm projects by using GitHub Actions.

    From this project, I learnt:

    The importance of standards for a public community project
    How to effectively use Continuous Integration in a project to enforce good software engineering practices
  • ForteLang

    Aug 2019
    Java | JavaCC

    ForteLang is a purely functional and dynamically typed programming language. It is created using the Java Compiler Compiler (JavaCC) which I encountered briefly for a Formal Languages coursework project at university.

    By creating this programming language, I learnt:

    The fundamentals of creating a compiler
    The importance of analysing and researching design choices
    Various ways to evaluate complex data structures, such as nested function calls
  • Safe Reflection Annotations

    Jul 2019
    Java | Annotation Processor

    Safe Reflection is an annotation processor which aims to provide safer reflection methods to a project which uses multiple conflicting libraries. It provides compile-time checks to ensure that methods and fields which are accessed by a project are indeed valid, in order to prevent common NoSuchFieldExceptions and NoSuchMethodExceptions

    By creating this annotation processor, I learnt the basics of creating compile time annotations in Java, as well as learning how to load classes from other Jar files to inspect their structure.

  • PluginCreator

    May 2018
    JavaScript | Java

    The PluginCreator is a web-based interface concept which allows anyone to generate Java code for a Minecraft plugin. The web-based interface is a visual programming language, similar to Scratch, based on Blockly.

    More information about this project can be found in my blog post, Programming for non-programmers, where I summarise the creation of the PluginCreator and the aims for the final product.

  • Doodle Jump Wii

    Apr 2018
    C | Wii Homebrew Application

    Doodle Jump is a platformer game created for mobile devices. Doodle Jump Wii is my first homebrew application (an application that is not licensed by Nintendo) for the Nintendo Wii.

    From this project, I've been able to explore the C programming language and gain an understanding of how it can be used to create a simple 2D game.

  • PoemCreator

    Feb 2018
    Java | Java Swing Application

    I created a Java Swing application which helps create 3D ASCII Stereograms. It creates a formatted 3D stereogram given a body of text and a list of words to "hide" inside the text.

    From this project, I learnt the importance of planning projects beforehand, creating requirement specifications for an output result and the use of pseudocode to aid in generating algorithms.

  • DevRantWear

    Jan 2017
    Java | Android Smartwatch Application

    devRant is a community of developers which share posts of life as a programmer. Frustrations and successes are discussed together in this community.

    I created a smartwatch application to display these posts on the smartwatch face. From this project I learnt:

    How to use Google's GSON library to parse JSON from a web API endpoint
    How to retrieve information from a web API endpoint using the HttpURLConnection class
    How to use the Wearable DataApi to send information between a phone and a smartwatch
    The basics of making a smartwatch app (including app design)
    The concept of a ring buffer

    I give extra credit to my father who suggested the ideas of using a ring buffer to store multiple "rants" on the watch instead of requesting a single rant when desired. In addition, I give him credit for suggesting the use of the gesture features on the watch for a better user experience.

  • Oodler

    Oct 2016
    HTML | JavaScript

    Inspired by an internet post, I created a web application which replaces vowels with the word "oodle" for comical effect. It is powered by JavaScript and HTML and doesn't require a server (it is standalone).

    From this project, I learnt how to use JavaScript to manipulate strings and add elements to a webpage. I learnt about the speech synthesis feature and the use of Bootstrap to make a webpage look more appealing.

    For extra comical effect, I employed the use of the Konami Code to add a new feature to the webpage. This led me to discovering the use of adding a keydown event listener to make the webpage change dynamically when text is inputted into a textbox.

  • Superfight

    Apr 2016
    HTML | Node.js | AngularJS | Pair Programming

    Superfight is a multiplayer card game about creating characters to fight with absurd conditions.

    I created an online system with my cousin to allow players on a network to play against each other. We used Node.js to host the a server and AngularJS to interact between the server and the client. In our end result, players could join "rooms" where they would be paired up against a single opponent and be dealt random cards from a file.

  • Project Euler Solutions

    Oct 2014 — Nov 2018
    Java

    Project Euler is a website dedicated to a wide array of complex computational problems. These are my Java solutions to these problems.

    From solving these problems, I have learnt to apply knowledge I have previously accumulated from my education (for example, dynamic programming to solve Problem 67). I have gained a better understanding of creating efficient algorithms and discovered many fascinating mathematical topics.

    In particular, I am most proud of my Newton-Raphson nth root method which I created to solve Problem 80, after learning about the Newton-Raphson method from A-Level Mathematics.

Whoops! It appears you've gotten lost! My blog is located here!