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

Introduction To SQL & Databases

SQL is an awesome language and has been around for decades. It is the defacto language for dealing with and manipulating data in Relational Databases.

I use SQL in my day job every day and it is a fantastic tool in your toolbox. It is not only very easy to learn the basics to start getting data and working with it, but certain variations of SQL are just a pleasure to work with.

My least favorite type of SQL is PL-SQL in Oracle databases, and my favorite is T-SQL in SQL Server.

This video takes you through the basics of T-SQL and begins to enter the more intermediary topics of triggers, stored procedures, user defined functions etc.

IF you're looking to get a start in SQL and databases this is a great starting place for you.

0:00:00 - Intro
0:00:33 - Support the Channel
0:00:54 - What is SQL?
0:01:20 - What Does A Database look like?
0:06:03 - Database objects 
0:29:38 - SQL Language Syntax
0:30:18 - USE Database
0:31:22 - Basic SELECT Statement
0:32:47 - DISTINCT Keyword
0:34:02 - The WHERE Clause
0:34:56 - Aggregation Functions
0:37:59 - Aliasing New Columns
0:39:00 - Date Range Operator BETWEEN
0:42:24 - The IN Operator
0:43:11 - GROUP BY
0:44:58 - The HAVING Clause
0:45:36 - Exclude NULL
0:48:44 - SQL JOINS
0:51:06 - Aliasing Tables
0:52:29 - INNER JOIN
0:53:45 - LEFT JOIN
0:55:02 - RIGHT JOIN
0:55:48 - FULL OUTER JOIN
0:58:05 - Date Functions
1:02:37 - Integer Functions
1:03:16 - CAST Data Types
1:04:33 - String Functions
1:07:08 - Variables
1:11:47 - CASE Statements
1:14:54 - IF Statements
1:17:51 - TRY CATCH Statements
1:19:59 - Database Objects
1:20:45 - User Defined Functions
1:26:54 - Triggers
1:33:59 - Common Table Expressions
1:36:50 - Temporary Tables
1:40:52 - Stored Procedures
1:44:32 - Jobs
1:45:27 - Closing
1:47:10 - THANK YOU PATRONS
1:47:23 - Outro

My Home-lab Server Rack Tour ( It’s Taller Than Me! ) 🖥️

This project all started from passing my CompTIA Network+ certification.

I found that i really liked the idea of networking and servers, running my own services, and monitoring the entire environment from the ground up.

Since posting this videos ive acquired even more resources, hardware, knowledge, and interest in my home-lab.

This is an introductory tour to what i currently have in the home-lab but as of this blog post it's only improved and grown from there.

I have big plans for the services and things i will be running on this server and the databases i'll have to collect and store my own personal data and i hope to document all of it via publicly acessible code, but also via youtube videos talking about the technology.

Interested in more of what im doing around this stuff? Check out my DevLog notes from the dropdown in the Banner at the top of the page!

00:00 INTRO
00:18 INTRO TALK
01:08 SUPPORT THE CHANNEL
01:28 SERVER
03:57 SERVER RACK
06:22 SERVER RACK DETAILS
09:22 SERVER RACK REVIEW
10:13 MULTI STAGE PLAN
13:07 REVIEW
17:45 CLOSING
18:56 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: