<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.shiren.dev</id>
    <title>shiren the creator</title>
    <updated>2026-10-15T12:51:29.773Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Sungho Kim</name>
        <email>shirenbeat@gmail.com</email>
        <uri>https://blog.shiren.dev/</uri>
    </author>
    <link rel="alternate" href="https://blog.shiren.dev/"/>
    <link rel="self" href="https://blog.shiren.dev/en/atom.xml"/>
    <subtitle>let the games begin.</subtitle>
    <logo>https://blog.shiren.dev/logo.jpg</logo>
    <icon>https://blog.shiren.dev/favicon.ico</icon>
    <rights>All rights reserved 2026, Sungho Kim</rights>
    <entry>
        <title type="html"><![CDATA[Overcoming Burnout]]></title>
        <id>https://blog.shiren.dev/en/post/2025-03-25</id>
        <link href="https://blog.shiren.dev/en/post/2025-03-25"/>
        <link rel="enclosure" href="https://res.cloudinary.com/dow8qjmrt/image/upload/v1742782724/postcovor/xq4opjywe8xcg1xerqfq.jpg" type="image/jpg"/>
        <updated>2025-03-24T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1742782724/postcovor/xq4opjywe8xcg1xerqfq.jpg" alt="Overcoming Burnout"/><br/>Have you ever suspected you might be experiencing burnout?
In Korea, there's a tendency to be indifferent towards mental health, often considering it something shameful. As a result, many people ignore the symptoms.. They dismiss it as nothing serious, thinking a drink or the passage of time should resolve everything. If you can't overcome it, you...]]></summary>
        <content type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1742782724/postcovor/xq4opjywe8xcg1xerqfq.jpg" alt="Overcoming Burnout"/><br/>Have you ever suspected you might be experiencing burnout?
In Korea, there's a tendency to be indifferent towards mental health, often considering it something shameful. As a result, many people ignore the symptoms.. They dismiss it as nothing serious, thinking a drink or the passage of time should resolve everything. If you can't overcome it, you...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing Web Animations with JavaScript]]></title>
        <id>https://blog.shiren.dev/en/post/2025-03-04</id>
        <link href="https://blog.shiren.dev/en/post/2025-03-04"/>
        <link rel="enclosure" href="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740723688/postcovor/20250304.jpg" type="image/jpg"/>
        <updated>2025-03-03T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740723688/postcovor/20250304.jpg" alt="Implementing Web Animations with JavaScript"/><br/>The Front-End ecosystem is becoming increasingly specialized and diverse, leading to higher complexity. This isn't surprising. I tend to reduce dependencies whenever possible, aiming to expand areas that don't change within the standard. JavaScript animations are no exception. While using open-source libraries can create complex and nice movements...]]></summary>
        <content type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740723688/postcovor/20250304.jpg" alt="Implementing Web Animations with JavaScript"/><br/>The Front-End ecosystem is becoming increasingly specialized and diverse, leading to higher complexity. This isn't surprising. I tend to reduce dependencies whenever possible, aiming to expand areas that don't change within the standard. JavaScript animations are no exception. While using open-source libraries can create complex and nice movements...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Resume-Driven Career Development]]></title>
        <id>https://blog.shiren.dev/en/post/2025-02-28</id>
        <link href="https://blog.shiren.dev/en/post/2025-02-28"/>
        <link rel="enclosure" href="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740635900/postcovor/20250228.jpg" type="image/jpg"/>
        <updated>2025-02-27T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740635900/postcovor/20250228.jpg" alt="Resume-Driven Career Development"/><br/>I believe it's good practice to update your resume at least quarterly, reflecting on the past quarter's achievements and planning for the upcoming one.
It might be helpful to think of a company as a place where you not only receive a salary but also generate achievements to enrich your career. If you think this way, you can never work passively.
In...]]></summary>
        <content type="html"><![CDATA[<img src="https://res.cloudinary.com/dow8qjmrt/image/upload/v1740635900/postcovor/20250228.jpg" alt="Resume-Driven Career Development"/><br/>I believe it's good practice to update your resume at least quarterly, reflecting on the past quarter's achievements and planning for the upcoming one.
It might be helpful to think of a company as a place where you not only receive a salary but also generate achievements to enrich your career. If you think this way, you can never work passively.
In...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[If I Were to Live a Second Life as a Developer...]]></title>
        <id>https://blog.shiren.dev/en/post/2023-08-07</id>
        <link href="https://blog.shiren.dev/en/post/2023-08-07"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/258742163-be061be3-585f-45a5-9432-f68014e556d2.jpg" type="image/jpg"/>
        <updated>2023-08-07T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/258742163-be061be3-585f-45a5-9432-f68014e556d2.jpg" alt="If I Were to Live a Second Life as a Developer..."/><br/>A year ago, I had a great opportunity to give a talk about recruitment to job seekers and developers with 1-4 years of experience. I prepared content generally helpful for job searching or changing jobs. Although I tried to avoid focusing too much on "how to get hired," the topic related to recruitment inevitably felt somewhat materialistic, like t...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/258742163-be061be3-585f-45a5-9432-f68014e556d2.jpg" alt="If I Were to Live a Second Life as a Developer..."/><br/>A year ago, I had a great opportunity to give a talk about recruitment to job seekers and developers with 1-4 years of experience. I prepared content generally helpful for job searching or changing jobs. Although I tried to avoid focusing too much on "how to get hired," the topic related to recruitment inevitably felt somewhat materialistic, like t...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Page Visibility API]]></title>
        <id>https://blog.shiren.dev/en/post/2023-04-24</id>
        <link href="https://blog.shiren.dev/en/post/2023-04-24"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/233938246-8ad07bd5-ec5e-42d5-9496-235cb39a3cb3.jpg" type="image/jpg"/>
        <updated>2023-04-24T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/233938246-8ad07bd5-ec5e-42d5-9496-235cb39a3cb3.jpg" alt="Page Visibility API"/><br/>The Page Visibility API, as the name suggests, allows you to determine whether a page is currently visible to the user. More precisely, it tells you if the page can be seen on the monitor. There's no way to know if the user has their eyes closed or is looking elsewhere :)
Previously, onblur and onfocus events were used, but these events were more a...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/233938246-8ad07bd5-ec5e-42d5-9496-235cb39a3cb3.jpg" alt="Page Visibility API"/><br/>The Page Visibility API, as the name suggests, allows you to determine whether a page is currently visible to the user. More precisely, it tells you if the page can be seen on the monitor. There's no way to know if the user has their eyes closed or is looking elsewhere :)
Previously, onblur and onfocus events were used, but these events were more a...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Web Storage Events]]></title>
        <id>https://blog.shiren.dev/en/post/2023-04-18</id>
        <link href="https://blog.shiren.dev/en/post/2023-04-18"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/232760986-8f130d1f-5b5c-4eb7-9584-62c0386f2456.jpg" type="image/jpg"/>
        <updated>2023-04-18T11:20:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/232760986-8f130d1f-5b5c-4eb7-9584-62c0386f2456.jpg" alt="Web Storage Events"/><br/>Web storage, consisting of sessionStorage and localStorage, is now very familiar.
Unlike cookies, which were difficult to handle, web storage clarifies its use as client-side storage and has already become our friend with better usability.
Local storage, frequently handled by frontend developers, can do the following:

storage.length
storage.key(n)...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/232760986-8f130d1f-5b5c-4eb7-9584-62c0386f2456.jpg" alt="Web Storage Events"/><br/>Web storage, consisting of sessionStorage and localStorage, is now very familiar.
Unlike cookies, which were difficult to handle, web storage clarifies its use as client-side storage and has already become our friend with better usability.
Local storage, frequently handled by frontend developers, can do the following:

storage.length
storage.key(n)...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Frontend Development Environment Checklist (2023)]]></title>
        <id>https://blog.shiren.dev/en/post/2023-03-20</id>
        <link href="https://blog.shiren.dev/en/post/2023-03-20"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/228464836-b48dc2e3-31f3-4452-a819-7f21d7541802.jpg" type="image/jpg"/>
        <updated>2023-03-31T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/228464836-b48dc2e3-31f3-4452-a819-7f21d7541802.jpg" alt="Frontend Development Environment Checklist (2023)"/><br/>Every time I start a frontend project, there are things that need to be decided. Defining the development environment and stack, choosing a version control tool (usually Git), deciding how to manage branches, determining the versioning strategy, and so on. Starting a new project always involves checking or newly defining many things. Of course, a w...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/228464836-b48dc2e3-31f3-4452-a819-7f21d7541802.jpg" alt="Frontend Development Environment Checklist (2023)"/><br/>Every time I start a frontend project, there are things that need to be decided. Defining the development environment and stack, choosing a version control tool (usually Git), deciding how to manage branches, determining the versioning strategy, and so on. Starting a new project always involves checking or newly defining many things. Of course, a w...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[My Back Blew Out: A Developer Rehab Notes]]></title>
        <id>https://blog.shiren.dev/en/post/2022-11-21</id>
        <link href="https://blog.shiren.dev/en/post/2022-11-21"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/202692818-96f5a7cc-939d-43e3-834d-38ab877b5688.jpg" type="image/jpg"/>
        <updated>2022-11-21T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/202692818-96f5a7cc-939d-43e3-834d-38ab877b5688.jpg" alt="My Back Blew Out: A Developer Rehab Notes"/><br/>I thought I was still young and healthy.
Eventually, my back gave out.
It was a herniated disc, a representative disease of aging, commonly known as a slipped disc.
My back often hurt. Considering my terrible posture since childhood, it seems like it held up pretty well until now. Whenever I needed to concentrate, like during coding sessions, my po...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/202692818-96f5a7cc-939d-43e3-834d-38ab877b5688.jpg" alt="My Back Blew Out: A Developer Rehab Notes"/><br/>I thought I was still young and healthy.
Eventually, my back gave out.
It was a herniated disc, a representative disease of aging, commonly known as a slipped disc.
My back often hurt. Considering my terrible posture since childhood, it seems like it held up pretty well until now. Whenever I needed to concentrate, like during coding sessions, my po...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[XState, a Finite State Machine Created with JavaScript]]></title>
        <id>https://blog.shiren.dev/en/post/2022-09-22</id>
        <link href="https://blog.shiren.dev/en/post/2022-09-22"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/202692021-49f39bc5-de0f-4b7e-91f1-d8036778e3f6.svg" type="image/svg"/>
        <updated>2022-09-22T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/202692021-49f39bc5-de0f-4b7e-91f1-d8036778e3f6.svg" alt="XState, a Finite State Machine Created with JavaScript"/><br/>I had occasionally used FSM (Finite State Machine) when implementing UIs. I applied the basic concepts using enum and conditional statements. In situations with many defined states and different possible actions depending on the state, I would likely apply FSM without hesitation. In such cases, the code tends to become complex regardless of how it'...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/202692021-49f39bc5-de0f-4b7e-91f1-d8036778e3f6.svg" alt="XState, a Finite State Machine Created with JavaScript"/><br/>I had occasionally used FSM (Finite State Machine) when implementing UIs. I applied the basic concepts using enum and conditional statements. In situations with many defined states and different possible actions depending on the state, I would likely apply FSM without hesitation. In such cases, the code tends to become complex regardless of how it'...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Developer Wine Recommendations]]></title>
        <id>https://blog.shiren.dev/en/post/2022-05-18</id>
        <link href="https://blog.shiren.dev/en/post/2022-05-18"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/168763758-ef81e8ec-bd94-4816-aefe-e639cbf11387.jpg" type="image/jpg"/>
        <updated>2022-05-18T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/168763758-ef81e8ec-bd94-4816-aefe-e639cbf11387.jpg" alt="A Developer Wine Recommendations"/><br/>I enjoy wine. I don't remember exactly, but I think I started actively drinking wine around 2010. I've been drinking it periodically for at least over 10 years. I probably always drank three or four bottles a month.
Having drunk for over 10 years, you might think I have some professional knowledge and can distinguish wine tastes well. That's not re...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/168763758-ef81e8ec-bd94-4816-aefe-e639cbf11387.jpg" alt="A Developer Wine Recommendations"/><br/>I enjoy wine. I don't remember exactly, but I think I started actively drinking wine around 2010. I've been drinking it periodically for at least over 10 years. I probably always drank three or four bottles a month.
Having drunk for over 10 years, you might think I have some professional knowledge and can distinguish wine tastes well. That's not re...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[TypeScript Type Changes in React 18]]></title>
        <id>https://blog.shiren.dev/en/post/2022-04-28</id>
        <link href="https://blog.shiren.dev/en/post/2022-04-28"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/165723723-c93929a5-01d9-49e1-907b-43669d8089e6.png" type="image/png"/>
        <updated>2022-04-28T11:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/165723723-c93929a5-01d9-49e1-907b-43669d8089e6.png" alt="TypeScript Type Changes in React 18"/><br/>React 18 was released recently. You might have already updated your project or are planning to update soon.
If your project uses React with TypeScript, here are a few breaking changes in type definitions that you'll need to address:

Removal of implicit children declaration from the React.FC type
Removal of {} from the ReactFragment type
this.conte...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/165723723-c93929a5-01d9-49e1-907b-43669d8089e6.png" alt="TypeScript Type Changes in React 18"/><br/>React 18 was released recently. You might have already updated your project or are planning to update soon.
If your project uses React with TypeScript, here are a few breaking changes in type definitions that you'll need to address:

Removal of implicit children declaration from the React.FC type
Removal of {} from the ReactFragment type
this.conte...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Facebook Developers Drive Performance]]></title>
        <id>https://blog.shiren.dev/en/post/2022-03-07</id>
        <link href="https://blog.shiren.dev/en/post/2022-03-07"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/156925073-5321c9b1-2001-4611-9760-548807816289.jpg" type="image/jpg"/>
        <updated>2022-03-07T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/156925073-5321c9b1-2001-4611-9760-548807816289.jpg" alt="How Facebook Developers Drive Performance"/><br/>An acquaintance who works at Facebook, which we should now call Meta, visited Korea on vacation. We met up for drinks after a long time. Since it had been a while, we talked about many things. As the evening went on, we naturally drifted back to our usual topic: development. We often discussed work and development, so it felt natural. The bold and...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/156925073-5321c9b1-2001-4611-9760-548807816289.jpg" alt="How Facebook Developers Drive Performance"/><br/>An acquaintance who works at Facebook, which we should now call Meta, visited Korea on vacation. We met up for drinks after a long time. Since it had been a while, we talked about many things. As the evening went on, we naturally drifted back to our usual topic: development. We often discussed work and development, so it felt natural. The bold and...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Adding Sound to a React Game]]></title>
        <id>https://blog.shiren.dev/en/post/2022-01-27</id>
        <link href="https://blog.shiren.dev/en/post/2022-01-27"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/93630848/151306397-470baa88-f1ac-4f12-9c52-cb5c8e300abd.png" type="image/png"/>
        <updated>2022-01-27T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/93630848/151306397-470baa88-f1ac-4f12-9c52-cb5c8e300abd.png" alt="Adding Sound to a React Game"/><br/>Recently, I've been spending my weekends creating a simple game for my child using React. My child was so engrossed in a game called "Infinite Stairs" that I decided to create a version that retains the core fun(?) while removing potentially harmful addictive elements. It's a simple game where you climb stairs left and right, earning points to buy...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/93630848/151306397-470baa88-f1ac-4f12-9c52-cb5c8e300abd.png" alt="Adding Sound to a React Game"/><br/>Recently, I've been spending my weekends creating a simple game for my child using React. My child was so engrossed in a game called "Infinite Stairs" that I decided to create a version that retains the core fun(?) while removing potentially harmful addictive elements. It's a simple game where you climb stairs left and right, earning points to buy...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Leaving null, Meeting undefined]]></title>
        <id>https://blog.shiren.dev/en/post/2021-10-05</id>
        <link href="https://blog.shiren.dev/en/post/2021-10-05"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/134830937-6ece2e72-88bb-46b3-85b2-ec9d9df6f086.jpg" type="image/jpg"/>
        <updated>2021-10-05T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/134830937-6ece2e72-88bb-46b3-85b2-ec9d9df6f086.jpg" alt="Leaving null, Meeting undefined"/><br/>Recently, during a code review, a discussion arose about the use of undefined. Personally, for a very long time, I had quite clearly distinguished between null and undefined and used them according to their respective purposes, so I hadn't really thought about looking into this further. Ironically, the issue that sparked the discussion turned out t...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/134830937-6ece2e72-88bb-46b3-85b2-ec9d9df6f086.jpg" alt="Leaving null, Meeting undefined"/><br/>Recently, during a code review, a discussion arose about the use of undefined. Personally, for a very long time, I had quite clearly distinguished between null and undefined and used them according to their respective purposes, so I hadn't really thought about looking into this further. Ironically, the issue that sparked the discussion turned out t...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[ES2021 Overview Focusing on WeakRefs and Finalizers]]></title>
        <id>https://blog.shiren.dev/en/post/2021-08-30</id>
        <link href="https://blog.shiren.dev/en/post/2021-08-30"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/130887748-c10e8286-661f-4e13-8acc-1cbfaf3db701.jpg" type="image/jpg"/>
        <updated>2021-08-30T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/130887748-c10e8286-661f-4e13-8acc-1cbfaf3db701.jpg" alt="ES2021 Overview Focusing on WeakRefs and Finalizers"/><br/>A few months ago, the final specification for ECMAScript 2021 was released. Some features are immediately usable, while others allow for deeper utilization of the language. It's good to see these changes and improvements each year, but perhaps I'm becoming desensitized, or the improvements aren't as impactful, as the interest and ripple effect seem...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/130887748-c10e8286-661f-4e13-8acc-1cbfaf3db701.jpg" alt="ES2021 Overview Focusing on WeakRefs and Finalizers"/><br/>A few months ago, the final specification for ECMAScript 2021 was released. Some features are immediately usable, while others allow for deeper utilization of the language. It's good to see these changes and improvements each year, but perhaps I'm becoming desensitized, or the improvements aren't as impactful, as the interest and ripple effect seem...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Common JavaScript Errors]]></title>
        <id>https://blog.shiren.dev/en/post/2021-06-29</id>
        <link href="https://blog.shiren.dev/en/post/2021-06-29"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/123607253-a997d400-d838-11eb-9804-0c3cf6693572.jpg" type="image/jpg"/>
        <updated>2021-06-29T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/123607253-a997d400-d838-11eb-9804-0c3cf6693572.jpg" alt="Common JavaScript Errors"/><br/>While developing, you frequently encounter red error messages due to mistakes in the code. It's fortunate if bugs are found during development, but seeing an error message in a live service can make a developer cringe and break out in a cold sweat. Since JavaScript only reveals errors at runtime, serious bugs like these can sometimes be missed. Now...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/123607253-a997d400-d838-11eb-9804-0c3cf6693572.jpg" alt="Common JavaScript Errors"/><br/>While developing, you frequently encounter red error messages due to mistakes in the code. It's fortunate if bugs are found during development, but seeing an error message in a live service can make a developer cringe and break out in a cold sweat. Since JavaScript only reveals errors at runtime, serious bugs like these can sometimes be missed. Now...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Habits for Good Development]]></title>
        <id>https://blog.shiren.dev/en/post/2021-05-17</id>
        <link href="https://blog.shiren.dev/en/post/2021-05-17"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/117386779-6e58e300-af22-11eb-87a5-748a0fb059ef.jpg" type="image/jpg"/>
        <updated>2021-05-17T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/117386779-6e58e300-af22-11eb-87a5-748a0fb059ef.jpg" alt="Habits for Good Development"/><br/>When I have a repetitive task, I tend to create an optimized routine that suits me best and follow it thoughtlessly each time I do the task. I don't stubbornly stick to a fixed routine, though. I gradually improve it based on experience or increased relevant knowledge. A routine could be called "the best method I currently know to do this job well....]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/117386779-6e58e300-af22-11eb-87a5-748a0fb059ef.jpg" alt="Habits for Good Development"/><br/>When I have a repetitive task, I tend to create an optimized routine that suits me best and follow it thoughtlessly each time I do the task. I don't stubbornly stick to a fixed routine, though. I gradually improve it based on experience or increased relevant knowledge. A routine could be called "the best method I currently know to do this job well....]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Becoming a Reliable Developer]]></title>
        <id>https://blog.shiren.dev/en/post/2021-04-20</id>
        <link href="https://blog.shiren.dev/en/post/2021-04-20"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/115319970-e5b91380-a1bb-11eb-9dfe-a02d11601573.jpg" type="image/jpg"/>
        <updated>2021-04-20T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/115319970-e5b91380-a1bb-11eb-9dfe-a02d11601573.jpg" alt="Becoming a Reliable Developer"/><br/>When you're a working professional, your attitude towards work naturally develops, much like a character. The same applies to developers. Being a junior doesn't mean having a bad attitude, nor does experience guarantee a good one. Like coding skills, attitude can be improved. Less experienced individuals often exhibit poor attitudes simply due to l...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/115319970-e5b91380-a1bb-11eb-9dfe-a02d11601573.jpg" alt="Becoming a Reliable Developer"/><br/>When you're a working professional, your attitude towards work naturally develops, much like a character. The same applies to developers. Being a junior doesn't mean having a bad attitude, nor does experience guarantee a good one. Like coding skills, attitude can be improved. Less experienced individuals often exhibit poor attitudes simply due to l...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Exploring Modern FE Development Environments by Building a Coding Playground Part 2]]></title>
        <id>https://blog.shiren.dev/en/post/2021-02-22</id>
        <link href="https://blog.shiren.dev/en/post/2021-02-22"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" type="image/jpg"/>
        <updated>2021-02-22T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" alt="Exploring Modern FE Development Environments by Building a Coding Playground Part 2"/><br/>(Updated 2022-03-04: Configuration code related to webpack-dev-server, babel, and jest has been modified.)
In Part 1, we built a basic JavaScript development environment with Lerna. While the basic setup might be sufficient for some, it usually isn't.
Now, we'll add two more development environments: TypeScript and React.
First, we'll add the TypeS...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" alt="Exploring Modern FE Development Environments by Building a Coding Playground Part 2"/><br/>(Updated 2022-03-04: Configuration code related to webpack-dev-server, babel, and jest has been modified.)
In Part 1, we built a basic JavaScript development environment with Lerna. While the basic setup might be sufficient for some, it usually isn't.
Now, we'll add two more development environments: TypeScript and React.
First, we'll add the TypeS...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Experiencing the Current FE Development Environment While Building a Coding Playground Part 1]]></title>
        <id>https://blog.shiren.dev/en/post/2021-02-15</id>
        <link href="https://blog.shiren.dev/en/post/2021-02-15"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" type="image/jpg"/>
        <updated>2021-02-15T04:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" alt="Experiencing the Current FE Development Environment While Building a Coding Playground Part 1"/><br/>(Updated 2022-03-04: Configuration code for webpack-dev-server, babel, and jest has been modified.)
Sometimes when developing, you want to quickly write code in a specific environment and check the results. This happens when studying libraries, frameworks, or languages, or when you want to quickly experiment with ideas or prototype them. If a vanil...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/107895328-53f01880-6f76-11eb-9a7a-3c994cc92514.jpg" alt="Experiencing the Current FE Development Environment While Building a Coding Playground Part 1"/><br/>(Updated 2022-03-04: Configuration code for webpack-dev-server, babel, and jest has been modified.)
Sometimes when developing, you want to quickly write code in a specific environment and check the results. This happens when studying libraries, frameworks, or languages, or when you want to quickly experiment with ideas or prototype them. If a vanil...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Quick Guide to Browserslist]]></title>
        <id>https://blog.shiren.dev/en/post/2020-12-01</id>
        <link href="https://blog.shiren.dev/en/post/2020-12-01"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/100712708-87e78300-33f6-11eb-8300-e83fdba0b93e.png" type="image/png"/>
        <updated>2020-12-01T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/100712708-87e78300-33f6-11eb-8300-e83fdba0b93e.png" alt="A Quick Guide to Browserslist"/><br/>For some time now, "browserslist" has been popping up frequently, and it has become an indispensable tool in the frontend development environment. I suspect this is largely because Babel, a standout star project in the frontend world, adopted it. Since many projects use Babel, they indirectly or directly end up using browserslist as well. Honestly,...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/100712708-87e78300-33f6-11eb-8300-e83fdba0b93e.png" alt="A Quick Guide to Browserslist"/><br/>For some time now, "browserslist" has been popping up frequently, and it has become an indispensable tool in the frontend development environment. I suspect this is largely because Babel, a standout star project in the frontend world, adopted it. Since many projects use Babel, they indirectly or directly end up using browserslist as well. Honestly,...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Becoming the Developer Everyone Wants]]></title>
        <id>https://blog.shiren.dev/en/post/2020-11-23</id>
        <link href="https://blog.shiren.dev/en/post/2020-11-23"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/98948530-e6c58500-2539-11eb-832f-753d5d4d6769.png" type="image/png"/>
        <updated>2020-11-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/98948530-e6c58500-2539-11eb-832f-753d5d4d6769.png" alt="Becoming the Developer Everyone Wants"/><br/>Around my 5th or 6th year, I started getting involved in developer hiring, and I've been working as an interviewer at my current company for over 5 years now. The interviews were primarily first-round technical interviews. I've also taken the lead in improving the team's hiring process and creating pre-assignments and live coding problems. During t...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/98948530-e6c58500-2539-11eb-832f-753d5d4d6769.png" alt="Becoming the Developer Everyone Wants"/><br/>Around my 5th or 6th year, I started getting involved in developer hiring, and I've been working as an interviewer at my current company for over 5 years now. The interviews were primarily first-round technical interviews. I've also taken the lead in improving the team's hiring process and creating pre-assignments and live coding problems. During t...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Specific Ways to Build a Reading Habit]]></title>
        <id>https://blog.shiren.dev/en/post/2020-10-05</id>
        <link href="https://blog.shiren.dev/en/post/2020-10-05"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/94404265-aee0c900-01a9-11eb-9a3e-41431e366309.jpg" type="image/jpg"/>
        <updated>2020-10-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/94404265-aee0c900-01a9-11eb-9a3e-41431e366309.jpg" alt="Specific Ways to Build a Reading Habit"/><br/>I've put in a lot of effort to make reading a habit. While habitually opening social media, I often thought, "If only I read a book during this time..." but it was hard to resist the temptation to tap the social media icon. I tried various methods, and as mentioned in "Executing 25 Minutes a Day: A 14-Year Developer's Approach to the Day", although...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/94404265-aee0c900-01a9-11eb-9a3e-41431e366309.jpg" alt="Specific Ways to Build a Reading Habit"/><br/>I've put in a lot of effort to make reading a habit. While habitually opening social media, I often thought, "If only I read a book during this time..." but it was hard to resist the temptation to tap the social media icon. I tried various methods, and as mentioned in "Executing 25 Minutes a Day: A 14-Year Developer's Approach to the Day", although...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Executing 25 Minutes a Day: A 14-Year Developer Approach to the Day]]></title>
        <id>https://blog.shiren.dev/en/post/2020-09-07</id>
        <link href="https://blog.shiren.dev/en/post/2020-09-07"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-09-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Executing 25 Minutes a Day: A 14-Year Developer Approach to the Day"/><br/>Everyone gets 24 hours a day, but not everyone uses those 24 hours equally. How to use my daily leisure time more efficiently has been a long-standing concern of mine.
I've set short-term goals, long-term goals, adopted Pomodoro and GTD, used Gantt charts, created standard daily schedules, and even made weekly reports. I put a lot of "effort" into...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Executing 25 Minutes a Day: A 14-Year Developer Approach to the Day"/><br/>Everyone gets 24 hours a day, but not everyone uses those 24 hours equally. How to use my daily leisure time more efficiently has been a long-standing concern of mine.
I've set short-term goals, long-term goals, adopted Pomodoro and GTD, used Gantt charts, created standard daily schedules, and even made weekly reports. I put a lot of "effort" into...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Developer Approach to Event Handlers]]></title>
        <id>https://blog.shiren.dev/en/post/2020-07-27-1</id>
        <link href="https://blog.shiren.dev/en/post/2020-07-27-1"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-07-27T05:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="A Developer Approach to Event Handlers"/><br/>Event handlers are always used when developing UIs. Not just on the web, but native applications also use nearly identical abstractions, albeit with slight differences. As frequently as they are used, they are important, but because they are used so often, we tend to think lightly of them and habitually write poor code without much thought. Being f...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="A Developer Approach to Event Handlers"/><br/>Event handlers are always used when developing UIs. Not just on the web, but native applications also use nearly identical abstractions, albeit with slight differences. As frequently as they are used, they are important, but because they are used so often, we tend to think lightly of them and habitually write poor code without much thought. Being f...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Developer Stance on Useful Test Cases]]></title>
        <id>https://blog.shiren.dev/en/post/2020-06-15</id>
        <link href="https://blog.shiren.dev/en/post/2020-06-15"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-06-15T05:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="A Developer Stance on Useful Test Cases"/><br/>Seeing questions like "How do I test private methods?" or "Should I test private methods?" periodically appear in various communities made me think I should organize my thoughts on the topic someday. Quite some time has passed, and now I'm writing about it. The topic itself is relatively simple, but opinions seem to vary, especially among developer...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="A Developer Stance on Useful Test Cases"/><br/>Seeing questions like "How do I test private methods?" or "Should I test private methods?" periodically appear in various communities made me think I should organize my thoughts on the topic someday. Quite some time has passed, and now I'm writing about it. The topic itself is relatively simple, but opinions seem to vary, especially among developer...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Developers and Meditation]]></title>
        <id>https://blog.shiren.dev/en/post/2020-03-24</id>
        <link href="https://blog.shiren.dev/en/post/2020-03-24"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-03-24T09:20:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Developers and Meditation"/><br/>For some time, my mind had become cluttered with various worries. In such situations, exercise and reading can be solutions. I was already exercising regularly, so I significantly increased my reading volume. I read books on topics I thought were necessary for my life, rather than technical books. Yet, something was missing. I thought, "I need time...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Developers and Meditation"/><br/>For some time, my mind had become cluttered with various worries. In such situations, exercise and reading can be solutions. I was already exercising regularly, so I significantly increased my reading volume. I read books on topics I thought were necessary for my life, rather than technical books. Yet, something was missing. I thought, "I need time...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[JavaScript Journey Towards Encapsulation]]></title>
        <id>https://blog.shiren.dev/en/post/2020-03-12</id>
        <link href="https://blog.shiren.dev/en/post/2020-03-12"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-03-12T02:35:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="JavaScript Journey Towards Encapsulation"/><br/>Among the ECMAScript class field specifications, there is Private field, also known as Private Property (hereinafter referred to as Private Property). The class field spec has reached Stage 3 (Candidate), so it will likely soon pass Stage 4 (Finished) and become a standard specification. Honestly, when I first saw the specification document, I had...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="JavaScript Journey Towards Encapsulation"/><br/>Among the ECMAScript class field specifications, there is Private field, also known as Private Property (hereinafter referred to as Private Property). The class field spec has reached Stage 3 (Candidate), so it will likely soon pass Stage 4 (Finished) and become a standard specification. Honestly, when I first saw the specification document, I had...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Starting a Healthy Development Culture with Code Review]]></title>
        <id>https://blog.shiren.dev/en/post/2020-01-11</id>
        <link href="https://blog.shiren.dev/en/post/2020-01-11"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2020-01-11T07:00:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Starting a Healthy Development Culture with Code Review"/><br/>At the company conference NHN FORWARD held in November 2019, we ran a Frontend Counseling Center to address concerns or questions about frontend development. There were various concerns, but I noticed that the questions and worries were similar across different years of experience and job titles. The concerns ranged from troubleshooting that requir...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Starting a Healthy Development Culture with Code Review"/><br/>At the company conference NHN FORWARD held in November 2019, we ran a Frontend Counseling Center to address concerns or questions about frontend development. There were various concerns, but I noticed that the questions and worries were similar across different years of experience and job titles. The concerns ranged from troubleshooting that requir...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Chrome Native Lazy Loading]]></title>
        <id>https://blog.shiren.dev/en/post/2019-05-22</id>
        <link href="https://blog.shiren.dev/en/post/2019-05-22"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2019-05-22T00:39:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Chrome Native Lazy Loading"/><br/>What is Lazy Loading?
I had a great opportunity to attend Google I/O 2019. While there weren't any groundbreaking web technology sessions, some web-related technologies introduced in certain sessions were interesting. Native Lazy Loading, Portals, Duplex, and Rich Results caught my attention. Among them, native lazy loading, mentioned extensively f...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Chrome Native Lazy Loading"/><br/>What is Lazy Loading?
I had a great opportunity to attend Google I/O 2019. While there weren't any groundbreaking web technology sessions, some web-related technologies introduced in certain sessions were interesting. Native Lazy Loading, Portals, Duplex, and Rich Results caught my attention. Among them, native lazy loading, mentioned extensively f...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Develop Vue Components in TypeScript]]></title>
        <id>https://blog.shiren.dev/en/post/2019-03-28</id>
        <link href="https://blog.shiren.dev/en/post/2019-03-28"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2019-03-28T08:53:00.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="How to Develop Vue Components in TypeScript"/><br/>The Journey Here
The first time I worked on an SPA project was in 2012. It was a fairly large-scale project built based on Backbone, which was the hottest thing back then. At that time, the front-end development environment wasn't as good as it is now, and the concept of SPA itself was just starting to gain traction. The front-end landscape was dom...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="How to Develop Vue Components in TypeScript"/><br/>The Journey Here
The first time I worked on an SPA project was in 2012. It was a fairly large-scale project built based on Backbone, which was the hottest thing back then. At that time, the front-end development environment wasn't as good as it is now, and the concept of SPA itself was just starting to gain traction. The front-end landscape was dom...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[On Running Open Source Projects..]]></title>
        <id>https://blog.shiren.dev/en/post/2019-01-11</id>
        <link href="https://blog.shiren.dev/en/post/2019-01-11"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2019-01-11T08:07:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="On Running Open Source Projects.."/><br/>2018 was a year full of good news for the FE Development Lab. The open source projects released by the lab received positive responses, leading to several significant achievements. In the hope that more great open source projects emerge from South Korea, which still plays a minor role in the open source ecosystem, I am writing this post to share th...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="On Running Open Source Projects.."/><br/>2018 was a year full of good news for the FE Development Lab. The open source projects released by the lab received positive responses, leading to several significant achievements. In the hope that more great open source projects emerge from South Korea, which still plays a minor role in the open source ecosystem, I am writing this post to share th...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating a Modern Front-End Development Environment (2018): ES6]]></title>
        <id>https://blog.shiren.dev/en/post/2018-07-10</id>
        <link href="https://blog.shiren.dev/en/post/2018-07-10"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/42009614-1bb58092-7ac6-11e8-8964-ba880911caac.png" type="image/png"/>
        <updated>2018-07-10T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/42009614-1bb58092-7ac6-11e8-8964-ba880911caac.png" alt="Creating a Modern Front-End Development Environment (2018): ES6"/><br/>The previous article in this series covered Webpack 4 and created a ready-to-use environment. This installment will use that same environment to add an ES6 development setup. I believe ES6 is mature enough for general use now. If you're thinking, "I'm not a front-end developer, and not all browsers support it, so I can't use ES6 yet," I hope this a...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/42009614-1bb58092-7ac6-11e8-8964-ba880911caac.png" alt="Creating a Modern Front-End Development Environment (2018): ES6"/><br/>The previous article in this series covered Webpack 4 and created a ready-to-use environment. This installment will use that same environment to add an ES6 development setup. I believe ES6 is mature enough for general use now. If you're thinking, "I'm not a front-end developer, and not all browsers support it, so I can't use ES6 yet," I hope this a...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating a Modern Frontend Development Environment (2018): Webpack 4]]></title>
        <id>https://blog.shiren.dev/en/post/2018-04-16</id>
        <link href="https://blog.shiren.dev/en/post/2018-04-16"/>
        <link rel="enclosure" href="https://user-images.githubusercontent.com/389021/39568622-c4f1a4be-4efd-11e8-9ddd-b987e493e99b.png" type="image/png"/>
        <updated>2018-04-16T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/39568622-c4f1a4be-4efd-11e8-9ddd-b987e493e99b.png" alt="Creating a Modern Frontend Development Environment (2018): Webpack 4"/><br/>Recently, I started a new project and decided to fully adopt Vue (hereafter referred to as Vue), which I had only briefly explored before. Although the team initially preferred React, the use of Vue was rapidly increasing within the company, necessitating expertise in Vue within the team. Since Vue and React are tools that influence and evolve alon...]]></summary>
        <content type="html"><![CDATA[<img src="https://user-images.githubusercontent.com/389021/39568622-c4f1a4be-4efd-11e8-9ddd-b987e493e99b.png" alt="Creating a Modern Frontend Development Environment (2018): Webpack 4"/><br/>Recently, I started a new project and decided to fully adopt Vue (hereafter referred to as Vue), which I had only briefly explored before. Although the team initially preferred React, the use of Vue was rapidly increasing within the company, necessitating expertise in Vue within the team. Since Vue and React are tools that influence and evolve alon...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Exploring the ECMAScript Specification: Primitives]]></title>
        <id>https://blog.shiren.dev/en/post/2018-02-23</id>
        <link href="https://blog.shiren.dev/en/post/2018-02-23"/>
        <link rel="enclosure" href="http://image.toast.com/aaaadh/real/2018/repimg/1.jpg" type="image/jpg"/>
        <updated>2018-02-23T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="http://image.toast.com/aaaadh/real/2018/repimg/1.jpg" alt="Exploring the ECMAScript Specification: Primitives"/><br/>Questions About Primitives
Currently, the seniors within the team are improving the team's personnel hiring process. Among the processes, we are currently rewriting the written test questions, which is proving more difficult than expected, leading to daily disagreements. Then, one day, while discussing primitives, a debate arose about whether it's...]]></summary>
        <content type="html"><![CDATA[<img src="http://image.toast.com/aaaadh/real/2018/repimg/1.jpg" alt="Exploring the ECMAScript Specification: Primitives"/><br/>Questions About Primitives
Currently, the seniors within the team are improving the team's personnel hiring process. Among the processes, we are currently rewriting the written test questions, which is proving more difficult than expected, leading to daily disagreements. Then, one day, while discussing primitives, a debate arose about whether it's...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Development Environment with Emacs]]></title>
        <id>https://blog.shiren.dev/en/post/2017-11-13</id>
        <link href="https://blog.shiren.dev/en/post/2017-11-13"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2017-11-13T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Development Environment with Emacs"/><br/>Entering the Forbidden Realm
I used to be the type of person who felt compelled to try every new tool related to work, whether it was an editor or an IDE. However, at some point, I realized that they were all pretty much the same, and even with new features, the functionalities I actually used for development were very limited. I used IntelliJ for...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Development Environment with Emacs"/><br/>Entering the Forbidden Realm
I used to be the type of person who felt compelled to try every new tool related to work, whether it was an editor or an IDE. However, at some point, I realized that they were all pretty much the same, and even with new features, the functionalities I actually used for development were very limited. I used IntelliJ for...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing Adaptive HTTP Streaming with Web Technology]]></title>
        <id>https://blog.shiren.dev/en/post/2017-09-18</id>
        <link href="https://blog.shiren.dev/en/post/2017-09-18"/>
        <link rel="enclosure" href="http://image.toast.com/aaaadh/alpha/2017/techblog/atswithwebtechnology.png" type="image/png"/>
        <updated>2017-09-18T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="http://image.toast.com/aaaadh/alpha/2017/techblog/atswithwebtechnology.png" alt="Implementing Adaptive HTTP Streaming with Web Technology"/><br/>An enormous amount of video content is being consumed not only in Korea but globally. The dominant web video technology, once Flash, has gradually transitioned to the standard HTML5 video technology, and most video services today are based on HTML5. As video technologies have advanced, various methods have been explored to provide optimal video qua...]]></summary>
        <content type="html"><![CDATA[<img src="http://image.toast.com/aaaadh/alpha/2017/techblog/atswithwebtechnology.png" alt="Implementing Adaptive HTTP Streaming with Web Technology"/><br/>An enormous amount of video content is being consumed not only in Korea but globally. The dominant web video technology, once Flash, has gradually transitioned to the standard HTML5 video technology, and most video services today are based on HTML5. As video technologies have advanced, various methods have been explored to provide optimal video qua...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Understanding JavaScript Prototype Chain Easily]]></title>
        <id>https://blog.shiren.dev/en/post/2017-02-21</id>
        <link href="https://blog.shiren.dev/en/post/2017-02-21"/>
        <link rel="enclosure" href="https://cloud.githubusercontent.com/assets/389021/23248115/120d3024-f9e1-11e6-8a8b-77ba5b8368dd.png" type="image/png"/>
        <updated>2017-02-21T04:58:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://cloud.githubusercontent.com/assets/389021/23248115/120d3024-f9e1-11e6-8a8b-77ba5b8368dd.png" alt="Understanding JavaScript Prototype Chain Easily"/><br/>JavaScript is a multi-paradigm language that supports both object-oriented programming and functional programming, treating functions as first-class citizens. Those who have worked with JavaScript know that it lacks the concept of a class, making object creation and inheritance different from other languages. Particularly, object-oriented programmi...]]></summary>
        <content type="html"><![CDATA[<img src="https://cloud.githubusercontent.com/assets/389021/23248115/120d3024-f9e1-11e6-8a8b-77ba5b8368dd.png" alt="Understanding JavaScript Prototype Chain Easily"/><br/>JavaScript is a multi-paradigm language that supports both object-oriented programming and functional programming, treating functions as first-class citizens. Those who have worked with JavaScript know that it lacks the concept of a class, making object creation and inheritance different from other languages. Particularly, object-oriented programmi...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Measuring Frontend Performance Using Chrome Developer Tools]]></title>
        <id>https://blog.shiren.dev/en/post/2016-11-15</id>
        <link href="https://blog.shiren.dev/en/post/2016-11-15"/>
        <link rel="enclosure" href="https://blog.shiren.dev/logo.jpg" type="image/jpg"/>
        <updated>2016-11-15T04:44:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="/logo.jpg" alt="Measuring Frontend Performance Using Chrome Developer Tools"/><br/>Timeline
The Timeline is a tool that records and visualizes browser operations triggered by webpage loading or user interactions in a timeline format. It allows you to monitor browser events (not just DOM events but also internal browser operations, including those that trigger DOM events), CPU usage, memory consumption, network activity, and FPS o...]]></summary>
        <content type="html"><![CDATA[<img src="/logo.jpg" alt="Measuring Frontend Performance Using Chrome Developer Tools"/><br/>Timeline
The Timeline is a tool that records and visualizes browser operations triggered by webpage loading or user interactions in a timeline format. It allows you to monitor browser events (not just DOM events but also internal browser operations, including those that trigger DOM events), CPU usage, memory consumption, network activity, and FPS o...]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Closures, Encapsulation, and Information Hiding]]></title>
        <id>https://blog.shiren.dev/en/post/2016-06-27</id>
        <link href="https://blog.shiren.dev/en/post/2016-06-27"/>
        <link rel="enclosure" href="https://cloud.githubusercontent.com/assets/389021/16572615/630f8574-42a5-11e6-8947-b77610584848.jpg" type="image/jpg"/>
        <updated>2016-06-27T01:07:08.000Z</updated>
        <summary type="html"><![CDATA[<img src="https://cloud.githubusercontent.com/assets/389021/16572615/630f8574-42a5-11e6-8947-b77610584848.jpg" alt="Closures, Encapsulation, and Information Hiding"/><br/>Closures and Objects
I remember struggling to understand closures when I first encountered them. Properly grasping closures requires a solid understanding of JavaScript's core concepts. Personally, I once summarized closures as entities that delay the termination of their scope until they disappear themselves—essentially, they terminate their scope...]]></summary>
        <content type="html"><![CDATA[<img src="https://cloud.githubusercontent.com/assets/389021/16572615/630f8574-42a5-11e6-8947-b77610584848.jpg" alt="Closures, Encapsulation, and Information Hiding"/><br/>Closures and Objects
I remember struggling to understand closures when I first encountered them. Properly grasping closures requires a solid understanding of JavaScript's core concepts. Personally, I once summarized closures as entities that delay the termination of their scope until they disappear themselves—essentially, they terminate their scope...]]></content>
    </entry>
</feed>