tlienart / Franklin.jl

(yet another) static site generator. Simple, customisable, fast, maths with KaTeX, code evaluation, optional pre-rendering, in Julia.
https://franklinjl.org
MIT License
962 stars 114 forks source link

[BUG] Franklin Ignoring Slug and Creating Custom Path for Page #991

Closed TheCedarPrince closed 1 year ago

TheCedarPrince commented 1 year ago

Background

Hey Franklin folks, I am having the most curious of errors. For the past half year, I have used the following structure for my website:

404.md # 404 Page
__site # Generated during preview
_assets # Any additional assets I need for my post
_css # CSS Styling
_layout # Layout 
_libs # Autogenerated libs
_rss # Autogenerated RSS info
archive.md # Page of my site
blog.md # Page of my site
config.md # Configuration of Franklin site
index.md # Landing page of site
Manifest.toml # Julia file
node_modules # Auto-generated node files for website
notes # Directory where I keep all my posts
Project.toml # Julia file
resources.md # Page of my site
scripts # Julia scripts to run separately on my site
search.md # Page of my site
utils.jl # Site functions to be used by Franklin

It has worked perfectly fine with all my content pages being hosted in the notes/ directory. What I am able to do is generate links to all my content pages on the blog and archive pages that someone can then browse (here is a link to how it looks live: https://jacobzelko.com/archive/ -- if you click on a link, as you can see it'll take you to a page correctly). If I were to visit the page for the post "The Structure of Scientific Revolutions", I can access it here: https://jacobzelko.com/05152022174848-structure-revolutions/ The associated Franklin Markdown file looks like this:

@def title = "The Structure of Scientific Revolutions"
@def slug = "05152022174848-structure-revolutions"
@def tags = ["book", "blog", "outline", "review", "normal", "science", "paradigm", "shift", "revolution", "science", "philosophy", "crisis", "archive"]
@def description = "A book review of Thomas Kuhn's most famous book that challenged all of the philosophy of science and introduced such concepts as normal science, paradigm shift, why non-scientific fields struggle with similar revolutions, and when one can adopt new paradigms."

@def rss_title = "The Structure of Scientific Revolutions"
@def rss_description = "A book review of Thomas Kuhn's most famous book that challenged all of the philosophy of science and introduced such concepts as normal science, paradigm shift, why non-scientific fields struggle with similar revolutions, and when one can adopt new paradigms."
@def rss_pubdate = Date(2022, 5, 15)

The Structure of Scientific Revolutions
=========

**Date:** May 15 2022

**Summary:** A book review of Thomas Kuhn's most famous book that challenged all of the philosophy of science and introduced such concepts as normal science, paradigm shift, why non-scientific fields struggle with similar revolutions, and when one can adopt new paradigms.

**Keywords:** ##book ##blog ##outline #review #normal #science #paradigm #shift #revolution #science #philosophy #crisis #archive

Bibliography
==========

T. S. Kuhn and I. Hacking, The Structure of Scientific Revolutions, Fourth edition. Chicago; London: The University of Chicago Press, 2012.

Table of Contents
=========

\toc

### Introduction

This book has had an immense impact in the world of science. From how science is taught to how science is thought about, Kuhn's notions of scientific revolution resonated across nearly all domains of science as well as touching into the arts. The central conceit that Kuhn stated in this book is that the scientific community knows what the world is like. I was recommended this book by my friend, collaborator, and Category Theorist, [Professor James P. Fairbanks](/https://www.jpfairbanks.com/) I can see why it was recommended as it fits in quite nicely to the ensuing philosophical ideas found in [Category Theory](/11082021041951-category-theory-scientists.md).

### What Is *Normal Science*?

[Note for atomic concept](/05222022044134-normal-science.md)

According to Kuhn, *normal science*, is research based on past scientific accomplishments that are considered the foundation for that area of investigation. Generally, this is the area where most scientists spend their time. The research done in normal science can be theoretical or empirical.

In the book, Kuhn referred to this as "mop-up work" and that this mopping up or "filling out" of science is what most scientists do. Although language such as "mop-up" work can make one think that Kuhn was being pejorative to these so-called "scut scientists", he did not intend it so. In later versions of this book, he made a response to this point of confusion and clarified that this work still is fascinating and crucial in many ways to the advancement of science.

#### What Are the Characteristics of Normal Science?

An important aspect of normal science is that it does not engage with or seek out anything new. The invention of theories, development of new phenomena - anything abnormal - is not part of normal science. Novelty is abhorrent and antithetical to normal science.

Aside from this fundamental aspect of normal science, Kuhn posited that there are three general areas of research in normal science. He emphasized that they do not always hold or are always discrete from one another:

1. Investigating questions around the fundamental facts found in a specific domain.
2. Questions that are predicted and expected to have answers existing within an already existing research domain.
3. Further articulating the fundamental facts held in a given domain.

### What Was Kuhn's Concept of a Paradigm?

[Note for atomic concept](/05222022044626-kuhnian-paradigm.md)

Kuhn reintroduced into the modern English lexicon the word, "paradigm". Before his time, the term was rather archaic. A paradigm is the background through which normal science is conducted loosely speaking. Another way of thinking about it is from online user *heynonnynonnie* suggesting that a paradigm is a consensus agreed upon by a group of practitioners of a field.

#### What Are the Characteristics of a Paradigm?

When he used the word, as Kuhn admitted himself, he overloaded the term to mean quite a number of things. To my understanding, this was my gist of a Kuhnian paradigm in that paradigms generally have two core characteristics:

1. Unprecedented and can sustain practitioners
2. Open-ended and with problems to be solved or investigated

Endemic to paradigms is that they posit theories around a domain of research. For a paradigm to be accepted, it must propose a better theory than its predecessors or competitors. Furthermore, a proposed new paradigm is not required to address every fact of the world.

#### What Are the Benefits of Choosing a Paradigm?

When a domain decides upon a paradigm, avenues of research can now be readily scoped. By presupposing paradigm, questions can now be posed within the context of the paradigm. In accordance to the paradigm, it can be reasonably assumed that solutions can be found.

A benefit that did not immediately appear to me was the insulating properties of a paradigm. An example that Kuhn suggested is that in the social sciences, one has to frame an avenue of research by its importance to society (such as studying racial discrimination, etc.). Problems such as these are notoriously difficult to frame and reach a quorum consensus on due to possibly many competing schools of thought or groups. Instead, by keeping a conversation limited to the adherents of a specific paradigm, a researcher can easily keep moving forward through problems without having to strive against competing schools of thought. Furthermore, the insulating power of a paradigms gives a researcher the ability to solely focus on problems they think they can solve or are solvable.

I will admit, his example of social scientists was at first confusing. But, upon reflection, what made this example make sense is that he later explained his decision to have this as an example due to the fact that there are often many competing paradigms in these areas. This conflict makes progress difficult as many people still argue the fundamentals of these sciences.

### What Causes the Downfall of a Paradigm?

[Note on atomic concept](/05222022044910-downfall-kuhnian-paradigm.md)

Normal science certainly is clear, safe, and predictable. But, what if a scientist finds results that do not fit within a paradigm? What if a result, ruling out all possible errors carried forth by a highly scrupulous researcher, is simply unexplainable - an anomaly against the backdrop of a paradigm? To Kuhn, this marks an important inflection point in adopted paradigms.

Novelty in science only emerges with resistance and difficulty because any, as Kuhn wisely points out, researchers who investigate every anomaly will not get much done. But at some point, these anomalies will continue to accumulate to the point of being unignorable to adherents of a paradigm. A sort of malcontent will arise adherents and to [quote Sherlock Holmes, "When you have eliminated the impossible, whatever remains, however improbable, must be the truth."](/07222020181007-famous-quotes.md) And that truth is that an accepted paradigm is no longer sufficient to explain a domain which leads to a period of significant upheaval.

Kuhn characterized the downfall of a paradigm in three generic ways:

1. Awareness of anomaly
2. Further recognition of awareness
3. Contested possible change or challenge to the existing paradigm

#### What Happens When a Paradigm Is in Crisis?

When the anomalies are fully unconscionable, they are finally acknowledged and, to quote Kuhn:

> "Discovery commences with [...] awareness of anomaly"

The previous paradigm prepared an adherent on how to detect an anomaly and in a way, set up its own downfall. At this stage of upheaval, many will attempt to explain or address the anomalous behavior. A new era of discovery in the face of a failing paradigm marks this interstitial period of an outdated paradigm where many speculative and unarticulated theories abound - often at odds with one another in some way. The previous paradigm's rules become hazy and the rules of normal research begin to veer away from its typical, standard process.

#### Extraordinary Problems

This problem leads normal science into a rather interesting process of science called "extraordinary science". Extraordinary science is an offshoot of normal science that exists when a paradigm is in crisis and to address the paradigm in crisis. It is the science that either repairs, questions, or proves the deficiency of an existing paradigm. Important to note about extraordinary science is that they are never known at the outset of a paradigm but only after advanced normal research in the context of a given paradigm.

### "Scientific Revolutions" and the Term "Revolution"

[Note on atomic concept](/05222022045723-scientific-revolutions.md)

According to Kuhn, these crises are the requirements for a new paradigm to come forth. This leads to extraordinary science as this episode in a paradigm's life is extraordinary that causes a basic shift in how science is even conducted. This period, coined by Kuhn, is called a "Scientific Revolution".

Kuhn was very particular in invoking the term "revolution". He related the phrase "scientific revolution" analogously to a political revolution. In the same way that a political revolution is often fomented when a political body fails to serve adequately the growing body of its populace, so too are the grounds set for a scientific revolution.

Although a paradigm may shift how one does science, the world itself does not change. Rather, the way we view and operate in the world does. For the adoptees of a new paradigm, the adoptee must say something to the effect of "I once understood X to be Y, but I was mistaken" and in doing so admit a form of error in looking at reality.

### Invoking New Paradigms on Faith

[Note on atomic concept](/05222022045931-new-paradigms.md)

A problem inherit to the development of new paradigms is that to adopt these new paradigms is most certainly an act of faith. Early adherents to a new paradigm must stand against the onslaught of problems that were solved or addressed by  a previous paradigm. They must simply have hope and faith that this new paradigm they have adopted will succeed in the areas where the previous paradigm failed. As Kuhn said:

> "A decision of that kind can only be made on faith"

Even when this new paradigm is able to successfully surmount longstanding problems, Kuhn says that even still a vast majority of scientists will be apprehensive to adopt this paradigm. Why? Kuhn observed that two conditions must be met for further adoption:

1. The new paradigm must solve outstanding problems that the prior paradigm could not.
2. Much of the problem solving tools from previous paradigms should still be able to be used in this new paradigm.

In this sense, there is a type of verification or vetting of a new paradigm – an analogy to natural selection as Kuhn pointed out. For a new paradigm to be successful, not only must it address all problems hitherto encountered by prior paradigms, but be able to solve outstanding problems prior paradigms could not and the barrier to adopting this new paradigm must be minimal. "No theory ever solves all [...] puzzles with which it is confronted at a given time; nor are the solutions already achieved often perfect," is a fitting bookend from Kuhn to remember when encountering new paradigms.

One small final footnote on new paradigms is an observation by Kuhn: the invention of a paradigm most generally comes from someone very young or new to the field where a paradigm exists that they are trying to change.

### On the Non-Linearity of Science

[Note on atomic concept](/05222022050357-non-linearity-science.md)

One thing out of this book is that I very much appreciated and agreed with Kuhn's notion that science is not linear nor is it necessarily the result of a universal truth being uncovered. Rather, it is the confluence of emerging theories that evolve and find they can fit with other theories or paradigms. These newly combined theories then come together to possibly overturn or change the understanding of currently practiced science.

This fallacious notion of linear knowledge going to a particular truth about the world is based in part on science historians and textbook makers. As textbooks are designed to assist students in learning as much material as possible, the teacher with the textbook maker chooses to formulate a textbook around one particular area of knowledge thereby giving a sense of progress to a domain's particular truth. As science does not deal with all possible experiments but only those which are doable according to an existing paradigm, so too a textbook must be very judicious in what it presents to a student from its paradigm.

### Additional Notes

As I wrap up this review of *The Structure of Scientific Revolutions*, here are some additional notes that didn't quite fit in the overall review. I did still find these pertinent as well as helpful in expanding thoughts about paradigms.

#### Paradigm Shifts in Other Domains

Outside of Science, Technology, Engineering, and Mathematics, Kuhn's notion of paradigm shifts do occur. Such a paradigm shift based on Kuhn's writings in an area such as the social sciences could be - and I am making an educated guess here - something akin to the near modern universal condemnation and outlawing of slavery. However, to this end Kuhn posited that unlike the other natural sciences, there still exist competing schools of thought. A visceral modern example is that social scientists also have to defend their choice of a research problem such as examining race in the context of the [social determinants of health](/07112020161337-social-determinants-health.md) where other existing schools of thought may fiercely disagree on the validity of such endeavors.

Furthermore, Kuhn gave the great example that, "the man who argues that philosophy [...] has made no progress emphasizes that there are still Aristotelians, not that Aristotelianism has failed to progress," I am in agreement with Kuhn in that it is not that schools of thought outside Science, Technology, Engineering, and Mathematics are not making progress. It is that their are much more fundamental conflicts in these spaces that have yet to be reconciled in sufficient ways.

In an online group discussion, the user *ish-i-ness* furthered this idea to the arts that, "that in the arts you could even say that there is a desire to discover an aesthetic truth, something that is indisputably, objectively beautiful and thought provoking, rather than just a fad that is only interesting because it’s appeals to a particular, subjective set of preferences." Here, *ish-i-ness* invokes this notion of aesthetic truth which is associated with Theodore Adorno.

#### Non-Kuhnian Revolutions or Domain Transformations

In an online group discussion, the user *heynonnynonnie*, made a great point that non-Kuhnian scientific revolutions happen more frequently than the bigger Kuhnian scientific revolutions (such as the heliocentric versus geocentric theory, etc.). As these are much smaller scale revolutions and do not affect the entirety of science, I call these "domain transformations" as they transform or affect a particular domain's way of operating but not the rest of science as a whole. *heynonnynonnie* gave the example that the discovery of the DNA structure, though fantastic and a major discovery, provided only pure information that fit within the preexisting paradigms.

### Conclusion

I thought this book was well done and also worth this lengthy analysis. It provided context to a lot of ideas that were born from the notions Kuhn coined here. For me, it felt like giving me a bit more of a better foundation to understand better how to operate in domains. Even if this piece is labeled more as a philosophy of science piece, it could easily also be considered a sociological exploration of academia as a whole. I recommend the read, but also, not to take the notions as literally or seriously as possible. Kuhn himself suggested that as he later would get inundated with letters saying that there was a revolution happening because of X - help me. As judicious as Kuhn was in using the term revolution, we too must be careful to recognize when a revolution or paradigm shift is occurring.

## References

## Discussion: 

{{ addcomments }}

Everything is rendered properly and the page is created with the appropriate slug. Looking within __site, I can see a folder named after its slug with an expected index.html.

Problem

Suddenly, Franklin seems to be failing for this particular page I added to my notes directory:

@def title = "Achieving an Undergraduate Level Understanding of Graph Theory "
@def slug = "01012023000122-graph-theory-learning"
@def tags = ["zettel", "ultralearning", "graph", "theory", "project", "archive", "blog"]
@def description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."

@def rss_title = "Achieving an Undergraduate Level Understanding of Graph Theory "
@def rss_description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."
@def rss_pubdate = Date(2022, 12, 31)

Achieving an Undergraduate Level Understanding of Graph Theory 
=========

**Date:** December 31 2022

**Summary:** Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory.

**Keywords:** #zettel #ultralearning #graph #theory #project #archive #blog

Bibliography
==========

Not Available

Table of Contents
=========

\toc

### Motivation

I have always found graph theory interesting ever since I was exposed to it back in my undergraduate studies at Georgia Tech. I found out about it through SIR Modeling but personally found the structure of graphs far more fascinating than its application to SIR models. Furthermore, as I intend to be pursuing graduate studies in applied mathematics, why not get started with trying to understand it?

### Project Goals

This process is adapted from the [Ultralearning framework posited by Scott Young](/07082020163004-ultralearning.md).

#### What Am I Doing?

Gain an undergraduate level of understanding of graph theory on par with maths and computer science students.

##### Core Concepts

  * Basic concepts:

      * Definition of a graph and its components:

          * Understand the components of a graph and the differences between directed and undirected graphs.
      * Subgraphs and isomorphism:

          * Understand the definitions of subgraphs and isomorphism and be able to identify and compare them in a given graph.
      * Directed graphs:

          * Understand the definition of a directed graph and be able to represent it using adjacency and incidence matrices.
      * Graphs and their properties:

          * Understand various properties of graphs and be able to apply them to analyze and classify different types of graphs.
  * Connectivity:

      * Paths and circuits:

          * Understand the definitions of paths and circuits and be able to identify and construct them in a given graph.
      * Connectedness and components:

          * Understand the concept of connectedness and be able to determine whether a graph is connected or disconnected.
          * Understand the concept of graph components and be able to identify them in a given graph.
      * Distance in graphs:

          * Understand the concept of distance between vertices and be able to compute it using various measures.
  * Trees:

      * Trees and their properties:

          * Understand the definition of a tree and be able to identify and distinguish trees from other types of graphs.
      * Rooted trees and binary trees:

          * Understand the concept of rooted trees and be able to construct and manipulate them.
          * Understand the concept of binary trees and be able to construct and manipulate them.
      * Spanning trees
  * Matrix representations of graphs:

      * Adjacency matrices:

          * Understand the concept of an adjacency matrix and be able to represent a graph using an adjacency matrix.
      * Incidence matrices:

          * Understand the concept of an incidence matrix and be able to represent a graph using an incidence matrix.
  * Graph algorithms:

      * Breadth-first search:

          * Understand the concept of breadth-first search and be able to implement it to traverse a graph.
      * Depth-first search:

          * Understand the concept of depth-first search and be able to implement it to traverse a graph.
  * Planar graphs:

      * Planar graphs and their properties:

          * Understand the definition of a planar graph and the properties that distinguish planar graphs from other types of graphs.
      * Euler's formula:

          * Understand Euler's formula and be able to apply it to analyze the structure of planar graphs.
      * Dual graphs:

          * Understand the concept of a dual graph and be able to construct the dual of a given planar graph.
  * Coloring graphs:

      * Vertex coloring:

          * Understand the concept of vertex coloring and be able to color the vertices of a given graph according to various coloring schemes.
      * Edge coloring:

          * Understand the concept of edge coloring and be able to color the edges of a given graph according to various coloring schemes.
  * Matchings and factors:

      * Matchings:

          * Understand the concept of a matching in a graph and be able to identify and construct matchings in a given graph.
      * Factors:

          * Understand the concept of a factor in a graph and be able to identify and construct factors in a given graph.
  * More advanced topics:

      * Hamiltonian cycles:

          * Understand the concept of a Hamiltonian cycle and be able to identify and construct Hamiltonian cycles in a given graph.
      * Network flows:

          * Understand the concept of network flows and be able to model and analyze flow problems in graphs.
      * Graphs and groups:

          * Understand the connection between graphs and group theory, and be able to apply group-theoretic techniques to analyze graphs.
      * Graphs and logic:

          * Understand the connection between graphs and logic, and be able to apply logical techniques to analyze graphs.
      * Graphs and geometry:

          * Understand the connection between graphs and geometry, and be able to apply geometric techniques to analyze graphs.

##### Facts

  * Definition of a graph and its components:

      * Vertices (also called nodes).
      * Edges.
      * Weights.
      * Labels.
  * Subgraphs and isomorphism.
  * Directed graphs and their representations:

      * Adjacency matrices.
      * Incidence matrices.
  * Graph properties:

      * Connected/disconnected.
      * Bipartite/not bipartite.
      * Cyclic/acyclic.
  * Paths and circuits.
  * Connectedness and components.
  * Distance between vertices.
  * Trees:

      * Definition.
      * Unique path between vertices.
      * Root vertex.
      * Branches.
  * Additional topics:

      * Matrix representations:

          * Adjacency matrices.
          * Incidence matrices.
      * Graph algorithms:

          * Breadth-first search.
          * Depth-first search.
      * Planar graphs and their properties:

          * Definition of a planar graph.
          * Properties that distinguish planar graphs from other types of graphs.
          * Euler's formula.
          * Dual graphs.
      * Tree properties:

          * Rooted trees.
          * Binary trees.

##### Procedures

1. Representing graphs using different notations (e.g. adjacency lists, adjacency matrices, incidence matrices).
2. Traversing graphs using different algorithms (e.g. breadth-first search, depth-first search).
3. Analyzing the properties of graphs (e.g. connectedness, bipartiteness, acyclicity).
4. Finding paths and circuits in graphs.
5. Identifying and constructing different types of trees (e.g. rooted trees, binary trees).
6. Coloring the vertices or edges of a graph according to various coloring schemes (e.g. vertex coloring, edge coloring).
7. Finding matchings and factors in graphs.
8. Identifying and constructing Hamiltonian cycles in graphs.
9. Modeling and analyzing flow problems in graphs using network flows.
10. Applying group-theoretic and logical techniques to analyze graphs.
11. Applying geometric techniques to analyze graphs.

### Roadmap

This is based on the Meta Learning step Young described as well as some additional tweaks of my own:

  * **Outcomes:** The knowledge and abilities you’ll need to acquire for success.
  * **Rationale:** Know exactly why you want to learn a skill or subject.
  * **Resources:** The resources you’ll use when learning.
  * **Done:** If this task has been completed (X) or not yet (cell is empty)

| Done |                                    Topic | Resources |                                                              Outcomes |
| ----:| ----------------------------------------:| ---------:| ---------------------------------------------------------------------:|
|      | Definition of a graph and its components |    [1, 2] |  Graph components; differences between directed and undirected graphs |
|      |                Subgraphs and isomorphism |    [1, 2] |             Subgraphs; isomorphism; identify and compare given graphs |
|      |                          Directed graphs |       [1] | Directed graph; representation using adjacency and incidence matrices |
|      |              Graphs and their properties |    [1, 2] |     Properties of graphs; analyze; classify different types of graphs |
|      |                       Paths and circuits |    [1, 2] |                Paths and circuits; identify and construct given graph |
|      |             Connectedness and components |       [1] |            Determine if graph is connected; identify graph components |
|      |                       Distance in graphs |    [1, 2] |                            Vertex distances; compute vertex distances |
|      |               Trees and their properties |    [1, 2] |                   Tree definitions; identify trees; distinguish trees |
|      |            Rooted trees and binary trees |    [1, 2] |                   Rooted trees; construct and manipulate rooted trees |
|      |                       Adjacency matrices |       [1] |          Adjacency matrix concept; representation of adjacency matrix |
|      |                       Incidence matrices |       [1] |          Incidence matrix concept; representation of incidence graphs |
|      |                     Breadth-first search |    [1, 2] |                         Breadth-first search concept; graph traversal |
|      |                       Depth-first search |    [1, 2] |                           Depth-first search concept; graph traversal |
|      |       Planar graphs and their properties |       [1] |                                   Planar graph definition; properties |
|      |                          Euler's formula |    [1, 2] |                           Euler's formula; structure of planar graphs |
|      |                              Dual graphs |       [1] |                        Dual graph concept; construction of dual graph |
|      |                          Vertex coloring |    [1, 2] |                   Vertex coloring concept; coloring of graph vertices |
|      |                            Edge coloring |    [1, 2] |                        Edge coloring concept; coloring of graph edges |
|      |                                Matchings |    [1, 2] |                     Matching concept; identification and construction |
|      |                                  Factors |       [1] |                       Factor concept; identification and construction |
|      |                       Hamiltonian cycles |    [1, 2] |            Hamiltonian cycle concept; identification and construction |
|      |                            Network flows |       [1] |                           Network flow concept; modeling and analysis |
|      |                        Graphs and groups |       [2] |                           Graph and group theory connection; analysis |
|      |                         Graphs and logic |       [2] |                                  Graph and logic connection; analysis |
|      |                      Graphs and geometry |       [2] |                               Graph and geometry connection; analysis |

#### Explanations

These are the explanations and information about each column in this roadmap:

  * **Outcomes:** The knowledge and abilities I’ll acquire for success.
  * **Rationale:** The rationale is the same across every topic: to gain a basic and fundamental understanding of graph theory
  * **Resources:** The resources I'll use are as follows:

      * [1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994.
      * [2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994.
  * **Done:** If this task has been completed (X) or not yet (cell is empty)

## References:

[1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994.

[2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994.

## Discussion: 

{{ addcomments }}

I have nearly 250 notes published from the notes directory, but all are rendering correctly except this one. At first, I thought this note wasn't rendering correctly at all, but I discovered Franklin is for some reason treating this page differently than the rest. It seems to be ignoring the @def slug setting and creating the page at https://jacobzelko.com/notes/01012023000122-graph-theory-learning/ instead of https://jacobzelko.com/01012023000122-graph-theory-learning/

Plus, the Franklin content is not rendering properly when I visit the page (however the rest of the markdown looks right still):

image

Questions

What am I doing wrong here? It was working well for everything else but is now failing for this one page. I am so confused as I do not know how to fix the pathing issue.

Thanks!

Additional information

Julia: 1.8 Franklin: 0.10.79 NodeJS: 1.3.0

tlienart commented 1 year ago

Not yet clear what's going on here but if you change the def block for

+++
title = "Achieving an Undergraduate Level Understanding of Graph Theory"
slug = "01012023000122-graph-theory-learning"
tags = ["zettel", "ultralearning", "graph", "theory", "project", "archive", "blog"]
description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."

rss_title = "Achieving an Undergraduate Level Understanding of Graph Theory "
rss_description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."
rss_pubdate = Date(2022, 12, 31)
+++

it'll work as expected.

So it looks like an issue with the resolving of the @def; I'll investigate but not too hard as the @def stuff will be deprecated in favour of the +++ block as above (no need to change everything on your side, maybe just use it for future posts?)

tlienart commented 1 year ago

curiously it seems that if you swap the @def title and @def slug that works too 🤔 curious.

TheCedarPrince commented 1 year ago

Hi @tlienart,

Thanks for the speedy response! You are a saint as I totally thought I was losing my sanity here :joy:

Oh thanks for the heads-up about the intended deprecation. Didn't realize that. I hope you don't mind but I did open a small docs PR against the Franklin docs just warning them about this intended deprecation.

And not a problem at all -- I generate all my posts automatically in Franklin syntax so it is not a big deal to upgrade everything on my side.

I'll leave this issue open until I have a chance to make sure everything is open, otherwise, thanks!

tlienart commented 1 year ago

Oh thanks for the heads-up about the intended deprecation. Didn't realize that. I hope you don't mind but I did open a small docs PR against the Franklin docs just warning them about this intended deprecation.

thanks! there's quite a bit more to it though (version 0.11 is a rewrite from the ground up which you could already play with https://github.com/tlienart/Xranklin.jl) but 0.10.x will be supported for as long as I can.

While you're at it the ATX heading style you're using (==== instead of # title) will also be deprecated 😅 .

TheCedarPrince commented 1 year ago

Not yet clear what's going on here but if you change the def block for

+++
title = "Achieving an Undergraduate Level Understanding of Graph Theory"
slug = "01012023000122-graph-theory-learning"
tags = ["zettel", "ultralearning", "graph", "theory", "project", "archive", "blog"]
description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."

rss_title = "Achieving an Undergraduate Level Understanding of Graph Theory "
rss_description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."
rss_pubdate = Date(2022, 12, 31)
+++

it'll work as expected.

So it looks like an issue with the resolving of the @def; I'll investigate but not too hard as the @def stuff will be deprecated in favour of the +++ block as above (no need to change everything on your side, maybe just use it for future posts?)

Hey @tlienart , I have good news -- your work around worked! Just tested it and we are back in business! :smile: However, I did encounter one strange problem shown by this photo:

image

As you can see, something is going wrong with the Table of Contents command now. It was not expected that the workaround would impact the \toc command. Here is the raw markdown for that note:

+++
title = "Achieving an Undergraduate Level Understanding of Graph Theory"
slug = "01012023000122-graph-theory-learning"
tags = ["zettel", "ultralearning", "graph", "theory", "project", "archive", "blog"]
description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."
rss_title = "Achieving an Undergraduate Level Understanding of Graph Theory"
rss_description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory."
rss_pubdate = Date(2022, 12, 31)
+++

Achieving an Undergraduate Level Understanding of Graph Theory 
=========

**Date:** December 31 2022

**Summary:** Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory.

**Keywords:** #zettel #ultralearning #graph #theory #project #archive #blog

Bibliography
==========

Not Available

Table of Contents
=========

\toc

### Motivation

I have always found graph theory interesting ever since I was exposed to it back in my undergraduate studies at Georgia Tech. I found out about it through SIR Modeling but personally found the structure of graphs far more fascinating than its application to SIR models. Furthermore, as I intend to be pursuing graduate studies in applied mathematics, why not get started with trying to understand it?

### Project Goals

This process is adapted from the [Ultralearning framework posited by Scott Young](/07082020163004-ultralearning.md).

#### What Am I Doing?

Gain an undergraduate level of understanding of graph theory on par with maths and computer science students.

##### Core Concepts

  * Basic concepts:

      * Definition of a graph and its components:

          * Understand the components of a graph and the differences between directed and undirected graphs.
      * Subgraphs and isomorphism:

          * Understand the definitions of subgraphs and isomorphism and be able to identify and compare them in a given graph.
      * Directed graphs:

          * Understand the definition of a directed graph and be able to represent it using adjacency and incidence matrices.
      * Graphs and their properties:

          * Understand various properties of graphs and be able to apply them to analyze and classify different types of graphs.
  * Connectivity:

      * Paths and circuits:

          * Understand the definitions of paths and circuits and be able to identify and construct them in a given graph.
      * Connectedness and components:

          * Understand the concept of connectedness and be able to determine whether a graph is connected or disconnected.
          * Understand the concept of graph components and be able to identify them in a given graph.
      * Distance in graphs:

          * Understand the concept of distance between vertices and be able to compute it using various measures.
  * Trees:

      * Trees and their properties:

          * Understand the definition of a tree and be able to identify and distinguish trees from other types of graphs.
      * Rooted trees and binary trees:

          * Understand the concept of rooted trees and be able to construct and manipulate them.
          * Understand the concept of binary trees and be able to construct and manipulate them.
      * Spanning trees
  * Matrix representations of graphs:

      * Adjacency matrices:

          * Understand the concept of an adjacency matrix and be able to represent a graph using an adjacency matrix.
      * Incidence matrices:

          * Understand the concept of an incidence matrix and be able to represent a graph using an incidence matrix.
  * Graph algorithms:

      * Breadth-first search:

          * Understand the concept of breadth-first search and be able to implement it to traverse a graph.
      * Depth-first search:

          * Understand the concept of depth-first search and be able to implement it to traverse a graph.
  * Planar graphs:

      * Planar graphs and their properties:

          * Understand the definition of a planar graph and the properties that distinguish planar graphs from other types of graphs.
      * Euler's formula:

          * Understand Euler's formula and be able to apply it to analyze the structure of planar graphs.
      * Dual graphs:

          * Understand the concept of a dual graph and be able to construct the dual of a given planar graph.
  * Coloring graphs:

      * Vertex coloring:

          * Understand the concept of vertex coloring and be able to color the vertices of a given graph according to various coloring schemes.
      * Edge coloring:

          * Understand the concept of edge coloring and be able to color the edges of a given graph according to various coloring schemes.
  * Matchings and factors:

      * Matchings:

          * Understand the concept of a matching in a graph and be able to identify and construct matchings in a given graph.
      * Factors:

          * Understand the concept of a factor in a graph and be able to identify and construct factors in a given graph.
  * More advanced topics:

      * Hamiltonian cycles:

          * Understand the concept of a Hamiltonian cycle and be able to identify and construct Hamiltonian cycles in a given graph.
      * Network flows:

          * Understand the concept of network flows and be able to model and analyze flow problems in graphs.
      * Graphs and groups:

          * Understand the connection between graphs and group theory, and be able to apply group-theoretic techniques to analyze graphs.
      * Graphs and logic:

          * Understand the connection between graphs and logic, and be able to apply logical techniques to analyze graphs.
      * Graphs and geometry:

          * Understand the connection between graphs and geometry, and be able to apply geometric techniques to analyze graphs.

##### Facts

  * Definition of a graph and its components:

      * Vertices (also called nodes).
      * Edges.
      * Weights.
      * Labels.
  * Subgraphs and isomorphism.
  * Directed graphs and their representations:

      * Adjacency matrices.
      * Incidence matrices.
  * Graph properties:

      * Connected/disconnected.
      * Bipartite/not bipartite.
      * Cyclic/acyclic.
  * Paths and circuits.
  * Connectedness and components.
  * Distance between vertices.
  * Trees:

      * Definition.
      * Unique path between vertices.
      * Root vertex.
      * Branches.
  * Additional topics:

      * Matrix representations:

          * Adjacency matrices.
          * Incidence matrices.
      * Graph algorithms:

          * Breadth-first search.
          * Depth-first search.
      * Planar graphs and their properties:

          * Definition of a planar graph.
          * Properties that distinguish planar graphs from other types of graphs.
          * Euler's formula.
          * Dual graphs.
      * Tree properties:

          * Rooted trees.
          * Binary trees.

##### Procedures

1. Representing graphs using different notations (e.g. adjacency lists, adjacency matrices, incidence matrices).
2. Traversing graphs using different algorithms (e.g. breadth-first search, depth-first search).
3. Analyzing the properties of graphs (e.g. connectedness, bipartiteness, acyclicity).
4. Finding paths and circuits in graphs.
5. Identifying and constructing different types of trees (e.g. rooted trees, binary trees).
6. Coloring the vertices or edges of a graph according to various coloring schemes (e.g. vertex coloring, edge coloring).
7. Finding matchings and factors in graphs.
8. Identifying and constructing Hamiltonian cycles in graphs.
9. Modeling and analyzing flow problems in graphs using network flows.
10. Applying group-theoretic and logical techniques to analyze graphs.
11. Applying geometric techniques to analyze graphs.

### Roadmap

This is based on the Meta Learning step Young described as well as some additional tweaks of my own:

  * **Outcomes:** The knowledge and abilities you’ll need to acquire for success.
  * **Rationale:** Know exactly why you want to learn a skill or subject.
  * **Resources:** The resources you’ll use when learning.
  * **Done:** If this task has been completed (X) or not yet (cell is empty)

| Done |                                    Topic | Resources |                                                              Outcomes |
| ----:| ----------------------------------------:| ---------:| ---------------------------------------------------------------------:|
|      | Definition of a graph and its components |    [1, 2] |  Graph components; differences between directed and undirected graphs |
|      |                Subgraphs and isomorphism |    [1, 2] |             Subgraphs; isomorphism; identify and compare given graphs |
|      |                          Directed graphs |       [1] | Directed graph; representation using adjacency and incidence matrices |
|      |              Graphs and their properties |    [1, 2] |     Properties of graphs; analyze; classify different types of graphs |
|      |                       Paths and circuits |    [1, 2] |                Paths and circuits; identify and construct given graph |
|      |             Connectedness and components |       [1] |            Determine if graph is connected; identify graph components |
|      |                       Distance in graphs |    [1, 2] |                            Vertex distances; compute vertex distances |
|      |               Trees and their properties |    [1, 2] |                   Tree definitions; identify trees; distinguish trees |
|      |            Rooted trees and binary trees |    [1, 2] |                   Rooted trees; construct and manipulate rooted trees |
|      |                       Adjacency matrices |       [1] |          Adjacency matrix concept; representation of adjacency matrix |
|      |                       Incidence matrices |       [1] |          Incidence matrix concept; representation of incidence graphs |
|      |                     Breadth-first search |    [1, 2] |                         Breadth-first search concept; graph traversal |
|      |                       Depth-first search |    [1, 2] |                           Depth-first search concept; graph traversal |
|      |       Planar graphs and their properties |       [1] |                                   Planar graph definition; properties |
|      |                          Euler's formula |    [1, 2] |                           Euler's formula; structure of planar graphs |
|      |                              Dual graphs |       [1] |                        Dual graph concept; construction of dual graph |
|      |                          Vertex coloring |    [1, 2] |                   Vertex coloring concept; coloring of graph vertices |
|      |                            Edge coloring |    [1, 2] |                        Edge coloring concept; coloring of graph edges |
|      |                                Matchings |    [1, 2] |                     Matching concept; identification and construction |
|      |                                  Factors |       [1] |                       Factor concept; identification and construction |
|      |                       Hamiltonian cycles |    [1, 2] |            Hamiltonian cycle concept; identification and construction |
|      |                            Network flows |       [1] |                           Network flow concept; modeling and analysis |
|      |                        Graphs and groups |       [2] |                           Graph and group theory connection; analysis |
|      |                         Graphs and logic |       [2] |                                  Graph and logic connection; analysis |
|      |                      Graphs and geometry |       [2] |                               Graph and geometry connection; analysis |

#### Explanations

These are the explanations and information about each column in this roadmap:

  * **Outcomes:** The knowledge and abilities I’ll acquire for success.
  * **Rationale:** The rationale is the same across every topic: to gain a basic and fundamental understanding of graph theory
  * **Resources:** The resources I'll use are as follows:

      * [1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994.
      * [2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994.
  * **Done:** If this task has been completed (X) or not yet (cell is empty)

## References

## References:

[1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994.

[2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994.

## Discussion: 

{{ addcomments }}

Did I unintentionally change something here that you can see?

tlienart commented 1 year ago

Here are some issues I could think of:

both these things should not throw off the engine but clearly they do... adjusting them as follows does seem to do the job.

I should try to work on migrating your site to Xranklin, it would be a good test case to see if it just handles all of it properly.

```md +++ title = "Achieving an Undergraduate Level Understanding of Graph Theory" slug = "01012023000122-graph-theory-learning" tags = ["zettel", "ultralearning", "graph", "theory", "project", "archive", "blog"] description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory." rss_title = "Achieving an Undergraduate Level Understanding of Graph Theory " rss_description = "Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory." rss_pubdate = Date(2022, 12, 31) +++ # Achieving an Undergraduate Level Understanding of Graph Theory **Date:** December 31 2022 **Summary:** Ultralearning project to learn the equivalent of an undergraduate maths of computer science student understanding of graph theory. **Keywords:** #zettel #ultralearning #graph #theory #project #archive #blog ### Bibliography Not Available ### Table of Contents \toc ### Motivation I have always found graph theory interesting ever since I was exposed to it back in my undergraduate studies at Georgia Tech. I found out about it through SIR Modeling but personally found the structure of graphs far more fascinating than its application to SIR models. Furthermore, as I intend to be pursuing graduate studies in applied mathematics, why not get started with trying to understand it? ### Project Goals This process is adapted from the [Ultralearning framework posited by Scott Young](/07082020163004-ultralearning.md). #### What Am I Doing? Gain an undergraduate level of understanding of graph theory on par with maths and computer science students. #### Core Concepts * Basic concepts: * Definition of a graph and its components: * Understand the components of a graph and the differences between directed and undirected graphs. * Subgraphs and isomorphism: * Understand the definitions of subgraphs and isomorphism and be able to identify and compare them in a given graph. * Directed graphs: * Understand the definition of a directed graph and be able to represent it using adjacency and incidence matrices. * Graphs and their properties: * Understand various properties of graphs and be able to apply them to analyze and classify different types of graphs. * Connectivity: * Paths and circuits: * Understand the definitions of paths and circuits and be able to identify and construct them in a given graph. * Connectedness and components: * Understand the concept of connectedness and be able to determine whether a graph is connected or disconnected. * Understand the concept of graph components and be able to identify them in a given graph. * Distance in graphs: * Understand the concept of distance between vertices and be able to compute it using various measures. * Trees: * Trees and their properties: * Understand the definition of a tree and be able to identify and distinguish trees from other types of graphs. * Rooted trees and binary trees: * Understand the concept of rooted trees and be able to construct and manipulate them. * Understand the concept of binary trees and be able to construct and manipulate them. * Spanning trees * Matrix representations of graphs: * Adjacency matrices: * Understand the concept of an adjacency matrix and be able to represent a graph using an adjacency matrix. * Incidence matrices: * Understand the concept of an incidence matrix and be able to represent a graph using an incidence matrix. * Graph algorithms: * Breadth-first search: * Understand the concept of breadth-first search and be able to implement it to traverse a graph. * Depth-first search: * Understand the concept of depth-first search and be able to implement it to traverse a graph. * Planar graphs: * Planar graphs and their properties: * Understand the definition of a planar graph and the properties that distinguish planar graphs from other types of graphs. * Euler's formula: * Understand Euler's formula and be able to apply it to analyze the structure of planar graphs. * Dual graphs: * Understand the concept of a dual graph and be able to construct the dual of a given planar graph. * Coloring graphs: * Vertex coloring: * Understand the concept of vertex coloring and be able to color the vertices of a given graph according to various coloring schemes. * Edge coloring: * Understand the concept of edge coloring and be able to color the edges of a given graph according to various coloring schemes. * Matchings and factors: * Matchings: * Understand the concept of a matching in a graph and be able to identify and construct matchings in a given graph. * Factors: * Understand the concept of a factor in a graph and be able to identify and construct factors in a given graph. * More advanced topics: * Hamiltonian cycles: * Understand the concept of a Hamiltonian cycle and be able to identify and construct Hamiltonian cycles in a given graph. * Network flows: * Understand the concept of network flows and be able to model and analyze flow problems in graphs. * Graphs and groups: * Understand the connection between graphs and group theory, and be able to apply group-theoretic techniques to analyze graphs. * Graphs and logic: * Understand the connection between graphs and logic, and be able to apply logical techniques to analyze graphs. * Graphs and geometry: * Understand the connection between graphs and geometry, and be able to apply geometric techniques to analyze graphs. #### Facts * Definition of a graph and its components: * Vertices (also called nodes). * Edges. * Weights. * Labels. * Subgraphs and isomorphism. * Directed graphs and their representations: * Adjacency matrices. * Incidence matrices. * Graph properties: * Connected/disconnected. * Bipartite/not bipartite. * Cyclic/acyclic. * Paths and circuits. * Connectedness and components. * Distance between vertices. * Trees: * Definition. * Unique path between vertices. * Root vertex. * Branches. * Additional topics: * Matrix representations: * Adjacency matrices. * Incidence matrices. * Graph algorithms: * Breadth-first search. * Depth-first search. * Planar graphs and their properties: * Definition of a planar graph. * Properties that distinguish planar graphs from other types of graphs. * Euler's formula. * Dual graphs. * Tree properties: * Rooted trees. * Binary trees. #### Procedures 1. Representing graphs using different notations (e.g. adjacency lists, adjacency matrices, incidence matrices). 2. Traversing graphs using different algorithms (e.g. breadth-first search, depth-first search). 3. Analyzing the properties of graphs (e.g. connectedness, bipartiteness, acyclicity). 4. Finding paths and circuits in graphs. 5. Identifying and constructing different types of trees (e.g. rooted trees, binary trees). 6. Coloring the vertices or edges of a graph according to various coloring schemes (e.g. vertex coloring, edge coloring). 7. Finding matchings and factors in graphs. 8. Identifying and constructing Hamiltonian cycles in graphs. 9. Modeling and analyzing flow problems in graphs using network flows. 10. Applying group-theoretic and logical techniques to analyze graphs. 11. Applying geometric techniques to analyze graphs. ### Roadmap This is based on the Meta Learning step Young described as well as some additional tweaks of my own: * **Outcomes:** The knowledge and abilities you’ll need to acquire for success. * **Rationale:** Know exactly why you want to learn a skill or subject. * **Resources:** The resources you’ll use when learning. * **Done:** If this task has been completed (X) or not yet (cell is empty) | Done | Topic | Resources | Outcomes | | ----:| ----------------------------------------:| ---------:| ---------------------------------------------------------------------:| | | Definition of a graph and its components | [1, 2] | Graph components; differences between directed and undirected graphs | | | Subgraphs and isomorphism | [1, 2] | Subgraphs; isomorphism; identify and compare given graphs | | | Directed graphs | [1] | Directed graph; representation using adjacency and incidence matrices | | | Graphs and their properties | [1, 2] | Properties of graphs; analyze; classify different types of graphs | | | Paths and circuits | [1, 2] | Paths and circuits; identify and construct given graph | | | Connectedness and components | [1] | Determine if graph is connected; identify graph components | | | Distance in graphs | [1, 2] | Vertex distances; compute vertex distances | | | Trees and their properties | [1, 2] | Tree definitions; identify trees; distinguish trees | | | Rooted trees and binary trees | [1, 2] | Rooted trees; construct and manipulate rooted trees | | | Adjacency matrices | [1] | Adjacency matrix concept; representation of adjacency matrix | | | Incidence matrices | [1] | Incidence matrix concept; representation of incidence graphs | | | Breadth-first search | [1, 2] | Breadth-first search concept; graph traversal | | | Depth-first search | [1, 2] | Depth-first search concept; graph traversal | | | Planar graphs and their properties | [1] | Planar graph definition; properties | | | Euler's formula | [1, 2] | Euler's formula; structure of planar graphs | | | Dual graphs | [1] | Dual graph concept; construction of dual graph | | | Vertex coloring | [1, 2] | Vertex coloring concept; coloring of graph vertices | | | Edge coloring | [1, 2] | Edge coloring concept; coloring of graph edges | | | Matchings | [1, 2] | Matching concept; identification and construction | | | Factors | [1] | Factor concept; identification and construction | | | Hamiltonian cycles | [1, 2] | Hamiltonian cycle concept; identification and construction | | | Network flows | [1] | Network flow concept; modeling and analysis | | | Graphs and groups | [2] | Graph and group theory connection; analysis | | | Graphs and logic | [2] | Graph and logic connection; analysis | | | Graphs and geometry | [2] | Graph and geometry connection; analysis | #### Explanations These are the explanations and information about each column in this roadmap: * **Outcomes:** The knowledge and abilities I’ll acquire for success. * **Rationale:** The rationale is the same across every topic: to gain a basic and fundamental understanding of graph theory * **Resources:** The resources I'll use are as follows: * [1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994. * [2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994. * **Done:** If this task has been completed (X) or not yet (cell is empty) ## References: [1] R. Trudeau, Introduction to Graph Theory, Dover. DOVER PUBLICATIONS, INC., 1994. [2] N. Hartsfield and Ringel, Pearls in Graph Theory A Comprehensive Introduction. DOVER PUBLICATIONS, INC., 1994. ## Discussion: {{ addcomments }} ```
TheCedarPrince commented 1 year ago

Let me close this issue for now and I can open a separate issue to keep the discussion going about this: https://github.com/tlienart/Franklin.jl/issues/991#issuecomment-1372100347

Thanks @tlienart !