What does 50,000 hours of craftsmanship mean?

A few weeks ago, I suddenly had the idea to calculate how much time I had spent on programming (including learning). This led to some reflections. The calculation formula is as follows. Average hours per day × Number of days in a year × Total number of years I started programming in the spring of 2013 and decided to fully commit to it in 2014. On average, I spend between 5 and 16 hours a day coding, non-stop, including weekends. My time is easy to calculate because, aside from specific times when I go out, I spend most of my time coding, except for eating, sleeping, and other necessities. I’ve always had trouble sleeping, which means I don’t sleep much during the day, and often don’t sleep at all. So I often end up coding for over 16 hours (the longest stretch was probably over 36 hours). 🤔 This is actually quite painful for me, but I won’t go into detail here—I just want to record how much time I’ve spent. ...

June 24, 2025 · 2 min · 298 words · Jen-Chieh Shen

Problem with Game Designers communicate with programmers

I’ve been wanting to write an article about communication issues among game designers for quite some time now. This issue has been simmering within the gaming industry for some time and has been troubling me as well. As a programmer, how can I communicate more smoothly with planners? This article simply aims to document the situations I have observed and, by the end, hopefully provide a better answer to my own doubts. ...

June 16, 2025 · 4 min · 820 words · Jen-Chieh Shen

Problem with LeetCode and SWE jobs

This is a rant about software engineering interviews and LeetCode. 🗯️ Preamble In 2024, hundreds of thousands of people worldwide are grinding through LeetCode, aiming to break into the tech industry, drawn by the high salaries it offers. 🤔 What does LeetCode actually bring? LeetCode offers little more than these benefits: Algorithm exercises and data structure knowledge Coding under pressure (Why though? Are we in a war zone now?) Passing coding interviews However, completing LeetCode doesn’t prove you’re a good software engineer. It only shows you can code basic algorithms and solve programming puzzles. It doesn’t test essential skills like collaboration, communication, documentation, design patterns, system architecture, low-level programming, or core computer science knowledge. ...

September 7, 2024 · 2 min · 379 words · Jen-Chieh Shen

Being 10x engineer in my first job

Recently, I came across a post on LinkedIn with the eye-catching title, “I think I’ve met a 10x engineer.” But as I read through the post, I started to have doubts. The author described how one of their colleagues had managed to fix a bunch of complex bugs in a short amount of time, which left them in awe. 🤔 But is that really what defines a 10x engineer? It brought back memories of my own experience as a so-called 10x engineer during my first job! ...

September 6, 2024 · 3 min · 505 words · Jen-Chieh Shen

Elisp Language Server

Repo link: https://github.com/jcs090218/ellsp I’ve recently created a language server for Emacs Lisp. It’s interesting since people don’t think a language server for Emacs Lisp will provide any value. The statement is correct, and so do I. Emacs Lisp is only used within the Emacs editor, and Emacs itself is an Emacs Lisp interpreter. Therefore, a language server for Emacs Lisp would hardly bring any benefits to Emacs users. But imagine you can code elisp (short for Emacs Lisp) outside of Emacs. That sounds interesting, huh? 🤔 ...

November 19, 2023 · 2 min · 412 words · Jen-Chieh Shen

How to build your own ELPA with Eask?

ELPA stands for Emacs Lisp Package Archive. It’s used for Emacs users to download packages from, and it’s also the place where Emacs Lisp developers will host their packages. Here is a list of famous ELPA; see their site for more information! GNU Elpa (official) NonGNU Elpa (official) MELPA ❓ Why? So why do we want to host our own ELPA? Aren’t those ELPAs enough? Yes, in general, you don’t need to host ELPA yourself since most packages you need will be available in one of those ELPA (packages can co-exist between ELPA). Here are several reasons why you might want to build your own ELPA: ...

September 15, 2023 · 4 min · 652 words · Jen-Chieh Shen

My first VSCode plugin

Repo Link: https://github.com/shader-ls/vscode-shader Aug 23rd, 2023. I’ve created my first VSCode plugin – vscode-shader. My intention was simple: to create a language server’s client in VSCode for my shader-language-server that I created a couple of months ago. 🤔 🔰 Simple and good UX First of all, it is very simple to develop a VSCode plugin. Especially developing a language server’s client for VSCode. There are many examples and good documentation on their site, making it very easy for developers. I am using uniteai and grammarly-language-server as the references. ...

August 24, 2023 · 1 min · 193 words · Jen-Chieh Shen

Shader Language Server (LS)

Repo Link: https://github.com/shader-ls/shader-language-server April 30th, 2023. I have created my first language server that is actually useful to someone. I tried a language server a while back, but it was just an example server, so it’s not very useful, and it’s only for educational purposes. The target language I chose to write is the ShaderLab language. ShaderLab is used in Unity Engine, so you can write custom shaders to stylize your game. Unlike regular programming languages, ShaderLab is much simpler to analyze, so the language server can respond to the client side. ...

August 23, 2023 · 3 min · 516 words · Jen-Chieh Shen

Long Journey with Emacs

⚠️ The intention of this post is to remind myself why Emacs isn’t worth my time anymore. I’ve been using Emacs since 2015. I have developed more than 150 elisp packages, and maintained over 200 packages (including my packages). It’s been a long journey staying in the Emacs community, I think it’s a good for me to slow myself down and step back a little and think what I’ve accomplished through out these years. ...

July 8, 2023 · 5 min · 865 words · Jen-Chieh Shen

Emacs Eask 101 - Build tool

I’ve developed more than 50 elisp packages, and maintain 100 or more of them. Developing an elisp package isn’t easy for a beginner, especially for those who want to publish their package to an ELPA. e.g., GNU Elpa, NonGNU Elpa, MELPA, etc. That’s why I use Eask to help me develop elisp packages. Therefore, in this article, I’m going to teach people how to use this tool to help you build your own elisp packages! 😄 ...

April 10, 2023 · 4 min · 659 words · Jen-Chieh Shen