July 2023 - Present
Variable
Android (Kotlin)
Pause is a research-based modular parenting app filled with useful tools and advice to make parenting easier. The app is designed as an additional resource to support parents undertaking parenting programmes, to help them practice the skills they've learnt in a more engaging way.
For Summer 2023, I joined the project as an intern, working 30 hours per week for 8 weeks. I was responsible for developing the android app from a very basic prototype into the full app based on Figma designs. I used Kotlin with Jetpack Compose. I was also responsible for designing and implementing a Firebase backend involving authentication, analytics and firestore.
Beyond then, I have stayed with the project, continuing to develop new features and improve existing ones. The project now has a much larger development team requiring lots of careful collaboration.
We work in a small team using an agile methodology. I have to work closely with the designer and other developers and use Jira to keep track of progress and meet deadlines.
3 years
2500+ hours
Solo Project
My biggest project ever. Comprised of four separate bots with hundreds of commands, describing this as only one project greatly understates the diversity of it.
This project has not only stretched my programming ability but tested and developed my skills in games design, marketing, working closely with users and driving a project forward in innovative and exciting ways.
Kernel is a multipurpose bot with a wide range of useful features, from moderating your discord server to other genuinely useful features.
Spectral contains a wide variety of fun features, from flappy bird to UNO!, from dog pictures to in-game stats, from hangman to blackjack, from Donald Trump quotes to random cocktails.
A fully-fledged text-based RPG where you can collect resources, build things and make more resources
A custom Pokรฉmon game designed for Discord that borrows much of what made the original games good but innovates in some key areas to be more suitable for the platform.
This project was how I learnt to code, but I've learnt so much more. This is why I thought I'd dedicate a little section here containing a bit of what I've learnt along the way.
Mobile Apologies! | Sorry, this isn't great on mobile. Hopefully I will get around to improving this soon. |
---|---|
Games Design | I've been the sole designer for two distinct games, including using a massive spreadsheet to balance things (it's not easy...) |
Marketing | I'm responsible for marketing the bots, including making a website and purchasing ad spots. |
Moderating a Discord Server | Maintaining the server, engaging members and using punishments sparingly and effectively. |
Fun vs Cool | It doesn't matter how many cool features your game has, if it just isn't that fun then people won't play it. |
Writing Maintainable Code | The importance of and ability to write maintainable code is something that only comes with experience programming. |
Quality Over Quantity | It sounds obvious, but I've learnt that improving existing features is almost always more beneficial than adding new ones. |
Listening to Customer Feedback | I've always listened to feedback, but sometimes too much. Often, having a strong vision and sticking to it is just as important. |
Ease-of-use Matters | I knew things being easy-to-use was important but I didn't realise quite how much this mattered. People often have very little patience. |
Consistency in UX Design | Even if it's worse, keep it consistent. People expect similar features to behave in similar ways. |
Simplicity vs Ease-of-use | Just because something is simple and elegant doesn't mean it's intuitive. A simple design can be a confusing design. |
Customisability | Not everything has to be customisable. Most people just don't care. If most people won't customise it, don't bother. |
Give it a go! | You never know what you can achieve until you try. I have been amazed at how many brand new ideas I have managed to bring to Discord through this bot, don't be afraid to try something new. If it doesn't work, who cares? |
Read the blog post for more detail
Python (discord.py)
JavaScript, CSS, HTML
JavaScript (node.js), Python (Django)
120,000+ lines of code
Here's some short code jams that I've worked on.
Theme | "It's a bug, not a feature" |
---|---|
Using | WebSockets |
Event | Python Discord Summer Code Jam 2022 |
A totally generic, average platformer with nothing out of the ordinary... obviously...
This is best explained through a short video, which was used as part of the judging process.
A Quick Video11 days
Team of 5
Python (pygame)
Top 10
Theme | "Retro" |
---|---|
Event | Great Warwick Game Jam 2023 |
A puzzle/educational game where you have to type in an equation to complete the track, all while the train is moving and about to derail!
This game aims to capture the joy of simply plotting graphs, while also providing interesting challenges - graph plotting leads to some very interesting puzzles! The concept also has many applications in the classroom to teach function transformations, trigonometric curves or anything graphical.
2 weeks
Team of 3
Unity (C#)
#2 Best Design
Theme | "Secret codes" |
---|---|
Using | Image Manipulation |
Event | Python Discord Code Jam 2023 |
An image manipulation tool with two functions:
11 days
Team of 5
Python
Top 10
Theme | "Hunted & Haunted" |
---|---|
Event | Warwick Game Design Winter Game Jam |
A top-down chaotic bullet hell shooter where each enemy you kill haunts you.
An infinite shooter which starts easy but quickly becomes quite difficult! With 7 enemy types and increasing spawn rates, how long can you last?
The game is playable on itch.io and also open source on GitHub so feel free to take a look and work on it if you like!
2 days
Solo Project
Unity (C#)
Here are some others:
Mobile Apologies! | Sorry, this isn't great on mobile. Hopefully I will get around to improving this soon. | |
---|---|---|
Notorious Narwhals | Python Discord Summer Code Jam 2021 | A physics-based puzzle game where resizing the terminal window would change the level. |
Here's some pieces of coursework I think are particularly relevant.
A-Level Project
A fully automated school timetabling system where teachers choose dynamically how long they need for each lesson. This cuts down on wasted time in lessons and prevents teachers from having to rush.
This is implemented using a genetic algorithm which simulates natural selection to generate a feasible timetable within a short time period.
Notably, this involved producing a lengthy write-up explaining the development process and justifying decisions. This made me pay extra attention to the quality of code and reason for doing everything.
9 months
250+ hours
Python (Django)
25,000+ lines of code
1st | Robot-Maze | Practicing writing maintainable object-oriented code | Java |
1st | Warwick+ | Choosing and implementing efficient data structures for a movie database | Java |
2nd | Packet Sniffer | Writing code to parse the bits of network packets and detect suspicious activity | C |
2nd | Connect 4 AI | An opponent for connect 4, using minimax with lots of optimisations | Python |
2nd | Parser | Code to validate syntax and then run a simple language | Java (JavaCC) |
2nd | Theorem Prover | Outputs if a boolean expression is true or false, using resolution | Prolog |
3rd | Compiler | UPCOMING (in term 1 of this year) | C++ |
3rd | Game | UPCOMING (in term 1 of this year) | OpenGL |
Java
C
Prolog
Python
Some other projects you may find interesting/useful.