The Journey Continues: Holiday Grinding and New Technologies
The holiday season definitely tested my dedication to coding. Between Thanksgiving turkey and Christmas festivities, it was challenging to keep up the momentum. Let's be real - when everyone's winding down for the holidays, gathering with family, and the job market gets quieter, it's tempting to hit pause on the tech journey too.
Pushing Through the Holiday Slump
Look, I'm not gonna lie - I definitely took some breaks (and honestly, I needed them). But here's the thing: even during those "off" moments, I couldn't help but get excited about all the cool stuff I wanted to learn. Sure, the job market gets pretty quiet during the holidays, but I saw it as a best opportunity to level up my skills and dive into some technologies I've been eyeing. Sometimes you've got to make the most of the slow seasons... right?
Improving Algorithmic Thinking
One major focus has been grinding through algorithms - an essential skill for technical interviews. Take this classic example of the Best Time to Buy and Sell Stock II problem:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
profit = 0
for i in range(1, len(prices)):
if prices[i] > prices[i-1]:
profit += prices[i] - prices[i-1]
return profit
What I'm most proud about how I thought of solving this problem is the journey to the "aha" moment. Initially, I was overthinking the solution - trying to track the absolute lowest price and waiting for the perfect highest selling point. I kept asking myself "How will I know when it's actually the best time to sell?" Then I realized - since we can buy and sell on the same day, we can simply take profit whenever it appears. No need to overcomplicate it by trying to time the perfect buy-low-sell-high scenario. Just collecting those small profits was all it took.
Exploring Go: A New Language Adventure
I've been diving into Go lately, starting with their official documentation. Having clear, well-structured docs makes such a difference when learning a new language. Here's a simple function I wrote while following along:
func handleBookings(bookings []string) []string {
firstNames := []string{}
for _, booking := range bookings {
var names = strings.Fields(booking)
firstNames = append(firstNames, names[0])
}
return firstNames
}
This function extracts first names from a list of bookings. While adapting to new syntax always takes time, my experience with TypeScript has definitely helped. Seeing []string
or declaring return types in Go feels slightly more natural after spending time with TypeScript's type system. It's interesting how knowledge from one language can smooth the learning curve of another.
Docker: The Game Changer
After banging my head against deployment issues for what felt like forever, discovering Docker has been a game-changer. Here's what my recent project setup looks like:
services:
backend:
build: .
container_name: app-backend
environment:
- APP_ENV=production
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/postgres
ports:
- "8000:8000"
depends_on:
- postgres
The best part is never having to hear "but it works on my machine" again. When I deploy now, everything's consistent - same environment, every time, everywhere. What used to take hours of troubleshooting now just... works - and that's all I can ask for.
Looking Forward
While the holiday season might have slowed down the job market, it hasn't slowed down my growth as a developer. I'm pretty excited about everything I've picked up along the way - from cracking algorithm problems to writing Go code and getting comfortable with Docker.
I'm really looking forward to what 2025 has in store. The learning curve can feel steep at times, but 1% of improvement everyday can go a long way.
As a note to myself: The tech industry might have its quiet seasons, but that's the perfect time to build, learn, and prepare for the opportunities ahead. 🚀