• 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. In this article, I will explain what counts as a RESTful API and demonstrate how to design one from scratch.

    ...
  • A sense of community in unfamiliar lands

    The days and weeks leading up to my first day at Colorkrew I was of course brimming with excitement, but I’d be lying if I said I wasn’t nervous. It would be my first time living outside of my home country in a place that I’d only ever been to once for a week long trip 4 years ago. A place where people spoke a language that I had been self studying for the past half year or so but still didn’t have a grasp on. A place halfway across the world from my family and friends who it’d be hard to talk to because of the difference in time zone. A place where I didn’t have any friends yet.

    ...
  • 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. The difficulty in keeping track of the states of objects has led head-scratching exhausted programmers to churn out error-prone code and cause bugs that would take hours, or even days, to locate and fix. “Is there a way out of this undesirable situation,” you might ask. Here is the good news: a lesser-known yet widely-used programming paradigm called Functional Programming (or FP for short) can help turn the tide around and decrease the number of bugs we cause. In this article, I will explain what Functional Programming is and why it can help us avoid bugs.

    ...
  • 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. Therefore, it is worth the effort to comprehend how OAuth works. In this article, I will break down all the steps involved in the OAuth process to help you kick-start your OAuth journey.

    ...
  • Getting started with Design Systems

    Hello, I’m Bryan and a little over three months ago I moved to Japan from Scotland to join Colorkrew’s design team!

    When I was a child I played with Lego for hours. These simple bricks brought so much joy to this future designer.

    _

    colorful Lego

    _

    This messy pile has endless potential, with just a little imagination.

    ...
  • 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. Nevertheless, I felt optimistic about my upcoming Japanese Language education. 

    ...
  • Embracing AI and Ocean Breezes: A Recap of Developer Camp at Enoshima

    Enoshima island

    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.

    gthering at the station

    Day 1: Arrival, Introductions, and Technical Insights:

    We arrived at Ofuna station, did a quick grocery trip to stock up. then, we made our way to the accomodation located by the ocean in Enoshima. The first order of business was the introductory presentations. We had two sessions lined up. - 1st presentation allowed each participant to introduce themselves and share their background, fostering a sense of familiarity and camaraderie within the group. - 2nd presentation focused on technical topics, encouraging us to explore innovative ways to enhance our product or delve into any other relevant technical subject.

    ...
  • 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. Clean and organized as Promise Chaining is, some people—especially those more accustomed to synchronous programming—find it unintuitive and confusing. Lucky for them, ECMAScript 2017 introduced a new feature that allows us to write asynchronous code as if it were synchronous. This new feature consists of two keywords: async and await. In this article, I will cover the fundamentals of async/await and how to transition from Promise Chaining to using async/await.

    ...
  • 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. I knew I had made the right choice in joining this amazing team.

    ...
  • 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. This has led to countless misuses of Promise and consequent bugs. In this article, I will walk you through what motivated the creation of Promise, how Promise works, and how we should use it in our code, under the assumption that you don’t have much experience in front-end development.

    ...
  • 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. Today, I will discuss how isolation levels can help us structure our decision-making regarding this dilemma.

    ...
  • CAP Theorem But Better? Introduce the PACELC Theorem

    In the previous blog, I introduced the famous CAP Theorem (please give it a read if you haven’t already before you start reading this one). It involves a trilemma of needing to give up one of the following three qualities: consistency, availability, and partition tolerance. Since all three are desirable features of modern-day distributed systems, determining which one to relinquish has become one of the most important and delicate decisions for designers of complicated distributed systems. While the CAP Theorem is widely-known in computer science, its extension, the PACELC theorem, has received less attention. Today, I will shine a long-overdue spotlight on the PACELC theorem.

    ...
  • What You Need to Know about the CAP Theorem

    The world that we live in is far from perfect. We constantly find ourselves in dilemmas, sometimes even trilemmas, that require us to make trade-offs. When shopping, we can only choose two out of “cheap,” “fast,” and “good.” In economics, a government cannot enjoy “sovereign monetary policy,” “fixed exchange rate,” and “free capital flow” at the same time. It can only achieve two of them by giving up the third. Similarly, the CAP (consistency, availability, and partition tolerance) theorem involves an equally head-scratching trilemma that has troubled computer scientists and software engineers ever since distributed computing became a popular solution to large-scale computation. Today, we will dive deep into the CAP theorem and learn how to make wise trade-offs based on our needs.

    ...
  • To all new graduates

    Those who want to work for a world-changing startup from Japan?

    Starting your career as a new graduate is one of the most important life events for many people.

    Over the past 30 years, countries around the world have accelerated their economic ties, leading to globalization.

    Meanwhile, politically, the world has changed from the relatively stable international situation of the latter half of the 20th century to the VUCA (Volatility, Uncertainty, Complexity, and Ambiguity) era, due to the confrontation between liberal capitalism and former communist countries and the increasing presence of the Global South.

    ...