Hi! I'm Josh. I'm a student, doing Maths and Computer Science at the University of Warwick.
I love programming. In addition to my degree, I've done lots of side projects. In particular, I develop multiple multipurpose discord bots which have been used in thousands of servers. I've also done some web development (as you can see!), a school timetabling system, code jams and lots of other things.
I also love playing games. And analysing them. And making them. I'm on the Exec for Warwick Game Design, a society about making games. I'm also part of Warwick Magic, a society about magic tricks.
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 (coming soon) for more information
Python (discord.py)
JavaScript, CSS, HTML
JavaScript (node.js), Python (Django)
120,000+ lines of code
9 months
250+ hours
Solo Project
(Sorry, there is no dark theme)
A fully automated school timetabling system where teachers can choose how long they want for each lesson in advance. This cuts down on wasted time in lessons and prevents teachers from having to rush.
This is implemented through a genetic algorithm which simulates natural selection to generate a feasible timetable within a short time frame.
This was my A-Level Computer Science Coursework. This means it involved producing a lengthy write-up explaining the development process. While often tedious, this did make me pay extra attention to the quality of code I was writing and think more about why I was doing everything. You are welcome to read this by clicking the link below (but it's 250 pages long!)
In the end, the product did not manage full capacity at a school but still produced adequate timetables and could be taken further (it was already far beyond the scope of an A-Level Computer Science project...)
Python (Django)
JavaScript, CSS, HTML
25,000+ lines of code
8-11 days
Teams of 5
Python
Each year, the Python Discord Server runs a Summer Code Jam. In these events, randomly allocated teams of 5 people are given just over a week to create something using a given technology that fits a theme.
In each of these code jams I have led a team of people to create a cool project in a way that is fun and inclusive for everyone.
Theme | "It's a bug, not a feature" |
---|---|
Using | WebSockets |
A totally generic, average platformer with nothing out of the ordinary... obviously...
Part of the submission included producing a short video to demonstrate the project.
The VideoFind out more in the README on the GitHub repo.
Theme | "Think inside the box" |
---|---|
Using | A Command-Line Interface |
A physics-based game where resizing the terminal window would change the level. This could bounce balls off it or change the dimensions of objects to solve a puzzle.
This involved making our own physics engine and rendering engine from scratch.
In the end, we didn't end up finishing. Nevertheless, we had fun and learnt a lot in the process.
Find out more in the README on the GitHub repo.
Some other projects you may find interesting/useful.