Skip to content
View yaobinwen's full-sized avatar
Block or Report

Block or report yaobinwen

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
yaobinwen/README.md

Hi there 👋

This is Yaobin, a software developer. Happy Hour 🍻 is my personal task tracker.

What kind of person I am

I always try to understand the internals of the technologies. For example:

  • yaobinwen/ssh-tunneling-explained explains what SSH tunneling is and how to use it.
  • yaobinwen/cpp-static-dynamic-linking explains how GCC static linking and dynamic linking should be configured to work.
  • yaobinwen/git-log-S-G explains how git log -S and git log -G work using the repository itself as an example.
  • yaobinwen/backporting-gl2ps discusses the issue I ran into when backporting gl2ps from Ubuntu Impish to Ubuntu Bionic by looking deep into two packages: debhelper and CMake.
  • To verify whether I truly understand the technologies, I try to explain them in my own words. Therefore, I maintain my own tech blog at yaobinwen.github.io which discusses computer-related technologies, including explaining the topics I've just learned in my own words. This serves two purposes: I can verify if I truly understand the topics; the readers can learn the topics more easily.

I am willing to dive into the source code in order to understand the magic behind the scenes. For example:

I always try to prioritize learning the fundamental knowledge over the high-level, trending technologies.

  • By "fundamental knowledge" I mean as follows:
    • Operating system (this is why I started the learn-linux-kernel project)
    • Networking; TCP/IP
    • Data structures and algorithms
    • Mathematics (this is why I started the yaobinwen/Robin-on-Math project to re-learn math after leaving school for many years)
    • etc.
  • This doesn't mean that I don't want to learn the high-level knowledge. It just means I believe grasping the fundamental knowledge can boost the learning of the high-level knowledge.
  • Also, trends come and go; fundamentals stay.

I am a good team player because I am willing to step out of my comfort zones to work on the tasks that require the technologies even if I have zero experience before, as long as the team need.

  • This team-oriented spirit gives me the opportunities to use a broad range of technologies from the low-level ones (e.g., Linux kernel, system administration) all the way up to the high-level ones (e.g., React.js). This gives me the chance to learn how to develop a full product and also allows me to work on a wide range of things that can support the team better.
  • However, I am also aware that the disadvantage of working on a broad range of technologies is it's difficult for me to become really good at one specific area. I have to admit this is probably the inevitable loss when I enjoy the gain.
  • But I do have my preference: After working on various technologies, I want to spend more time working on the system-level technologies such as Linux kernel, C/C++ libraries, networking, etc. (This is why I started the project yaobinwen/learn-linux-kernel to learn Linux kernel.)

I learn by practicing, so I have a few "sandboxes" that allow me to experiment with the technologies I'm learning. For example:

  • yaobinwen/web-box is the project I use to learn web technologies of the following:
    • Raw HTML + CSS + JavaScript
    • node.js
    • React.js + MUI
    • Tornado web server
  • yaobinwen/robin_on_rails contains the notes or thoughts that I took when I read technical articles. The notes and thoughts in this repository may not be well structured yet,and my plan is to gradually turn them into articles once I've accumulated enough in the related topics. The repository also includes a few folders for experimental code, such as:

I always try to communicate as clear as possible. This includes writing clear and easy-to-follow documentation.

  • I have to admit that writing good document is a difficult task. This difficulty motivated me to start the project yaobinwen/document-shredded which collects documentation good practices with examples and bad practices with counter-examples in order to create a repeatable process of creating easy-to-understand documentation.

I track my time usage so I can tell where I spend my time. This gives me a few benefits:

  • I can tell whether the way I spend my time aligns with my goals. For example, if my new-year resolution is reading more, but I only spend one hour per week on reading after 3 months according to my time tracking log, obviously I'm not achieving my goal. Then I can figure out why I didn't spend enough time on reading. Maybe I didn't build up the habit yet, so I need to make personal adjustments; maybe my goal was not feasible in my current situation at all no matter how hard I work on it, so I need to adjust my goal. Either way, I wouldn't be able to get the insight without time tracking.
  • I can tell my actual time of working on development tasks, e.g., 70%. This allows me to make better estimates on future tasks so I know if my estimate of a task is 1 day (assuming 8 hours), I may actually need about 1.5 days to finish it.
  • Example snapshot of my personal time tracking (using Toggl):

time-track-personal

  • Example snapshots of my time tracking for work (using Google Sheets and Xpad for simplicity):

time-track-chart-histogram

time-track-chart-pie

Other repositories

  • yaobinwen/work-env contains the scripts, guides, and programs that help me quickly set up my own work environment.
  • yaobinwen/local-https: Deploy a local HTTPS web service which is good for local testing and experimenting.

Pinned Loading

  1. yaobinwen.github.io yaobinwen.github.io Public

    My blog

    SCSS 1

  2. robin_on_rails robin_on_rails Public

    Robin on Rails: my notes about technology and some other knowledge.

    HTML 1