Update the notebook

The topics I've covered so far for Linux, package managers, archiving,
and learning.

I also updated some formatting for other notes especially with the
command line references.
This commit is contained in:
Gabriel Arazas 2021-07-29 23:26:51 +08:00
parent 48ed6ede94
commit 549f476c4c
28 changed files with 387 additions and 169 deletions

View File

@ -3,13 +3,23 @@
:END:
#+title: Digital gardens
#+date: "2020-06-04 21:32:23 +08:00"
#+date_modified: "2021-05-20 20:13:35 +08:00"
#+date_modified: "2021-07-25 23:21:23 +08:00"
#+language: en
An environment for crafting [[id:431532c3-6506-4565-b193-dbfb60eac7d6][Evergreen notes]].
Unlike a traditional blog where it concerns the final output, a digital garden cares more on the process of creating notes even if it's incomplete.
Examples of a digital garden includes [[https://notes.andymatuschak.org/][Andy Matuschak's]], [[https://maggieappleton.com/garden][Maggie Appleton's]], and [[https://www.mentalnodes.com/][Anne-Laure De Cunff's]].
A list of examples...
- One of the more popular one especially with the relatively recent note-taking craze with [[id:4259636e-e0e8-49e4-8210-758ec59728a3][Zettelkasten]], [[https://notes.andymatuschak.org/][Andy Matuschak's]] notes have always been referred to especially with the navigation of notes by stacking them horizontally.
It is nice to navigate representing your curiosity as most note-taking system sucks at providing navigation.
- [[https://maggieappleton.com/garden][Maggie Appleton's]] is a simple one with some metadata for completion, when it was first created and updated.
- [[https://www.gwern.net/index][Gwern Branwen's]] website is an aesthetically nice website with the pop-ups at hover.
They also address concerns of seeing changes by explicitly listing them in [[https://www.gwern.net/Red][a dedicated page]].
Similarly, their posts also has attached meaningful metadata with their confidence, completion status, and backlinks.
In other words, wikis with a fancier name and a gardening metaphor.
@ -27,4 +37,6 @@ While digital gardens are essentially glorified personal knowledge bases, digita
- Composes of different notes of different maturity level: either an incomplete seedling of a note, a partially complete note, or a fully-developed evergreen note.
- Attaching meaningful [[id:ccb3bc14-a801-4ed0-b066-50b1bcd853aa][File metadata]] to enable further tracking the status of your notes.
- Sports a note-taking workflow along with a publication workflow (e.g., web, PDf documents), encouraging to work in the open.

View File

@ -1,16 +0,0 @@
:PROPERTIES:
:ID: 3b3fdcbf-eb40-4c89-81f3-9d937a0be53c
:END:
#+title: Nix package manager
#+date: "2020-09-04 16:07:47 +08:00"
#+date_modified: "2021-06-11 10:54:42 +08:00"
#+language: en
[[https://nixos.org/][Nix]] is a package manager that pioneered [[id:bfed6daf-4c2b-4426-bab9-2804caa5e079][Functional package management]] which addresses the criticisms of traditional Unix systems while making it as a specialized tool for [[id:6eeb7a24-b662-46d6-9ece-00a5028ff4d8][Reproducible research]].
It features a handrolled configuration language (also called Nix) that leans into functional paradigm, making it easier if you have experience on it.
A popular tool mostly featured in Haskell programming projects.
Eventually inspired GNU to create a fork, [[id:be917383-84c4-4bf5-9ca0-b04bfb778f4f][Guix package manager]], that takes it to another direction with more focus on reproducibility and its extensions such as bootstrapping.
To see more details, refer to [[id:892676b3-76cb-4cd4-9689-910c1fe6587a][The basics of Nix package manager]].

View File

@ -3,7 +3,7 @@
:END:
#+title: Prefer referencing over remembering
#+date: "2021-04-06 22:25:17 +08:00"
#+date_modified: "2021-07-14 15:36:24 +08:00"
#+date_modified: "2021-07-28 13:07:51 +08:00"
#+language: en
#+tags: personal-info-management
@ -29,4 +29,10 @@ Examples:
- [[id:ce6ab58e-b295-4fdb-8af7-fc89c63ec208][GNU Emacs]] has a great built-in help system.
(See [[id:0efb9c51-3a12-4e5a-9e9b-d48cf4bd53ce][Using the built-in help system of Emacs]] for more details.)
- [[id:ea263f6f-fa8e-4e6d-a585-d30d493d1e3c][Add a desktop search engine for your digital library]].
- Referring to official documentation and tools (e.g., [[https://devdocs.io/][DevDocs]], [[https://zealdocs.org/][Zeal]]).
- Making full use of search tools from programs such as the command palette in [[roam:Visual Studio Code]], help system in Microsoft Word, and dynamic menus in roam:Blender.
If the system has a way of referencing something (other than the internet), use it to your advantage as you may find something valuable.

View File

@ -3,7 +3,7 @@
:END:
#+title: Start small and improve later
#+date: "2021-05-05 18:06:29 +08:00"
#+date_modified: "2021-07-22 14:25:58 +08:00"
#+date_modified: "2021-07-22 14:31:32 +08:00"
#+language: en
@ -12,14 +12,14 @@ This is a very simple advice applicable on lots of places.
- In speedrunning, when starting to learn the mechanics of the game, you may want to finish a whole run no matter how bad it is to get the bigger picture.
This way, you'll know what techniques and tricks you find difficult and improve on it immediately.
- When learning to program, you can start with solving one coding problem until you're now comfortable to take two.
- When [[id:4b33103b-7f64-4b51-8f03-cac06d4001bb][Programming]], you can start with solving one coding problem until you're now comfortable to take two.
Then, with a couple of problems, you're now comfortable to take three and so on.
- In [[id:cd7e8120-6953-44a6-9004-111f86ac52dc][Illustration]], one often starts with a sketch with rough shapes and outlines.
The details may then change in the later phases of the sketch.
This can make immediate improvements especially when you found out the outcome does not fit with what you've visualized.
- In learning a new skill, you start from the basic concepts.
- In [[id:af0ccefe-c671-47bf-94f7-62243c805745][Skill-building]], you start from the basic concepts.
This is to build a foundation for complex topics and flexibility you need to create a solution.
- In [[id:815b2beb-40a0-4e79-9097-5b688189ad5b][Writing]], you often start with the outlines of the article or a story.

View File

@ -3,7 +3,7 @@
:END:
#+title: Learning process
#+date: "2021-05-14 12:37:18 +08:00"
#+date_modified: "2021-07-21 16:00:53 +08:00"
#+date_modified: "2021-07-28 11:08:50 +08:00"
#+language: en
@ -11,16 +11,9 @@
- [[id:c0e4fb0e-68f2-4db4-8c3e-f5a7845738c3][Understanding comes first from memory]] — that is, starting from rote learning is a valid way to learn as much as it isn't well-accepted.
- Consider other learning techniques.
+ [[id:063dfd73-dbf5-437b-b6f1-d7aeca196f31][Spaced repetition]] is often considered to be a better method of memorization.
+ Know how [[id:cb995494-302f-4666-b56f-ea20a8adea10][Memory palace]] is helpful in learning newer concepts.
- Consider to use various [[id:125ca096-9769-465f-b923-ed1fd7956ae0][Learning techniques]].
- With the techniques considered, take a look at the common [[id:9dc7cb08-3aea-4f66-80ac-49a14b4b7642][Pitfalls and illusions of competence]].
- After you understood the concepts, you start to see things in your own perspective.
[[id:d885e93b-f919-4338-a6b9-3438538e18c0][Every copy of the techniques is personalized]].
- Beware, this could lead into actively consuming just the resources without the practice.
Remember, [[id:114b7874-6a20-49c8-be2c-46970c7110dc][Information is only acquired when you try to make sense of it]].
[[id:6b0e6b75-410f-42a3-8921-bcc4589b2d2a][Collecting information only feels like progress]].
To prevent this passive consuming, [[id:92a10fe2-f4d1-4e5e-b5f4-3779db13a2e5][Create roadmaps to stay on track]] and don't forget to make [[id:9b669fd4-e04e-43dd-a61e-81dea5ec0764][Deliberate practice]].

View File

@ -3,7 +3,7 @@
:END:
#+title: Diving head-first with a difficult problem is a good indicator of progress
#+date: "2021-05-20 20:25:47 +08:00"
#+date_modified: "2021-06-21 10:19:00 +08:00"
#+date_modified: "2021-07-22 18:06:45 +08:00"
#+language: en
@ -13,9 +13,11 @@
+ it could be effective if we have a lifeguard
- this sink-or-swim mentality can be great if we're to make a difficult problem as our model for progress
- for example, if you're trying to learn 3D modelling by recreating a massive landscape, you can start with it as an initial exercise
- at first try, it will fail but you can retry maybe next month to see how well you improve
- at first try, it will fail but you can retry maybe next month to see how well you improve;
this goes well with consistency as [[id:adefcd38-46a8-4c9c-b609-9d3393b074d0][Consistency over time creates more progress]]
- a difficult problem can give us a clear indication of our progress
- contrast this to learning by starting with the simplest possible example
- in some capacity, we already have been doing this since we have an idea of what we want to do
+ a lot of our inspirations tend to be people with advanced levels
+ a lot of our inspirations tend to be people with advanced levels;
we tend to [[id:7f73f745-8ce0-4a02-b454-1b7c57b1e202][Follow the experts in the field]]
- beware, [[id:48cef2ac-a941-463d-a07f-6be8349456ad][Diving head-first into a difficult problem makes a bad start]]

View File

@ -3,7 +3,7 @@
:END:
#+title: Skill-building
#+date: "2021-07-09 19:20:50 +08:00"
#+date_modified: "2021-07-22 14:26:08 +08:00"
#+date_modified: "2021-07-28 11:27:10 +08:00"
#+language: en
@ -11,6 +11,5 @@
- [[id:1a6187c9-6c79-4378-bf8d-935c8a3d9167][Learning a new skill often starts from specific places]].
- [[id:0dbfee88-cdce-48d1-9a10-23fc12d9bcd5][Refer to advanced resources when skill-building for a solid short-term goal]].
- Get into [[id:db298171-834d-4348-92a8-68e3f830d5d0][Collecting information to learn new skills]].
- Practice and understand how [[id:2667d942-48b6-4d1e-b92b-15c2dab645ed][Switching between different topics makes new perspective]].
- Learn a thing or two about the [[id:06df5d69-12ac-4e98-8013-ac54d29aa80c][Learning process]] and [[id:125ca096-9769-465f-b923-ed1fd7956ae0][Learning techniques]].
- To push your level, do some [[id:9b669fd4-e04e-43dd-a61e-81dea5ec0764][Deliberate practice]].

View File

@ -3,16 +3,18 @@
:END:
#+title: Learning techniques
#+date: 2021-07-22 14:02:06 +08:00
#+date_modified: 2021-07-22 14:02:28 +08:00
#+date_modified: 2021-07-28 11:17:06 +08:00
#+language: en
- [[id:063dfd73-dbf5-437b-b6f1-d7aeca196f31][Spaced repetition]] and roam:Recalling are two fundamental practice for learning.
- [[id:063dfd73-dbf5-437b-b6f1-d7aeca196f31][Spaced repetition]] and [[id:a7de7178-d674-4c86-8413-66dd8d88b4ad][Recalling]] are two fundamental practice for learning.
- [[id:9b669fd4-e04e-43dd-a61e-81dea5ec0764][Deliberate practice]] helps in increasing our skill level and a necessity if we want to really master the concepts.
- [[id:6f9c552f-055b-4238-874e-8608006ce0ca][Communicate with others to learn]] will prevent you from [[id:5c603e2c-4dae-465e-abb5-12897ad7466d][Tunnel vision]].
This includes actively [[id:2667d942-48b6-4d1e-b92b-15c2dab645ed][Switching between different topics makes new perspective]].
- Actively [[id:2667d942-48b6-4d1e-b92b-15c2dab645ed][Switching between different topics makes new perspective]] while preventing [[id:5c603e2c-4dae-465e-abb5-12897ad7466d][Tunnel vision]].
- [[id:6f9c552f-055b-4238-874e-8608006ce0ca][Communicate with others to learn]] new things include their way of understanding a topic.
[[id:7f73f745-8ce0-4a02-b454-1b7c57b1e202][Follow the experts in the field]].
- Skimming the material helps being familiar with the topic.
[[id:5c1e9540-9663-4512-8c84-05529ad22212][Speedreading is all about skimming well]].

View File

@ -3,7 +3,7 @@
:END:
#+title: Repetition is not understanding
#+date: 2021-07-22 14:03:33 +08:00
#+date_modified: 2021-07-22 14:16:19 +08:00
#+date_modified: 2021-07-28 11:22:57 +08:00
#+language: en
@ -15,3 +15,5 @@ However, with the number of times we are doing, there are bounds to have mistake
[[id:c0e4fb0e-68f2-4db4-8c3e-f5a7845738c3][Understanding comes first from memory]].
This is where purposeful practice like [[id:9b669fd4-e04e-43dd-a61e-81dea5ec0764][Deliberate practice]] comes into play as we're lifting our skill level to be improved.
But not all repetition has to be useful either as [[id:864a9242-eb10-44ad-81b7-c237276523e5][We know more compared to what we understood]].
Sometimes, we practice repetition only to remember immediate information.

View File

@ -3,11 +3,13 @@
:END:
#+title: Follow the experts in the field
#+date: 2021-07-22 14:11:16 +08:00
#+date_modified: 2021-07-22 14:11:24 +08:00
#+date_modified: 2021-07-22 15:54:38 +08:00
#+language: en
- similar to [[id:0dbfee88-cdce-48d1-9a10-23fc12d9bcd5][Refer to advanced resources when skill-building for a solid short-term goal]], this time is actively following the people that made a career out of it
- similar to [[id:0dbfee88-cdce-48d1-9a10-23fc12d9bcd5][Refer to advanced resources when skill-building for a solid short-term goal]], this time we're actively following the people that made a career out of it
- they often figured things out already that may have took years of realization;
you may want to get some insights from them to save yourself from [[id:9138397a-a965-45e9-97ea-71849e8d4f94][Overlearning]]
- not only you are getting the trending topics but also inspire to create other projects;
we [[roam:Learn by copying]]
- furthermore, we can [[id:6f9c552f-055b-4238-874e-8608006ce0ca][Communicate with others to learn]] and interacting with a community as passive learning and relaxing (if that's your preference)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -3,7 +3,7 @@
:END:
#+title: Command line: fzf
#+date: "2021-05-31 23:08:57 +08:00"
#+date_modified: "2021-06-19 17:42:49 +08:00"
#+date_modified: "2021-07-27 12:38:25 +08:00"
#+language: en
@ -49,6 +49,8 @@ apropos . \
| xargs man
#+end_src
Since a manual page can have the same title in different sections (e.g., =tput.1= and =tput.1p=), it is necessary to extract the sections.
** Goto directory with fzf and Bash

View File

@ -0,0 +1,61 @@
:PROPERTIES:
:ID: 80866258-4fd5-4ddc-b3e4-00fa3d3372d3
:END:
#+title: Command line: systemctl
#+date: 2021-07-27 13:47:34 +08:00
#+date_modified: 2021-07-27 14:06:35 +08:00
#+language: en
#+property: header_args :eval no
The go-to command to manage units in a systemd-ful system.
For full details, you can view the =systemctl.1= manual page.
* Synopsis
#+begin_src shell
systemctl [OPTIONS...] COMMAND [COMMAND_ARGS...] [COMMAND_OPTIONS...]
#+end_src
* Options
- =--user= runs the binary in user mode with the user-specific options and load-path.
See [[id:c7edff80-6dea-47fc-8ecd-e43b5ab8fb1e][systemd at user-level]] for more details.
- =--help= is an obvious one.
It prints a detailed help section of the command.
* Subcommands
- =enable UNIT= and =disable UNIT= enables and disables units.
It mainly adds the unit activation at startup.
+ =--now= starts/stops the unit.
It is the equivalent of =systemctl {enable,disable} UNIT && systemctl {start,stop} UNIT=.
Pretty handy if you intend to add the unit at startup and want to use it now.
- =start UNIT= and =stop UNIT= starts and stops the unit, respectively.
Though, this doesn't activate
- =restart UNIT= restarts the given unit.
This also reloads with the modified changes of the unit.
- In some cases where restarting the unit isn't enough, =daemon-reload= will reload the daemon with the modified units.
systemd does not have reload-at-change for its unit.
That is, if a unit is modified, systemd will not run the modified version until reloaded.
- =show-environment= shows the environment variables of the system.
- =list-units [PATTERN...]= is self-explanatory ;p.
- =is-active PATTERN...= prints the status of the matched unit and exits successfully if it's active.

View File

@ -3,7 +3,7 @@
:END:
#+title: Command-line: youtube-dl
#+date: "2021-07-08 17:36:26 +08:00"
#+date_modified: "2021-07-20 23:31:35 +08:00"
#+date_modified: "2021-07-28 14:38:09 +08:00"
#+language: en
#+property: header-args :eval no
@ -28,17 +28,37 @@ youtube-dl [OPTIONS...] [URLS...]
* Options
- =--add-metadata= adds metadata to the resulting file after download
- =--audio-format [EXTENSION]= downloads the video with the select format of "opus", "mp3", "opus", and "vorbis"; but there is also the convenient "best" option
- =--audio-quality [QUALITY]= sets the quality of the audio from 0 to 9, best to worst respectively; bitrates are also accepted (e.g., =320K=, =1M=)
- =-c, --continue= resumes the download; useful if the download process is interrupted
- =--config-location [PATH]= set the config to be used; useful for local configs with specific options
- =--audio-format EXTENSION= downloads the video with the select format of "opus", "mp3", "opus", and "vorbis";
but there is also the convenient "best" option
- =--audio-quality QUALITY= sets the quality of the audio from 0 to 9, best to worst respectively;
bitrates are also accepted (e.g., =320K=, =1M=)
- =-c, --continue= resumes the download;
useful if the download process is interrupted
- =--config-location PATH= set the config to be used;
useful for local configs with specific options
- =-F, --list-format= prints a list of format available for downloading
- =--list-extractors= prints a list of supported sites and their specific features.
- =--format [QUALITY]= downloads the video with the format shown in =--list-format=; there are convenient options such as =bestaudio= and =bestvideo= referring to the best quality it could find
- =--format QUALITY= downloads the video with the format shown in =--list-format=;
there are convenient options such as =bestaudio= and =bestvideo= referring to the best quality it could find
- =--match-title REGEX= downloads only with the matched titles;
for the inverse operation, =--reject-title REGEX=
- =-j, --dump-json= completes a dry-run and prints in JSON format
- =-o, --output [STRING]= formats the resulting filename of the tracks to be downloaded
- =-o, --output STRING= formats the resulting filename of the tracks to be downloaded
- =--no-overwrite= throws an error if the file already exists which is handy for scripts
- =--write-sub= writes the subtitle file into disk
- =-x, --extract-audio= extracts only the audio track

View File

@ -3,7 +3,7 @@
:END:
#+title: Software Heritage
#+date: 2021-07-25 21:01:45 +08:00
#+date_modified: 2021-07-27 23:11:52 +08:00
#+date_modified: 2021-07-28 00:02:38 +08:00
#+language: en
@ -12,11 +12,16 @@
primarily happening at [[https://forge.softwareheritage.org/][their software forge]]
- an ambitious project archiving all of humanity's publicly available source code
- primarily made for researchers to easily refer to software;
a centralized database for referring software, in other words
- it is stored in a global merkle tree which each project is given an identifer referred to as Software Heritage persistent identifiers (SWHIDs)
- the archive itself is more of a gigantic merkle tree with the ability to interact with the individualities such as commits, revisions, snapshots, and even the very source code files of an archived repo
a centralized database for referring software similar to digital object identifiers (DOI) in research materials and ISBN for books
- the archive itself is more of a gigantic merkle tree with the ability to interact with the [[https://docs.softwareheritage.org/devel/swh-model/data-model.html][individual objects]] such as commits, revisions, snapshots, and even the very source code files of an archived repo
- it is version control software-agnostic;
archived software from several sources (e.g., Git, Mercurial)
- each object is given an identifer referred to as [[https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html][Software Heritage persistent identifiers]] (SWHIDs)
- funded from donations including big companies and several not-for-profit foundations
- a big component for [[id:6eeb7a24-b662-46d6-9ece-00a5028ff4d8][Reproducible research]] for other projects such as [[id:3b3fdcbf-eb40-4c89-81f3-9d937a0be53c][Nix package manager]] and [[id:be917383-84c4-4bf5-9ca0-b04bfb778f4f][Guix package manager]] used as a fallback when upstream vanished;
soon enough, it will develop tools to integrate them further such as archiving the code used to build the binary cache
- there is a [[https://archive.softwareheritage.org/][public interface for browsing the archive]]
- they have dedicated resources into creating an infrastructure for creating a centralized reference for software such as a user-local filesystem integrating the archive for development workflow (see [[id:4703f8c2-225c-4c76-a788-af04b84309ac][The Software Heritage Filesystem (SwhFS): Integrating Source Code Archival with Development]])
- they have dedicated resources into creating an infrastructure for creating a centralized reference for software such the following list
+ [[id:cf5cadae-e01b-4099-86fe-b0e05bda4d39][swh.fuse]], a tool that integrates the archive into a user-local filesystem integrating the archive for development workflow
+ roam:swh.search adding the search functionality in the archive
+ roam:swh.lister lists from several forges (e.g., GitHub, GitLab)

View File

@ -3,7 +3,7 @@
:END:
#+title: Oil shell language
#+date: "2021-05-09 16:40:50 +08:00"
#+date_modified: "2021-07-21 13:04:45 +08:00"
#+date_modified: "2021-07-28 10:52:44 +08:00"
#+language: en
#+property: header-args:oil :eval no
@ -30,12 +30,14 @@ While there are multiple components in this project, we're focusing on two: *OSH
- *OSH is the bridge between Bash and Oil.*
It aims to be the most Bash-compatible shell that you can run most Bash scripts just fine.
The point of this component is improving what's under the hood, imposing sensible defaults on them, and getting a wide reach since Bash is the most popular shell.
While it may not run every Bash script in existence, the other point is to require minimal rewrites to run it with OSH.
While it may not run every Bash script in existence, the other point is to require minimal rewrites to run it with OSH or eventually rewrite it in Oil.
- *Oil shell is the modern replacement of Bash* from its syntax and behavior.
It aims to be the shell for people familiar to Python, Ruby, JavaScript, and the like.
This is the other side of the bridge that OSH aims to reach.
Both OSH and Oil are referring to the same interpreter but configured differently.
@ -51,7 +53,7 @@ var title = "Catenbury's Tale"
setvar title = "MS Fnd in a Lbry"
var keywords = %("metadata" "information overload" "information retrieval")
push :keywords "information organization"
append :keywords "information organization"
var metadata = {}
setvar metadata['author'] = "Hal Draper"
@ -116,10 +118,10 @@ You can iterate through an array with a loop.
for i in @a { echo "word: $i" }
#+end_src
You can also add an item to the array with =push= keyword.
You can also add an item to the array with =append= keyword.
#+begin_src oil
push :a "biz"
append :a "biz"
# The expression mode equivalent
# You can also append associative arrays due to the expressiveness of the mode

View File

@ -3,13 +3,13 @@
:END:
#+title: Presence of the material fools students into learning
#+date: "2021-07-15 07:38:09 +08:00"
#+date_modified: "2021-07-21 18:46:59 +08:00"
#+date_modified: "2021-07-28 11:18:02 +08:00"
#+language: en
- this is similar to how [[id:6b0e6b75-410f-42a3-8921-bcc4589b2d2a][Collecting information only feels like progress]];
only then when we open a book or logged into an e-learning website, we may feel we have already learned the material
- to pressure yourself against this, you should close the material and recall it;
- to pressure yourself against this, you should close the material and do some [[id:a7de7178-d674-4c86-8413-66dd8d88b4ad][Recalling]];
[[roam:Recall reinforces better learning]] by relying entirely from your understanding
- additionally, you can also do [[id:2667d942-48b6-4d1e-b92b-15c2dab645ed][Switching between different topics makes new perspective]];
not only it stops you from thinking you have earned the knowledge from a material (when you didn't) but also spaces out the session like a [[id:063dfd73-dbf5-437b-b6f1-d7aeca196f31][Spaced repetition]]

View File

@ -0,0 +1,14 @@
:PROPERTIES:
:ID: a7de7178-d674-4c86-8413-66dd8d88b4ad
:END:
#+title: Recalling
#+date: 2021-07-28 11:09:19 +08:00
#+date_modified: 2021-07-28 11:23:28 +08:00
#+language: en
- a basic but necessary that it strengthens memory by repetition;
[[id:c0e4fb0e-68f2-4db4-8c3e-f5a7845738c3][Understanding comes first from memory]]
- usually practiced by [[id:063dfd73-dbf5-437b-b6f1-d7aeca196f31][Spaced repetition]]
- compared to other Learning techniques, it is more effective for [[id:af0ccefe-c671-47bf-94f7-62243c805745][Skill-building]]
- however, if you're simply recalling information for the sake of remembering, it can reach the point where [[id:e994f2d6-c9d6-4ca8-9dfe-fcc69414e0a4][Repetition is not understanding]]

View File

@ -1,9 +1,9 @@
:PROPERTIES:
:ID: cb9cd582-66e8-45f8-890d-074e0ec2c3ef
:END:
#+title: Installing Linux kernel with DKMS
#+title: Installing Linux kernel modules with DKMS
#+date: "2021-05-30 17:40:35 +08:00"
#+date_modified: "2021-07-20 23:32:25 +08:00"
#+date_modified: "2021-07-22 18:07:36 +08:00"
#+language: en

View File

@ -3,7 +3,7 @@
:END:
#+title: Exploring systemd features
#+date: "2021-05-20 22:37:22 +08:00"
#+date_modified: "2021-07-20 00:49:40 +08:00"
#+date_modified: "2021-07-28 12:50:06 +08:00"
#+language: en
#+property: header-args :eval no
@ -15,6 +15,9 @@ Let's explore some of them from a perspective of a wannabe power user.
* systemd at user-level
:PROPERTIES:
:ID: c7edff80-6dea-47fc-8ecd-e43b5ab8fb1e
:END:
systemd has the ability to run at user-level empowering the user to manage their own system with their own settings.
It immensely helps separating user-specific settings from the system-wide settings.
@ -38,7 +41,7 @@ systemctl --user start $SERVICE
* Timers as cron replacement
* systemd timers as cron replacement
You can schedule tasks with timers.
If systemd is compiled with the feature, it makes cron unnecessary.
@ -191,6 +194,10 @@ systemd-run --user borgmatic --config emergency-config.yaml --verbose
systemd-run --user borg-backup@external-drive.service --on-calendar=12:00
#+end_src
The result should give you the generated name of the unit.
Then, they can be managed like an ordinary unit.
@ -386,3 +393,18 @@ To access a domain name, you need a DNS client that can resolve them.
While there are plenty of DNS resolvers, systemd has a component =systemd-resolved= which you can control with =resolvectl= binary.
systemd-resolved takes a configuration from =/etc/resolve.conf= which most third-party programs also relies on.
* Log management
systemd has a journal service storing logs from units.
It provides a consistent and structured way how to check the logs.
It uses =journalctl= as the command for managing logs.
See [[id:941e0a85-1bb4-45be-a729-1b577c7ee317][Command line: journalctl]] for more details.
#+begin_src shell
journalctl --user-unit backup.service --follow --boot
#+end_src

View File

@ -4,21 +4,22 @@
:END:
#+title: The Software Heritage Filesystem (SwhFS): Integrating Source Code Archival with Development
#+date: 2021-07-27 17:06:14 +08:00
#+date_modified: 2021-07-27 23:07:36 +08:00
#+date_modified: 2021-07-28 00:06:18 +08:00
#+published: 2021-02-12
#+author: Allançon, T., Pietri, A., & Zacchiroli, S.
#+source: http://arxiv.org/abs/2102.06390
#+language: en
- primarily features =swh-fuse=, a utility allowing to mount software from Software Heritage to your local environment
- primarily features =swh-fuse=, a utility allowing to mount software from [[id:9c85ffb2-fc90-4b38-abce-f0425a2b79de][Software Heritage]] to your local environment quickly
- it is based from POSIX filesystems built with FUSE framework;
as such it does not require root privileges to use it
- it exposes the global merkle tree as a filesystem along with its metadata, archive, etc.
- it can interact with the objects in the merkle tree such as the source code files, commits, snapshots, etc.
- the tool is essentially a FUSE adapter to Software Heritage API
- future considerations include for mining software repositories and integrations with Git making commands work inside of the filesystem
features:
- the tool loads the archives lazily to save bandwidth and disk space
- the tool lazily loads the archives to save bandwidth and disk space
- caches for performance especially with how bad remote filesystems can be
- reduces redundancy by using symlinks extensively

View File

@ -4,7 +4,7 @@
#+title: Fundamentals of music theory
#+date: "2021-04-29 18:27:29 +08:00"
#+date_modified: "2021-07-19 00:08:51 +08:00"
#+date_modified: "2021-07-22 23:21:21 +08:00"
#+language: en
#+property: header_args:lilypond :exports results :noweb true
#+source: https://www.coursera.org/learn/edinburgh-music-theory/
@ -120,9 +120,24 @@ Keep in mind this course mainly deals with western musical concepts and notation
#+begin_src lilypond :file accidental-with-chords.png
<<lilypond-paper-config>>
\chordmode { cis dis eis fis gis ais bis cis' }
\chordmode { g a b c' d' e' fis' g' }
#+end_src
#+results:
[[file:assets/literature.fundamentals-of-music-theory/accidental-with-chords.png]]
- ledger lines are just extensions to the stave for lacking space
#+begin_src lilypond :file ledger-lines.png
<<lilypond-paper-config>>
\relative c' { c a'' }
#+end_src
#+results:
[[file:assets/literature.fundamentals-of-music-theory/ledger-lines.png]]
- keys and key signatures
- the keys come from the keys of a scale
- it makes the quality of the song
+ if a song goes back to 'A' often, it has 'A' as the tonic
- circle of fifths

13
notebook/packages.go.org Normal file
View File

@ -0,0 +1,13 @@
#+title: Go packages
#+date: 2021-07-27 10:38:45 +08:00
#+date_modified: 2021-07-28 10:43:39 +08:00
#+language: en
- [[https://golang.org/ref/mod][reference page]]
- names are traditionally URL-like (e.g., =github.com/gohugoio/hugo=, =github.com/errata-ai/vale=) similar to [[roam:Deno packages]]
- has to be explicitly set with the =go.mod= file (i.e., =module MODULE_NAME=)
- =go.sum= functions similarly to lockfiles containing cryptographic hashes of the modules used for a successful build
- Go modules can be vendored (e.g., =go mod vendor=);
it will be stored in the =vendor/= directory of the root module
+ example of a project using vendored Go modules is [[https://github.com/errata-ai/vale/tree/v2.5.0][Vale v2.5.0]]

View File

@ -1,6 +1,9 @@
:PROPERTIES:
:ID: 700ed776-8663-4a15-ab39-13ed31027bfd
:END:
#+title: Lilypond
#+date: "2021-05-10 19:36:43 +08:00"
#+date_modified: "2021-07-11 08:39:53 +08:00"
#+date_modified: "2021-07-22 14:34:36 +08:00"
#+language: en
#+property: header-args:lilypond :exports both

View File

@ -1,21 +1,26 @@
:PROPERTIES:
:ID: 892676b3-76cb-4cd4-9689-910c1fe6587a
:ID: 3b3fdcbf-eb40-4c89-81f3-9d937a0be53c
:END:
#+title: The basics of Nix package manager
#+title: Nix package manager
#+date: "2021-06-05 12:34:49 +08:00"
#+date_modified: "2021-07-19 14:52:11 +08:00"
#+date_modified: "2021-07-28 16:31:56 +08:00"
#+language: en
[[id:3b3fdcbf-eb40-4c89-81f3-9d937a0be53c][Nix package manager]] is a great tool for reproducibility as you can easily set up your environment.
Taking it up to the next level with NixOS, your whole installation.
[[https://nixos.org/][Nix]] is a package manager that pioneered [[id:bfed6daf-4c2b-4426-bab9-2804caa5e079][Functional package management]] which addresses the criticisms of traditional Unix systems while making it as a specialized tool for [[id:fe9e21bc-3b38-4d0f-a785-253248a38ed7][Reproducible builds]].
It features a handrolled configuration language (also called Nix) that leans into functional paradigm, making it easier if you have experience on it.
A popular tool mostly featured in Haskell programming projects.
Eventually inspired GNU to create a fork, [[id:be917383-84c4-4bf5-9ca0-b04bfb778f4f][Guix package manager]], that takes it to another direction with more focus on reproducibility and its extensions such as bootstrapping.
Among other things, Nix also has the following features to look out for.
- Creating [[id:de801b92-819e-4944-9f5b-5cea145a2798][Reproducible executables with Nix]] enabling to execute with one script only requiring the package manager.
- How the build process works along with [[id:8f23f862-a19a-4a13-8d8f-69c280a8e072][Nix derivations]].
- With [[id:8568ce92-99a8-4d20-9723-eee41a507327][Nix overrides and overlays]], you can change parts of a system and/or packages.
- The new way to manage channels with [[id:6873de22-9eac-492c-93a8-6cdf8cbfc0f8][Nix flakes]].
- How [[id:963c043e-4972-4b29-8360-223ec3465203][Nix packages]] are built and eventually created an extensive package ecosystem with the [[id:a57e63a7-6daa-4639-910d-c6648df156a3][Nix language]].
@ -36,7 +41,7 @@ The basic ropes into getting started with Nix.
- [[https://github.com/nmattia/niv][niv]] provides a easier way to manage dependencies though it will be easier with Nix flakes.
- [[Nix flakes]] is an upcoming feature for Nix, replacing the traditional Nix channels into a decentralized set of derivations that can be retrieved from anywhere similar to Go modules [fn:: At a glance, anyways. I'm not experienced enough with Go to say that with utmost confidence.].
- [[id:6873de22-9eac-492c-93a8-6cdf8cbfc0f8][Nix flakes]] is an upcoming feature for Nix, replacing the traditional Nix channels into a decentralized set of derivations that can be retrieved from anywhere similar to Go modules [fn:: At a glance, anyways. I'm not experienced enough with Go to say that with utmost confidence.].
- [[https://cachix.org/][Cachix]] is a cache service enabling to easily distribute binaries built with Nix.
@ -51,62 +56,5 @@ Holistically, Nix is made up of at least four components: the store, the languag
- The store is a immutable centralized location where all of the outputs are placed.
- The derivations are essentially build instructions.
- The language (also called as Nix but we'll refer to it as Nixlang) is a domain-specific language for creating derivations.
- [[id:a57e63a7-6daa-4639-910d-c6648df156a3][Nix language]] is a domain-specific language for creating derivations.
- The build process can be locked in a sandbox, improving the reproducibility of a setup and lowering the attack surface for a malicious package.
* Overlays
You can override values in Nix as a way to customize nixpkgs.
For example, if you want to use a different version from the nixpkgs channel, you can change the appropriate value.
#+begin_src nix
let overlay = self: super:
{
ncmpcpp = super.ncmpcpp.override { visualizerSupport = true; };
}
#+end_src
For another example, you can see some examples from [[https://github.com/neovim/neovim/blob/f695457f815544d0dc16469569c70556e3165bb6/contrib/flake.nix][Neovim]] and [[https://gitlab.com/veloren/veloren/-/tree/685f4971ac0deb31b301e9d2bc0201d2531fd895/nix][Veloren]] (which also uses Nix flakes).
You can set overlays automatically either by setting =nixpkgs.overlays= from your system configuration or =~/.config/nixpkgs/overlays/= folder for user-specific settings.
You could also set overlays for standalone Nix code similarly through the =overlays= key — e.g., ~import <nixpkgs> ? { overlays = (self: super: { } ); };~.
* Opinionated guide to learn Nix
Nix throws a bunch of traditional concepts behind as well as pioneers a bunch of things creating a steeper learning curve.
The [[https://nixos.org/learn][official documentation]] for Nix is pretty great at covering ground of all Nix stuff which makes it good as a reference but horrible for a newbie who wants to gain a quick overview of what Nix is all about.
So I'll list a bunch of resources that helped me becoming comfortable with the Nix thing.
- If you want an introduction to Nix, the [[https://www.youtube.com/playlist?list=PLRGI9KQ3_HP_OFRG6R-p4iFgMSK1t5BHs][Nixology]] video series is a great primer starting with [[https://youtu.be/6iVXaqUfHi4][this video]].
You don't have to watch through the whole playlist but it also gives practical starter points such as [[https://youtu.be/q8bZy9kuzEY][demystifying Nixpkgs]] and [[https://youtu.be/qYGo9QYNVpM][the standard library]] which you'll need you know once you've started packaging with Nix.
I really recommend this series, it's pretty great!
- If you're decided to go with NixOS, the first few chapters of the [[https://nixos.org/learn.html][official manuals]] are great and extensive.
A good first reading section after installation is [[https://nixos.org/manual/nixos/stable/index.html#ch-running][how to administer your NixOS installation]] and [[https://nixos.org/manual/nix/stable/#chap-package-management][its package management process]].
+ I have difficulty grokking the manual but thankfully a fellow newcomer [[https://stephank.nl/p/2020-06-01-a-nix-primer-by-a-newcomer.html][wrote a document listing the terminologies]] helping me absorb the material (big thanks to Stéphan Kochen for the writing).
- Take a look at [[https://nixos.wiki/wiki/Configuration_Collection][others' NixOS config]] and see how they did it.
For other examples, you can take a look at [[https://github.com/foo-dogsquared/nixos-config][my config]] and the [[https://github.com/hlissner/dotfiles/][inspiration behind my config]] (except his' is on the edge of the bleeding edge).
- If you want to keep up-to-date with the community, you might want to hang out in the [[https://discourse.nixos.org/][official forum]].
If you want realtime help, you can go to the IRC channel =#nix= at =libera.chat=.
The Nix community knows that its documentation is lagging so they're pretty open to newbies asking for help that could've been easily missed.
- What about if you're now comfortable with Nix (or NixOS) and now looking for more ways to use its power (i.e., packaging some applications)?
+ The [[https://nixos.org/guides/nix-pills][beloved Nix pills series]] and the [[https://nixos.org/manual/nixpkgs/stable][nixpkgs manual]] is a great starting point especially if you're starting to contribute to the [[https://github.com/NixOS/nixpkgs/][official package set]].
+ [[https://nix.dev/][nix.dev]] and [[https://nixos.wiki/][the unofficial Nix wiki]] are also great introductions to more Nix stuff with practical applications.
+ Jon Ringer, one of the long-time Nix user and contributor, has a [[https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ][YouTube channel focused on Nix tutorials at beginners- and intermediate-level]].
+ If you want to look out for its future, the community arranges an [[https://nixcon.org][annual event with talks all about Nix]].
In fact, as of 2020-11-03, a [[https://2020.nixcon.org/][NixCon online conference]] has recently occurred with the event lasting for two days.
They also archive their talks and whatnot on their [[https://www.youtube.com/channel/UCjqkNrQ8F3OhKSCfCgagWLg][YouTube channel]].

View File

@ -0,0 +1,23 @@
:PROPERTIES:
:ID: 8568ce92-99a8-4d20-9723-eee41a507327
:END:
#+title: Nix overrides and overlays
#+date: 2021-07-28 12:54:40 +08:00
#+date_modified: 2021-07-28 12:55:03 +08:00
#+language: en
You can override values in Nix as a way to customize nixpkgs.
For example, if you want to use a different version from the nixpkgs channel, you can change the appropriate value.
#+begin_src nix
let overlay = self: super:
{
ncmpcpp = super.ncmpcpp.override { visualizerSupport = true; };
}
#+end_src
For another example, you can see some examples from [[https://github.com/neovim/neovim/blob/f695457f815544d0dc16469569c70556e3165bb6/contrib/flake.nix][Neovim]] and [[https://gitlab.com/veloren/veloren/-/tree/685f4971ac0deb31b301e9d2bc0201d2531fd895/nix][Veloren]] (which also uses Nix flakes).
You can set overlays automatically either by setting =nixpkgs.overlays= from your system configuration or =~/.config/nixpkgs/overlays/= folder for user-specific settings.
You could also set overlays for standalone Nix code similarly through the =overlays= key — e.g., ~import <nixpkgs> ? { overlays = (self: super: { } ); };~.

View File

@ -1,6 +1,9 @@
#+title: swh-fuse
:PROPERTIES:
:ID: cf5cadae-e01b-4099-86fe-b0e05bda4d39
:END:
#+title: swh.fuse
#+date: 2021-07-27 21:02:05 +08:00
#+date_modified: 2021-07-27 22:08:39 +08:00
#+date_modified: 2021-07-28 00:00:24 +08:00
#+language: en
@ -32,7 +35,8 @@ swhfs
For up-to-date information, you can read the =README= file.
With the complete setup, you are now ready to interact with the filesystem.
The point of interest here is the =archive/= directory which holds all of the archived source code in the library.
The point of interest here is the =archive/= directory which holds all of the objects in the merkle tree.
You can see the [[https://docs.softwareheritage.org/devel/swh-model/data-model.html#data-model][model data]] from their documentation.
You can interact with it by accessing one of the repo through their SWHID.

View File

@ -1,4 +1,15 @@
@online{AbsoluteMinimumEvery2003,
title = {The {{Absolute Minimum Every Software Developer Absolutely}}, {{Positively Must Know About Unicode}} and {{Character Sets}} ({{No Excuses}}!)},
date = {2003-10-08T00:15:12+00:00},
url = {https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/},
urldate = {2021-07-25},
abstract = {Ever wonder about that mysterious Content-Type tag? You know, the one youre supposed to put in HTML and you never quite know what it should be? Did you ever get an email from your friends in…},
langid = {american},
organization = {{Joel on Software}},
file = {/home/foo-dogsquared/library/references/storage/63QJDRG2/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and.html}
}
@book{ahrensHowTakeSmart2017,
title = {How to {{Take Smart Notes}}: {{One Simple Technique}} to {{Boost Writing}}, {{Learning}} and {{Thinking}} for {{Students}}, {{Academics}} and {{Nonfiction Book Writers}}},
shorttitle = {How to {{Take Smart Notes}}},
@ -27,15 +38,23 @@
shorttitle = {The {{Software Heritage Filesystem}} ({{SwhFS}})},
author = {Allançon, Thibault and Pietri, Antoine and Zacchiroli, Stefano},
date = {2021-02-12},
eprint = {2102.06390},
eprinttype = {arxiv},
primaryclass = {cs},
url = {http://arxiv.org/abs/2102.06390},
urldate = {2021-04-06},
abstract = {We introduce the Software Heritage filesystem (SwhFS), a user-space filesystem that integrates large-scale open source software archival with development workflows. SwhFS provides a POSIX filesystem view of Software Heritage, the largest public archive of software source code and version control system (VCS) development history.Using SwhFS, developers can quickly "checkout" any of the 2 billion commits archived by Software Heritage, even after they disappear from their previous known location and without incurring the performance cost of repository cloning. SwhFS works across unrelated repositories and different VCS technologies. Other source code artifacts archived by Software Heritage-individual source code files and trees, releases, and branches-can also be accessed using common programming tools and custom scripts, as if they were locally available.A screencast of SwhFS is available online at dx.doi.org/10.5281/zenodo.4531411.},
archiveprefix = {arXiv},
eprint = {2102.06390},
eprinttype = {arxiv},
file = {/home/foo-dogsquared/Zotero/storage/EZNYIY3K/Allançon et al. - 2021 - The Software Heritage Filesystem (SwhFS) Integrat.pdf;/home/foo-dogsquared/Zotero/storage/SDKLQAQB/2102.html},
keywords = {Computer Science - Software Engineering,reproducibility},
primaryclass = {cs}
file = {/home/foo-dogsquared/library/references/storage/EZNYIY3K/Allançon et al. - 2021 - The Software Heritage Filesystem (SwhFS) Integrat.pdf;/home/foo-dogsquared/library/references/storage/SDKLQAQB/2102.html}
}
@video{andrewhuangLearnMusicTheory,
title = {Learn Music Theory in Half an Hour.},
editor = {{Andrew Huang}},
url = {https://www.youtube.com/watch?v=rgaTLrZGlk0},
urldate = {2021-07-21},
editortype = {director}
}
@online{arnaudReproducibleResearchMethodological,
@ -54,6 +73,7 @@
date = {2017-01-01},
journaltitle = {Digital Library Perspectives},
volume = {33},
number = {1},
pages = {40--47},
publisher = {{Emerald Publishing Limited}},
issn = {2059-5816},
@ -61,9 +81,8 @@
url = {https://doi.org/10.1108/DLP-07-2016-0017},
urldate = {2020-06-25},
abstract = {Purpose The purpose of this paper is to review and describe the teamwork, collaboration and learning experiences involved in meeting the unique challenges of establishing a new digital library for Syriac collections. The eBetharké Syriac Digital Library Portal is a collaborative effort between the libraries at Rutgers, The State University of New Jersey, and the Beth Mardutho Syriac Institute, a traditional library of texts, to create a specialized digital library collection online. This digital library features content in and relating to Syriac, an Aramaic dialect spoken in the first century A.D. and for which a great deal of historically significant documents was written during the period. Design/methodology/approach This task required effort and research on multiple fronts, including software development; collaboration on technical, interpersonal and policy-based levels; and in overcoming challenges related to the predominant computing platforms installed and in use by potential users of this digital library. Findings This collaboration provided significant new challenges and learning experiences among the staff who worked on this project and provides a base upon which our digital library platforms can diversify and be more culturally aware. Social implications There have been increasing calls within the academic community for better support in the technological space for this and other contemporary languages of the region. Creation of such a platform and expanding it significantly would benefit scholars of Middle Eastern texts in much the same way digital repositories have revolutionized online text access for the Western world. Originality/value The project is unique in that it is believed to the first production-level, digital preservation-specific Syriac digital library of its kind. It supports the display of metadata and descriptive details for digital library objects not just in English, but in Arabic and Syriac languages as well, where appropriate},
file = {/home/foo-dogsquared/Zotero/storage/8HCG86JC/html.html},
keywords = {Beth Mardutho,Digital library,Institutional repository,Preservation,Rutgers,Syriac},
number = {1}
file = {/home/foo-dogsquared/library/references/storage/8HCG86JC/html.html}
}
@online{boronine_color_2012,
@ -72,7 +91,7 @@
date = {2012-03-26},
url = {https://www.boronine.com/2012/03/26/Color-Spaces-for-Human-Beings/},
urldate = {2020-09-19},
file = {/home/foo-dogsquared/Zotero/storage/NTN2Y772/Color-Spaces-for-Human-Beings.html}
file = {/home/foo-dogsquared/library/references/storage/NTN2Y772/Color-Spaces-for-Human-Beings.html}
}
@article{civanBetterOrganizePersonal2009,
@ -83,21 +102,36 @@
journaltitle = {Proceedings of the American Society for Information Science and Technology},
shortjournal = {Proc. Am. Soc. Info. Sci. Tech.},
volume = {45},
number = {1},
pages = {1--13},
issn = {00447870},
doi = {10.1002/meet.2008.1450450214},
url = {http://doi.wiley.com/10.1002/meet.2008.1450450214},
urldate = {2020-06-22},
file = {/home/foo-dogsquared/Zotero/storage/L2WJNYJ4/Civan et al. - 2009 - Better to organize personal information by folders.pdf},
langid = {english},
number = {1}
file = {/home/foo-dogsquared/library/references/storage/L2WJNYJ4/Civan et al. - 2009 - Better to organize personal information by folders.pdf}
}
@online{ConnectingReproducibleDeployment,
title = {Connecting Reproducible Deployment to a Long-Term Source Code Archive — 2019 — {{Blog}} — {{GNU~Guix}}},
url = {https://guix.gnu.org/en/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/},
urldate = {2021-07-25},
file = {/home/foo-dogsquared/library/references/storage/6ZMUJVCM/connecting-reproducible-deployment-to-a-long-term-source-code-archive.html}
}
@online{CreativeScala,
title = {Creative {{Scala}}},
url = {https://www.creativescala.org/},
urldate = {2021-04-06},
file = {/home/foo-dogsquared/Zotero/storage/7NTKJJFJ/www.creativescala.org.html}
file = {/home/foo-dogsquared/library/references/storage/7NTKJJFJ/www.creativescala.org.html}
}
@video{cs50GitInternalsJohn,
title = {Git {{Internals}} by {{John Britton}} of {{GitHub}} - {{CS50 Tech Talk}}},
editor = {{CS50}},
url = {https://www.youtube.com/watch?v=lG90LZotrpo},
urldate = {2021-06-22},
editortype = {director}
}
@online{deutschHowBuildSelfdriving2019,
@ -116,8 +150,27 @@
author = {Galanter, Philip},
pages = {21},
abstract = {In this paper an attempt is made to offer a definition of generative art that is inclusive and provides fertile ground for both technical and art theoretical development. First the use of systems is identified as a key element in generative art. Various ideas from complexity theory are then introduced. It is noted that systems exist on a continuum from the highly ordered to the highly disordered. Citing examples from information theory and complexity science, it is noted that highly ordered and highly disordered systems are typically viewed as simple, and complex systems exhibit both order and disorder. This leads to the adoption of effective complexity, order, and disorder as organizing principles in the comparison of various generative art systems. This inclusive view leads to the somewhat surprising observation that generative art is as old as art itself. A number of specific artists and studies are discussed within this systems and complexity theory influenced paradigm. Finally a number of art theoretical questions are introduced to exercise the suggested generative art definition and implicit paradigm.},
file = {/home/foo-dogsquared/Zotero/storage/QXUELZE8/Galanter - What is Generative Art Complexity Theory as a Con.pdf},
langid = {english}
langid = {english},
file = {/home/foo-dogsquared/library/references/storage/QXUELZE8/Galanter - What is Generative Art Complexity Theory as a Con.pdf}
}
@inproceedings{greenbergUnixShellProgramming2021,
title = {Unix Shell Programming: The next 50 Years},
shorttitle = {Unix Shell Programming},
booktitle = {Proceedings of the {{Workshop}} on {{Hot Topics}} in {{Operating Systems}}},
author = {Greenberg, Michael and Kallas, Konstantinos and Vasilakis, Nikos},
date = {2021-06},
pages = {104--111},
publisher = {{ACM}},
location = {{Ann Arbor Michigan}},
doi = {10.1145/3458336.3465294},
url = {https://dl.acm.org/doi/10.1145/3458336.3465294},
urldate = {2021-06-15},
abstract = {The Unix shell is a powerful, ubiquitous, and reviled tool for managing computer systems. The shell has been largely ignored by academia and industry. While many replacement shells have been proposed, the Unix shell persists. Two recent threads of formal and practical research on the shell enable new approaches. We can help manage the shells essential shortcomings (dynamism, power, and abstruseness) and address its inessential ones. Improving the shell holds much promise for development, ops, and data processing.},
eventtitle = {{{HotOS}} '21: {{Workshop}} on {{Hot Topics}} in {{Operating Systems}}},
isbn = {978-1-4503-8438-4},
langid = {english},
file = {/home/foo-dogsquared/library/references/storage/R758CARA/Greenberg et al. - 2021 - Unix shell programming the next 50 years.pdf}
}
@video{HowDrawAnything2008,
@ -135,9 +188,9 @@
url = {https://textbooks.opensuny.org/the-information-literacy-users-guide-an-open-online-textbook/},
urldate = {2020-07-01},
abstract = {Good researchers have a host of tools at their disposal that make navigating todays complex information ecosystem much more manageable. Gaining the knowledge, abilities, and self-reflection necessary to be a good researcher helps not only in academic settings, but is invaluable in any career, and throughout ones life. The Information …},
file = {/home/foo-dogsquared/Zotero/storage/8YJDMZEN/the-information-literacy-users-guide-an-open-online-textbook.html},
langid = {american},
organization = {{Open SUNY Textbooks}}
organization = {{Open SUNY Textbooks}},
file = {/home/foo-dogsquared/library/references/storage/8YJDMZEN/the-information-literacy-users-guide-an-open-online-textbook.html}
}
@book{kunProgrammerIntroductionMathematics2020,
@ -148,13 +201,22 @@
url = {https://pimbook.org/}
}
@video{mathieugauthierFamiStudioTutorialUpdated,
title = {{{FamiStudio}} 3.0.0 - {{Tutorial}} ({{Updated Mid}}-2021)},
editor = {{Mathieu Gauthier}},
url = {https://www.youtube.com/watch?v=UyECgqFbZPQ},
urldate = {2021-07-25},
abstract = {This is a new version of our "hands-on" chiptune tutorial, updated for FamiStudio 3.0.0 (mid 2021) where we will create a simple song from scratch, in less than one hour, no prior knowledge of chiptune/NES/DAW required! Tutorial assets needed to create the song (samples + instruments): https://famistudio.org/tutorial/Tutor... 00:00 : Welcome 00:54 : Opening the tutorial song 01:54 : Listening to the tutorial song 03:18 : User interface overview 05:11 : Basic controls 07:44 : Importing DPCM samples 11:20 : Project \& song properties 12:44 : Tempo 15:18 : Drum verse 16:59 : Bass verse 18:25 : Duplicating notes quickly 19:47 : Channel force display 21:11 : Transposing notes 22:59 : Square 1 melody (Recording mode) 26:00 : Square 2 melody (Copying patterns) 28:03 : Drums \& bass chorus 30:14 : Chorus melody (Creating slide notes) 32:09 : Chorus arpeggios 33:17 : Effect panel 35:02 : Editing \& replacing intruments 41:48 : Chorus instruments (Toggling attack) 43:29 : Single channel echo techniques 49:00 : Noise hi-hat (Arpeggio envelopes) 52:24 : Bass polish 53:28 : Intro (Custom pattern settings) 56:42 : Duplicating a song 57:30 : Noise drums (Importing instruments) 1:01:01 : Exporting to various formats 1:02:13 : Good-bye! FamiStudio is a DAW style music editor for the original Nintendo Entertainment System / Famicom. It is targeted at both chiptune artists and NES homebrewers. Download it at: https://famistudio.org/ Full documentation at: https://famistudio.org/doc/ Join the itch.io community at: https://bleubleu.itch.io/famistudio Join the FamiStudio Discord: https://discord.gg/88UPmxh Twitter: https://twitter.com/nesbleubleu},
editortype = {director}
}
@online{matuschakEvergreenNotes,
title = {Evergreen Notes},
author = {Matuschak, Andy},
url = {https://notes.andymatuschak.org/z4SDCZQeRo4xFEQ8H4qrSqd68ucpgE6LU155C},
urldate = {2021-05-08},
file = {/home/foo-dogsquared/Zotero/storage/CSWGPERC/z4SDCZQeRo4xFEQ8H4qrSqd68ucpgE6LU155C.html},
organization = {{Andyʼs working notes}}
organization = {{Andyʼs working notes}},
file = {/home/foo-dogsquared/library/references/storage/CSWGPERC/z4SDCZQeRo4xFEQ8H4qrSqd68ucpgE6LU155C.html}
}
@article{mckenney_is_2019,
@ -162,8 +224,8 @@
author = {McKenney, Paul E},
date = {2019-12-22},
pages = {561},
file = {/home/foo-dogsquared/Zotero/storage/T3CQ8E5S/McKenney - Is Parallel Programming Hard, And, If So, What Can.pdf},
langid = {english}
langid = {english},
file = {/home/foo-dogsquared/library/references/storage/T3CQ8E5S/McKenney - Is Parallel Programming Hard, And, If So, What Can.pdf}
}
@article{nielsenAugmentingLongtermMemory2018,
@ -172,7 +234,7 @@
date = {2018},
url = {http://augmentingcognition.com/ltm.html},
urldate = {2021-05-14},
file = {/home/foo-dogsquared/Zotero/storage/LWS5WBWK/ltm.html}
file = {/home/foo-dogsquared/library/references/storage/LWS5WBWK/ltm.html}
}
@video{noauthor_how_2019,
@ -188,14 +250,36 @@
title = {Linux {{Device Drivers}}, {{Third Edition}} [{{LWN}}.Net]},
url = {https://lwn.net/Kernel/LDD3/},
urldate = {2020-09-17},
file = {/home/foo-dogsquared/Zotero/storage/CFXMPM5G/LDD3.html}
file = {/home/foo-dogsquared/library/references/storage/CFXMPM5G/LDD3.html}
}
@online{PEP518Specifying,
title = {{{PEP}} 518 -- {{Specifying Minimum Build System Requirements}} for {{Python Projects}}},
url = {https://www.python.org/dev/peps/pep-0518/},
urldate = {2021-07-17},
abstract = {The official home of the Python Programming Language},
langid = {english},
organization = {{Python.org}},
file = {/home/foo-dogsquared/library/references/storage/L29JBP5K/pep-0518.html}
}
@online{PixelJointForum,
title = {Pixel {{Joint Forum}}: {{The Pixel Art Tutorial}}},
url = {http://pixeljoint.com/forum/forum_posts.asp?TID=11299},
urldate = {2021-03-31},
file = {/home/foo-dogsquared/Zotero/storage/H5VPM3FZ/forum_posts.html}
file = {/home/foo-dogsquared/library/references/storage/H5VPM3FZ/forum_posts.html}
}
@online{PrivilegeEscalationPolkit2021,
title = {Privilege Escalation with Polkit: {{How}} to Get Root on {{Linux}} with a Seven-Year-Old Bug},
shorttitle = {Privilege Escalation with Polkit},
date = {2021-06-10T16:00:52+00:00},
url = {https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/},
urldate = {2021-06-11},
abstract = {polkit is a system service installed by default on many Linux distributions. Its used by systemd, so any Linux distribution that uses systemd also uses polkit. As a member of GitHub Security Lab, my job is to help improve the security of open source software by finding and reporting vulnerabilities. A few weeks ago, I found a privilege escalation vulnerability in polkit.},
langid = {american},
organization = {{The GitHub Blog}},
file = {/home/foo-dogsquared/library/references/storage/IUA3ENCQ/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug.html}
}
@book{robinsonTextMining,
@ -204,8 +288,8 @@
url = {https://www.tidytextmining.com/},
urldate = {2020-06-15},
abstract = {A guide to text analysis within the tidy data framework, using the tidytext package and other tidy tools},
file = {/home/foo-dogsquared/Zotero/storage/BANUJYQE/www.tidytextmining.com.html},
keywords = {data-mining}
keywords = {data-mining},
file = {/home/foo-dogsquared/library/references/storage/BANUJYQE/www.tidytextmining.com.html}
}
@video{spudlyoConsistentTechnicalDocuments2019,
@ -224,7 +308,6 @@
date = {2015-10-28},
url = {https://www.youtube.com/watch?v=OV5J6BfToSw},
urldate = {2021-05-21},
abstract = {1,078,321 views • Oct 28, 2015 • Does writing well matter in an age of instant communication? Drawing on the latest research in linguistics and cognitive science, Steven Pinker replaces the recycled dogma of style guides with reason and evidence. Subscribe for regular science videos: http://bit.ly/RiSubscRibe Watch the Q\&amp;A here: https://www.youtube.com/watch?v=7rYAn... Buy Steven's book "The Sense of Style: The Thinking Persons Guide to Writing in the 21st Century" - https://geni.us/WYZr In this brand-new talk, introduced by Lord Melvyn Bragg, Steven argues that style still matters: in communicating effectively, in enhancing the spread of ideas, in earning a readers trust and, not least, in adding beauty to the world. Steven Pinker is an experimental psychologist and one of the worlds foremost writers on language, mind, and human nature. He is Professor in the Department of Psychology at Harvard University and conducts research on language and cognition but also writes for publications such as the New York Times, Time, and is the author of many books, including The Language Instinct and How the Mind Works. Melvyn Bragg is a broadcaster, writer and novelist. He was made a Life Peer (Lord Bragg of Wigton) in 1998. Since then he has hosted over 660 episodes of In Our Time on subjects ranging from Quantum Gravity to Truth. He was presenter of the BBC radio series The Routes of English, a history of the English language. He is currently Chancellor of the University of Leeds The Ri is on Twitter: http://twitter.com/ri\_science and Facebook: http://www.facebook.com/royalinstitution and Tumblr: http://ri-science.tumblr.com/ Our editorial policy: http://www.rigb.org/home/editorial-po... Subscribe for the latest science videos: http://bit.ly/RiNewsletter Product links on this page may be affiliate links which means it won't cost you any extra but we may earn a small commission if you decide to purchase through the link. Show less Show more},
editortype = {director}
}
@ -232,7 +315,7 @@
title = {Structure and {{Interpretation}} of {{Computer Programs}}},
url = {https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html},
urldate = {2020-07-08},
file = {/home/foo-dogsquared/Zotero/storage/MKKYYSRM/book.html}
file = {/home/foo-dogsquared/library/references/storage/MKKYYSRM/book.html}
}
@online{WasWrongSpeed2015,
@ -252,18 +335,18 @@
url = {https://commoncog.com/blog/tacit-knowledge-is-a-real-thing/},
urldate = {2020-07-07},
abstract = {What tacit knowledge is, and why it is the most interesting topic in the study of expertise today.},
file = {/home/foo-dogsquared/Zotero/storage/FK4A7WUP/tacit-knowledge-is-a-real-thing.html},
langid = {english},
organization = {{Commonplace - The Commoncog Blog}}
organization = {{Commonplace - The Commoncog Blog}},
file = {/home/foo-dogsquared/library/references/storage/FK4A7WUP/tacit-knowledge-is-a-real-thing.html}
}
@article{yurichevReverseEngineeringBeginners,
title = {Reverse {{Engineering}} for {{Beginners}}},
author = {Yurichev, Dennis},
pages = {1063},
file = {/home/foo-dogsquared/Zotero/storage/UXP46KMJ/Yurichev - Reverse Engineering for Beginners.pdf},
langid = {english},
keywords = {programming,security},
langid = {english}
file = {/home/foo-dogsquared/library/references/storage/UXP46KMJ/Yurichev - Reverse Engineering for Beginners.pdf}
}