Suhun Han (한수훈)
Software Engineer based in Seoul, Korea
I'm Suhun, a software engineer passionate about solving real-world problems using cutting-edge technologies.
I always thrive on learning new skills/technologies driven by curiosity. Over the years, I've honed my programming expertise in modern programming languages like TypeScript, Go, Rust, and Swift through spare-time hobby programming and full-time work. I also enjoy the challenges of DevOps things, such as building infrastructures and network architectures. (FYI, I'm maintaining a 10G homelab in my home, connected to the secondary homelab running in my family house via a site-to-site VPN. Here are more details about it (Korean)).
I started software development at 14 years old. Since then, I've always been fascinated by the design of programming languages and how they work so naturally with hardware. I've also always loved seeing the software I design/develop solve real-world problems, improve the world, and receive customer feedback and satisfaction.
Work Experiences
Lead Software Engineer @ Inedit Corp.
2022 - Present
Software Engineer @ EJN Corp.
2020 - 2022
Launched and maintained multiple services including GOCRE, a live streaming support tool for creators in Japan, and TGD Ranking, an engagement data visualization service for Twitch viewers in South Korea.
GOCRE (ゴークリ)
A web-based live streaming support tool for creators in Japan.
- Utilized Terraform to set up a fully managed infrastructure, including VPC, EC2, ECS, RDS, and more.
- Initiated front-end structure with React and MobX, and dedicated to developing back-end services using Nest.js and uWebSockets.js.
- Used OpenAPI Specification to provide detailed documentation and eliminate API-related human errors.
TGD Ranking (트게더 랭킹)
A data visualization service for Twitch viewers in South Korea.
- Built front-end using React and MobX, and back-end using Nest.js.
- Operated and scaled AWS Aurora PostgreSQL and ElastiCache for data storage and caching, without any critical issues.
- Optimized for handling over 100k database-intensive requests per minute at peak, maintaining sub-second response times.
TWIP (트윕)
Contributed to transitioning a legacy PHP-based service to Nest.js.
Software Engineer @ HELP ME Co., Ltd.
2018 - 2020
Specialized in Automation and Reliability Engineering. Implemented SRE-based discipline, managed critical application availability, and automated many repetitive tasks to improve productivity and efficiency.
Implemented SRE-based discipline, including internal tech seminars, documentation, and system monitoring/alerting using Prometheus and Grafana.
Defined SLO/SLI and enhanced monitoring to ensure the availability of mission-critical services.
Managed the office's network infrastructure, including NAT on CISCO ASA with zone-based firewalls.
Deployed Kubernetes using Kops to manage internal services and applications efficiently.
Developed a high-performance .NET-based Windows application for workspace. Implementing custom indexing for the workspace, resulted in reduced directory/file lookup times to less than a second from 10+ seconds.
Software Engineer (Sergeant) @ Cyber Command, Republic of Korea
2016 - 2018
During mandatory military service, I managed a secure air-gapped network, developed a web monitoring system, and automated website change detection using Go and Python.
Established and managed a secure, physically separated air-gapped network.
Mirrored complete repositories of PyPi, NuGet, and npm using self-written scripts. (NPM fork utility: open-sourced in GitHub)
Developed a real-time web monitoring and website mutation detection system, processing 100K pages daily across 50+ VMs.
Mentee @ Software Maestro 4th (National IT Industry Promotion Agency)
2013 - 2014
Publications
Published an article on security awareness, exploring why HTTPS can be faster than HTTP in 마이크로 소프트웨어 (MICRO SOFTWARE), a famous Korean software-related magazine.
Open-Source Projects
An android OTA payload dumper written in Go. Published to multiple well-known package repos and actively used in major Android OSS communities such as XDA Developers and r/LineageOS. (2.2K stars)
Published to package repos:
Actively used in communities:
ssut/nestjs-sqs
2020
A package to integrate AWS SQS into a NestJS application. (200 stars, around 62k weekly downloads)
ssut/py-googletrans
2017
(Unofficial) Googletrans: Free and Unlimited Google Translate API for Python. (3.8K stars)
ssut/Matchumbeop
2024
Matchumbeop is a native, Swift-written macOS app designed to simplify the use of multiple publicly available 한글(Hangul) spell checkers by integrating their unofficial APIs in a user-friendly way. This app makes it easy for macOS users to use these spell-checking services natively.
ssut/py-hanspell
2015
Python library for Korean spell check using Naver's spell check API. (326 stars, occasionally maintained)
A smart automation alternative to Mi Home. (41 stars)
Reverse-engineered Projects
ssut/kt-speedtest-go
2021
A Pure Go port of the speed.kt.com agent. (Reverse-engineered Java-based agent)
An unofficial BenchBee SpeedTest Client designed for CLI usage. (Reverse-engineered obfuscated JS code)
ssut/pykakao
2014
A simple KakaoTalk loco/http protocol wrapper for Python. Reverse-engineered Windows KakaoTalk Client (Win32 native).
Mentioned as a basic reference
Mentioned in node-kakao as a basic reference.
Spare-time Production Projects
일베회원검사기
2014
A web application built with Ruby and Sinatra, deployed on Heroku. This app went viral in Korea and was featured on various Korean news sites. For some time, it was ranked as the top-ranked keyword in the largest Korean search engine, NAVER.
Ubitinfo
2013 - 2016
A web service for managing and viewing gameplay data for Konami's arcade music video game, 'Jubeat (ユビート)', with thousands of active users.
s.ubit.info (ubit.info for jubeat saucer, archive)
Initial version built with PHP 5.4, MySQL, php5-fpm + nginx, with 2K monthly active users (MAU).
ff.ubit.info (ubit.info for jubeat saucer fulfill, archive)
Upgraded version built with Ruby using Padrino, ERB, Sidekiq, Puma, and DataMapper, with 4K MAU.
ubit.info (for jubeat prop, archive)
Final version built with Python using Django, Celery, MySQL, uwsgi + nginx, with 6K+ MAU.
Discontinued in 2016 (jubeat qubell)
Siri Proxy Server
2011
A Siri proxy server for use with Spire in iOS 5+ (Siri on iPhone 4), with over 3K monthly active users (MAU) in South Korea. I can't disclose the service name here for some reason.
Open-Source Contributions
Improved error handling when dropping a file that cannot be opened into the workspace pane.
Added a feature to create a new file by double-clicking on blank space in the project panel.
Reported an issue where an unexpected drag state is triggered when clicking another entry in the project panel while creating a new file.
Fixed an issue to ensure scalarsMap in buildSchemaOptions is respected.
Fixed the dataloader reference in usage documentation.
Added support for MikroORM v6.
Contributed to the release of a universal binary supporting Apple Silicon.
Mentioned in the release notes
Mentioned in the release notes for version 1.12.2.
Added support for redis.options.keyPrefix.
Helped with testing on Apple Silicon.
Fixed module name in TypeScript typings.
Added support for Web Worker in twitch-js.
Fixed an issue to ensure expires_in is an integer. (Duplicate fix)
- [2020] sequelize/sequelize - Allow sequelize.fn and sequelize.literal in fields of IndexesOptionsJavaScript
Allowed usage of sequelize.fn and sequelize.literal in fields of IndexesOptions.
Reported and helped resolve an issue where `this.doc` was possibly undefined.
Reviewed and commented on a PR that set encoding to utf-8 for JSON responses.
Fixed an issue where the content-length header was missing when using QUIC.
Proposed and discussed an option to support meta redirection in Go Resty.
Implemented sendChatChecked (mark as read) feature in the LINE API.
Resolved an issue where a URIError occurred when joining a channel named with multibyte characters.
Contributed to the project by making it work again without the image upload functionality.
Updated the Korean locale in the Sidekiq project.
Fixed a syntax error in SCLAlertView-Swift when using Xcode 6 beta 4.
Fixed errors in PHP 5.4/5.5 and updated the README for using PHP 5.4 built-in web server.
Additional Informations
- Software Development and Homelab Environment
Primary: 🖥️ macOS (M1 Max MacBook Pro 16-inch)
Linux Machines
- Primary home server: ASRockRack X570D4I-2T, AMD Ryzen 5950X, 64 RAM, 1TB M.2 NVMe SSD, 1TB x 4 SSD, 10G SPF+ Ethernet.
- Secondary home server: ASRockRack E3C236D2I, Intel XEON E3-1230 v5, 32GB RAM, 1TB SSD x 2.
- Primary NAS for NFS Storage: Synology DiskStation DS1821+, 10TB x 4 HDD (RAID 5), 4TB x 2 HDD (RAID 1), 1TB x 2 M.2 NVMe SSD (Cache), 10G SPF+ Ethernet.
Network Equipments (in Seoul)
Network Equipments (in my family house)
Softwares
- IDE: Zed (for almost all programming languages), Xcode
- Keymap: Vim
- Terminal: iTerm2
- Shell: Zsh, with my custom dotfiles
- Git: Sublime Merge
- Database: Postico (for PostgreSQL), Sequel Pro (for MySQL)
- Personal Vault: Bitwarden, iCloud Keychain
- Note: Bear
- Activities and Hobbies
❤️ Travel, running, photography, and driving (owning: Tesla Model Y and Hyundai IONIQ 5).
Traveled to: 🇰🇷🇯🇵🇺🇸🇬🇧🇫🇷🇧🇪🇳🇱🇩🇪🇨🇭🇮🇹🇦🇪🇨🇳🇷🇺🇮🇸🇦🇹🇸🇬🇦🇺🇹🇼🇭🇰
Circuit Experiences: BMW Driving Center, Korea, Inje Speedium, Nürburgring Nordschleife, AMG Everland Speedway
- LanguagesKoreanEnglishJapanese
Native Korean; limited working proficiency in English; daily conversation level Japanese.