The Best Food I've Had in Singapore and Johor Bahru (Continuously Updated)

The Best Food I’ve Had in Singapore and Johor Bahru (Continuously Updated) Because my partner loves to eat, and although as a programmer I’m not particularly skilled in culinary matters, I am very professional when it comes to researching restaurants. BTW: The pictures are taken from Google Maps, so if there are any copyright issues, please contact me for removal. Singapore May Pho Culture (Vietnamese Pho) Address: 150 South Bridge Rd, #01-16, Singapore 058727

For Those Who Are Still Confused: My Memories from a Third-Tier University

Introduction A few days ago, I saw a guy online who was about to graduate complaining that university is meaningless. I think this view is too one-sided. Also, my high school classmates always think that studying computer science guarantees a high-paying job, and they believe they could do it too. Coincidentally, half a year ago during an interview, I talked with the interviewer about my experience of getting into a big company from a third-tier university.

2024 Year-End Summary

Today marks the last month of 2024, and I’ve noticed many platforms are posting their annual recaps, like Reddit and others. I also want to write a year-end summary to document the events of this year. 2024 Year-End Summary In the blink of an eye, I’ve been in Singapore for three and a half years. From the initial excitement to the day-to-day life now, I can say this place has

Neovim: No Crash Incremental Selection

When I use Neovim Treesitter incremental selection, it randomly crashes, but I cannot consistently reproduce it. I found some issues and complaints about this problem, but no solution. So I decided to write a blog post to document this issue and the solution. related issues: https://www.reddit.com/r/neovim/comments/10wwkft/comment/j7qla2q/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button https://github.com/neovim/neovim/issues/24336 https://github.com/neovim/neovim/issues/25254 https://www.reddit.com/r/neovim/comments/18dn4qt/treesitter_incremental_selection/ TL;DR Paste this https://github.com/xiantang/nvim-conf/blob/7c0d6cbf6d9fd7b6a8960de887db1109332419bf/lua/plugins/treesitter.lua#L62-L132 into your Neovim configuration file. Here is my Treesitter incremental selection configuration: 1 2 3 4 5 6 7 8 9 incremental_selection = { enable = true, keymaps = { init_selection = true, node_incremental = "v", node_decremental = "<BS>", }, }, Sometimes when I use v to expand the selection, it crashes, resulting in a Segmentation fault, and I have the report:

Nixos use old version software

NixOS users often face situations where the latest software versions have issues, but the NixOS channel only offers the fixed versions. Here’s how to use an older version of software: According to the blog post How to use old versions of software in NixOS, you can follow these steps to use an older software version: Search for the old version of the software Use https://lazamar.co.uk/nix-versions/ to search for old packages.

Yabai Sometimes Puts Windows Below Other Windows

Yabai Sometimes Puts Windows Below Other Windows I’ve been using yabai on my company’s MacBook and noticed it sometimes places windows below others, a behavior not observed on my personal MacBook. By running yabai -m query --windows, I discovered differences in window layouts between the two machines: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [ { "id": 140, "pid": 1087, "app": "iTerm2", "space": 2, "level": 0, "layer": "normal", "opacity": 1.

Summary of 2022

Today is the first day of 2023, I want to write a year-end summary, to review some things in 2022. It is also a review of myself. Year-end Summary of 2022 2022 was not a very smooth year, it seems that everyone is not doing particularly well due to the economic downturn. Work I have been working in Singapore for more than a year and a half. Because Singapore does not have four seasons, every day is actually similar to the previous one.

Using neovim as a PDE (Personalized Development Environment)

This article will not tell you how to configure neovim step by step, but will tell you some “Tao” about PDE, not the specific practice of “Art”. Introduction to neovim and PDE Seeing TJ’s YouTube introduced the use of neovim as a PDE, it was interesting, so I tried it myself, it felt good, so I recorded it. What is neovim Neovim is a branch of vim, vim is a text editor, neovim is a branch of vim, its goal is to provide a better vim, not a substitute for vim.

Shell is a good productivity tool

If a sequence of three commands is executed twice in a row, it is recommended that you write it as a Shell script – blog.fleeto.us Recently, I increasingly realize that shell can replace python as the second language for devops engineers. Because daily work may be repetitive, many repetitive operations in work can be reduced by shell scripts to reduce mental burden. Let me give you an example:

Using the 80/20 Rule to Learn awk Effortlessly

The length only accounts for 20%, but the effectiveness reaches 80% - 80/20 Rule What can you learn from this article? In this article, we will learn how to use the 80/20 rule to effortlessly learn the linux text processing command awk. After reading this article, you will learn a fast learning method, and how to use awk to process text and stdout. Recently, while learning awk, I found that there are really many details.

Guide to Settling in Singapore After Physically Crossing the Wall

What can you get from reading this article This article mainly talks about some things you need to do after coming to work in Singapore. By reading this article, you can get some necessary things you need to do after landing in Singapore, such as renting a house, applying for a bank card, etc., to prevent everyone from stepping into pitfalls. Renting a House The first important thing after coming to work in Singapore is to rent a house.

Using Docker Compose to Set Up Your Own Development Environment

Docker is not a new technology, but a tool that puts old wine in new bottles. Actually, I used Docker when I was in college, around 2017, when Docker was in its heyday. It was just used to start various lightweight applications, such as magnetic link downloaders, personal network disks, etc. Until recently, my understanding of Docker was still relatively vague. As I continued to encounter requirements at work, I also continued to understand Docker, so I decided to write an article to summarize my recent use of Docker.

Some Practices and Thoughts on Writing Maintainable Code

Some Practices and Thoughts on Writing Maintainable Code Recently, I have been modifying a piece of historical code that has a distinct style and has been handled by many hands. I found that there are many mistakes in the design of the code. This makes it very difficult for me to modify the code and add new features. This article is written with personal emotions, so there may be some subjectivity.

Why do I use bidirectional links for note-taking?

The value of a person lies in finding connections between memorized information. I previously recommended bidirectional link software to my friends for rote memorization, and many people asked me “Why use bidirectional links? What are the benefits?”. I will write a short article here to answer these questions. I have tried many note-taking software before, such as Notion, Evernote, and even Typora managed directly with git. Most of the time, I didn’t have the motivation to take notes.

About Anxiety and Procrastination

Procrastination always allows us to live in peace, but the problem does not disappear. – “Pomodoro Technique Illustrated” Current Issues Stress causes anxiety, there is always a lot of pressure in Internet companies, some come from overly high OKRs, some come from colleagues' push, and even you will put a lot of pressure on yourself. For me, it might be all of these, and possibly the pressure given by the morning meeting and weekly report.

Golang: How to Handle Growing Interfaces

The bigger the interface, the weaker the abstraction. Go Proverbs Let’s start with the conclusion. If your Golang interface has too many functions that make it difficult for you to expand horizontally, then split it into multiple interfaces according to its responsibilities, and then use embed to combine them. Problem Encountered Recently, when refactoring a component that manages configurations, we have an interface and more than 5 structs implement this interface.

Using the Pomodoro Technique to Better Utilize Your Time

For me, it’s easy to fall into a state of working all day, being busy all day but not knowing what I’m busy with, leading to anxiety the next day, not knowing what to say at the morning meeting, and only being able to do things that make me feel like I can talk. Why introduce the Pomodoro Technique: To solve this problem, I thought of many methods, such as writing a TODO list every day, but I still wasted a lot of time due to various interruptions, which made it impossible for me to complete the tasks in my original TODO list.

How to kill a process and its descendants in Unix?

Recently, I was maintaining an open source project called air on the weekend. It is a hot loading code tool for Golang, which will monitor local file changes and then automatically reload. Problem encountered Recently, I encountered a particularly interesting problem, that is, when using the kill -9 pid command to kill the process, although it will kill its child process, its grandchild process will still survive. Background In short, our hot loading component will run commands, and then will monitor file changes, once the file changes, it will kill the previous process, then recompile the code, and then execute the running command.

Golang: Making Your Zero Values More Useful

Make the zero value useful. –Go Proverbs Let’s start with the Golang blog: The zero value When memory is allocated to store a value, whether by declaration or by calling make or new, and no explicit initialization is provided, the memory is given a default initialization. Each element of this value is set to its type’s zero value: false for booleans, 0 for integers, 0.0 for floats, "" for strings, and nil for pointers, functions, interfaces, slices, channels, and maps.

Using Mock and Interface for Golang Unit Testing

At work, I often find that many engineers' Golang unit tests are problematic, just simply calling code for output, and it will include various IO operations, making the unit test unable to run everywhere. Using Mock and Interface for Golang Unit Testing This article will introduce how to do unit testing correctly in Golang. What is unit testing? Characteristics of unit testing Unit testing is a very important part of quality assurance.