My 2023 H2

My 2023 H2

šŸ’Ŗ 2023 H2 Retrospect

2023, especially the latter half, flew by in a whirlwind. The biggest update is undoubtedly the progress on the Over Protocol blockchain mainnet, to which my company has been contributing. In July, after nearly 700,000 pre-registrations, Over Wallet launched and quickly surpassed 5 million users, drawing significant market attention. Initially named Project P-over, the project went through two test phases and emerged as OverNode.

OverNode is the project I've invested the most time and effort into. Itā€™s a desktop-exclusive app that enables anyone to operate a blockchain node on their home PC and participate as a validator to contribute to the network. In October, we ran a closed beta for selected users, followed by an open beta in December, available to all Over Wallet users. With the official release planned for this year, weā€™re still working to make the app more robust.

Following my mid-year retrospective (2023 H1), I'm a bit late but finally wrapping up 2023 with a year-end summary. I set multiple goals, and Iā€™m personally proud to have achieved about half of them. I kept a lot of notes, both personally and within the company, but I regret not refining them enough to share externally. I'll try to put in more effort on that front this year.

šŸ‘Øā€šŸ’» As an engineer

In the first half of 2023, I focused on studying and familiarizing myself with the tools needed for frontend development. The second half, however, was about applying what Iā€™d learned in real-world scenarios and diving deeper. As we delivered an actual product to users, I gained experiential insights into what works well and what doesnā€™t, both at the code level and the infrastructure level.

Please look forward to our upcoming second testnet!

The project I devoted the most time to was OverNode, as mentioned earlier. In addition, I worked on the Over Protocol landing page and the blockchain explorer, OverView. All three products have either been publicly released or are in the process of being made public, allowing us to receive real-time feedback. You can find my retrospective as a product builder below.

I think I can categorize a few key themes.

1ļøāƒ£ Electron & Node.js

OverNode is a desktop app built using the Electron framework. Since it runs on a Node.js environment, I worked not only on the appā€™s frontend (known as the Renderer process in Electron) but also on the backend (called the Main process in Electron). In fact, I spent more time figuring out how to fetch data on the backend and manage multiple processes than on styling and creating React components.

As a result, I encountered a variety of libraries beyond the React-centric ones typically used in frontend development, and I felt I became more familiar with the JavaScript ecosystem. Some libraries I integrated include async-mutex (to resolve race conditions in asynchronous operations), find-process (for searching processes by PID, etc.), and node-cache (for memory caching).

As I became more comfortable with Node.js and JavaScript, I was able to automate tedious tasks through well-designed scripts. Itā€™s been personally satisfying to see JavaScript not just as a tool for UI development but as a versatile programming tool in its own right.

2ļøāƒ£ Clean code

As the project grew in size and features were added, additional layers increased its complexity significantly. This led to minor bugs from hard-to-read code, and time spent re-understanding existing code to fix these bugs increased. I started thinking more about how to write clean, readable code to address these issues.

Rough notes on the thoughts and challenges encountered during development

  • OverNode includes clients that can operate blockchain nodes within the app. A major question I grappled with was: how can we manage these client processes smoothly without conflicts?
  • To display a single screen, data needs to be fetched from numerous sources and refined. How can we structure the types effectively and write this process in a way that is both readable and maintainable?
Grokking Simplicity by Eric Normand

A turning point for me was being introduced to functional programming through an in-house study group. We explored the book Grokking Simplicity, which, rather than diving into complex terms and concepts like monads and currying, emphasizes "thinking like a functional programmer" as its priority. The approach encourages dividing app layers by purpose, where functions in each layer should only call functions from the layer directly beneath them. When mapping out a call graph for functions, if a function skips layers or calls higher-level functions, these become prime targets for refactoring.

Reading this book didnā€™t immediately elevate my code quality, but it did change how I view thingsā€”breaking the world down into layers based on purpose. It feels like Iā€™ve gained a new framework for thinking.

3ļøāƒ£ Infra

Since I've been handling deployments fairly often, I'm still learning but getting a taste of AWS and GitHub Actions. Previously, I had only simple experiences, like one-click linking a GitHub repo with Vercel for deployment. Now, setting up buckets, adding a CDN, and connecting domains within AWS has given me a better sense of the process. Iā€™d like to develop the ability to understand and utilize AWSā€™s vast range of services effectively.

I also invested considerable time in the error-logging platform Sentry. With numerous throw statements scattered throughout the code (plus the appā€™s increasing complexity), there was a period where we were overwhelmed with error logs. Things are more organized now, and this process has provided insights, particularly into the diverse errors occurring on various devices. Notably, there are a few obscure errors on Windows, which Iā€™ll tackle as a challenge for 2024.

4ļøāƒ£ Bleeding edge

In my last retrospective, I mentioned my interest in React's latest push towards server components. Personally, I'm very interested in the latest trends in rendering, so Iā€™ve been consistently tracking developments in this area.

However, adopting the latest technologies often brings side effects, something we jokingly refer to as the "paradox of new tech" within our team. New solutions frequently introduce drawbacks, but articles or videos that introduce these innovations usually highlight only the advantages. This can sometimes dull our awareness of potential downsides when researching new technology. Moreover, even if something new is inherently beneficial, itā€™s crucial for the whole team to become familiar with and agree on its use to ensure itā€™s applied effectively.

It may be tempting to introduce new methodologies in a new project, but blindly replacing existing, functional code without considering why the new approach is necessary isnā€™t ideal.


ā›ļø As a product builder

Reflecting before memories fade (KO)

Going through a full product cycle, I also experienced service deployment. I expected to feel nervous, given it was my first deployment, but I was too busy handling the flood of issue reports before and after the release to even think about it!

As the app reached users, I saw a range of reactions on platforms like X, Discord, and Telegram. Many users resonated with the values we aimed to convey, which was rewarding to see. Of course, there were also plenty of complaints about bugs, but responding to every unique scenario users encounter is challenging. I learned the importance of always having a mindset of "What if this doesnā€™t work as expected?"

I also took on some minor planning tasks. As we transitioned from closed beta to open beta, we needed to automate bug reporting to handle the anticipated surge in user numbers. Reflecting on the closed beta experience, I defined a schema for what should be included in bug reports and shared ideas on design direction, inspired by the reporting UI in Arc, which I find incredibly useful.

Bringing a product to completion required collaboration with numerous people. Particularly with blockchain products, itā€™s essential to communicate complex and unfamiliar technical concepts to users in a convincing way. Working on the frontend, I often found myself bridging these concepts for others. While I enjoyed the collaboration, I also reflected on the role I can play best in this process. Even if I donā€™t have deep technical expertise, I seem able to quickly digest information and present it clearly, which might be my strongest contribution.


āœļø As a student

At work, Iā€™m steadily acquiring new knowledge through a casual development study group. So far, we've skimmed through three different books.

  • Design Patterns ā€“ I got a basic overview of commonly used patterns in OOP.
  • Grokking Simplicity ā€“ This introduced me to functional programming, a topic Iā€™d like to explore further.
  • HTTP: The Definitive Guide ā€“ It feels like an encyclopedia of HTTP, making it a bit dry, but it helped clarify vague concepts (e.g., cookies) I previously knew only by name.

I took on the role of vice president for KAIST's blockchain society, Orakle. In the latter half of the year, work kept me busy, so I couldnā€™t dedicate as much time to team activities in the society as I would have liked. Iā€™m currently working on publishing my study of the Ethereum Beacon Chain and roadmap in the form of a Canon. (Ethereum Roadmap Canon)

The deeper I delve into Ethereumā€™s consensus structure, the more fascinating it becomes. You can see the thought researchers have put into how a desirable network can be formed with so many participants. The incentive structure is complex, yet itā€™s intriguing how each parameter (e.g., the requirement to deposit at least 32 ETH to become a validator) has a rationale behind it. However, the available study resources are limited, so I focused on thoroughly reading eth2book as my primary source.


šŸ¤© Looking forward to an even more exciting 2024

Another leave of absence extension (KO)

2023 was a personally fulfilling year for me. Exactly a year ago, I joined a growing company at just the right time, and through a wealth of experiences, I felt significant personal growth. I'm incredibly grateful to have had these opportunities through Superblock!

Iā€™m excited to see what 2024 has in store. For now, Iā€™ve extended the leave of absence Iā€™ve been on this past year. With the recent lift on the schoolā€™s leave restrictions, it looks like Iā€™ll have more time to gain practical experience in the professional world.

This year, with the launch of Over Protocolā€™s mainnet, several of the products Iā€™m responsible for are also expected to be officially released to the world.

As I enter my second year as a developer, I'm grateful that this line of work suits me better than I expected. I hope 2024 will be a year of further growth in my abilities as a developer. Like in RPG games, frontend developers need to find their niche and develop their specialty. I envision building strengths in engineering and mastering the tech needed to quickly implement high-quality products. Ideally, Iā€™d like to be skilled across fields, so I plan to explore and study a bit of everything.

LinkedIn | Github | X(Twitter)