Ko Maddie tōku ingoa
she/her
I changed careers to write code that enriches people's lives. Everyday as a dev is an opportunity to learn, and I enjoy getting my hands dirty when faced with a new challenge. Some might not see this field as particularly artistic, but to me, it's one of the most creative things you can ever do. And, well, I love to do it.
Professional Profile
After finishing a Bachelor's in Creative Writing, I moved to Aotearoa New Zealand and stumbled into Finance for a few years. I eventually became a Process Analyst, but I kept wanting to fix the tech issues I kept finding myself. So I change careers and completed a Master's of Software Development (MSwDev) at Victoria University of Wellington.
Now I'm a Wellington-based software developer, primarily with full-stack web development with experience in a number of frameworks. However, my expertise is in C# & .NET development. I also have (some) mobile development experience and (a little) Unity experience at a professional level.
Experience
Software Developer
Bioeconomy Science Institute (formerly Manaaki Whenua)
Experience
Software Developer
Bioeconomy Science Institute (formerly Manaaki Whenua)
Jan 2023 - present in Wellington, NZ / Remote
Developer (Product Team)
Theta Systems
Mar 2021 - Jan 2023 in Wellington, NZ / Remote
I was a full-stack developer working primarily on web applications in a variety of technologies, mostly using ASP.NET Core. I also wrote mobile applications using the Flutter development kit, and have experience supporting Theta's AR/VR products in Unity.
My main responsibility was the continuous development and support of Theta's products, particularly the Mixiply suite of applications, Glasstrail, and FAQ Bot (now Helpfruit). This included:
Developing code for new features or spinning up new projects as necessary
Maintaining, fixing, and improving on existing code
Reviewing pull requests
Implementing and maintaining continuous releases for products using GitHub Actions and Azure DevOps
Setting up and configuring required services in Azure
SQL Server database administration
Becoming the primary developer on the Mixiply mobile apps
Mobile app release management through App Store Connect and Google Play Console
Maintenance of the AR/VR Mixiply Unity applications for Android, iOS, Windows, & macOS
Professional Projects
Software development projects where I played a key role.
Trapsim Plus
TrapSim Plus is a simulation tool to help managers quickly compare the efficacy and cost of controlling invasive predators using traps and/or bait stations, and guide them towards an appropriate control regime.
I was a lead developer on this project and mentored two university students as a part of this work. Together, we ran a full agile project from start to finish and included:
Trapsim Plus
TrapSim Plus is a simulation tool to help managers quickly compare the efficacy and cost of controlling invasive predators using traps and/or bait stations, and guide them towards an appropriate control regime.
I was a lead developer on this project and mentored two university students as a part of this work. Together, we ran a full agile project from start to finish and included:
Requirements gathering
Working with the subject-matter-expert to rebuild the simulation model from a Shiny app into a stand-alone R model
Building a reverse proxy API in .NET
Building an Angular application from scratch
My primary role was requirements gathering & developing the Angular application. This was a fantastic challenge both from the mentorship angle as well as having to pick up Angular all at once.
Glasstrail
Glasstrail is a cyber-security application developed by Theta Systems built on ASP.NET Core with a React TypeScript front-end which helps its customers to find and eliminate risks to their digital assets (i.e. domains, websites, etc).
I was a key developer on this platform from the very beginning of development until I left my role at Theta. My role involved writing code to analyse and translate data from CosmosDB into a readable format for customers and to stabilise the intensive weekly scanning process.
Glasstrail
Glasstrail is a cyber-security application developed by Theta Systems built on ASP.NET Core with a React TypeScript front-end which helps its customers to find and eliminate risks to their digital assets (i.e. domains, websites, etc).
I was a key developer on this platform from the very beginning of development until I left my role at Theta. My role involved writing code to analyse and translate data from CosmosDB into a readable format for customers and to stabilise the intensive weekly scanning process.
I integrated the app with Azure AD B2C authentication. I also was involved in re-writing the entire front-end from Blazor into React TypeScript and optimising some SQL.
Mixiply
Mixiply is an application, primarily aimed at kids, developed by Theta Systems. The app gives kids the opportunity to create their own digital portfolios of both AR code and digital assets such as art or 3D models.
While working at Theta as an intern, I helped rebuild the entire web app in a new framework. I also spent some time wokring with the students at the Newlands Intermediate School MiniDevs club receiving and implementing their feedback on the web application. Later as a full time developer, I mentored student interns who were working on further improvements to the Mixiply web app. (The web application has continued to evolve after my time at Theta.)
Mixiply
Mixiply is an application, primarily aimed at kids, developed by Theta Systems. The app gives kids the opportunity to create their own digital portfolios of both AR code and digital assets such as art or 3D models.
While working at Theta as an intern, I helped rebuild the entire web app in a new framework. I also spent some time wokring with the students at the Newlands Intermediate School MiniDevs club receiving and implementing their feedback on the web application. Later as a full time developer, I mentored student interns who were working on further improvements to the Mixiply web app. (The web application has continued to evolve after my time at Theta.)
In 2022, I was also responsible for upgrading and completely rewriting the iOS and Android apps in Flutter/Dart, as well as some Unity work in order to maintain the AR/VR technology available through the platform.
Personal Projects
Projects I've completed in my spare time.
Flight of the Bumble
I’ve played video games for as long as I can remember, so it was only a matter of time that I tried my hand at creating some myself.
This little game (only a handful of levels) was made as a part of an online course found here. My primary goal with this project was to
Flight of the Bumble
I’ve played video games for as long as I can remember, so it was only a matter of time that I tried my hand at creating some myself.
This little game (only a handful of levels) was made as a part of an online course found here. My primary goal with this project was to
gain further understanding of Unity development
pick up some fundamentals of video game design and development
produce a small game which could be hosted on my website
I believe I achieved my goals and now have a small proof of concept game I can call my own. The only thing I’m unhappy with is the lighting in this small game - publishing via WebGL can impact it. However, I think it is more than sufficient for what I intended to do.
Stitchstock
I do a lot of cross-stitching. I’m not particularly artistic; cross-stitching is essentially pixel art with thread. But it’s a nice way to relax. There’s something about tactile art that really makes it worthwhile.
However, something I never thought I’d have to deal with is the sheer amount of embroidery floss you assemble after only a few projects. Do you know how many shades of green there are??? (Answer: many.)
Stitchstock
I do a lot of cross-stitching. I’m not particularly artistic; cross-stitching is essentially pixel art with thread. But it’s a nice way to relax. There’s something about tactile art that really makes it worthwhile.
However, something I never thought I’d have to deal with is the sheer amount of embroidery floss you assemble after only a few projects. Do you know how many shades of green there are??? (Answer: many.)
The embroidery floss company that has the widest distribution in the world is DMC, and they have over 500 different colours in their standard collection. I already have hundreds of colours!
For a long while, I used an excel spreadsheet to keep track of the colours I already had. However, that’s not very efficient or user-friendly. I downloaded a few apps to try to help organise myself, but they either were overly complex (“measure the amount of thread you’re using to the millimetre”) or had poor UX. Either way, they didn’t get me what I needed.
In January, our professors gave us a two and a half day challenge: impress us. So I chose to build an Android app to help me keep track of my growing collection of floss / thread.
The app, Stitchstock, allows users to add DMC colours to their stock, mark a skein as “low stock” (meaning, I think I’m running out of this), or mark a colour as needed regardless of whether they have it. It gives users a little shopping list of colours they need to remember to buy, which is especially important if you’re like me and put projects down for…8 months…
Stitchstock is far from finished. It has a few UX problems, is missing a big feature (grouping colours by project), and really needs to be tested with other potential users. I intend to keep working on it, and maybe, one day, it’ll go up on Google Play.
2025 edit: Dear reader, it did not up on Google Play
The Obligatory Conway's Game of Life Attempt
So, we had a unit in Uni where we had to build Conway’s Game of Life. However, our professors gave us this task before we tackled “the Big O” problem. Every group’s programs had massive memory problems or tried to fit an “infinite” grid of squares into 2D arrays (in Java).
After the unit on memory handling, I decided to tackle the task on my own. I built my Game of Life using Java with a JavaFX front-end. These were the tools we had to build it in the first place, so I stuck to it.
The Obligatory Conway's Game of Life Attempt
So, we had a unit in Uni where we had to build Conway’s Game of Life. However, our professors gave us this task before we tackled “the Big O” problem. Every group’s programs had massive memory problems or tried to fit an “infinite” grid of squares into 2D arrays (in Java).
After the unit on memory handling, I decided to tackle the task on my own. I built my Game of Life using Java with a JavaFX front-end. These were the tools we had to build it in the first place, so I stuck to it.
For the record, I was not aiming for artistic beauty, but rather, something that worked. I journaled my progress on GitHub and go deep in depth on the whats and hows of my program. It’s a humble Conway’s Game of Life, but I was fairly happy I was able to get there on my own. I hope to come back to it someday soon to finish it.
2022 edit: Note the naivety of “Add photo here” messages to myself and the final journal entry stating the project will be “resume[d] at a later date.” The joys of student life!
In hindsight, I think the biggest issue with this attempt was the use of JavaFX and not working on a way to host online. I’d love to give this another go using a javascript or typescript frontend and a C# backend.
Object-Oriented Rock Paper Scissors
2025 note: I've included this little Ruby based Rock Paper Scissors Lizard Spock game I made back in 2018. At that time, I was self-studying via an online coding school called Launch School. This game was a part of an assignment for an early class.
I decided to share it because I've always been very proud of this little game's very rudimentary computer players I put together. But I was mostly really proud at the time of how the code turned out.
Object-Oriented Rock Paper Scissors
2025 note: I've included this little Ruby based Rock Paper Scissors Lizard Spock game I made back in 2018. At that time, I was self-studying via an online coding school called Launch School. This game was a part of an assignment for an early class.
I decided to share it because I've always been very proud of this little game's very rudimentary computer players I put together. But I was mostly really proud at the time of how the code turned out.
Maddie chose Rock. Tom Servo chose Scissors. Maddie won! ===========Scoreboard=========== Maddie: 3 pts. Tom Servo: 2 pts. ================================ Maddie is the champion! Tom Servo says: They must've spent tens of dollars on this.