Who I am
Hi, I'm Yi Fan Song, I have a Bachelors of
Mathematics from the
University of Waterloo.
I'm from Xi'an, China, and I love the food from my hometown,
凉皮,
羊肉泡馍,
肉夹馍,
etc..
Send me an email.
Other ways to reach me.
My resume, usually, this website will be more up to date.
Things I do
Most of the code I've written are for the backend, but I've done a lot of frontend in the past, my interest mostly lies in backend, so that's what my own projects have mostly been about, either that or it was some tool to solve some trivial problem for myself.
Bits of techstack that I know and like
- Programming languages: Typescript, Golang, Rust
- Frontend: NextJS
- Misc: Docker, Nginx, Kubernetes
- Typesetting: Latex, Typst
Things I made
-
Lots of mistakes, that's usually the quickest way to learn.
-
Shinsengumi
Shinsengumi is a moderation bot that I use for my Discord server. It is built with Typescript, because I have a strong negative opinion on Javascript because of its weakly typed nature. It uses a set of containers to run in a isolated environment from its host server. It uses mysql as the database engine in order to persist its state when it does inevitably crash. I originally planned to use deno as the runtime, but at the time, its Discord api library was not as complete as Discord.Js.
Techstack: Typescript, Node, Mysql, Docker
-
Space-kraken
Space-kraken is a client/process that plays the game Space Traders Automatically. I built it originally to combine gaming and programming, but it was just a fight against the clock to implement a working client before the API has breaking updates, so I seldom work on it when I have a large amount of time to spend.
Techstack: Golang
-
Format-copy-for-firefox
Format-copy-for-firefox is one of those tools I built for myself, I use it to copy youtube links with a prefix to copy paste into a Discord channel to issue a command to a bot to play music. If I ever get around to it, it might also be useful to let me copy multiple links and paste them all at once instead of scrolling through ditto.
If only I've search a bit before making it, it's always been made like 50 times. I guess this was a good excuse to learn how to make a browser extension.Techstack: Javascript
Things I like
Of course, I do things other than programming or spending an entire day trying to get a program to build in my environment.
-
Fitness
Nothing is better for keeping a healthy mind, than a healthy body. Going to the gym, for a run, playing badminton, etc. There are all sorts of activities that can be done alone or with friends to keep in shape.
-
Board Games
Board Games are cool, it's a good excuse to catch up with friends, have a beer or two, maybe even have a BBQ when the weather is nice. Games I've played lately include Citadels, Clank, Splendor, etc.
-
Video Games
I used to be a huge FPS player, playing Battlefield 3-4, CS:GO and Overwatch. Nowadays, I try to find some relaxing games like Minecraft and Terraria. Try out the new game Blue Prince, it's an amazing puzzle roguelike, all about solving an overarching puzzle through multiple runs. It's innovative with a great story, and probably hundreds of hours of gameplay... as long as you don't spoil anything.
Things I think
about website design
My website is ultra light and simple because I've once read a rant on overdesigning websites and I agree with lots of the points brought up, and the simpler a website is, the easier it is to make it accessible by following the Web Accessiblity Iniatiative (WAI) guidelines. Also, I am not going to spend countless hours trying to make a fancy looking website just to learn some random animation library that will have no use besides looking nice when you have javascript turned on and don't mind loading a massive library (no offense to front-end developers), but that is simply not my area of interest.
about https
Secure your freaking website, there is no reason why in this day and age, anyone still uses http. Service like Let's Encrypt makes it free to get a certificate and there's tons of tools out there to automatically get a certificate for you and install it within a static webserver. If it's a dynamic website or some API, it's not very hard to add https to most backend frameworks, and worst case just reverse proxy it, as long as the internal network is secure (we never know these days, who's watching). Just add https.
about my blog
I suppose this would also contain a list of recent blogs if I ever decide to blog. [WIP]
Things I Read
I don't know who made these, but they are so well articulated with real world examples that it's hard to not take these to heart.
How to reach me
I can speak English, French or Chinese.