How I made a Text-to-Speech (TTS) model for (some of) a video game’s characters.
Stuff I’ve done
Weakly sorted by chronology
You’re looking at it!
This blog is hosted by Github Pages. I upload the source files for this blog (developed in Hugo) to a repository, triggering a Github Action that compiles everything into a bundle minified HTML/CSS/JS. This produces the static page you’re reading right now.
I use Obsidian to draft out posts, before settling the post metadata && final checks in neovim while running
hugo server -D. This isn’t the greatest workflow, and I’m working on a file sync system to smoothen the process.
I started the project while I was midway through the Full Stack Open course online, so some of the design decisions in the app are regrettable. I’ve also developed a small backend API for the app (keywords: NodeJS, Express, MongoDB, docker-compose), but I’ve yet to publish its source.
Sieberrsec CTF 3.0 (2021)
Together with my friends at IRS Cybersec, we hosted Sieberrsec CTF 3.01, an online competition with >200 players, targeting Singaporeans in Secondary/Pre-Teritary Education.
I was personally responsible for:
- Challenge development: I made the most number of challenges, tested even more of them, and did my best to simplify/balance them in favour of the participants. I also handled the hosting/testing for most remote challenge microservices.
- QA/Admin details: CTF Platform testing, Discord announcements/organisation, post-event cleanup && writeup collection.
It takes a lot more than that to run a CTF, but I’ll leave that information to a future post.
1 - 1.0 was a school event, 2.0 was nominally public but primarily catered to a few schools.
CVEs (at Star Labs)
This was the first serious project I created. It’s not big – a few thousand Lines of Code in total – but it got me working with technologies that I had felt were for Real™ Developers Only. To summarise:
- I experienced the process of creating, developing, and publishing Python libraries to PyPi
- I went through Test Driven Development with the pytest framework.
- I made use of Github Actions to do the two things above automatically after pushing commits.
- I tried switching to vscode because I realised plain old
vimwasn’t enough for modern development (although later I switched back to neovim after understanding its plugin ecosystem better).
- I got to understand first-hand why people don’t recommend using Python for large projects (spoiler:
__magic_methods__are exceedingly bad for code readability!)
And I learned a lot about programming in general, along the way. But I’m not working on this project anymore, because…
CTF player (2019-2021)
I used to be very active in the CTF scene. My old CTFTime profile and my team’s writeup repository is full of hundreds of challenges I’ve covered over the years. I won prizes for several local competitions in that time period, including:
- 1st in CDDC 2020 (Junior Category)
- 1st in Cyberthon 2020
- 2nd in Whitehacks 2020
- 1st in STACK The Flags 2020 (Junior Category)
- 1st in Whitehacks 2021
- 3rd in DSO-NUS CTF 2021
- 1st in CTF.SG CTF 2021
I am no longer a CTF player. I’m happy to assist juniors/newcomers in learning the fundamentals, but I’m effectively retired from the local cadre of CTF professionals.
Advent of Code
Advent of Code was my introduction to the world of programming puzzles. My secondary school didn’t offer much in the way of programming (beyond the regrettable Hello World tutorials), and I might not have become the programmer I am today without Eric Wastl’s work.
|2018||0 :(||Python, C|
|2019||37||Python, JS, C|
Although I started playing Advent of Code to learn programming, I mostly do it for the fun of it, nowadays.
Other programming problems
While I’m not a Real™ Competitive Programmer, I play contests every now and then for fun, as well as to keep myself qualified for basic coding interviews.
Open source contributions
I’ve made minor contributions to other people’s repositories. See my GitHub profile for more info.
Some info that will only make sense to Singaporean eggheads: PCMH+H3 Chem, AAAA/AD+Dist, SSEF, SChO. I include this for completion’s sake; most readers probably don’t care about this.
My religious beliefs
Ubuntu, neovim, tabs > splits, tmux, docker, python3 (4 spaces per indent), Rust > C*, typescript, printf-debugging,
Casing_doesNotMatter, iterators > indexing, Copilot, industry collapse by 2030.