
Somone slid into my dms asking me if I wanted a slave job that does 10 too 12 hours a day but pays 1.6x my current salary. So without even securing an interview I just straight up bootcamped my way into learning Golang. First it was the basics of
Go by Example then some youtube tutorials. I'm pretty sure many of us goes through this same process one way or another.
So then I just built some bs REST APIs with Chi router and Gorm just to test out some things. Vibe coded the entire project with my best friend ChatGPT which helped me setup my dockerfile and docker-compose. Originally the project was supposed to fetch stock prices, have an in-memory calculation that I will do some maths magic on it to send me a notification to Telegram. Then the whole application was supposed to be containerized and deployed on EC2. I tried setting up a local postgres volume in my docker-compose but somehow vibe coding couldn't help me solve me having to keep running migration on app startup.
I even setup my debit card so that AWS can charge my ass just for wanting to use free tier RDS (to store my ticker symbols). First version can be found here called
go-chujang But because my original architecture used kafka as a temp storage where my worker can keep consuming and reading the ticker prices, this flow seemed abit anti-pattern to me. Once i took a step back and actually reviewed the architecture i was like wtf im a dumbass.
So here came version 2 called
gold-digger where it basically ripped out the whole kafka integration with a local volume for TimescaleDB (TSDB / TigerData). On a high-level seems like it should work better but unironically at this scale where im limited to free tier rate limit of like 20-25 calls per day with rotation of 5 API keys, I doubt I would ever need this kind of architecture.
But TLDR I got my
home server thinking I can deploy this application on it. But I'm still currently stuck at pushing my image tag to my home server registry. But fun times learning Go, it's as expected as what everyone raves about, easy to implement concurrency, abit of a nuisance pointer referencing. Very pragmatic error handling paradigm but abit tedious at some times.