Git Product home page Git Product logo

document-shredded's Introduction

Hi there ๐Ÿ‘‹

This is Yaobin, a software developer.

Being a software developer, I am maintaining my tech blog in yaobinwen.github.io which discusses topics related with computer technologies.

yaobinwen/robin_on_rails contains the notes or thoughts that I take 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.

Happy Hour ๐Ÿป is my personal task tracker.

yaobinwen/work-env contains the scripts, guides, and programs that help me quickly set up my own work environment.

GitHub Repositories

Sometimes a technical topic is best explored with code or a sandbox environment. I've created the following GitHub repositories for such topics:

Work in Progress

I'm currently working on the following projects but haven't finished them yet:

Misc.

  • yaobinwen/Linux-Lab: How to create a home lab to study Linux kernel and C/C++ libraries (and possibly everything else).
  • yaobinwen/dpkg: I work on Ubuntu and manage the Debian package building and publishing in my company, so I use dpkg(1) a lot. I forked the source code in order to learn the tool and Perl. See my README file dpkg: Annotated Version.

GitHub Stats

Yaobin's GitHub Stats

Guidelines

I'm using the Guidelines to help me keep the good habbits and remind me of the good practices I want to do in my daily life. These guidelines are mostly about the non-technical aspects of my life, such as the physical and mental health, the mental models I want to internalize, etc.

Miscellaneous

  • Thoughts: My personal thoughts on things that may or may not be important.
  • Non-tech books, articles, movies, shows, talks, and so on.
  • Chinese: Being a Chinese, I surely learned Chinese in schools. However, I didn't realize why I had to learn the language if it's already my mother tongue. I learned everything with the purpose of passing the examinations. One day in 2018, when I was sitting in my apartment in Pittsburgh, PA, it occurred to me that I had always learned Chinese for examinations but not for the language itself. Since then, I started to re-learn Chinese, including the classic Chinese literature.
  • English: Originally from China, currently living in the United States, I need to keep learning English.
  • Nonviolent Communication (NVC): Being an NVC practitioner, I believe this communication method can improve the quality of life, for me and others around me.
    • (TODO: I should probably integrate NVC into my daily guidelines.)

document-shredded's People

Contributors

yaobinwen avatar

Stargazers

 avatar

Watchers

 avatar

document-shredded's Issues

A book for learning general programming

I may write a book for beginners to learn programming in a general sense, not about a specific language.

Then once the beginner gets some experience, he/she no longer needs to read a book as fluffy as The Go Programming Language. He/she should be able to grab the language reference or cheat sheet to learn the language quickly.

The Go Programming Language sins:

  • It spreads important points among texts without emphasis so I have to use a highlighter to mark them by myself.
  • Most of the time, it talks the easy topics that any experienced developers can learn in half an hour, totally, but I'll have to go through the whole text to make sure I don't miss anything important, especially those language features that are "similar to another language but not the same".

Counter-example: CMake (3.21.3) tutorial

CMake 3.21.3 tutorial does not provide a link to the accompanying source code, or at least the link is very difficult to find unless I search it in Google (and the repository is not even the top results in Google search results). However, the tutorial itself refers to the code frequently and makes me frustrated not to be able to read the code while reading the tutorial.

FYI: The code is here.

Collection of loss of knowledge

Description

This issue collects the cases of "loss of knowledge": Because programmers come and go, when a project has been ongoing for quite a long time, the knowledge of some part of the code may get lost along the way.

It needs further evaluation to see if this is caused by lack of good documentation, but usually that means the implemented feature is not important in practice so nobody really cares.

Write about what makes good documentation

Goals of good documentation:

  • Minimize the time that new readers need in order to grasp the related topics.

Good documentation should include:

  • Background: Why is it?
  • History?
  • Cookbooks: task-oriented
  • FAQ
  • Security Concerns
  • Main Body of Knowledge
  • Comparison of similar technologies: pros and cons
  • How (for developers)
  • Ecosystem: How this technology is related with other upstream/downstream technologies
  • Examples vs abstract description
  • Best Practices

Good documentation tells EVERYTHING about the software. However, this is almost impossible because chances are the developers themselves do not have a total grasp on the software: it's just too complex.

Ansible doc: action plugins and modules

The action plugins are run in the context of the user that launches the playbook so it is not affected by --become. Is this documented anywhere?

  • Maybe I can ask on the #ansible channel.

React Router updates API (replacing `Switch` with `Routes`) without explicitly mentioning it in the documentation

See this Stack Overflow question and one of the comments.

Actually, it turned out to be that React Router v6 is quite different from the earlier versions and they published the documentation for v6 here. Technically, they didn't do anything wrong. However, they probably should have mentioned in the documentation website that v6 is quite different so the users should pay attention to the version they are using.

HTTP caching

HTTP caching

Today (2021-05-04) I tried to learn about "Heuristic Freshness Checking". This page refers to RFC 7234 Section 4.2.2, but I find this section doesn't provide any specific example so it's hard to understand how it is calculated by simply reading the text.

Some other references I can take a look:

Doc smell: infinite links which means one resource provides a link to another resource which provides a link to a further resource but none of them explain the things clearly enough.

Think about "knowledge sharing driven programming"

Very immature idea but basically:

  • We write code in the way that's easier for sharing the knowledge: future developers should not spend huge amount of time to learn it.
  • Documentation generation should not rely on the particular format of comments because comments can be out-dated.

`amixer` documentation

Description

amixer documentation may not be good enough. Take this question for example:

Why do we supply pulse as a parameter in amixer command?I have noticed if I doesn't supply pulse parameter to amixer command it doesn't work and throws error.

However, the owner of the answer didn't reply it. I have the same question. Unfortunately, I don't seem to be able to find the answer with some quick search (e.g., amixer(1)).

Another question is: What is the Master control in amixer? There doesn't seem to be an answer about that. amixer(1) has an example that says:

amixer -c 1 -- sset Master playback -20dB

will set the master volume of the second card to -20dB. If the master has multiple channels, all channels are set to the same value.

which seems to suggest that Master is a special control that covers all the available "channels".

The article A close look at ALSA has a section "ALSA concepts" which explains "cards" and "devices", but it doesn't explain what the Master is.

Anyway, I think many open source projects need to build better documentation in order to transfer knowledge.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.