programming

🌱️ Dendron: A Unique Approach To Knowledge Management 🌱️

Dendron is one of my favorite ways to taking notes on technical content now.

It takes advantage of a lot of the great work that has already gone into the VSCode IDE but also the existing extension eco-system.

Where dendron can't do something, there is likely an awesome extension that can.

This is now my go-to way of taking notes of structured and factual content unlike my Zettelkasten that is more of my personal take, ideas, and conjecture on topics.

Dendron makes the organization of notes via the schemas and dot hierarchies an absolute dream and the ease of refactoring a hierarchy makes the management of a lot of this information infinitely easier. I have hundreds of notes now and its just an absolute pleasure to work with Dendron with that content.

0:00:00 Welcome
0:00:36 What we are talking about today www.dendron.so
0:01:16 Into
0:01:26 My experience with Dendron
0:03:49 How and why dendron might fit into your workflow
0:12:37 Getting Started With Dendron and VSCode
0:16:41 Panes and Interfaces in Dendron
0:30:49 The dendron command palette
0:38:17 Languages Used in Dendron
0:39:23 Ways to use Markdown and extended features in dendron
0:41:15 Schemas and heirarchies
0:43:02 The Dendron Graph
0:46:09 Robust Linking
0:48:08 How to organize all your notes when there are too many
0:51:34 Refactoring hierarchies
0:52:20 Create schema from note
1:03:38 My personal schemas
1:03:48 daily note schema
1:06:00 Task schema
1:06:26 My software notes schema
1:08:53 YAML in Dendron
1:11:00 Templates and Code Snippets
1:17:46 Dynamic Variables Inside of Templates
1:19:43 Tags and Links in Dendron
1:23:19 Tasks and Task Management in Dendron
1:28:21 Dendrons global configuration file
1:30:29 Task schema
1:35:03 Dendron Pods
1:40:49 Configuring the pod
1:45:00 Leveraging VSCode as a platform
1:47:51 Dendron Publishing
1:48:33 https://wiki.dendron.so/notes/FnK2ws6w1uaS1YzBUY3BR/
1:50:23 My Dendron Workflow
2:06:02 Closing
2:07:06 Outro

Flexible Layouts With The Patchwork Package In R

Patchwork is a package for the R programming language that simplifies data visualization layouts through a simple math-like syntax.

1_ZU09JFA1ZtGkvvG18FDeZg.png

The Composer of ggplots

With Patchwork the task of combining and organizing ggplots is very easy and can produce ornate visualizations with simple code.

All charts here are made with sample data sets and are just used for example purposes.


Simple Chart Combinations


Vertically Stacked Charts

If i wanted to take a couple charts of mind and compare them next to each other either one above the other it may look something like this:

An Example of Code For a Top and Bottom Chart Combo With Patchwork

An Example of Code For a Top and Bottom Chart Combo With Patchwork

Looking at this code what we do is create 2 ggplots and assign each to their own variable, top and bottom respectively.

Conveniently named we can see where each is going to be placed in the final visual.

The simple Patchwork syntax is finding those 2 variables at the bottom and with a simple division sign saying that top should be divided by bottom.

The syntax is super transparent and intuitive with what it will do with the plots and how you might structure more advanced combinations later on. For now, the stacked visualization will look like

Top and Bottom Chart Stacking

Top and Bottom Chart Stacking

Horizontal Stacking

If you wanted to stack your plots horizontally its as simple as adding them together:

An Example of Code For a Left and Right Chart Combo With Patchwork

An Example of Code For a Left and Right Chart Combo With Patchwork

With the + operator you can add charts together flowing from left to right and we show this with the above defined variables conveniently named left and right:

Left and Right Chart Stacking

Left and Right Chart Stacking

It is also useful to know that using the | pipe operator you can equally divide the sections of the final aggregate visual. So if i ran this code:

Usage of the Pipe Operator |

Usage of the Pipe Operator |

My output would actually look like a 50/25/25 split between the charts:

The Pipe Operator Evenly Divides Space

The Pipe Operator Evenly Divides Space

Overflowing and Defining The Grid

So that is a quick way of putting some visualizations together, what are some more elaborate uses of Patchwork and some of its behavior?

If we add a bunch of charts together with the + operator would it just squeeze the plots together until there's no room left? We now know that the | will evenly divide available space between the plots, so the more we add the evenly divided space will get more cramped over time. With that known what does adding a lot of plots together achieve?

Adding a Lot of Plots Together

Adding a Lot of Plots Together

So Patchwork will try to keep the plots in a square grid shaped combination with the usage of + so if we have 4 plots we should expect a 2x2 grid square combo plot:

2x2 Grid Overflow Plot

2x2 Grid Overflow Plot

This is helpful so that at least with minimal tampering everything is somewhat visible and less squished than if we used the | to combine the plots.

You can imagine this grid behavior as plots moving into available slots in an assembly line fashion. The first row (slots 1 and 2) must be filled before flowing down to Row 2 to fill slots 3 and 4.

Lets say you what to redefine the dimensions of your grid so that you have 3 rows, and 2 columns (a 3x2 grid) and you want to fill the grid by columns not rows. You can imagine the assembly line filling in your grid from top to bottom slot 1, 2, then 3, and finally the top slot of column 2 for the 4th plot.

How do we achieve this with Patchwork syntax?

Overflow Grid Top to Bottom With 3 Rows

Overflow Grid Top to Bottom With 3 Rows

What we're saying is add + all the plots together and overflow the grid, but with plot_layout we define with nrow that we want the grid to have 3 rows, and byrow is asking the question "Should i fill each row first before moving down to the next?" and we're saying No, Fill each column first then move to the next:

Custom Grid Layout 3x2 with Vertical Flowing

Custom Grid Layout 3x2 with Vertical Flowing

Stacking and Packing

Overflowing the grid is useful but still, you say you want more granular control of the layout? Say no more, we can combine multiple operators to achieve this.

Some Layout Magic

Some Layout Magic

So what is going on here? You might be able to guess what this might look like by now, but just in case lets read it from inside out.

  • We're saying take the top chart and place the bottom chart below it in a vertically stacked combo
  • Then we have a combination of the left chart taking up the left half and the combo of top and bottom taking up the right half
  • And finally we take that 3 part combo chart and put the right chart underneath it to finish it off.

You can see how with some simple order of operations (we all remember the PEMDAS acronym from algebra right?) we can easily and logically control the layout of the plots. Lets see the fruits of our labor:

The Stacking and Packing Chart Output

The Stacking and Packing Chart Output

This isn't the prettiest example but you can see by this example the power and flexibility that Patchwork give you with your layouts.

HOWEVER! We left one important thing out, we need to name our Franken-Plot, but with so many pieces involved in this…. Patchwork Plot…. Sorry, I'll stop. With so many pieces how do we appropriately name the whole aggregate visual?

By adding one more thing:

plot_annotation to Name Your New Patchwork Child

plot_annotation to Name Your New Patchwork Child

plot_annotation will let us appropriately title the whole aggregate visualization in the top left:

Our Plot Is Done and Ready For The Big Time

Our Plot Is Done and Ready For The Big Time

Ugly visualizations aside you can see the gold of the Patchwork package shine through and the value it could provide you in your work with R.

Quick Summary of The Operators and What They Do

A Quick Recap of the various operators and functions covered:

  • + Add plots together, defaults left to right, overflows the grid
  • / Divide plots, Put Left hand side on top of right hand side
  • | Evenly separate plots into equal sized portions based on how many | are used: one | two | three produces 3 x 33.33% slots
  • ( & ) are used for order of operations "Do This First then the stuff outside of us"


Code?

If you would like all the example code used in the video / this article you can grab it here: