Goodbye, 2023
About work and life
The year 2023 was tumultuous, with the earthquake in Turkestan, Russia’s invasion of Ukraine, the never-ending war between Palestine and Israel, steeply rising interest rates, and the failure of many startups. Despite all the noise, it was a grateful year for me, feeling appreciated for the little things around me. There’s always a lot going on, it’s important to follow my heart and live at my own pace.
Work
I made gradual improvement to Log Monitoring at WhaTapLabs.
Handling a bunch of log data effectively is challenging.
We have some large enterprise customers who use the logs feature, so we got references to help us improve the performance of our log monitoring. A lot of log data is generated every second, so it’s essential to sample the data properly and deliver the log data without missing any data so that users can find the exact logs they are looking for.
The WhaTap agent can collect 1 billion logs per day. The client fetches up to 20,000 logs at a time, and there are various ways to fetch the data including changing the time range, applying filters, infinite scrolling, and click load more button. At this time, I considered a lot about how to reduce the burden on the server as much as possible because sending HTTP requests that are required to full-scan unindexed logs is too heavy and can put stress on the server. A waterfall of data can cause a browser OOM(Out of Memory), so it’s important to keep an eye on the client as well.
Due to the large amount of data, I’ve tried to reduce unnecessary API calls as much as possible. For example, suppose a user’s quick action changes a parameter and it triggers to call API multiple times. in that case, I cancel the previous request and only consume data from the most recent request. Or, if the API is called recursively every N seconds, I considered that if the previous request failed, I specify how the error should be handled, and it should not affect the next HTTP request.
Log features that can be shared anywhere, even if the business logic is different.
The log feature should be available across all products. Therefore, It should be able to use log components across different product types, such as APM, Server, Browser, and more, to accept its business requirements.
To achieve this, I tried to do the following:
- I created the custom hooks that purely fetch log data but no dependencies.
- I defined roles for the log feature, like edit log setting, and skip agent setting, and mapped these roles to each product type so that a developer in a different group can control log features based on their business needs. It’s easier to maintain the log-core functionality to stay on top of any changes other developers make.
- I practiced considering the code whether to evolve it as a library or a framework especially when I needed to create common modules. This is what a CTO advised me: in a library way, you provide the minimum functionality in segments with flexibility. The consumer combines the segments to create the desired result. The framework way provides a finished result based on the rules you set. The consumer must follow the strict rules and does not have to assemble or develop additional modules. Both approaches have their pros and cons, so there’s no one answer.
Studying observability
I’ve been developing a single feature of Log Monitoring so far, and now It is at the point where we, our team, need to tie them together to create a solid product that provides observability that can discern the overall health of the application by independent features that are organically connected.
Monitoring vs Observability
Monitoring tells you that something is wrong. Observability uses data collection to tell you what is wrong and why it happened.
I attempted to build up the idea that might be necessary features for users who use log monitoring. So I shared the idea with my colleagues I thought might be needed in the future, and I tried to find things to improve as well. Working this way naturally increased my interest in log monitoring and made it more fun.
Learning
- I tried to deeply understand Typescript. Narrowing the type so that the developer can assume the code with the context that Typescript provides. If you are interested, you can read the Practical Typescript snippet.
- I learned Nest.js and TypeORM. Next.js is a server-side framework that uses JavaScript, so learning was relatively familiar and fun. There are so many things that seem like fun to learn.
- I became a junior student at the Open University of Korea. working and being a student at the same time was not easy sometimes.
Thoughts
- With three years of experience, being good at what you’re doing is taken for granted. You have to find improvements to the product yourself. I felt a kind of recession in my career. So I need to undertake new challenges. To grow, I need to keep pushing myself with an underdog mindset. I need to callous my mind.
- Soft skills are as essential as hard skills.
- There are two ways to feel career satisfaction. Becoming an expert by expanding your domain knowledge of the product you’re working on, or becoming an expert in a technical area — frontend. This year, I’ve been focusing on domain knowledge rather than technology, and I’ll try to have a happy medium between the two.
- The people I spend the most time with during the day are my colleagues. Building trust with colleagues and expanding my relationships is a big part of happiness. Happiness is not something big. It’s just having a nice dinner with good people.
Life
Life swings like a pendulum backward and forward between pain and boredom. — Arthur Schopenhauer
I feel like I’m learning to be resilient no matter what hardships come my way. I want to be a strong person who will never be broken by any kind of hardship.
Had a new family member —cat
I adopted a cat and gave him a name — Tomo(ともだち) which means friends in Japanese. I gave him this name because I hoped that we would be friends for a lifetime. I’ve dreamed of living with a cat for so long but I was scared of commitment. I hesitated to adopt a cat because I do love traveling. One day, a random thought popped up in my head “How much traveling do I need to do to be satisfied?”. A perfect day I would be satisfied with enjoying something like traveling never comes, so It will never happen that I live with a cat. After this consideration, I adopted him with a promise that I would always take care of my cat until the end, even if I wasn’t sure. A cat is a routined animal. Tomo makes me more diligent. Thanks to him, I can wake up at 7 am every day.
Scuba Diving
Okinawa, Japan
I went to Okinawa, Japan in Feb to meet a wild humpback whale. Okanawa’s winter water was cold but the visibility was so clear and beautiful. You can read more in this post.
Moalboal, Philippines
I went to Moalboal, Philippines in Dec to see sardine schools and turtles. The underwater environment including corals, fishes, and other creatures as well as local people have not fully recovered from the typhoon's damage that occurred in 2021, nevertheless, it was full of vitality.
What I read
I do recommend the book — Can’t Hurt Me: Master Your Mind and Defy the Odds by David Goggins. This is the best book I’ve read in 2023.
Thank you for reading my retrospect. We’re strong enough to get through any tough things. I hope that you guys will have a joyful 2024!