Update the notes as of 2020-11-15

This commit is contained in:
Gabriel Arazas 2020-11-15 05:13:01 +08:00
parent 3d1c0f5a42
commit 3ded2340ff
49 changed files with 608 additions and 87 deletions

View File

@ -1,15 +1,15 @@
#+TITLE: Reproducible research: methodological principles for transparent science
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-12 10:24:25+08:00"
#+DATE_MODIFIED: "2020-09-09 04:57:37+08:00"
#+DATE: "2020-04-12 10:24:25 +08:00"
#+DATE_MODIFIED: "2020-10-06 14:55:12 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
#+TAGS: moocs writing
- Source :: https://www.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/info
- Source :: https://www.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/about
I'm not a researcher but I've learned so many things from this course that are applicable to general workflows: organizing your digital files for easy retrieval, creating reproducible notes, and setting out to create reproducible studies with open formats.

View File

@ -1,8 +1,8 @@
#+TITLE: Reproducible research
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-12 11:20:53+08:00"
#+DATE_MODIFIED: "2020-09-09 04:57:13+08:00"
#+DATE: "2020-04-12 11:20:53 +08:00"
#+DATE_MODIFIED: "2020-09-09 04:57:13 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Text Encoding Initiative
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-12 13:07:20+08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:32+08:00"
#+DATE: "2020-04-12 13:07:20 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:32 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: File metadata
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-13 17:32:27+08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29+08:00"
#+DATE: "2020-04-13 17:32:27 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,11 +1,12 @@
#+TITLE: Maintain your own digital library
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-14 18:28:55+08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:20+08:00"
#+DATE: "2020-04-14 18:28:55 +08:00"
#+DATE_MODIFIED: "2020-09-14 23:28:48 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
#+TAGS: pim
Having your own digital library can be one of the most valuable thing for your life.

View File

@ -1,8 +1,8 @@
#+TITLE: Note-taking
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-15 14:35:55+08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29+08:00"
#+DATE: "2020-04-15 14:35:55 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Add a desktop search engine for your digital library
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-15 20:41:51+08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:41+08:00"
#+DATE: "2020-04-15 20:41:51 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:41 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Org-mode: Babel
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-17 21:41:30+08:00"
#+DATE_MODIFIED: "2020-09-09 05:13:08+08:00"
#+DATE: "2020-04-17 21:41:30 +08:00"
#+DATE_MODIFIED: "2020-09-19 17:53:44 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTIES: header-args :session :exports both
@ -53,7 +53,6 @@ splot x**2+y**2, x**2-y**2
#+END_SRC
#+RESULTS:
[[file:wooosh.png]]
With Org-babel, you can share either the output, the code used to generate the output, or both.
This is commonly set with the ~:exports~ header argument.

View File

@ -1,8 +1,8 @@
#+TITLE: Org-mode
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-20 16:51:40+08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29+08:00"
#+DATE: "2020-04-20 16:51:40 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:29 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Org-mode as todo list manager
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-21 19:44:15+08:00"
#+DATE_MODIFIED: "2020-09-09 05:27:10+08:00"
#+DATE: "2020-04-21 19:44:15 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:27:10 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Personal information management
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-04-23 23:21:47+08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:10+08:00"
#+DATE: "2020-04-23 23:21:47 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:10 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,11 +1,12 @@
#+TITLE: Evergreen notes
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-05-07 21:53:21+08:00"
#+DATE_MODIFIED: "2020-09-09 04:58:24+08:00"
#+DATE: "2020-05-07 21:53:21 +08:00"
#+DATE_MODIFIED: "2020-09-14 23:28:18 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
#+TAGS: pim writing
My concept of evergreen notes is mainly inspired from [[https://notes.andymatuschak.org/z4SDCZQeRo4xFEQ8H4qrSqd68ucpgE6LU155C][Andy Matuschak's version]] in a way that focuses writing evergreen notes as a way of developing your knowledge.
@ -24,7 +25,7 @@ With that said, writing an evergreen note has no absolute rule.
Furthermore, you shouldn't focus too much on how to write effectively since [[https://notes.andymatuschak.org/z8V2q398qu89vdJ73N2BEYCgevMqux3yxQUAC][most note-taking practices are generally ineffective]].
Focusing on it is a distraction to the very objective of creating evergreen notes: [[https://notes.andymatuschak.org/z6cFzJWgj9vZpnrQsjrZ8yCNREzCTgyFeVZTb][developing insights]].
To start writing an evergreen note, you could start with your [[file:20200625131209-fleeting_notes.org][Fleeting notes]] and outline the main ideas.
To start writing an evergreen note, you could start with your [[file:2020-06-25-13-12-09.org][Fleeting notes]] and outline the main ideas.
An evergreen note does not have to be finished within one sitting.
In fact, it is preferred to build it incrementally, editing the note as you go developing insights.
(It is previously mentioned that evergreen notes should be taken with you, after all.)

View File

@ -1,8 +1,8 @@
#+TITLE: Roam Research
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-05-09 12:48:23+08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:30+08:00"
#+DATE: "2020-05-09 12:48:23 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:17:30 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Computational processes
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-03 15:21:42+08:00"
#+DATE_MODIFIED: "2020-09-09 05:07:51+08:00"
#+DATE: "2020-06-03 15:21:42 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:07:51 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Create evergreen notes with a digital garden
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-04 21:32:23+08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33+08:00"
#+DATE: "2020-06-04 21:32:23 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: The overview of a programming environment
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-09 06:21:37+08:00"
#+DATE_MODIFIED: "2020-09-09 05:18:47+08:00"
#+DATE: "2020-06-09 06:21:37 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:18:47 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: File encryption with GPG
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-12 19:20:15+08:00"
#+DATE_MODIFIED: "2020-09-09 05:10:41+08:00"
#+DATE: "2020-06-12 19:20:15 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:10:41 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Writing clean code
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-19 20:30:23+08:00"
#+DATE_MODIFIED: "2020-09-09 05:19:39+08:00"
#+DATE: "2020-06-19 20:30:23 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:19:39 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,12 +1,12 @@
#+TITLE: A good tagging system for files for reducing information overload
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-24 14:33:42+08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:34+08:00"
#+DATE: "2020-06-24 14:33:42 +08:00"
#+DATE_MODIFIED: "2020-09-14 23:28:35 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
#+TAGS: writing note-taking
#+TAGS: pim
Nowadays, topics are starting to be viewed toward heterogeneity — they are a system of intra-related concepts.

View File

@ -1,8 +1,8 @@
#+TITLE: Create a writing inbox to store your thoughts
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-25 12:37:23+08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33+08:00"
#+DATE: "2020-06-25 12:37:23 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Fleeting notes
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-25 13:12:09+08:00"
#+DATE_MODIFIED: "2020-09-09 04:58:41+08:00"
#+DATE: "2020-06-25 13:12:09 +08:00"
#+DATE_MODIFIED: "2020-09-09 04:58:41 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Structure and interpretation of computer programs
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-02 12:41:43+08:00"
#+DATE_MODIFIED: "2020-09-09 05:07:10+08:00"
#+DATE: "2020-06-02 12:41:43 +08:00"
#+DATE_MODIFIED: "2020-09-12 01:21:36 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
@ -111,6 +111,14 @@ We can separate that step in a function like the following.
* Data abstractions
The idea behind data abstractions is to make procedures in a way that doesn't make assumptions to our data.
To make this possible, we have to separate the implementation of our data and the procedures that make use of that data.
* Exercise solutions

View File

@ -1,8 +1,8 @@
#+TITLE: Apply search tools and techniques for your digital library
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-27 16:21:47+08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:41+08:00"
#+DATE: "2020-06-27 16:21:47 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:41 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+ROAM_TAGS: pim

View File

@ -1,8 +1,8 @@
#+TITLE: When reading mathematical texts, write down the simplest possible example
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-27 18:31:40+08:00"
#+DATE_MODIFIED: "2020-09-09 04:58:42+08:00"
#+DATE: "2020-06-27 18:31:40 +08:00"
#+DATE_MODIFIED: "2020-09-09 04:58:42 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Bidirectional links
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-06-28 06:19:24+08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33+08:00"
#+DATE: "2020-06-28 06:19:24 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:16:33 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Information literacy
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-07-01 23:19:07+08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:40+08:00"
#+DATE: "2020-07-01 23:19:07 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:40 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Refer to advanced resources when skill-building for a solid short-term goal
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-07-06 03-47-52+08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:40+08:00"
#+DATE: "2020-07-06 03:47:52 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:09:40 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Deliberate practice
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-07-06 23:55:47+08:00"
#+DATE_MODIFIED: "2020-09-09 05:22:41+08:00"
#+DATE: "2020-07-06 23:55:47 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:22:41 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: When learning a new skill, begin with a specific end-goal to create a solid starting point
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-07-08 22:42:47+08:00"
#+DATE_MODIFIED: "2020-09-09 05:23:10+08:00"
#+DATE: "2020-07-08 22:42:47 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:23:10 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,8 +1,8 @@
#+TITLE: Endianness
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-07-10 23:30:27+08:00"
#+DATE_MODIFIED: "2020-09-09 05:23:55+08:00"
#+DATE: "2020-07-10 23:30:27 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:23:55 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

View File

@ -1,14 +1,36 @@
#+TITLE: GNU Guix
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-08-19 08:21:44+08:00"
#+DATE_MODIFIED: "2020-09-09 05:24:30+08:00"
#+DATE: "2020-08-19 08:21:44 +08:00"
#+DATE_MODIFIED: "2020-09-13 12:38:17 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
[[https://guix.gnu.org/][GNU Guix]] is a package manager that follows the footsteps of Nix in furthering [[file:2020-09-19-08-31-48.org][Functional package management]].
[[https://guix.gnu.org/][GNU Guix]] is a package manager that follows the footsteps of [[file:2020-09-04-16-07-47.org][Nix package manager]] in furthering [[file:2020-09-19-08-31-48.org][Functional package management]].
As such, it addresses the concerns and the previous mistakes that the Nix community made while developing the software.
Similar to Nix, the team behind the package manager has created a system around it called *GuixSD*.
With the [[https://guix.gnu.org/manual/en/html_node/][diverse functions of Guix]] as a general-purpose package manager, it can be considered as [[https://ambrevar.xyz/guix-advance/][one of the most advanced distros ever made]] (at least as of 2020-09-13).
[fn:: With the added bonus of being created behind one of the figureheads that stands for software freedom, this is greater than one could expect when it comes to fully free Linux distros.]
One of the biggest (and most obvious) change is the usage of a general purpose language called [[https://www.gnu.org/software/guile/][GNU Guile]] instead of handrolling a custom language (e.g., [[https://nixos.org/manual/nix/stable/][Nix]]).
This takes advantage of the already existing ecosystem (e.g., linter, analyzer, editor integrations) of Guile on top of the package manager.
Being a general purpose also means a lot of possible ways to do one thing (and also shoot your foot) and with the extensibility of Guile (e.g., embedded languages, syntax), it furthers the idea of integrations of different ideas in one language.
Another one of the differences between Guix and Nix is the focus.
The community of Guix is more focused to the following fields:
- [[https://reproducible-builds.org/][Reproducibility]] which already exists with the how functional package management works but with improvements such as [[https://guix.gnu.org/manual/en/html_node/Substitutes.html#Substitutes][substitutes]], [[https://guix.gnu.org/blog/2020/grafts-continued/][grafts]], and integration with other projects such as [[https://www.gnu.org/software/guix/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/][Software Heritage]] and [[https://guix.gnu.org/manual/en/html_node/Security-Updates.html][Common Vulnerabilities and Exposures (CVE)]].
- [[http://bootstrappable.org/][Bootstrappable builds]] which [[https://guix.gnu.org/manual/en/html_node/Bootstrapping.html#Bootstrapping][includes various functions]] to setup your distribution from scratch.
- [[https://hpc.guix.info/][High-performance computing]] for enabling scientific workflows with [[file:2020-04-12-11-20-53.org][Reproducible research]].
- Empowering individual users which is emphasized further with the ability to [[https://hpc.guix.info/blog/2017/10/using-guix-without-being-root/][installing packages without root privileges]], [[https://guix.gnu.org/manual/en/html_node/Invoking-guix-environment.html#Invoking-guix-environment][creating development environments]] similar to Python's virtualenv, and [[https://www.gnu.org/software/guix/manual/en/html_node/Channels.html][using channels]].
* Resources
- [[https://guix.gnu.org/cookbook/][GNU Guix cookbook]]
- [[http://www.gnu.org/software/guix/blog/2018/a-packaging-tutorial-for-guix/][GNU Guix packaging tutorial]]

22
2020-08-28-19-26-43.org Normal file → Executable file
View File

@ -1,13 +1,31 @@
#+TITLE: Linux drivers
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-09 05:27:17+08:00"
#+DATE_MODIFIED: "2020-09-09 05:27:35+08:00"
#+DATE: "2020-09-09 05:27:17 +08:00"
#+DATE_MODIFIED: "2020-09-18 03:06:06 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Linux drivers (also called as kernel modules) are software executed in the kernel.
Usually, they are used to communicate between hardware and create an inteface with it, making them usable.
Examples include [[http://linuxwacom.sourceforge.net/][the Linux Wacom project]] to make Wacom graphics tablet usable in Linux, those sort of stuff.
[[https://www.youtube.com/watch?v=juGNPLdjLH4][Liveoverflow's video summary]]:
- A driver is just a compiled module (e.g., ~driver.o~) that makes use of the code in the Linux header and does the communication from the associated device.
- Each driver may have functions attached to an event (e.g., opening in ~module_open~, closing in ~module_exit~).
- You can insert a driver with the ~insmod~ program and remove it with the ~rmmod~ program.
- Each driver will appear on a special filesystem in ~/dev~ as a special type of file which you can view what type of file it is with ~ls -l~.
- You can print out events (i.e., ~printk~) and view it in the system log (e.g., ~/var/log/syslog~).
- Essentially, a driver is basically a handler that does its magic whenever an associated system call (syscall) has been invoked by the kernel.
The kernel provides an abstraction for the events associated with the syscall.
For example, whenever the kernel invokes a syscall for writing in the device file, the associated code defined in ~module_write~ (or something equivalent) event will run.
- NEEDS INVESTIGATION: Another interesting of note here is how the kernel does not immediately writes the bytes in the device file until closing it.
- [[https://everything-is-sheep.herokuapp.com/posts/on-developing-a-linux-driver=-][An overview from a student without prior experience]]
- [[https://unix.stackexchange.com/questions/507687/graphic-tablet-veikk-pressure-sensitivity-on-linux][Creating a driver for a graphics tablet]] on Unix StackExchange
- [[https://lwn.net/Kernel/LDD3/][The de-facto reference on creating Linux drivers]]
- [[https://www.youtube.com/watch?v=juGNPLdjLH4][How do Linux kernel drivers work?]] from LiveOverflow
- [[https://www.youtube.com/watch?v=RyY01fRyGhM][Writing Linux kernel modules in safe Rust]] from the Linux Foundation
- [[https://lwn.net/Kernel/LDD3/][Linux device drivers, 3rd edition]], the de-facto reference for kernel modules

4
2020-09-04-16-07-47.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Nix package manager
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-04 16:07:47+08:00"
#+DATE_MODIFIED: "2020-09-09 05:25:03+08:00"
#+DATE: "2020-09-04 16:07:47 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:25:03 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

4
2020-09-04-19-57-06.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Functional programming
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-04 19:57:06+08:00"
#+DATE_MODIFIED: "2020-09-09 05:25:37+08:00"
#+DATE: "2020-09-04 19:57:06 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:25:37 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

16
2020-09-11-04-08-34.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Human-friendly colorspaces
#+TITLE: Human-friendly color spaces
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-11 04:08:34+08:00"
#+DATE_MODIFIED: "2020-09-11 04:15:06+08:00"
#+DATE: "2020-09-11 04:08:34 +08:00"
#+DATE_MODIFIED: "2020-09-19 19:06:18 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
@ -10,6 +10,10 @@
- Tags :: [[file:2020-09-11-04-11-59.org][Computer graphics]]
- [[https://www.hsluv.org/][HSLuv]]
- [[https://www.kuon.ch/post/2020-03-08-hsluv/][This introductory article is a great resource on HSLuv]]
- Human-friendly color scheme generation implementation based on [[https://terminal.sexy/][terminal.sexy]].
As it turns out (from my perspective), different colorspaces have different purposes.
- Screens usually use sRGB for consistency despite technology is advancing enough to create more capabilities for display.
- Certain camera may use [[https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space][ProPhoto RGB]] which consists beyond the human color space allowing for more vibrant photos.
- Certain applications such as those from Adobe or anything that deals with photos and design make use of the [[https://en.wikipedia.org/wiki/Adobe_RGB_color_space][Adobe RGB]] or the [[https://en.wikipedia.org/wiki/Wide-gamut_RGB_color_space][wide-gamut RGB]].
- [[https://www.boronine.com/2012/03/26/Color-Spaces-for-Human-Beings/][This introductory article how colorspaces work]]

4
2020-09-11-04-11-59.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Computer graphics
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-11 04:11:59+08:00"
#+DATE_MODIFIED: "2020-09-11 04:13:31+08:00"
#+DATE: "2020-09-11 04:11:59 +08:00"
#+DATE_MODIFIED: "2020-09-11 04:13:31 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

4
2020-09-13-19-42-06.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Software packaging
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-13 19:42:06+08:00"
#+DATE_MODIFIED: "2020-09-14 00:15:26+08:00"
#+DATE: "2020-09-13 19:42:06 +08:00"
#+DATE_MODIFIED: "2020-09-14 00:15:26 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

4
2020-09-14-05-54-45.org Normal file → Executable file
View File

@ -1,8 +1,8 @@
#+TITLE: Linked data
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-14 05:54:45+08:00"
#+DATE_MODIFIED: "2020-09-14 05:55:52+08:00"
#+DATE: "2020-09-14 05:54:45 +08:00"
#+DATE_MODIFIED: "2020-09-14 05:55:52 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

15
2020-09-14-10-46-15.org Executable file
View File

@ -0,0 +1,15 @@
#+TITLE: Reproducible builds
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-14 10:46:15 +08:00"
#+DATE_MODIFIED: "2020-09-14 11:31:36 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
- [[https://reproducible-builds.org/][Reproducible builds]]
- [[https://static.conf.archlinux.org/archconf2019/recordings/][Reproducible builds in Arch Linux from Arch Conf 2019]]
- [[file:2020-04-12-11-20-53.org][Reproducible research]] usually found on scientific workflows
- Docker containers
- Nix and Guix

38
2020-09-14-22-25-10.org Executable file
View File

@ -0,0 +1,38 @@
#+TITLE: GNU Guix packaging
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-14 22:25:10 +08:00"
#+DATE_MODIFIED: "2020-09-14 23:53:35 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Practicing [[file:2020-09-13-19-42-06.org][Software packaging]] in [[file:2020-08-19-08-21-44.org][GNU Guix]] is pretty straightforward with several tools that the package manager provides.
With things like importers, build systems, and light abstractions, it can spark joy packaging with Guix.
* Getting started
The following instructions assumes you have Guix installed.
To start hacking into Guix packages, clone the Git repo of the Guix packages (i.e., <GUIX_GIT_REPO>).
Once you have the Git repo ready, you may want to develop in an isolated environment.
This is a perfect use case for Guix with ~guix environment~ command.
The following is an example of an environment created with the Guix package manager:
#+BEGIN_SRC shell
guix environment --pure guix --ad-hoc coreutils ripgrep neovim emacs
#+END_SRC
This creates a =virtualenv=-like environment with the packages listed with ~--ad-hoc~ (e.g., GNU Coreutils, Neovim, Emacs).
To start making changes, you need to create a branch first to avoid conflicts in the master branch (e.g., ~git checkout -b $BRANCH~).
The project structure brings all of the things together: Guix package manager implementation, package definitions, and documentation.
The packages are located in =gnu/packages= conveniently due to how Guile modules work.
(If you're not familiar with GNU Guile, the rule of thumb is that one module per file and the module name must match the location it's in (e.g., ~gnu packages rust-apps~ is in =gnu/packages/rust-apps.scm=).
Furthermore, all items inside of a module are private by default unless declared to be public.)

13
2020-09-15-03-08-22.org Executable file
View File

@ -0,0 +1,13 @@
#+TITLE: Create package definitions for missing dependencies first before the package itself
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-15 03:08:22 +08:00"
#+DATE_MODIFIED: "2020-09-15 03:18:37 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Certain ecosystems like in [[file:2020-09-04-16-07-47.org][Nix package manager]] with [[https://github.com/NixOS/nixpkgs][nixpkgs]] or [[file:2020-08-19-08-21-44.org][GNU Guix]] within their own packages follow a standard (officially) [fn:: If not, you can freely ~make build~ all you want.] about making sure all dependencies are present first before building the package.
Smaller libraries often go through this and so, you need to package the dependencies first.
It also helps with creating a global definition for other packages that requires those small libraries.

50
2020-09-16-23-09-01.org Executable file
View File

@ -0,0 +1,50 @@
#+TITLE: Use timestamps for effectively future-proofing your stuff
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-16 23:09:01 +08:00"
#+DATE_MODIFIED: "2020-09-17 03:11:19 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
One of the simplest ways to future-proof your documents with [[file:2020-04-13-17-32-27.org][File metadata]] is to create a timestamp.
Specifically, two timestamps: one when it's created and one when it was last modified which will be continuously updated each time we modify the file.
This lets you quickly evaluate whether the information is up-to-date.
It also lets you [[file:2020-04-14-18-28-55.org][Maintain your own digital library]] with relative ease if your focus is on up-to-date information.
In order to make updating the modification timestamp worth not to make it a chore, it is best to automate that task.
[fn:: Besides, it is only a chore for the first time versus $x$ amount of times.]
Different files may be applied differently as long as we can create a unified interface to search through them all.
(See [[file:2020-04-13-17-32-27.org][File metadata]] for more information about it.)
Here's a special example with [[file:2020-04-20-16-51-40.org][Org-mode]] documents:
#+BEGIN_SRC org :exports none
\#+DATE: "2020-09-16 23:53:00 +08:00"
\#+DATE_MODIFIED: "2020-09-17 10:33:42 +08:00"
#+END_SRC
Thankfully, Emacs has a [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Time-Stamps.html][time stamp]] feature that abstracts that for us.
We can then attach the timestamp update with a [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html#Hooks][hook]] that will occur before saving the file and voila!
Automated timestamp for our text documents.
Here's my (Doom Emacs) specific config as of 2020-09-17 for future references:
#+BEGIN_SRC elisp
(after org!
(setq
; Set a custom time-stamp pattern.
; Even though, it's not recommended, most of the time,
time-stamp-start "DATE_MODIFIED:[ ]+\\\\?[\"<]+"))
; Modify the time-stamp with each save.
(setq time-stamp-format "%Y-%02m-%02d %02H:%02M:%02S%:z")
(add-hook 'before-save-hook 'time-stamp)
#+END_SRC
This should be easily replicated to other editors.
All you need from a text editor is the hooks and a search-and-replace feature [fn:: Maybe an option limiting the lines to be searched to prevent large search sessions as well.].
For binary files, we can set the timestamp with a metadata writer then use a filesystem watcher and configure it to execute every time the file changes.

View File

@ -1,8 +1,8 @@
#+TITLE: Functional package management
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-19 08:31:48+08:00"
#+DATE_MODIFIED: "2020-09-09 05:26:32+08:00"
#+DATE: "2020-09-19 08:31:48 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:26:32 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both

139
2020-09-19-18-43-07.org Executable file
View File

@ -0,0 +1,139 @@
#+TITLE: Generating human-friendly color schemes
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-19 18:43:07 +08:00"
#+DATE_MODIFIED: "2020-09-29 06:08:42 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Though we already have [[file:2020-09-11-04-08-34.org][Human-friendly colorspaces]], it doesn't mean that we can simply generate human-friendly color schemes.
Certain colors can be perceived as too bright or too dark and having them grouped in a color palette will look out-of-place and/or horrible.
Color spaces such as [[https://www.hsluv.org/][HSLuv]] and [[https://en.wikipedia.org/wiki/CIELUV][CIELUV]] respects perceptual uniformity which approximates how human vision see things.
We can simply generate colors with the aforementioned color spaces.
Here's an example of a [[http://chriskempson.com/projects/base16/][Base16]] color scheme generation from [[https://terminal.sexy/][terminal.sexy]] ported to Rust.
#+BEGIN_SRC rust
use std::error::Error;
use std::collections::HashMap;
use std::env;
use hsluv;
use rand_chacha::ChaCha8Rng;
use rand::{Rng, SeedableRng};
#[macro_use]
use serde::{Deserialize, Serialize};
// Based from the implemention at terminal.sexy repo
// at https://github.com/stayradiated/terminal.sexy/blob/2e2c9bec994723a657cce8bf708d83879a50c0ce/lib/stores/random.js
// which in turn based from the demo example at https://www.hsluv.org/syntax/.
type Colors = HashMap<String, String>;
#[derive(Serialize, Deserialize, Debug)]
struct SpecialColors {
background: String,
foreground: String,
cursor: String,
}
impl SpecialColors {
pub fn new() -> Self {
Self {
background: String::from("#000000"),
foreground: String::from("#000000"),
cursor: String::from("#000000")
}
}
}
#[derive(Serialize, Deserialize, Debug)]
struct PywalObject {
#[serde(default)]
alpha: u8,
special: SpecialColors,
colors: Colors,
wallpaper: Option<String>,
}
impl PywalObject {
pub fn new() -> Self {
Self {
alpha: 255,
special: SpecialColors::new(),
colors: Colors::new(),
wallpaper: None
}
}
}
/// The command-line interface simply needs a seed to be parsed as an unsigned 64-bit integer (`u64`).
fn main() -> Result<(), Box<dyn Error>> {
let args: Vec<String> = env::args().collect();
let mut result = PywalObject::new();
let mut rng = match args.get(1) {
Some(arg) => ChaCha8Rng::seed_from_u64(arg.parse::<u64>()?),
None => ChaCha8Rng::from_entropy()
};
// 6 hues to pick from
let base_hue: f64 = rng.gen_range(0.0, 360.0);
let hues: Vec<f64> = ([0.0, 60.0, 120.0, 180.0, 240.0, 300.0])
.iter()
.map(|offset| (base_hue + offset) % 360.0)
.collect();
// 8 shades of low-saturated color
let base_saturation: f64 = rng.gen_range(8.0, 40.0);
let base_lightness: f64 = rng.gen_range(0.0, 10.0);
let range_lightness: f64 = 90.0 - base_lightness;
result.special.background = hsluv::hsluv_to_hex(
(hues[0],
base_saturation,
base_lightness / 2.0)
);
result.special.foreground = hsluv::hsluv_to_hex(
(hues[0],
base_saturation,
range_lightness)
);
result.special.cursor = result.special.foreground.clone();
// Setting the colors according to the Base16 spec at http://chriskempson.com/projects/base16.
for i in 0..7 {
result.colors.insert(format!("color{}", i), hsluv::hsluv_to_hex(
(hues[0], base_saturation, base_lightness + (range_lightness * ((i as f64)/7.0).powf(1.5)))
));
}
// 8 random shades
let min_saturation: f64 = rng.gen_range(30.0, 70.0);
let max_saturation: f64 = min_saturation + 30.0;
let min_lightness: f64 = rng.gen_range(50.0, 70.0);
let max_lightness: f64 = min_lightness + 20.0;
for j in 8..16 {
result.colors.insert(format!("color{}", j), hsluv::hsluv_to_hex(
(hues[rng.gen_range(0, hues.len() - 1)], rng.gen_range(min_saturation, max_saturation), rng.gen_range(min_lightness, max_lightness))
));
}
println!("{:?}", result);
Ok(())
}
#+END_SRC
- [[https://www.hsluv.org/][HSLuv]]
- [[https://www.kuon.ch/post/2020-03-08-hsluv/][This introductory article is a great resource on HSLuv]]
- [[https://www.boronine.com/2012/03/26/Color-Spaces-for-Human-Beings/][Color spaces for human beings]]
- Human-friendly color scheme generation implementation based on [[https://terminal.sexy/][terminal.sexy]].

12
2020-10-30-00-49-22.org Normal file
View File

@ -0,0 +1,12 @@
#+TITLE: Web annotations
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-10-30 00:49:22 +08:00"
#+DATE_MODIFIED: "2020-10-30 01:04:35 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
- https://beepb00p.xyz/annotating.html
- https://beepb00p.xyz/pkm-setup.html

33
2020-11-05-17-21-58.org Normal file
View File

@ -0,0 +1,33 @@
#+TITLE: Generate a color scheme based from a single color
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-11-05 17:21:58 +08:00"
#+DATE_MODIFIED: "2020-11-14 20:42:31 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
[[file:2020-09-19-18-43-07.org][Generating human-friendly color schemes]] has always been a disaster (for me) to figure out especially with no cursory knowledge whatsoever on color theory.
So I've been thinking how to do such thing with the result that doesn't make gouge my eyes out.
Thus, for the solution, we'll include some opinionated things.
- Generate a color with the HSLuv color space since it is .
- The color palette is composed of 16 colors inspired on [[https://www.nordtheme.com/docs/colors-and-palettes][Nord's documented color scheme]].
This easily provides a [[https://github.com/chriskempson/base16][Base16]] color scheme generator.
- If the given color is bright, it should create a light theme.
Here's the procedure for the color sections.
- For ~base00~, invert the lightness of the color by $\pm20$ (e.g., $20$ if it's dark, $80$ if it's bright).
- For ~base01~ to ~base07~, add the lightness by $\pm5$ to $\pm10$.
You can make additional tweaks for all of the parameters (e.g., hue, saturation, lightness) of the color.
- On ~base08~ to ~base0F~, you can make a uniquely randomized color palette as long as it contains at least 3 colors.
What if we want to make changes to the generation process?
One way to do it is to separate the hardcoded process into a configuration.
From there, we can set various procedures such as the [[https://github.com/alexmirrington/base16-spectrum-generator][usual Base16 scheme]], [[https://terminal.sexy/][terminal.sexy]], or your own.
# TODO: Observe the hand-crafted custom color scheme
# TODO: Test if it's accurate or not

128
2020-11-14-22-07-13.org Normal file
View File

@ -0,0 +1,128 @@
#+TITLE: Linguistics, style, and writing in the 21st century
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-11-14 22:07:13 +08:00"
#+DATE_MODIFIED: "2020-11-15 03:17:44 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
- talk :: [[https://youtu.be/OV5J6BfToSw][Linguistics, style, and writing in the 21st century]]
- author :: Steven Pinker
# TODO: Give examples to several of the sections here.
# It would be ironic if I didn't now, yes?
\begin{abstract}
This talk focuses on the problem of postmodernistic writings and how to avoid them.
It discusses the how this plague has started and proposes to look into writing from a more scientific perspective.
This note attempts to condense the 50-minute talk into several paragraphs.
\end{abstract}
Bad writing exists is a fact of life especially in bureaucrats, academics, corporates, and legal faculties.
Good people can write bad prose probably due to deliberate decisions, pseudo-intellectuals, and language (and stylistic) changes.
Some have theorized why this happened such as the degeneration of the language which happens at least one time per generation.
Others have concluded it might be due to writing being an unnatural act like baking, brewing, and crafting.
* Classic prose
Since writing is an unnatural act, we can make use of science to investigate what makes good writing.
One of the starting points of good writing is a good model of communication.
One of the more popular model is the *classic style*.
- View the writing as the window of the world.
- Reader and writer as equals.
- The writer guides the reader into seeing the objective reality.
- Conversational.
* How does classic prose help?
Because it gives reader credit, it implies coordination between the reader and the writer.
Just like how you would intepret in a conversation, hearing "The students in this school are getting dumber." equates to the most students seem to be getting dumber.
It knows that the reader can read between the lines since they most likely read to know how the writer did about the subject.
Classic prose should serve the following goals:
- Make the reader sees a world instead of verbiage.
- Narrate the current events.
- Focus on the thing being shown instead of the activities that progressed it.
By consequence, classic style minimizes fluff such as:
- Apologizing (e.g., "as the concept of children is yet to be defined, more research is required").
- Hedge words (e.g., apparently, partially, a little bit, mostly).
- Metaconcepts (concepts about concepts) (e.g., approach, perspective, subjects).
- Professional narcissism (e.g., boasting about sales instead of the synopsis of the product, media outlets covering the stats of the coverage [popularity, reads, clicks, etc.] instead of the event itself).
- Cliches and idioms (e.g., piece of cake, ace in the hole).
- [[https://en.wikipedia.org/wiki/Scare_quotes][Shutter quotes]] (e.g., "in-the-know", "quick study").
- Zombie nouns (e.g., "make an appearance" instead of "appear", "creating a literary piece" instead of "writing").
* Why passive voice gets the blame?
It is often known that academics abuse the passive voice.
As a result, traditional manuals often include avoiding use of it.
But first, we have to know why passive voice are often used.
As the presenter reveals, it is stemmed from the limitations of the language and how bad writers write.
Language is a way of converting our web of thoughts into a linear string of words.
A web can freely overlap in concepts but a linear sentence cannot.
A sentence has to do two things: show the subject and its relation to other things and introduce bits of information that are relevant to the reader.
Often, this comes into the form of the doer then showing the actions and maybe its effect.
# TODO: Show an example on how English with only active voice is bad
# and how passive voice is introduced as a solution.
Bad writers starts from what they know.
They focus on the effect, leaving the cause as an afterthought which makes it a use case for passive voice.
This causes the traditional manuals to discourage the use of passive voice.
But it does not mean that passive voice is inherently bad.
Passive voice offers a different way to order your thoughts.
* The curse of knowledge
#+BEGIN_QUOTE
Once you know something, it's hard to imagine from the perspective of a newcomer.
#+END_QUOTE
The curse of knowledge — also known as hindsight bias, egocentrism, and mindblindness — is the tendency of the writer to not consider the background of the reader.
This often makes the writing filled with unexplained jargon, abbreviations, and references that the reader may not know.
For example, the writer may refer to a terminology a fellow expert may know or miss enlisting the definition of a jargon.
One of the well-known solutions to this problem is to be emphatic to your readers.
But as Pinker adds, we're not good at it since we don't know what our readers will like or not like.
The better solution is to give the draft to a real-life representative reader and gather as much feedback as possible.
You could make yourself as you would read the writing in the future.
* How language evolves
The evolution of the language changes the opinion of the writers.
As it turns out, some of the things deemed as ungrammatical by popular writers.
- Singular they.
- Split infinitive.
- Prepositions at the end of the sentence.
- Passive voice.
Several modern manuals also say that there is nothing wrong with the above things.

32
2020-11-15-05-10-51.org Normal file
View File

@ -0,0 +1,32 @@
#+TITLE: Accounting basics
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "%![Error: (void-function user-mail-address)]"
#+DATE: "2020-11-15 05:10:51 +08:00"
#+DATE_MODIFIED: "2020-11-15 05:11:23 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Accounting is knowing how much we have.
Bookkeeping is the practice of tracking and classifying various financial moves.
Bookkeeping can make financial management less stressful (and some might say, enjoyable).
You can easily know what you have: disposable income, loans, credits, etc.
On the other hand, it is also legally required for business to keep track of it.
In accounting, the basic unit of operations are *transactions*.
Transactions are seen everywhere — you've done a transaction when you've bought your laptop, ordered some food, delivered a package, etc.
To make a transaction, an *account* is used as a marker or label for the two sides.
For example, a transaction for buying a laptop with cash is made of two accounts for the cash and the laptop.
In personal financing, there are said five common accounts:
- Assets which are composed of your bank account, wallet, real estate, and investments.
- Liabilities which is something you owe (e.g., mortgages, loans).
- Income, another term for revenue, is your paychecks, received gifts, and interests.
- Expenses including groceries and bills, given gifts, and donations.
- Equity is everything else.
Each transaction is made up of two components usually referred as *debit* and *credits*.

8
index.org Normal file → Executable file
View File

@ -1,4 +1,12 @@
#+TITLE: Index
#+AUTHOR: "Gabriel Arazas"
#+EMAIL: "foo.dogsquared@gmail.com"
#+DATE: "2020-09-07 05:49:06 +08:00"
#+DATE_MODIFIED: "2020-09-09 05:49:21 +08:00"
#+LANGUAGE: en
#+OPTIONS: toc:t
#+PROPERTY: header-args :exports both
Hello!
This is my public knowledge graph publicly available for the public.