Yejun Su

Software engineer @eduvo. I write about software development, work and life.
Pinned post from May 15, 2022

Improve performance with functional thinking

There were several server downtimes on May 4th and 5th, my collegues found IOPS burst in database when school clicking the Pending Emails button, which will show the incoming emails one by one for school users to match them with specific students. As the requests are very slow to response, the users keep clicking the button again and a...
Read more
Pinned post from April 16, 2022

Improve performance with scientist gem

“This article is a tour of 使用scientist安全地改进代码.” Schools with large amounts of families complain that when visiting the Families roster, the request is too slow to use and even times out. This is a tour about how we made a performance boost while keeping the functionality work as normal. Bottleneck As the problem is repeatable, the bott...
Read more
January 22, 2023


“Photo by Moritz Knöringer on Unsplash” 回顾2022 • 面试 Tubi 的 Platform Engineer。朋友内推,一共有四轮面试,很遗憾的是,在两轮技术面试中我没有表现出足够的程序设计功力,无缘加入😂。说起来这也是我第一次参加线上面试,在面试时发生了一些意想不到的情况,积累了宝贵的经验。值得一提的是面试的体验很棒,全程有专人安排面试并反馈面试进度,在通知面试结果时,还会详细说明表现好的方面,以及需要提升的方面。 • 看了几本程序设计的书,尤其喜欢 Grokking Simplicity,它主要讲了使用函数式思想设计可维护、可测试、可重用的程序。在团队内部分享了两次(1、2),大家对这本书都很感兴趣。在公司的项目中,我...
Read more
January 14, 2023

Rails loads configuration unexpectedly caused by gems

“This article was written when one of our Rails applications was upgraded to Rails 5.2.” After upgrading our application to Rails 5.2, InvalidAuthenticityToken errors are found in our public APIs. The error is caused by CSRF protection is enabled by default since Rails 5.2 while it is not required in public APIs. I updated the config t...
Read more
March 31, 2022


Photo by Alex Kondratiev of Unsplash 最近项目中的一个功能有性能问题,改进方案很简单,就是用缓存代替实时计算,但是缓存需要及时更新,不能返回错误的结果。这个过程需要用生产环境的数据来检验,但是又不能破坏现有的功能,正巧前几天读了 Changing Critical Code Paths With Scientist,发现文中提到的 scientist 就是解决这个问题的。 scientist 项目的描述是: “🔬 A Ruby library for carefully refactoring critical paths. ” 这个项目的命名很形象,我们开发者就好比是科学家(scientist),要改进现有的方案,一个稳妥地方法...
Read more
March 8, 2022

Manage multiple runtime versions with asdf

“Today I introduced asdf in our team, published here as a backup.” To manage various runtime versions, almost all languages has their own version managers, for example, here is a short list: • Ruby: rvm and rbenv • Python: pyenv and virtualenv • NodeJS: nvm • Erlang: kerl • Elixir: kiex • Go: gvm and goenv If you are using multiple run...
Read more
September 1, 2021

Workflows in my daily work

This is the last weekly sharing at my company. I mainly talked about how I handle Jira tickets. Principles 1. Focus on one thing at a time 2. Avoid start from scratch 3. Don't repeat yourself Focus on one thing at a time Notion and Workona are the cornerstones in my workflows. Every time I'm going to process a Jira ticket, I save it to...
Read more
August 23, 2021

Thoughts on note-taking apps

Today I tidy up my digital things into three apps: Notion, Roam Research and Obsidian. In my opinion, they are not mutually exclusive as they have their own focuses: • Notion: write and publish, focus on sharing and coordinating. • Roam Research: my second brain, focus on summarizing and thinking. • Obsidian: save code snippets, focus ...
Read more