- Tech notes
In browser rendering, do images come before JavaScript files?
The browser rendering steps, why the JavaScript file is downloaded after images finish rendering, and where to place the script tag, including defer.
- Tech notes
JavaScript prototypes: instance-level vs prototype-level functions
A prototype is an original form or typical example, a basis or standard. My practice notes on JavaScript prototypes and why prototype functions save memory.
- Tech notes
Shallow copy / deep copy / complete deep copy with lodash cloneDeep()
How I did a shallow copy, a deep copy, and a complete deep copy, and why a spread copy still changed the original object at 2 depth.

- Tech notes
The difference between 'getStaticProps' and 'getServerSideProps'
Images kept failing to load on the deployed site of my portfolio, which I built with Next.JS. Replacing getStaticProps with getServerSideProps fixed it.

- Tech notes
Next/image changed in version 13 with Vercel?
Putting the frustration of job applications behind me, I often check that my portfolio's Vercel link works. This time a new error showed up.

- Tech notes
Reviewing TypeScript basic types: tuple, enum, never, symbol, unknown
Today I took some time to review TypeScript's basic types again! My review code covers arrays, tuples, enum, void, never, symbol, any, and unknown.

- Tech notes
Network, OS, CS: notes for frontend interviews
TCP and UDP are protocols used to transfer data. Notes on that and on GET vs POST, HTTP vs HTTPS, cookies vs sessions, and processes vs threads.

- Tech notes
Fixing the Vercel react-icons error
I kept getting an error when deploying with Vercel. Changing the letters after react-icons in the import path to lowercase fixed it.

- Tech notes
How to install Prettier and ESLint in a CRA project
These steps assume you have already set up a project with CRA (create react app).

- Tech notes
Converting natural numbers (decimal) to octal and hexadecimal & the Fibonacci array
To convert a natural number (decimal) to octal or hexadecimal, pass the base you want as the argument to the toString() function.

- Tech notes
Differences between CSR and SSR (with SPA, MPA, and SSG)
SPA (SinglePageApplication): a web application made of a single page. Notes on SPA vs MPA, CSR vs SSR, and SSG, and how CSR and SSR compare.

- Tech notes
The drawbacks of var
The critical drawbacks of var. var only gets its own scope when it's declared inside a function. Declaring a…

- Tech notes
JS scope
Translated into Korean, the word scope means 'range'. In JS, there are two types of scope: global and local.

- Tech notes
JSON basics: serializing with stringify and deserializing with parse
JSON stands for JavaScript Object Notation. Serializing turns an object into a string with JSON.stringify(), and JSON.parse() turns it back.

- Tech notes
TypeScript features
Characteristics of TypeScript. Compiled language, statically typed language. It is a statically typed…

- Tech notes
Event bubbling
Event bubbling: when an event occurs on an element, the process of the event being passed up to that element's topmost parent.

- Tech notes
Browser storage (local storage, session storage, cookies)
Web Storage is a key-value store made for saving web data on the client. A look at how local storage, session storage, and cookies differ.

- Tech notes
Nullish coalescing operator: printing 0 where || gives -1
0, -0, and '' count as false, so number || '-1' prints -1. When you want to print 0, use the nullish coalescing operator (??) instead.

- Tech notes
What this refers to in JavaScript: functions, methods, and new
When you just call a function, this refers to the global object (window). Notes on this in methods, apply/call/bind, and constructors called with new.

- Tech notes
JavaScript closures: how an inner function keeps its lexical environment
A closure is the JavaScript feature that lets an inner function access the variables of its outer (enclosing) function.
