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.
University2017 — 2020
Completed a Bachelor of Science Degree (First Class Honours), studied 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.
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: email@example.com)
Senior School2015 — 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.
Database administrator assistant2016
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.
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.
Japanese2017 — 2018
Studied Japanese at the University of Warwick for one year, learning the basics of the Japanese language.
- 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
- 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
Aug 2018 — Nov 2020
Java | Minecraft Server Plugin
This is my first project to receive multiple issues on GitHub, which involved myself dealing with bug reports created by other developers; implementing new features and dealing with pull requests for the first time. I've learnt a lot about setting goals and meeting expectations of other developers.
Nov 2019 — Dec 2019
Elm | Single Page Application | Functional Programming
- 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 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
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
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
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.
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.
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.
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.
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.
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.
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.
Oct 2014 — Nov 2018
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.
Whoops! It appears you've gotten lost! My blog is located here!