• Bloom Filter 101

    What data structure would you use to determine whether an entity is in a given dataset with speed? Many would answer “Hashtable” without hesitation. Hashtable performs well when accessing an entity among a group of entities: the average time complexity of its read operations is constant. Nevertheless, using Hashtables can be rather costly when dealing with large datasets.
    ...
  • Deciding to Grow

    Moving to Japan The first time I came to Japan, I was a tourist. I spent 1 week here during my final year of college. The second time I came to Japan, I was moving here, starting a new job and a different way of life. In the 7 years between, I worked as a software engineer across many American cities and companies.
    ...
  • A Brief Introduction to Pagination

    For many software engineers, endpoints for retrieving a list of entities are probably their favorite to implement–all they need to do is build an SQL statement that grabs all the available items, along with some other minor tasks. It’s all fun and games until the number of entities in the database becomes a bottleneck, where each GET request returns tens of thousands of items.
    ...
  • A More Elegant Alternative to Golang's Error-Handling

    Recently, I joined a new project at Colorkrew that uses Golang as its backend language. Almost everyone on the team, including myself, had no experience with Golang, so we had to start from zero. Learning Golang has been a rewarding experience so far. After all, it is one of the most in demand programming languages now.
    ...
  • Separation of Concerns: Split Your React Components into Containers and Views

    Many frontend engineers probably have experienced the head-scratching moment when their React components become so gigantic that they keep losing their train of thought when navigating through their frontend code. To salvage readability, one of the most common practices is to split up the humongous React components into smaller pieces. Traditionally, they would do this by chopping up the JSX elements.
    ...
  • RESTful API 101

    It is almost impossible for a backend engineer to be oblivious to RESTful API in the 21st century, as it is one of the most popular API types. We can mostly attribute its popularity to its scalability, flexibility, and simplicity, all of which are highly sought-after qualities in modern APIs. If you also find these qualities desirable, you should consider building APIs following the RESTful principles.
    ...
  • Introduction to Functional Programming

    The first programming paradigm that most programmers in the 21st century learn is probably Object Oriented Programming (or OOP for short). Object Oriented Programming allows us to transform real-world entities into highly abstract models with descriptive properties and executable methods to simulate their behaviors in the real world. Despite its numerous advantages, such as readability, reusability, and maintainability, it also introduces immense complexity to state management.
    ...
  • OAuth Demystified: A Straightforward OAuth Tutorial

    Incorporating OAuth (short for Open Authorization) into an application might seem somewhat intimidating and disheartening for many entry-level software engineers. After all, they need to spend hours—or even days—implementing a complicated authentication process with the correct configuration, only to realize they have merely completed a tiny feature. Despite all the hard work it entails, OAuth is a safe and efficient way for users to grant websites and applications access to their personal information.
    ...
  • A Step Forward – becoming a software engineer in Japan

    Dear Diary – An opportunity In October 2022, I embarked on my journey to Japan as a Japanese Language School student with the aim of starting anew in my professional career and evaluating my comfort level for potentially living here for the next decade. At that time, my proficiency in Japanese was limited to JLPT N4 certification, barely allowing me to engage in conversations or read signboards.
    ...
  • Embracing AI and Ocean Breezes: A Recap of Developer Camp at Enoshima

    This Developer Camp holds a special place in my heart as it was my inaugural experience attending a developer camp. Set against the picturesque coastline of Enoshima, Japan, this camp combined technical presentations, team activities, and beachside brainstorming sessions. Day 1: Arrival, Introductions, and Technical Insights: We arrived at Ofuna station, did a quick grocery trip to stock up.
    ...
  • Async/Await: a Game Changer for Haters of Promise Chaining

    If you became a frontend engineer after 2015, chances are that you have used or at least heard about Promise. As I have covered in my previous blog, Promise can help us specify sequential relations between operations in asynchronous programming in a readable and maintainable manner. Promise object in JavaScript has methods, such as then and catch, that can help us organize the sequential execution of operations in a pattern called Promise Chaining.
    ...
  • Start of a colorful journey

    As I sit here reflecting on my first three months at Colorkrew, I am filled with excitement for what the future holds. I joined the Biz team in January 2023. From day one, I was welcomed with open arms by my friendly coworkers and immediately felt a sense of belonging that was amplified by the fact that software that we developing is also the one we use in our everyday work.
    ...
  • The Whys and Hows of Promise in JavaScript

    If you have done any web development after 2015, chances are that you have heard of the concept of Promise. It wouldn’t be an overstatement to claim that Promise is ubiquitous in modern-day front-end codebases. However, many web developers—especially those who do not have much experience in front-end development—have been using Promise without thoroughly understanding its inner working.
    ...
  • All You Need to Know about Isolation Levels and Read Inconsistencies

    Just like real life, the world of computer science is replete with trade-offs. Relational databases are no exception. When interacting with relational databases, we face the dilemma between data consistency and transaction concurrency. The former guarantees the data is trustworthy, while the latter ensures relational databases can conduct transactions swiftly. Both are desirable qualities of relational databases, but we cannot simultaneously achieve them to the fullest extent.
    ...