From a3f8e661ad54cfec14ca671ea671e728ffc9bb91 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 7 Mar 2021 16:23:59 -0800 Subject: initial site with hugo Start my website from scratch once more, using hugo to generate it. For now the layout is pretty simple: - an index page that will list future notes - notes should be created under the "content" directory The theme is custom and I'll try to keep this simple. --- users/fcuny/notes/layouts/_default/single.html | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 users/fcuny/notes/layouts/_default/single.html (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html new file mode 100644 index 0000000..a8c1dc7 --- /dev/null +++ b/users/fcuny/notes/layouts/_default/single.html @@ -0,0 +1,11 @@ +{{ define "main" }} + +

← Back to Franck's homepage

+ +

{{ .Title }}

+ +

{{ .Date.Format "January 2021" }}

+ +{{ .Content }} + +{{ end }} -- cgit 1.4.1 From 11e25707f013a4251ab83a52ed0f3b008764a1ae Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Tue, 6 Apr 2021 12:32:43 -0700 Subject: layout: add date and tags to single pages We want to show the tags and the published/updated date for the articles. Add to the CSS the classes for these new elements. --- users/fcuny/notes/layouts/_default/single.html | 27 +++++++++++++++++++++++++- users/fcuny/notes/static/css/custom.css | 16 +++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index a8c1dc7..0ab5e35 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -4,7 +4,32 @@

{{ .Title }}

-

{{ .Date.Format "January 2021" }}

+
+ {{- $pub := .Date.Format "2006-01-02" -}} + {{- $mod := "" -}} + {{- if (not .GitInfo) }} + {{- $mod = .Lastmod.Format "2006-01-02" -}} + {{ else }} + {{- $mod = .Page.GitInfo.CommitDate.Format "2006-01-02" -}} + {{ end -}} + {{ if eq $pub $mod }} +
published {{ $pub }}
+ {{ else }} +
published {{ $pub }}, last modified {{ $mod }}
+ {{ end }} + {{ if .Params.tags }} +
+ {{ if eq (len .Params.tags) 1 }} + in tag + {{ else }} + in tags + {{ end }} + {{ range $idx, $tag := .Params.tags }} + {{ $tag }} + {{ end }} +
+ {{ end }} +
{{ .Content }} diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index b0ec570..9d4faf1 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -53,3 +53,19 @@ pre { font-family: "Roboto Mono", Monaco, "Lucida Console", monospace; overflow: scroll; } + +.tags { + background-color: #eeeeee; + border-radius:8px; + padding:0 .5rem; + font-size: 90%; +} + +.meta_tags a:link, +.meta_tags a:visited { + text-decoration: none; +} + +.meta_date { + font-style: italic; +} -- cgit 1.4.1 From 86c8d29cec41f663d1a4abd155e8b7a13ad0c533 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Thu, 22 Apr 2021 12:44:27 -0700 Subject: layout: add a navbar I want to differentiate blog's entries from more general notes. For this, we create two menu entries, and add a navbar at the top. The nav bar let us select between the two kind of articles: blogs or notes. For now we have a single blog entry, and no notes. The page to list entries is simplified: we use the same layout for all lists (tags, notes, blogs). The CSS is updated to support the new nav bar. --- users/fcuny/notes/config.toml | 18 ++++++- .../notes/content/blog/google-doc-failure.org | 56 ++++++++++++++++++++++ .../notes/content/notes/google-doc-failure.org | 56 ---------------------- users/fcuny/notes/layouts/_default/baseof.html | 1 + users/fcuny/notes/layouts/_default/list.html | 8 +--- users/fcuny/notes/layouts/_default/single.html | 2 - users/fcuny/notes/layouts/index.html | 8 ---- users/fcuny/notes/layouts/partials/header.html | 15 ++++++ users/fcuny/notes/layouts/partials/postlist.html | 20 +------- users/fcuny/notes/static/css/custom.css | 41 +++++++++++++++- 10 files changed, 131 insertions(+), 94 deletions(-) create mode 100644 users/fcuny/notes/content/blog/google-doc-failure.org delete mode 100644 users/fcuny/notes/content/notes/google-doc-failure.org create mode 100644 users/fcuny/notes/layouts/partials/header.html (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/config.toml b/users/fcuny/notes/config.toml index 31f75af..6100ba5 100644 --- a/users/fcuny/notes/config.toml +++ b/users/fcuny/notes/config.toml @@ -1,6 +1,6 @@ baseURL = "http://fcuny.net/" languageCode = "en-us" -title = "Franck Cuny's Website" +title = "Franck's rambling" publishDir = "docs" enableGitInfo = true @@ -11,9 +11,23 @@ enableGitInfo = true tag = "tags" [permalinks] - articles = "/:section/:slug/" + blog = "/blog/:slug/" + notes = "/notes/:slug/" tags = "/tags/:slug/" +[menu] + [[menu.main]] + identifier = "articles" + name = "blog" + title = "articles" + url = "/blog/" + + [[menu.main]] + identifier = "notes" + name = "notes" + title = "notes" + url = "/notes/" + [markup] [markup.tableOfContents] startLevel = 1 diff --git a/users/fcuny/notes/content/blog/google-doc-failure.org b/users/fcuny/notes/content/blog/google-doc-failure.org new file mode 100644 index 0000000..b4d449d --- /dev/null +++ b/users/fcuny/notes/content/blog/google-doc-failure.org @@ -0,0 +1,56 @@ +#+TITLE: Google Doc Failures +#+TAGS[]: documentation process +#+DATE: <2021-04-11 Sun> + +In most use cases, Google Doc is an effective tool to create "write once, read never" documents. + +* Convenience +Google Doc (GDoc from now on) is the most common way of writing and sharing documents at my current job. It's very easy to start a new document, even more since we can now point our browser to https://doc.new and start typing right away. + +Like most of my co-workers, I use it frequently during the day. Some of these documents are draft for some communication that I want others to review before I share with a broader audience; it can be a [[https://en.wikipedia.org/wiki/Request_for_Comments][Request For Comments]] for a project; meeting notes for others to read; information that I need to capture during an incident or a debugging session; interviews notes; etc. + +I would not be surprised if the teams I work closely with generate 50 new documents each week. +* ETOOMANYTABS +I have a tendency of having hundreds of open tabs in my browser during the week. A majority of these tabs are GDocs, and I think this is one of the true failure of the product. Why do I have so many tabs ? There's mainly two reasons. + +The first reason is a problem with Chrome's UX itself: it happily let me open the same URL as many times as I want in as many tabs, instead of sending me to the already opened tab if the document is loaded. It's not uncommon that I find the same document opened in 5 different tabs. + +The second reason, and it's the most important one, I know that if I need to read or comment on a doc and I close the tab, I'll likely never find that document again, or will completely forget about it. +* Discoverability +In 'the old days', you'd start a new document in Word or LibreOffice, and as you hit "save" for the first time, you've two decisions to make: how am I going to name that file, and where am I going to save it on disk. + +With GDoc these questions don't have to be answered, you don't have to name the file, and it does not matter where it lives. I've likely hundreds of docs named 'untitled' in my "drive". I also don't have to think about where they will live, because they are saved automatically for me. I'm sure there's hundreds of studies that show that these two simple steps are actually complex for many users and creates useless friction (in which folder do I store it; should I organize the docuemnts by team, years, projects; do I name it with the date and the current project; etc.). + +GDoc being a Google product, it seems pretty obvious that they would come up with a better solution: let's not organize in a strict hierarchy these files, and let's instead search for them. + +Unfortunately, GDoc's search is really poor (and I'm being kind). By default most of us start by looking for some words we know are in the doc, maybe even in the title. But when working on a multiple projects that are related to the same technology, you suddenly get hundreds of documents matching your query. It's unclear how the returned set is ordered (by date ? by author ? by some scoring that is invisible to me ?). + +You can also search by owners, but here is another annoying bit: I think about owner as author, so I usually type =author:foo= before realizing it does not work. And that implies you already know who's the owner of the document. In the case of TDDs (Technical Design Document), I might know which team is behind it, but rarely who's the actual author. + +I could search for the title, but I rarely remember or know the name of the document I'm looking for. I could also be looking by keywords, but when working on a project with tens of related documents, you have to open all the returned docs to see which one is the correct one. + +And then what about new members joining your the team ? They don't know which docs exist, who wrote them, and how they are named. They end up searching and hoping that something good will be returned. +* Workflows +More and more we create workflows around these documents: some of the docs are TDDs that are going through reviews; others are decision documents that require input from multiple teams and are pending approval; others are road map documents that also go through some review process. + +As a result we create templates for all kind of documents, with usually something like "draft → reviews → approved/rejected" at the top. We expect the owner of the doc to mark in bold what's the status of the doc to help the reader understand in what state the document is. It's difficult to keep track of open actions and comments. Yes, there's a way to get a list of all of them, but it's not in an obvious place. + +As a result, some engineers in my team built an external dashboard with swim lanes which captures the state of a document. We add new document with their URLs, add who are the reviewers, and we move the doc between the lanes. Now we have to operate a service and a database to keep track of the status of documents in GDoc. +* Alternatives +When it comes to technical document, I find that [[https://caitiem.com/2020/03/29/design-docs-markdown-and-git/][approach]] much more interesting. Some open source projects have adopted a similar workflow ([[https://github.com/kubernetes/enhancements/tree/master/keps][Kubernetes]], [[https://github.com/golang/proposal][Go]]). + +A new document starts its life as a text file (using what ever markup language your team/company prefers). The document is submitted for review, and the people who need to be consulted are added as reviewers. They can now comment on the document, the author can address them, mark them as resolved. It's clear in which state the document is: it's either in review, committed, or rejected. With this approach you also end up with a clear history, as time moves on you can amend the document by submitting a change, and the change goes through the same process. + +New comers will find the document in the repository, and if they want to see the conversation they can open the review associated with the original change. They can also see how the document evolved over time. It's also easy to publish these documents on an internal website, using a static site generator for example. + +One of the thing that I think are critical, is that all of that is done using the tools the engineers are already using for their day to day job: a text editor, a version control system, a code review tool. + +There's obviously challenges with this approach too: ++ *it's more heavy handed*: not every one likes to write in a text editor using a markup language. It can requires some time to learn or get used to the syntax ++ *it's harder to integrate schema / visuals*: but having them checked in in the repository also improves the discoverability + +It's also true that no all documents suffer the same challenges for discoverability: ++ meeting notes are usually linked to meeting invites (however if you were not part of the meeting, you end up with the same challenges to discover them) ++ drafts for communications are usually not relevant once the communication has been sent ++ interview notes are usually transferred to some tools for HR when the feedback is submitted + diff --git a/users/fcuny/notes/content/notes/google-doc-failure.org b/users/fcuny/notes/content/notes/google-doc-failure.org deleted file mode 100644 index b4d449d..0000000 --- a/users/fcuny/notes/content/notes/google-doc-failure.org +++ /dev/null @@ -1,56 +0,0 @@ -#+TITLE: Google Doc Failures -#+TAGS[]: documentation process -#+DATE: <2021-04-11 Sun> - -In most use cases, Google Doc is an effective tool to create "write once, read never" documents. - -* Convenience -Google Doc (GDoc from now on) is the most common way of writing and sharing documents at my current job. It's very easy to start a new document, even more since we can now point our browser to https://doc.new and start typing right away. - -Like most of my co-workers, I use it frequently during the day. Some of these documents are draft for some communication that I want others to review before I share with a broader audience; it can be a [[https://en.wikipedia.org/wiki/Request_for_Comments][Request For Comments]] for a project; meeting notes for others to read; information that I need to capture during an incident or a debugging session; interviews notes; etc. - -I would not be surprised if the teams I work closely with generate 50 new documents each week. -* ETOOMANYTABS -I have a tendency of having hundreds of open tabs in my browser during the week. A majority of these tabs are GDocs, and I think this is one of the true failure of the product. Why do I have so many tabs ? There's mainly two reasons. - -The first reason is a problem with Chrome's UX itself: it happily let me open the same URL as many times as I want in as many tabs, instead of sending me to the already opened tab if the document is loaded. It's not uncommon that I find the same document opened in 5 different tabs. - -The second reason, and it's the most important one, I know that if I need to read or comment on a doc and I close the tab, I'll likely never find that document again, or will completely forget about it. -* Discoverability -In 'the old days', you'd start a new document in Word or LibreOffice, and as you hit "save" for the first time, you've two decisions to make: how am I going to name that file, and where am I going to save it on disk. - -With GDoc these questions don't have to be answered, you don't have to name the file, and it does not matter where it lives. I've likely hundreds of docs named 'untitled' in my "drive". I also don't have to think about where they will live, because they are saved automatically for me. I'm sure there's hundreds of studies that show that these two simple steps are actually complex for many users and creates useless friction (in which folder do I store it; should I organize the docuemnts by team, years, projects; do I name it with the date and the current project; etc.). - -GDoc being a Google product, it seems pretty obvious that they would come up with a better solution: let's not organize in a strict hierarchy these files, and let's instead search for them. - -Unfortunately, GDoc's search is really poor (and I'm being kind). By default most of us start by looking for some words we know are in the doc, maybe even in the title. But when working on a multiple projects that are related to the same technology, you suddenly get hundreds of documents matching your query. It's unclear how the returned set is ordered (by date ? by author ? by some scoring that is invisible to me ?). - -You can also search by owners, but here is another annoying bit: I think about owner as author, so I usually type =author:foo= before realizing it does not work. And that implies you already know who's the owner of the document. In the case of TDDs (Technical Design Document), I might know which team is behind it, but rarely who's the actual author. - -I could search for the title, but I rarely remember or know the name of the document I'm looking for. I could also be looking by keywords, but when working on a project with tens of related documents, you have to open all the returned docs to see which one is the correct one. - -And then what about new members joining your the team ? They don't know which docs exist, who wrote them, and how they are named. They end up searching and hoping that something good will be returned. -* Workflows -More and more we create workflows around these documents: some of the docs are TDDs that are going through reviews; others are decision documents that require input from multiple teams and are pending approval; others are road map documents that also go through some review process. - -As a result we create templates for all kind of documents, with usually something like "draft → reviews → approved/rejected" at the top. We expect the owner of the doc to mark in bold what's the status of the doc to help the reader understand in what state the document is. It's difficult to keep track of open actions and comments. Yes, there's a way to get a list of all of them, but it's not in an obvious place. - -As a result, some engineers in my team built an external dashboard with swim lanes which captures the state of a document. We add new document with their URLs, add who are the reviewers, and we move the doc between the lanes. Now we have to operate a service and a database to keep track of the status of documents in GDoc. -* Alternatives -When it comes to technical document, I find that [[https://caitiem.com/2020/03/29/design-docs-markdown-and-git/][approach]] much more interesting. Some open source projects have adopted a similar workflow ([[https://github.com/kubernetes/enhancements/tree/master/keps][Kubernetes]], [[https://github.com/golang/proposal][Go]]). - -A new document starts its life as a text file (using what ever markup language your team/company prefers). The document is submitted for review, and the people who need to be consulted are added as reviewers. They can now comment on the document, the author can address them, mark them as resolved. It's clear in which state the document is: it's either in review, committed, or rejected. With this approach you also end up with a clear history, as time moves on you can amend the document by submitting a change, and the change goes through the same process. - -New comers will find the document in the repository, and if they want to see the conversation they can open the review associated with the original change. They can also see how the document evolved over time. It's also easy to publish these documents on an internal website, using a static site generator for example. - -One of the thing that I think are critical, is that all of that is done using the tools the engineers are already using for their day to day job: a text editor, a version control system, a code review tool. - -There's obviously challenges with this approach too: -+ *it's more heavy handed*: not every one likes to write in a text editor using a markup language. It can requires some time to learn or get used to the syntax -+ *it's harder to integrate schema / visuals*: but having them checked in in the repository also improves the discoverability - -It's also true that no all documents suffer the same challenges for discoverability: -+ meeting notes are usually linked to meeting invites (however if you were not part of the meeting, you end up with the same challenges to discover them) -+ drafts for communications are usually not relevant once the communication has been sent -+ interview notes are usually transferred to some tools for HR when the feedback is submitted - diff --git a/users/fcuny/notes/layouts/_default/baseof.html b/users/fcuny/notes/layouts/_default/baseof.html index d9ca51a..3fd7011 100644 --- a/users/fcuny/notes/layouts/_default/baseof.html +++ b/users/fcuny/notes/layouts/_default/baseof.html @@ -3,6 +3,7 @@ {{ partial "head.html" . }}
+ {{- partial "header.html" . -}}
{{ block "main" . }}{{ end }}
diff --git a/users/fcuny/notes/layouts/_default/list.html b/users/fcuny/notes/layouts/_default/list.html index 3423cb6..2b7d98a 100644 --- a/users/fcuny/notes/layouts/_default/list.html +++ b/users/fcuny/notes/layouts/_default/list.html @@ -1,10 +1,6 @@ {{ define "main" }} -

{{ .Title }}

-{{ range .Pages.ByPublishDate.Reverse }} -

- {{ .Title }} -

-{{ end }} + {{ $pgs := where .Data.Pages "Params.hidden" "ne" "true" }} + {{ partial "postlist" $pgs }} {{ end }} diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 0ab5e35..356f344 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -1,7 +1,5 @@ {{ define "main" }} -

← Back to Franck's homepage

-

{{ .Title }}

diff --git a/users/fcuny/notes/layouts/index.html b/users/fcuny/notes/layouts/index.html index 450444b..f7581ff 100644 --- a/users/fcuny/notes/layouts/index.html +++ b/users/fcuny/notes/layouts/index.html @@ -11,12 +11,4 @@

I'm currently working as a Site Reliability Engineer at Twitter, on the Compute team.

-

Notes

- {{ $section := "notes" }} - - {{ end }} diff --git a/users/fcuny/notes/layouts/partials/header.html b/users/fcuny/notes/layouts/partials/header.html new file mode 100644 index 0000000..f918823 --- /dev/null +++ b/users/fcuny/notes/layouts/partials/header.html @@ -0,0 +1,15 @@ +
+ +
diff --git a/users/fcuny/notes/layouts/partials/postlist.html b/users/fcuny/notes/layouts/partials/postlist.html index 3695d82..28fd9b2 100644 --- a/users/fcuny/notes/layouts/partials/postlist.html +++ b/users/fcuny/notes/layouts/partials/postlist.html @@ -1,28 +1,10 @@ -

← Back to Franck's homepage

- -{{ range .GroupByDate "2006-Jan" }} +{{ range .GroupByDate "2006" }}

{{ .Key }}

    {{ range .Pages.ByDate }}
  • {{ .Title }}

    - {{ if .Params.tags }} -
    - Tags: - {{ range $idx, $tag := .Params.tags }} - {{ $tag }} - {{ end }} -
    - {{ else }} -
    - {{ end }} -
    -
    -

    - {{ .Summary }} - Read more → -

  • {{ end }} diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index 7592e8e..f363bee 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -38,7 +38,7 @@ h2 { } span.published, span.updated { - display: block; + display: center; font-style: oblique; } @@ -92,3 +92,42 @@ blockquote { padding-left: 5px; font-style: italic; } + +nav { + display: flex; + flex: 2 0px; + justify-content: flex-end; + padding-left: 1em; + margin: 0 auto; + line-height: 0.2rem; +} + +nav ul { + display: flex; + list-style-type: none; + margin: 0 +} + +nav a { + padding: 1em; + display: inline-block; + color: black; + font-family: sans-serif; + text-decoration: none; + transition: all 75ms ease-in; +} + +nav a:hover { + color: #fff; + background-color: #007d9c; +} + +nav a.menu-active:hover { + color: #fff; + background-color: #007d9c; +} + +nav a.menu-active { + color: #007d9c; +} + -- cgit 1.4.1 From e2f6f42c089bbea803abb0c57eeaa27c53f47f59 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 15 Aug 2021 13:46:47 -0700 Subject: CSS: support table of content If an entry has the parameter `#+toc` set to `t`, we will enable the table of content in the page. --- users/fcuny/notes/layouts/_default/single.html | 7 +++++++ users/fcuny/notes/static/css/custom.css | 12 ++++++++++++ 2 files changed, 19 insertions(+) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 356f344..b4c5443 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -29,6 +29,13 @@ {{ end }}
+{{ if .Params.toc }} +
+ Table of Contents + {{ .TableOfContents }} +
+{{ end }} + {{ .Content }} {{ end }} diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index b4e37bc..8f776d7 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -140,3 +140,15 @@ nav.menu a.menu-active:hover { nav.menu a.menu-active { color: #007d9c; } + +.toc { + border: 1px solid black; + padding: 1rem; + margin-top: 1rem; + color: black; +} + +.toc a, +.toc a.visited { + color: black; +} -- cgit 1.4.1 From 9af499ffbf985cd6bea50d079063e6f01cba139a Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Mon, 23 Aug 2021 09:32:05 -0700 Subject: CSS: use decoration on headers only for articles Add an element "article" to the single page template, and change the CSS to use the decoration for headers only for that kind of content. Having decoration for all headers is distracting, it's more suited for actual content. We also don't need decoration for h1, only smaller headers. --- users/fcuny/notes/layouts/_default/single.html | 8 ++++++-- users/fcuny/notes/static/css/custom.css | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index b4c5443..165c568 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -1,5 +1,7 @@ {{ define "main" }} +
+

{{ .Title }}

@@ -18,9 +20,9 @@ {{ if .Params.tags }}
{{ if eq (len .Params.tags) 1 }} - in tag + tag: {{ else }} - in tags + tags: {{ end }} {{ range $idx, $tag := .Params.tags }} {{ $tag }} @@ -38,4 +40,6 @@ {{ .Content }} +
+ {{ end }} diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index 95f5feb..2d7a36e 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -24,16 +24,16 @@ a { p { color: #1a1a19; } -h1:before { +article.article h2:before { content: '◉'; } -h2:before { +article.article h3:before { content: '○'; } -h3:before { +article.article h4:before { content: '✸'; } -h4:before { +article.article h5:before { content: '✿'; } -- cgit 1.4.1 From 8d089c7d6d798410bfb50f5d2d30106974a984cf Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Fri, 21 Jan 2022 11:13:56 -0800 Subject: post: change formatting for the date --- users/fcuny/notes/layouts/_default/single.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 165c568..4f21ded 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -5,17 +5,17 @@

{{ .Title }}

- {{- $pub := .Date.Format "2006-01-02" -}} + {{- $pub := .Date.Format "Jan 2, 2006" -}} {{- $mod := "" -}} {{- if (not .GitInfo) }} - {{- $mod = .Lastmod.Format "2006-01-02" -}} + {{- $mod = .Lastmod.Format "Jan 2, 2006" -}} {{ else }} - {{- $mod = .Page.GitInfo.CommitDate.Format "2006-01-02" -}} + {{- $mod = .Page.GitInfo.CommitDate.Format "Jan 2, 2006" -}} {{ end -}} {{ if eq $pub $mod }}
published {{ $pub }}
{{ else }} -
published {{ $pub }}, last modified {{ $mod }}
+
published {{ $pub }} - last modified {{ $mod }}
{{ end }} {{ if .Params.tags }}
-- cgit 1.4.1 From 1f644e51028a77b2e3ef2de33d3497f8bf565ad2 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 23 Jan 2022 18:22:47 -0800 Subject: layout: proper TOC There's a need for two TOCs in the layout: one for when the page is on mobile; one for non mobile. When we are on mobile, we display the first TOC, before the article. When we're not on mobile, we hide that TOC and display one after the document. We restructure a bit the layout so that's it's a bit more readable too, and close tags properly. --- users/fcuny/notes/layouts/_default/single.html | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 4f21ded..524145a 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -1,6 +1,6 @@ {{ define "main" }} -
+

{{ .Title }}

@@ -32,14 +32,23 @@
{{ if .Params.toc }} -
- Table of Contents +
+ Table of contents {{ .TableOfContents }}
{{ end }} +
{{ .Content }} +
+ +
-
+{{ if .Params.toc }} +
+ Table of contents + {{ .TableOfContents }} +
+{{ end }} {{ end }} -- cgit 1.4.1 From 5abd6605d975c90a5a9620267bd6ba2371317b9c Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 23 Jan 2022 18:49:53 -0800 Subject: layout: no need for a class to element 'article' --- users/fcuny/notes/layouts/_default/list.html | 2 +- users/fcuny/notes/layouts/_default/single.html | 2 +- users/fcuny/notes/layouts/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/list.html b/users/fcuny/notes/layouts/_default/list.html index 6d1c04f..d2c59a7 100644 --- a/users/fcuny/notes/layouts/_default/list.html +++ b/users/fcuny/notes/layouts/_default/list.html @@ -1,6 +1,6 @@ {{ define "main" }} -
+
{{ $pgs := where .Data.Pages "Params.hidden" "ne" "true" }} {{ partial "postlist" $pgs }} diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 524145a..fe2477e 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -38,7 +38,7 @@
{{ end }} -
+
{{ .Content }}
diff --git a/users/fcuny/notes/layouts/index.html b/users/fcuny/notes/layouts/index.html index 523ad08..2ab8c40 100644 --- a/users/fcuny/notes/layouts/index.html +++ b/users/fcuny/notes/layouts/index.html @@ -1,6 +1,6 @@ {{ define "main" }} -
+

{{ .Site.Home.Title }}

-- cgit 1.4.1 From 24cebe8b0005ffd6e0dc390780ce54139a1179ec Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 23 Jan 2022 19:11:39 -0800 Subject: CSS: switch from class to id These elements are unique on each page. --- users/fcuny/notes/layouts/_default/single.html | 10 +++++----- users/fcuny/notes/static/css/custom.css | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index fe2477e..7a85a05 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -4,7 +4,7 @@

{{ .Title }}

-
+
{{- $pub := .Date.Format "Jan 2, 2006" -}} {{- $mod := "" -}} {{- if (not .GitInfo) }} @@ -13,9 +13,9 @@ {{- $mod = .Page.GitInfo.CommitDate.Format "Jan 2, 2006" -}} {{ end -}} {{ if eq $pub $mod }} -
published {{ $pub }}
+
published {{ $pub }}
{{ else }} -
published {{ $pub }} - last modified {{ $mod }}
+
published {{ $pub }} - last modified {{ $mod }}
{{ end }} {{ if .Params.tags }}
@@ -25,7 +25,7 @@ tags: {{ end }} {{ range $idx, $tag := .Params.tags }} - {{ $tag }} + {{ $tag }} {{ end }}
{{ end }} @@ -45,7 +45,7 @@
{{ if .Params.toc }} -
+
Table of contents {{ .TableOfContents }}
diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index 80b07a0..3f4a142 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -74,27 +74,27 @@ pre { background-color: #fafafa; } -.meta { +#meta { display: row; } -.meta_tags { +#meta_tags { border-radius: 8px; padding: 0 .5rem; - font-size: 80%; + font-size: 0.9rem; border: 2px solid #eee; background-color: #eee; } -.meta_tags a { +#meta_tags a { text-decoration: none; border-bottom: none; color: #005a9c; } -.meta_date { +#meta_date { font-style: italic; - font-size: 80%; + font-size: 0.9rem; } table { @@ -155,7 +155,7 @@ article { max-width: 45rem; } -.toc {display: none} +#toc {display: none} #toc_small { font-size: 0.9rem; @@ -180,10 +180,10 @@ summary { #TableOfContents li {margin-bottom: 1rem;} @media screen and (min-width:58rem) { - .toc { + #toc { padding-left: 1rem; padding-top: 4.5rem; - font-size: 0.8em; + font-size: 0.9rem; display:block; position:sticky; top:0; -- cgit 1.4.1 From 5483be5a93faac53c2319696e1d024fd049b8a09 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Mon, 28 Mar 2022 19:50:38 -0700 Subject: convert blog to notes Separating the two sites so I can customize them differently. --- users/fcuny/notes/Makefile | 4 +- users/fcuny/notes/config.toml | 22 +---- users/fcuny/notes/fly.toml | 7 +- users/fcuny/notes/layouts/_default/baseof.html | 1 + users/fcuny/notes/layouts/_default/single.html | 14 --- users/fcuny/notes/layouts/index.atom.xml | 2 +- users/fcuny/notes/layouts/index.html | 17 ++-- users/fcuny/notes/layouts/partials/footer.html | 32 +++++++ users/fcuny/notes/layouts/partials/header.html | 12 ++- users/fcuny/notes/static/CNAME | 2 +- users/fcuny/notes/static/css/custom.css | 120 ++++++++++++------------- 11 files changed, 117 insertions(+), 116 deletions(-) create mode 100644 users/fcuny/notes/layouts/partials/footer.html (limited to 'users/fcuny/notes/layouts/_default/single.html') diff --git a/users/fcuny/notes/Makefile b/users/fcuny/notes/Makefile index 5414dde..4644ac3 100644 --- a/users/fcuny/notes/Makefile +++ b/users/fcuny/notes/Makefile @@ -1,6 +1,6 @@ DOCKER := DOCKER_BUILDKIT=1 docker DOCKER_BUILD_ARGS := -DOCKER_IMAGE := fcuny/fcuny.net +DOCKER_IMAGE := fcuny/notes.fcuny.net DOCKER_IMAGE_REF := $(shell git rev-parse HEAD) DOCKERFILE := Dockerfile PROJECT_DIR := $(realpath $(CURDIR)) @@ -18,7 +18,7 @@ worktree-clean: deploy: worktree-clean docker-build @echo "Deploying to fly ..." flyctl deploy - @git tag -a --message $$(flyctl info -j |jq -r '.App | "fcuny.net/v\(.Version)"') $$(flyctl info -j |jq -r '.App | "fcuny.net/v\(.Version)"') + @git tag -a --message $$(flyctl info -j |jq -r '.App | "notes.fcuny.net/v\(.Version)"') $$(flyctl info -j |jq -r '.App | "notes.fcuny.net/v\(.Version)"') @git push origin --all @git push origin --tags diff --git a/users/fcuny/notes/config.toml b/users/fcuny/notes/config.toml index 1fe49bc..6ee3e63 100644 --- a/users/fcuny/notes/config.toml +++ b/users/fcuny/notes/config.toml @@ -1,11 +1,12 @@ -baseURL = "https://fcuny.net/" +baseURL = "https://notes.fcuny.net/" languageCode = "en-us" -title = "Franck's rambling" +title = "Franck's notes" publishDir = "docs" enableGitInfo = true [params] homeText = "A collection of notes" + mainSections = ['notes'] [author] name = "Franck Cuny" @@ -15,29 +16,14 @@ enableGitInfo = true tag = "tags" [permalinks] - blog = "/blog/:slug/" notes = "/notes/:slug/" tags = "/tags/:slug/" [menu] - [[menu.main]] - identifier = "articles" - name = "blog" - title = "articles" - url = "/blog/" - weight = 110 - - [[menu.main]] - identifier = "notes" - name = "notes" - title = "notes" - url = "/notes/" - weight = 120 - [[menu.main]] identifier = "RSS" name = "RSS" - title = "RSS" + title = "~/notes/feed" url = "/feed.xml" weight = 130 diff --git a/users/fcuny/notes/fly.toml b/users/fcuny/notes/fly.toml index 46468c1..4db1311 100644 --- a/users/fcuny/notes/fly.toml +++ b/users/fcuny/notes/fly.toml @@ -1,13 +1,10 @@ -# fly.toml file generated for fcunynet on 2021-06-20T10:01:50-07:00 +# fly.toml file generated for notes-fcunynet on 2022-03-28T19:44:54-07:00 -app = "fcunynet" +app = "notes-fcunynet" kill_signal = "SIGINT" kill_timeout = 5 -[build] - builtin = "hugo-static" - [env] [experimental] diff --git a/users/fcuny/notes/layouts/_default/baseof.html b/users/fcuny/notes/layouts/_default/baseof.html index 0c72fb1..410e2bc 100644 --- a/users/fcuny/notes/layouts/_default/baseof.html +++ b/users/fcuny/notes/layouts/_default/baseof.html @@ -6,5 +6,6 @@
{{ block "main" . }}{{ end }}
+ {{- partial "footer.html" . -}} diff --git a/users/fcuny/notes/layouts/_default/single.html b/users/fcuny/notes/layouts/_default/single.html index 7a85a05..7f594ad 100644 --- a/users/fcuny/notes/layouts/_default/single.html +++ b/users/fcuny/notes/layouts/_default/single.html @@ -31,24 +31,10 @@ {{ end }}
-{{ if .Params.toc }} -
- Table of contents - {{ .TableOfContents }} -
-{{ end }} -
{{ .Content }}
-{{ if .Params.toc }} -
- Table of contents - {{ .TableOfContents }} -
-{{ end }} - {{ end }} diff --git a/users/fcuny/notes/layouts/index.atom.xml b/users/fcuny/notes/layouts/index.atom.xml index 1d73f9b..e4b014b 100644 --- a/users/fcuny/notes/layouts/index.atom.xml +++ b/users/fcuny/notes/layouts/index.atom.xml @@ -8,7 +8,7 @@ {{.}}{{end}} {{end}} Hugo -- gohugo.io - {{ range where (first 10 (where .Site.Pages "Section" "blog")) "Params.hidden" "ne" "true" }} + {{ range where (first 10 (where .Site.Pages "Section" "notes")) "Params.hidden" "ne" "true" }} {{ `<![CDATA[` | safeHTML }}{{ .Title }}]]> diff --git a/users/fcuny/notes/layouts/index.html b/users/fcuny/notes/layouts/index.html index 2ab8c40..a340d3d 100644 --- a/users/fcuny/notes/layouts/index.html +++ b/users/fcuny/notes/layouts/index.html @@ -4,15 +4,16 @@

{{ .Site.Home.Title }}

-

I'm an engineer currently on a break. Previously I was a Site Reliability Engineer working on Twitter's compute platform.

+

This is my collection of notes.

-

Contact

- +

Notes

+
    + {{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} + {{ range $pages }} + {{- $fmt := "2006-01-02" }} +
  • , {{ .Title }}
  • + {{ end }} +
diff --git a/users/fcuny/notes/layouts/partials/footer.html b/users/fcuny/notes/layouts/partials/footer.html new file mode 100644 index 0000000..e2bf7ab --- /dev/null +++ b/users/fcuny/notes/layouts/partials/footer.html @@ -0,0 +1,32 @@ + diff --git a/users/fcuny/notes/layouts/partials/header.html b/users/fcuny/notes/layouts/partials/header.html index dede0ae..fe90497 100644 --- a/users/fcuny/notes/layouts/partials/header.html +++ b/users/fcuny/notes/layouts/partials/header.html @@ -1,12 +1,10 @@
-
diff --git a/users/fcuny/notes/static/CNAME b/users/fcuny/notes/static/CNAME index 7398ba2..5f43d63 100644 --- a/users/fcuny/notes/static/CNAME +++ b/users/fcuny/notes/static/CNAME @@ -1 +1 @@ -fcuny.net \ No newline at end of file +notes.fcuny.net diff --git a/users/fcuny/notes/static/css/custom.css b/users/fcuny/notes/static/css/custom.css index ae6d674..70ce618 100644 --- a/users/fcuny/notes/static/css/custom.css +++ b/users/fcuny/notes/static/css/custom.css @@ -1,37 +1,40 @@ body { font-family: sans-serif; - font-size: 1.125em; - line-height: 1.5; - color: #37474f; + font-size: 1em; + line-height: 1.8em; + color: #0e0e0b; margin: 1em auto; padding: 0 0.55em; - max-width: 45rem; -} - -@media screen and (min-width:58rem) { - body, - main { - max-width:calc(45rem + 15rem); - } - main { - display: flex; - } + max-width: 50rem; } h1 { + color: #0e0e0b; font-size: 2rem; margin-top: 1em; margin-bottom: 0.34em; } -h2 {margin-top: 1.25em; margin-bottom: 0.41em} -h3 {margin-top: 1.5em; margin-bottom: 0.5em} +h2, h3 { + border-bottom: 1px solid #eee; + font-style: italic; +} +h2 { + margin-top: 1.25em; + margin-bottom: 0.41em; + font-size: 1.4rem; +} +h3 { + margin-top: 1.5em; + margin-bottom: 0.5em; + font-size: 1.2rem; +} hr{ color:#000111; background-color:#000111; border:none; - height:2px + height:1px } a { @@ -64,10 +67,12 @@ p code { color: black; background-color: #eee; padding: 0 0.2rem; + font-size: 1.1em; } pre { font-family: monospace; + font-size: 1.1em; margin: 0; word-wrap: normal; padding: 0.8em; @@ -130,20 +135,15 @@ blockquote { } nav { - width: 100%; padding-right: 10px; + font-size: 1.4em; display: flex; + font-family: monospace; justify-content: space-between; align-items: center; padding-top: 0.5rem; } -@media screen and (min-width:58rem) { - nav { - max-width: calc(45rem + 15rem); - } -} - .nav-links { list-style: none; display: flex; @@ -151,51 +151,51 @@ nav { .navbar a { display: inline-block; - padding-right: 10px; + text-decoration: none; +} + +.navbar a:hover { + background-color: #b72d2d; + color: #fafafa; + text-decoration: none; +} + +.nav-bold { + font-weight: 700; + color: #b72d2d; + text-decoration: none; } article { - max-width: 45rem; + text-align: justify; } -#toc {display: none} +.post-permalink { + list-style: none; + margin-left: -20px; +} -#toc_small { - font-size: 0.9rem; - margin-bottom: 2rem; - margin-top: 2rem; +.post-date { + font-family: monospace; + font-weight: 400; + font-size: 1.1em; } -@media screen and (min-width:58rem) { - #toc_small {display: none;} + +footer { + border-top: 2px solid #eee; + margin-top: 2em; + display: flex; + flex-direction: row; + justify-content: left; + align-items: left; } -summary { - display:flex; - flex-direction:column; +footer a, footer a:link, footer a:focus, footer a:active, footer a:hover { + color: black; + text-decoration: none; + padding: 5px; } -#TableOfContents > ul, #TableOfContents > ul > li > ul { - list-style: none; - margin: 0; - padding: 0; -} - -#TableOfContents li {margin-bottom: 1rem;} - -@media screen and (min-width:58rem) { - #toc { - padding-left: 1rem; - padding-top: 4.5rem; - font-size: 0.9rem; - display:block; - position:sticky; - top:0; - align-self:flex-start; - max-width:15rem; - z-index:1; - } - #TableOfContents { - border-left: 3px solid #eee; - padding-left: 1rem; - } +footer a:not(:first-child) { + margin-left: 15px; } -- cgit 1.4.1