The making of: Disco Narrator
How I made a Text-to-Speech (TTS) model for (some of) a video game’s characters.
152334H
)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.
Previously, I used Jekyll (instead of Hugo), but there were many unfortunate problems with that setup. More on that here.
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.
A simple web app (demo) that uses AI to emulate the voices of a few video game characters. Forked from the Controllable TalkNet project. More information available in the following series:
How I made a Text-to-Speech (TTS) model for (some of) a video game’s characters.
react-viewer-viewer
A small React.js Tauri App (full demo here, if the one below doesn’t work) I developed to learn the basics of modern Full Stack development. Keywords: typescript, material-ui, create-react-app.
Some screenshots:
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.
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:
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.
pwnscripts
(2020-2021)pwnscripts
is a deprecated Python package I developed as a personal extension of pwntools.
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:
vim
wasn’t enough for modern development (although later I switched back to neovim after understanding its plugin ecosystem better).__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…
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:
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 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.
Year | Points (global) | Languages |
---|---|---|
2018 | 0 :( | Python, C |
2019 | 37 | Python, JS, C |
2020 | 28 | Python |
2021 | 372 | Python |
Although I started playing Advent of Code to learn programming, I mostly do it for the fun of it, nowadays.
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.
I’ve made minor contributions to other people’s repositories. See my GitHub profile for more info.
I’m an alumnus of Hwa Chong Institution (College), and spent most of my free time there helping out the Cybersecurity Section of the Infocomm and Robotics Society (IRS).
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.
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.