2021 Chitchat

Written byKalanKalan
💡

If you have any questions or feedback, pleasefill out this form

This post is translated by ChatGPT and originally written in Mandarin, so there may be some inaccuracies or mistakes.

Originally, I planned to整理一下 the things I’ve been working on and share them, but after整理完, I realized I didn’t really have much to say. So, I decided to just record things in a free-flowing manner.

Moving

At the beginning of 2021, we moved to a newly built apartment near 大濠公園 (Ohori Park). Although it’s a bit noisy because it’s right next to a main road, I’m quite satisfied with the environment here. Having my own little room has significantly improved the quality of my work and video shooting compared to before.

Moving made me reflect on how finding a place in Taiwan often relies on luck. In Japan, just a bit of effort in searching reveals a plethora of options, and after a few years, there are often new, reasonably priced apartments popping up nearby. I also upgraded to an HHKB keyboard, thinking it would suit my new environment. Now that I've used it, there's no going back.

The Start of the Year

At the start of 2021, I delved into many topics I didn’t thoroughly explore during my vocational school days. I learned a lot from AVR Programming, like the underlying I2C and SPI communication protocols, EEPROM writing, ADC, GPIO, and hardware interrupts. I essentially covered the knowledge I should have mastered in firmware development.

The reason I didn’t use Arduino is simple: as a software engineer, relying on libraries and tweaking others' code doesn’t really help with my learning. Later, I realized that AVR is gradually declining, with only Arduino keeping it afloat. Compared to AVR, STM32 is much more user-friendly, offers advantages in both price and performance, and has low power consumption. With the development boards and IDE, you can even debug on-board and set breakpoints, making it a far better option than AVR.

Once I started working with STM32, I found that everyone wrote code using STM32 Cube IDE. Although it has many features, coding in it is quite inconvenient, especially after getting used to VS Code. Do embedded engineers really use this kind of tool for coding? In contrast, with an 8-bit AVR, you can just open main.c with avr-gcc and dive right in, still maintaining an entry-level advantage over STM32. The AVR chips are also very affordable, and many come with DIP pins, making them easy to use on a breadboard.

At work, due to the development of new features and having only one other colleague at the time, our schedule was quite tight. We spent almost every day cycling through requirements, development, and QA resolution, making it a very fulfilling period. Moreover, I had to set up a completely new SSR Server (with next.js). Setting up a server in a large company involves a plethora of considerations and a complicated process. It needed to be automated so that the Operations Team could manage it from AWX; otherwise, if we couldn't meet the Release standards, we would have to postpone.

Since this was a need that arose mid-way, I was responsible for the server setup, nginx configuration, playbook setup, Docker, cross-department communication, documentation, proposals to the business unit, automated deployment, and actual feature coding—all by myself. During this time, I also had to resolve QA tickets. Honestly, I was under a lot of psychological pressure back then, working overtime for nearly a month, and even working on a holiday to catch up.

During that time, all departments were quite busy, and the knowledge required for server setup differs from frontend work, so there was no one in the team to help. However, another teammate proactively helped me cover other QA issues, and I was really grateful for that. I also appreciate that my supervisor didn’t say much, although he did express some concern when he heard about my working on a holiday, but he quickly helped coordinate things with the company.

I want to emphasize that the company strongly discourages holiday work. If it happens, you need to explain the reason, and afterward, you’ll be required to take a regular leave day to compensate for the holiday work (not a special leave). It feels like you're essentially borrowing a weekday to get things done over a holiday.

Looking back now, it turned out to be quite successful, and we managed to launch on time. Besides developing new pages for other projects using next.js (which previously used ejs and pure static), the possibilities with SSR have greatly expanded. Additionally, thanks to the introduction of SSR, implementing SEO has been more convenient than ever, and writing ld-json has become easier as well.

I’ve been reflecting on how sometimes many things will not happen unless you persist, like the server setup which seems straightforward. However, within an organization, integration is far more important than a spontaneous idea. And to achieve integration, the most crucial aspect is often not about adopting trendy frameworks or talking about great code, but rather about meticulously executing every single step.

During this period, the release date for "Monster Hunter Rise" coincided, making time fly by quickly. I worked hard during the day and then unwound by hunting monsters after hours. Initially, I wanted to show off with a great sword, but later realized that using a heavy bowgun or bow was a better choice for enjoyment—just mindlessly shooting away.

I also discovered that my girlfriend surprisingly enjoys collecting tasks and making money through them. She wants to complete any medals, badges, or minor tasks, so while I’m at work, she helps me clear various small tasks, and after work, I happily upgrade my gear and weapons. I enjoyed playing this "Monster Hunter" game immensely, with its music, scenes, and costumes exuding a distinct Japanese style. I even unexpectedly joined a circle of former colleagues who occasionally team up for raids, which helped lift me out of a low period.

MPEG-TS and ARIB B24 Subtitles

After seeing a recommendation from Qian Qian, I thought about using my Raspberry Pi to watch TV signals on my computer. Later, I learned that you need to buy a TV tuner that can handle TS抜き; otherwise, other tuners require proprietary software to view channels.

Japan's television signal is MPEG-TS, and they have a homegrown broadcasting standard called ISDB, regulated by the Radio Industry Association. Oh, and there’s a peculiar broadcasting law in Japan that requires everyone with a TV to pay NHK, but you can still watch without paying. It has already been certified as constitutional by the Supreme Court, yet I still can’t quite grasp the mysteries of this enigmatic country.

Digressing, within Japanese TV programs, you can enable subtitles, which can include features like hiragana annotations, colors, custom characters, and position settings, all defined by the ARIB STD-B24 standard.

Out of curiosity, I successfully captured MPEG-TS signals on my Raspberry Pi via the TV tuner and even created a simple subtitle parser using JavaScript. Although it’s quite basic, I gained a great appreciation for the individuals who silently implement these standards, especially after seeing Qian Qian’s code, which I found truly impressive.

Writing a Book

Aside from the previously mentioned experiences, I also ventured into writing a book. Two years ago, I produced a series of videos about Svelte for a competition and received an award. After consulting with my colleagues, they all felt that publishing a book was a rare opportunity, so I decided to take on the challenge.

Unlike participants from other groups, I was in the video category, so transforming my content into text took a considerable amount of time. The rush to meet deadlines later became quite a headache.

Although Svelte remains a niche framework in Taiwan compared to others, I find it very enjoyable to work with. Thus, even in a small market, I wanted to leave behind some resources. Much of the book focuses on practical UI development applications, and I even discussed various aspects of accessibility implementation. I also included sections on testing and SvelteKit, rounding out the SSR part. I was aware beforehand that the manuscript fee wouldn't be substantial, but when I actually saw the amount deposited, I couldn't help but feel it was disappointingly low.

I believe the book's greatest value lies in the practical UI sections, hoping it helps developers deepen their understanding in this area. I’m also very thankful to my former colleagues, supervisors Eason and Kai, who generously reviewed my drafts, catching numerous typos and errors, and offering better phrasing and suggestions, which greatly improved the book's quality. After finishing, my biggest takeaway is that I will never write programming-related content using Word again; that experience was quite dreadful, and it often resulted in strange formatting issues when converting to PDF. Next time, I need to sort out the typesetting tools before diving into writing.

If you're interested, I hope you can check out the practical implementations in the videos. I personally feel that the implementations in the videos hold greater reference value, and you can actually experience how a UI component is developed from scratch. The last ten days also cover the principles behind Svelte and simple implementations, which should provide some insights for engineers interested in the underlying concepts.

DIY Keyboard

After trying the HHKB keyboard, I became curious about the principles behind such electrostatic capacitive keyboards and whether I could build one myself. Surprisingly, many people in Japan are involved in making these types of keyboards, and I can even purchase related materials and components, which reminded me how great it is to be in Japan. Having been tortured by soldering hell in high school, buying a circuit board, soldering, and assembling parts doesn't quite meet my definition of DIY keyboard building (note: this is my personal standard and not a critique of others).

Who would have thought this curiosity would lead me on a new journey? I went on to buy a 3D printer, learn PCB design, and design circuits. Aside from PCB design, most of what I learned was within the scope of high school education, so it wasn't too difficult for me. However, PCB design has its complexities, especially for high-frequency circuits that rely on capacitive sensing; understanding noise immunity is a crucial subject that I rarely encountered in high school. The cost of shipping is incredibly high each time, with shipping to China costing over 2000 yen and taking more than a week to receive the finished product. The entire cycle is quite daunting, so I hope to experiment with a breadboard first. When I feel confident, I’ll challenge it again. During this time, I’ve also filled in many gaps in my hardware knowledge, such as how USB works (the USB standard is incredibly complex), PID theory, FIR filters, etc. I even played around with Raspberry Pi Pico and PIO. Thus, after a long journey, while I have a PCB for the DIY keyboard, it remains incomplete to this day. I hope to have something to show everyone this year (but don’t get your hopes too high).

Omura Bay and Huis Ten Bosch

In July, I revisited Omura Bay and Huis Ten Bosch. I really enjoy the atmosphere at Omura Bay, dining on the daily curry at the local cafeteria while gazing at the platform. It should definitely be on everyone’s bucket list.

Kokura and Mojiko

For a time, I was quite into BEASTARS. I really liked the main character, Legoshi. His kindness, quiet dedication, and journey of training to become stronger resonated with my aspirations. I hope to reach that level someday. Coincidentally, the author held an exhibition in Kokura, so I took the opportunity to visit.

SwiftUI and Bluetooth

During the company hackathon in 2021, I challenged myself to explore something I didn’t understand and create an application. At that time, I was unfamiliar with SwiftUI and didn't know how to use Bluetooth, so I created a Bluetooth-enabled Arduino pomodoro timer that allowed communication between the computer and Arduino. To enhance integration, I added a status bar, notifications, and a countdown UI, while using an LED Matrix and a buzzer on the hardware side (Arduino). I felt that refining the functionality could make it quite practical; at least I’d want to use it myself, especially since software pomodoro timer applications have become overly common. Integrating hardware with Bluetooth can help shift user focus. While the results weren't ideal, I still accomplished my goal.

Since it was a hackathon, the implementation was pieced together, aiming only for functionality. Notably, I implemented the countdown feature on the Arduino side, learning how to use Timer interrupts. However, upon reflection, it might have been better to implement the countdown directly in the software, letting Arduino handle just the display and notifications.

My impression is that SwiftUI is quite similar to React. If you're familiar with frontend development, it should be relatively easy to pick up. You can refer to Learning SwiftUI from a Frontend Perspective.

Wireless Earbuds WF-1000XM4

Sony released the WF-1000XM4 in June. I thought they looked great and offered noise-canceling features, so I bought them. I was very satisfied with their performance; once in noise-canceling mode, I couldn’t hear any external sounds, allowing me to immerse myself in my little world.

Unfortunately, earlier this year, I accidentally threw them into the washing machine. One earbud started sounding strange, so I had to reluctantly sell them second-hand and buy a new pair. Fortunately, I found them on sale on Amazon, so at least it wasn't a total loss.

Lex Podcast

I stumbled upon this podcast on YouTube, and it was impressive—an MIT professor interviewing tech celebrities. I consider it a highly technical podcast. Some notable guests include:

  • Swift creator Chris Lattner
  • comma ai founder Geohot
  • C++ creator Bjarne Stroustrup
  • 3Blue1Brown channel creator Grant Sanderson
  • Donald Knuth, author of "The Art of Computer Programming"
  • Chip maestro Jim Keller

Listening to discussions with individuals who have propelled the software industry and advanced technology, and engaging with such profound content, is truly a blessing and has broadened my horizons.

I’ve also come to terms with my passion for technology; I don’t need to force myself to write about more general topics that are easier for the public to accept. It's perfectly fine to love Fourier transforms and inverse matrices without feeling inferior about my niche interests.

Streaming and Turing Complete

In 2021, I still hadn’t found a suitable direction for my YouTube channel. I really wish someone could guide me on what to do. However, I still uploaded some videos here and there, although the view counts suggest they weren’t particularly favored. Still, being able to document certain moments in my life through video is a positive aspect.

Additionally, I live-streamed the game Turing Complete, where you build a small computer starting from logic gates. It feels like a game version of nand2tetris. This can be quite challenging for complete beginners with no prior knowledge. If the author could simplify the process and invest more effort into the teaching aspect, it would be more enjoyable.

JSDC2021 and ModernWeb'21

This year, I gave two presentations, both discussing Svelte. If you’re interested, feel free to check them out. Reflecting on my past, I used to enjoy participating in various sessions, being in a "taker" phase. After gradually accumulating experience, I no longer experience that kind of information anxiety, and I’m able to share some insights with others. Recognizing this mindset shift has been quite fascinating for me.

Relearning Linear Algebra

I’m not sure why, but I went back to relearn linear algebra. It seems to have been sparked by reading a book called "Common Sense of Numerical Values," which reignited my passion for linear algebra. There’s a chapter that left a strong impression, titled "Goodbye Inverse Matrix." The content mainly states that most of what you want to do can be solved using LU decomposition, while inverse matrices, although intuitive, are computationally expensive. I really enjoy mathematics that has practical applications, particularly in the field of numerical analysis.

I prefer listening to others talk about these subjects rather than doing numerical analysis myself because it can be quite tedious. Those who can deeply delve into this field are truly impressive. Additionally, I still find new insights every time I read about the well-trodden subject of singular value decomposition. Recently, I revisited Fourier transforms due to my interest in signal analysis.

WebGL

I revisited WebGL with the intention of creating a simple visualization of matrix operations to clearly understand the concept of matrix multiplication. However, that project ended up going nowhere, as I spent a large amount of time figuring out how to draw a line. Looking back, it was a rather silly detour.

Returning to Taiwan

Due to bank procedures and loans, and having forgotten my online banking password which got me locked out, along with Cathay United stopping support for IC cards, I had no choice but to spend a lot of money to return to Taiwan to sort things out. The round trip, along with quarantine hotel costs, ended up costing over 100,000 TWD. It had been nearly two years since I last returned to Taiwan. At the onset of the pandemic, I naively thought it would be over quickly, and I’d be able to return to Taiwan soon. Little did I know it would be a two-year wait, and even now, there has been no lifting of restrictions.

In the weeks I spent back in Taiwan, everything around me moved me deeply. Surrounding me were familiar languages and signs, and I found myself curiously eavesdropping on conversations from passersby. Even a casual bite at a small eatery left me speechless because it was so delicious, and the prices were shockingly affordable.

Having grown accustomed to Japanese prices over the years, I now feel like my values have been shattered; it turns out delicious food can be so inexpensive. I still remember one day when the quarantine hotel provided breakfast of traditional rice balls (the kind wrapped in glutinous rice) that brought me to tears with its nostalgic taste. After experiencing life abroad, I gradually realized how many enviable aspects there are about Taiwan, the land that raised me. I really hope the pandemic will end soon, I hope the quarantine policies will be lifted quickly, and I hope to return to the comforting embrace of Taiwan.

MPK mini

A few years ago, I bought a Roland FA-07, but due to its large size, I no longer had space at home. After moving to Japan, I stopped playing it. I kept telling myself I would find a solution, but after two years of procrastination, I sold it second-hand at the beginning of the year.

After selling it, I purchased an MPK mini MIDI keyboard for just over 8,000 yen. Although it has only 25 keys and lacks the rich features of the FA-07, it’s much smaller and can be plugged directly into my computer for simple music composition, making it much easier than before.

Conclusion

This year marks my third year in Fukuoka, Japan, and time has flown by faster than I imagined. I've gradually adapted to life here. I actually quite like my current lifestyle and pace, but I also feel like in 2021, I was like a headless chicken, flitting around without focus, touching on many fields but only skimming the surface. While this broadens one’s horizons, I hope to achieve deeper growth. Therefore, my goal for this year is to concentrate on the things I truly want to do and produce tangible outcomes. Honestly, I find myself struggling with this; I want to try many things, but I’m afraid of investing effort without a corresponding return. Life is tough.

I hope these various experiences can be helpful to you. If you want to reach out, you can find me on Twitter or via email.

If you found this article helpful, please consider buying me a coffee ☕ It'll make my ordinary day shine ✨

Buy me a coffee