My work

Some of the things I've worked on or made.

About my work

I have over 9 years of web development experience, and 8 and a half years of experience working in an agency environment.

I am available to build bespoke web applications and platforms - get in touch today to see if I can meet your development needs.

More information

As well as working at an agency, I have contributed to open source software projects, and worked on various personal side projects (although whether I ever finished them is another matter...)

Take a look at some of the things I've worked on or made.

logo Created with Sketch.

MyBB is free open source forum software written in PHP. MyBB is what introduced me to web development. I was a member of a forum running on the software, and wanted to find out more about how the site worked. It started me down the path to my career today.

I became a member of the official support team in 2008, providing support to users of the software in my own time, and became the support team lead in 2010. I have since taken a reduced role in the team due to time commitments, but am still the highest poster on the community support forums (by some margin) with over 35,000 posts (primarily providing support).

I have written 22 plugins for MyBB, which have had over 60,000 downloads. Some of them have been used on the official community forums, or even merged into the software itself and turned into official features - MySupport and Goodbye Spammer were used on the community forums, and Goodbye Spammer, Report Reputation, and Awaiting Activation Count all got merged into core.

Here are some of my most well known plugins:

Goodbye Spammer

This was a tool I developed to easily get rid of spam users. Instead of having to manually go through and clear up their posts and threads, you could see on one page everything they had posted, and delete it all in one click, as well as clearing out their profile, deleting private messages, calendar events, and automatically banning them. A version of this functionality was added to MyBB 1.8, known as Purge Spammer


Plugin Uploader

I built this as a way to upload plugins to your forum without having to do so via FTP (which a lot of admins struggled with), instead allowing you to upload a plugin .zip file, or import from the MyBB Mods site, and have it automatically installed to your forum. It would show information about the plugin, the readme, show screenshots if available, and allow you to uninstall the plugin too.

Github MyBB Mods Site


MyReactions is a plugin to add emoji reactions to posts similar to Slack/Discord. In development, but as-yet unreleased, is the ability to add Facebook-style reactions too.

Github MyBB Mods Site

Karma Stars

This one's a bit of a tribute. Karma Stars is a pure throwback to the first forum I ever joined, the Channel 4 forums, where you would earn a star rank for reaching a certain number of posts. It even uses the same images and post counts (pretty much) as the C4 forums I got the idea from.

Github MyBB Mods Site


By far my biggest plugin, MySupport added multiple features to selected forums to turn them into support forums, including statuses, priorities, assignees, best answers, and much, much more. This has been in use on the official MyBB community forums since 2010, but has not been updated for several years as I no longer had the time, despite having a large update with lots of new features planned for it.

Github MyBB Mods Site

You can see all of my MyBB plugins on my Gitub

Along Come Norwich

Along Come Norwich is a Norwich City fansite, featuring a popular podcast, opinion-piece articles, interviews with ex-players, and a fundraiser to improve the atmosphere at Carrow Road.

Along Come Norwich

I was asked to build them a new site, as the existing basic theme didn't quite cut it with the big name interviews and Norwich's immintent promotion to the Premier League in the 2018/19 season.

The old site was run on Weebly, and had a generic theme that wasn't very inspiring.

Design isn't my strong point, however I came up with several new homepage variations that added a bit more colour and style to the site, and complemented the illustrations that were created for each article.

After several design tweaks, I ended up with this:

The blocks of solid colour from the origial prototypes were scrapped in favour of the simpler design with yellow and green lines above and below card elements, with a repeating chevron pattern effect used on all coloured background (insired from the shirt on the homepage podcast graphic), which added some depth to the otherwise flat colours.

The site is built in WordPress and has custom basket and checkout functionality to allow for more specific requirements (such as international postage surcharges and partial order shipping), has basic stock control, and has payments taken via Stripe.

Along Come Norwich

Bespoke web development

I am available to build bespoke web applications and platforms - get in touch today to see if I can meet your development needs.

More information


I worked as a web developer at Norwich-based digital agency Selesti for 8 and a half years between March 2011 and October 2019. During this time I was involved in numerous bespoke project builds, including marketing brochure sites, eCommerce stores, and social network platforms.

I worked on building a custom CMS, including a front-end editing content block system and a language translation system, and I worked with several different platforms and frameworks, including Wordpress, Laravel, Kohana, and Statamic.

Below are just a few of Selesti's clients whose projects I was a big part of.

One Selesti client of particular significance is goalgiving, a startup aiming to combine the thrill of your team winning or scoring with charitible donations. The site allows you to pick from pre-defined campaigns with partnered teams or charities, or build you own, enabling you to pick your own team, charity, and metric to donate for (for example, every win or goal), with donations taken automatically every time your pledge is converted.

goalgiving launched in August 2019 in partnership with Leeds United Football Club, to raise money on behalf of the Leeds United Foundation, and to date has raised over £1,000.

I built this project single-handedly using Laravel and Stripe Connect to process payments, and is the project I am most proud of so far in my career.

Bespoke web development

I am available to build bespoke web applications and platforms - get in touch today to see if I can meet your development needs.

More information


I made Twerminal as a web-based terminal-style Twitter client.

I've always liked Twitter as a platform from an API perspective - I like all the different data entities that make Twitter what it is and how they all link to each other. Users, tweets, retweets, likes, all the different "things" you can interact with. I always felt like it was a very command-like service, and there were various actual CLI Twitter clients available, but I wanted to make one for the web.

You can run commands like whois mattrogowski to see a user's profile, detail -s 469572263214604288 to view a tweet, view likes, direct messages, friendships, and more.

I even added a few easter eggs too...

I never took it out of "beta" or did much to tell people it existed, and I never finished some of the commands and some no longer work as the APIs have been changed, but the majorty of it works. It's somehting I one day plan to rewirte in Laravel and Vue.js

Tweet Archive Stats

I love stats and graphing data, and similar to Twerminal, Twitter's data structure really lends itself to this. I had always liked the old TweetStats service, so I decided to make my own.

Some years ago, Twitter introduced a feature where you could export all of your tweets, which they provided in JSON files. I built a platform to import your file, and it would import all your tweets, as well as making additional API calls to hydrate them further, to visualise several aspects of your Twitter usage.

I included graphs such as tweets by month, weekday, hour, time and day, tweet types and tweet rates, retweet and like rates (or, favourites as they were called back then), hashtag usage, as well as which users you mentioned, quoted, retweeted and favourited the most and who mentioned, retweeted and favourited you the most. All of this could be viewed on an all-time basis, or by a year, month, or individual day. I ran additional API calls on each imported tweet to load information like the retweet and favourite/like count, and processed other attributes about each tweet to be able to product more graphs. You could view interactions between yourself and another user, including all the mentions, retweets and favourites between you both, and planned to add comparisons between different time periods, interaction comparisons, user comparisons, and more.

You can view HTML exports of two iterations of these pages here: here and here (fyi they are very javascript heavy).

Unfortunately, I ended up abandoning this project because of limitations with Twitter's API. A big part of what I wanted it to do was show the interactions with other users, but the API was limited in what it returned, so it wasn't posisble to get complete insight into this. For starters, you could only load around 3,500 of a user's favourited tweets (even your own, as these are not included in the export), which is enough for most people, but not all. I also had graphs for who mentioned and retweeted you, and favourited your tweets, however you could only load up to 800 mentions to you, up to 100 users who retweeted an individual tweet (like favourites, enough for most tweets, but not all), and there was no way to see who favourited your tweets at all. Trying to import the entirely of another user's tweets was impossible too as the API only exposed around the last 3,200 tweets. This meant that to view deep interactions between two people, both of them would need to import their archives, but things like favourites would still be limited. Other problems arose by people changing usernames - things like mentions would be tricky as while the API gave you the IDs of who you mentioned, that only worked if that username still existed - if you processed an old tweet with a username that no longer existed, it couldn't be attributed to the user you mentioned (i.e. you would have no user ID for it), and if the username had been re-used, you would be given the ID of a different user entirely to the one you actually mentioned. This was all on top of the API being rate limited, meaning imports would have to be processed in a queue, which would take a long time.

However, I have had plans to revisit the idea and strip out anything that relates to other specific users, and focus more on how you use Twitter from a more data- and numbers-perspective, and these issues should be avoided. It's just a lot less than what I wanted it to be.

Bespoke web development

I am available to build bespoke web applications and platforms - get in touch today to see if I can meet your development needs.

More information