From 6f3729b383909ca091925defed83d8ce37b9e7d5 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/blog/layouts/_default/baseof.html | 11 +++++++++++ users/fcuny/blog/layouts/_default/list.html | 10 ++++++++++ users/fcuny/blog/layouts/_default/single.html | 11 +++++++++++ 3 files changed, 32 insertions(+) create mode 100644 users/fcuny/blog/layouts/_default/baseof.html create mode 100644 users/fcuny/blog/layouts/_default/list.html create mode 100644 users/fcuny/blog/layouts/_default/single.html (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/baseof.html b/users/fcuny/blog/layouts/_default/baseof.html new file mode 100644 index 0000000..d9ca51a --- /dev/null +++ b/users/fcuny/blog/layouts/_default/baseof.html @@ -0,0 +1,11 @@ + + + {{ partial "head.html" . }} + +
+
+ {{ block "main" . }}{{ end }} +
+
+ + diff --git a/users/fcuny/blog/layouts/_default/list.html b/users/fcuny/blog/layouts/_default/list.html new file mode 100644 index 0000000..3423cb6 --- /dev/null +++ b/users/fcuny/blog/layouts/_default/list.html @@ -0,0 +1,10 @@ +{{ define "main" }} + +

{{ .Title }}

+{{ range .Pages.ByPublishDate.Reverse }} +

+ {{ .Title }} +

+{{ end }} + +{{ end }} diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html new file mode 100644 index 0000000..a8c1dc7 --- /dev/null +++ b/users/fcuny/blog/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 7025d1ca1e7a42212eeb4e648176986135fd8438 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/blog/layouts/_default/single.html | 27 ++++++++++++++++++++++++++- users/fcuny/blog/static/css/custom.css | 16 ++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index a8c1dc7..0ab5e35 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/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/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index b0ec570..9d4faf1 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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 ef3fa6ba26fcf11fdd2325764147f56c90b94a7b 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/blog/config.toml | 18 ++++++- .../fcuny/blog/content/blog/google-doc-failure.org | 56 ++++++++++++++++++++++ .../blog/content/notes/google-doc-failure.org | 56 ---------------------- users/fcuny/blog/layouts/_default/baseof.html | 1 + users/fcuny/blog/layouts/_default/list.html | 8 +--- users/fcuny/blog/layouts/_default/single.html | 2 - users/fcuny/blog/layouts/index.html | 8 ---- users/fcuny/blog/layouts/partials/header.html | 15 ++++++ users/fcuny/blog/layouts/partials/postlist.html | 20 +------- users/fcuny/blog/static/css/custom.css | 41 +++++++++++++++- 10 files changed, 131 insertions(+), 94 deletions(-) create mode 100644 users/fcuny/blog/content/blog/google-doc-failure.org delete mode 100644 users/fcuny/blog/content/notes/google-doc-failure.org create mode 100644 users/fcuny/blog/layouts/partials/header.html (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/config.toml b/users/fcuny/blog/config.toml index 31f75af..6100ba5 100644 --- a/users/fcuny/blog/config.toml +++ b/users/fcuny/blog/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/blog/content/blog/google-doc-failure.org b/users/fcuny/blog/content/blog/google-doc-failure.org new file mode 100644 index 0000000..b4d449d --- /dev/null +++ b/users/fcuny/blog/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/blog/content/notes/google-doc-failure.org b/users/fcuny/blog/content/notes/google-doc-failure.org deleted file mode 100644 index b4d449d..0000000 --- a/users/fcuny/blog/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/blog/layouts/_default/baseof.html b/users/fcuny/blog/layouts/_default/baseof.html index d9ca51a..3fd7011 100644 --- a/users/fcuny/blog/layouts/_default/baseof.html +++ b/users/fcuny/blog/layouts/_default/baseof.html @@ -3,6 +3,7 @@ {{ partial "head.html" . }}
+ {{- partial "header.html" . -}}
{{ block "main" . }}{{ end }}
diff --git a/users/fcuny/blog/layouts/_default/list.html b/users/fcuny/blog/layouts/_default/list.html index 3423cb6..2b7d98a 100644 --- a/users/fcuny/blog/layouts/_default/list.html +++ b/users/fcuny/blog/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/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index 0ab5e35..356f344 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/layouts/_default/single.html @@ -1,7 +1,5 @@ {{ define "main" }} -

← Back to Franck's homepage

-

{{ .Title }}

diff --git a/users/fcuny/blog/layouts/index.html b/users/fcuny/blog/layouts/index.html index 450444b..f7581ff 100644 --- a/users/fcuny/blog/layouts/index.html +++ b/users/fcuny/blog/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/blog/layouts/partials/header.html b/users/fcuny/blog/layouts/partials/header.html new file mode 100644 index 0000000..f918823 --- /dev/null +++ b/users/fcuny/blog/layouts/partials/header.html @@ -0,0 +1,15 @@ +
+ +
diff --git a/users/fcuny/blog/layouts/partials/postlist.html b/users/fcuny/blog/layouts/partials/postlist.html index 3695d82..28fd9b2 100644 --- a/users/fcuny/blog/layouts/partials/postlist.html +++ b/users/fcuny/blog/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/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index 7592e8e..f363bee 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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 9ab556530d088ed2046f9e1fd2ffe92783b9cfaf 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/blog/layouts/_default/single.html | 7 +++++++ users/fcuny/blog/static/css/custom.css | 12 ++++++++++++ 2 files changed, 19 insertions(+) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index 356f344..b4c5443 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/layouts/_default/single.html @@ -29,6 +29,13 @@ {{ end }}
+{{ if .Params.toc }} +
+ Table of Contents + {{ .TableOfContents }} +
+{{ end }} + {{ .Content }} {{ end }} diff --git a/users/fcuny/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index b4e37bc..8f776d7 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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 b03e752a4522209d77d2c153a8bee8601a2808d5 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/blog/layouts/_default/single.html | 8 ++++++-- users/fcuny/blog/static/css/custom.css | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index b4c5443..165c568 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/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/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index 95f5feb..2d7a36e 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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 528159360435f82fc5f4806a2bac1a53044cb070 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/blog/layouts/_default/single.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index 165c568..4f21ded 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/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 0fb74e0783335e54fa682a4b254c5b73d9c19df1 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 23 Jan 2022 18:06:04 -0800 Subject: layout: drop the div 'main' The div 'main' is not needed, we are creating an element named 'named' in the main block. --- users/fcuny/blog/layouts/_default/baseof.html | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/baseof.html b/users/fcuny/blog/layouts/_default/baseof.html index 3fd7011..0c72fb1 100644 --- a/users/fcuny/blog/layouts/_default/baseof.html +++ b/users/fcuny/blog/layouts/_default/baseof.html @@ -2,11 +2,9 @@ {{ partial "head.html" . }} -
- {{- partial "header.html" . -}} -
- {{ block "main" . }}{{ end }} -
-
+ {{- partial "header.html" . -}} +
+ {{ block "main" . }}{{ end }} +
-- cgit 1.4.1 From d2b9b82210d6960c8c2101b1e7a7c45008a5a50a Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 23 Jan 2022 18:14:12 -0800 Subject: layout: wrap content in an "article" tag --- users/fcuny/blog/layouts/_default/list.html | 4 ++++ users/fcuny/blog/layouts/index.html | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/list.html b/users/fcuny/blog/layouts/_default/list.html index 2b7d98a..6d1c04f 100644 --- a/users/fcuny/blog/layouts/_default/list.html +++ b/users/fcuny/blog/layouts/_default/list.html @@ -1,6 +1,10 @@ {{ define "main" }} +
+ {{ $pgs := where .Data.Pages "Params.hidden" "ne" "true" }} {{ partial "postlist" $pgs }} +
+ {{ end }} diff --git a/users/fcuny/blog/layouts/index.html b/users/fcuny/blog/layouts/index.html index 21a86b8..523ad08 100644 --- a/users/fcuny/blog/layouts/index.html +++ b/users/fcuny/blog/layouts/index.html @@ -1,5 +1,7 @@ {{ define "main" }} +
+

{{ .Site.Home.Title }}

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

@@ -12,4 +14,6 @@
  • Keys: SSH public keys
  • +
    + {{ end }} -- cgit 1.4.1 From abd51f109bfa17642d306deed1a0b0c229b0af18 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/blog/layouts/_default/single.html | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index 4f21ded..524145a 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/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 25910d969dcdb4f8eb7383d0953dbd8b60d0dedf 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/blog/layouts/_default/list.html | 2 +- users/fcuny/blog/layouts/_default/single.html | 2 +- users/fcuny/blog/layouts/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/list.html b/users/fcuny/blog/layouts/_default/list.html index 6d1c04f..d2c59a7 100644 --- a/users/fcuny/blog/layouts/_default/list.html +++ b/users/fcuny/blog/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/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index 524145a..fe2477e 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/layouts/_default/single.html @@ -38,7 +38,7 @@
    {{ end }} -
    +
    {{ .Content }}
    diff --git a/users/fcuny/blog/layouts/index.html b/users/fcuny/blog/layouts/index.html index 523ad08..2ab8c40 100644 --- a/users/fcuny/blog/layouts/index.html +++ b/users/fcuny/blog/layouts/index.html @@ -1,6 +1,6 @@ {{ define "main" }} -
    +

    {{ .Site.Home.Title }}

    -- cgit 1.4.1 From e9dd95b6d50c2030a0efe819257ff557f8fbf2a8 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/blog/layouts/_default/single.html | 10 +++++----- users/fcuny/blog/static/css/custom.css | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/layouts/_default/single.html b/users/fcuny/blog/layouts/_default/single.html index fe2477e..7a85a05 100644 --- a/users/fcuny/blog/layouts/_default/single.html +++ b/users/fcuny/blog/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/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index 80b07a0..3f4a142 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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 7ac496c860a8e6f57d3bab1207b1f677c9b6a835 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Wed, 16 Feb 2022 09:17:35 -0800 Subject: layout: improve readability and remove /notes The notes will be moved to a different site/repository, with their own style. Update the index page to make it more readable. Make the header more visible with fewer links. Add a footer, with links using SVG icons. --- users/fcuny/blog/config.toml | 22 +---- users/fcuny/blog/layouts/_default/baseof.html | 1 + users/fcuny/blog/layouts/index.html | 19 ++-- users/fcuny/blog/layouts/partials/footer.html | 32 +++++++ users/fcuny/blog/layouts/partials/header.html | 12 ++- users/fcuny/blog/static/css/custom.css | 120 +++++++++++++------------- 6 files changed, 110 insertions(+), 96 deletions(-) create mode 100644 users/fcuny/blog/layouts/partials/footer.html (limited to 'users/fcuny/blog/layouts/_default') diff --git a/users/fcuny/blog/config.toml b/users/fcuny/blog/config.toml index 1fe49bc..c47b946 100644 --- a/users/fcuny/blog/config.toml +++ b/users/fcuny/blog/config.toml @@ -20,32 +20,14 @@ enableGitInfo = true 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 = "~/blog/feed" url = "/feed.xml" weight = 130 [markup] - [markup.tableOfContents] - startLevel = 1 - endLevel = 3 - ordered = true [markup.highlight] anchorLineNos = false codeFences = false @@ -56,7 +38,7 @@ enableGitInfo = true lineNos = false lineNumbersInTable = false noClasses = true - style = "emacs" + style = "manni" tabWidth = 4 [mediaTypes."application/atom"] diff --git a/users/fcuny/blog/layouts/_default/baseof.html b/users/fcuny/blog/layouts/_default/baseof.html index 0c72fb1..410e2bc 100644 --- a/users/fcuny/blog/layouts/_default/baseof.html +++ b/users/fcuny/blog/layouts/_default/baseof.html @@ -6,5 +6,6 @@
    {{ block "main" . }}{{ end }}
    + {{- partial "footer.html" . -}} diff --git a/users/fcuny/blog/layouts/index.html b/users/fcuny/blog/layouts/index.html index 2ab8c40..38520ef 100644 --- a/users/fcuny/blog/layouts/index.html +++ b/users/fcuny/blog/layouts/index.html @@ -2,17 +2,18 @@
    -

    {{ .Site.Home.Title }}

    +

    I'm a Principal SRE, currently working at Roblox. Previously I worked at Twitter for over 7 years, and my main focus was on Twitter's compute platform.

    -

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

    +

    My general interests are in building sustainable teams, improving the management and operation of large infrastructure, and work with different teams to implement best practices around reliability and security.

    -

    Contact

    - +

    Posts

    +
      + {{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} + {{ range $pages }} + {{- $fmt := "2006-01-02" }} +
    • , {{ .Title }}
    • + {{ end }} +
    diff --git a/users/fcuny/blog/layouts/partials/footer.html b/users/fcuny/blog/layouts/partials/footer.html new file mode 100644 index 0000000..e2bf7ab --- /dev/null +++ b/users/fcuny/blog/layouts/partials/footer.html @@ -0,0 +1,32 @@ + diff --git a/users/fcuny/blog/layouts/partials/header.html b/users/fcuny/blog/layouts/partials/header.html index dede0ae..65900eb 100644 --- a/users/fcuny/blog/layouts/partials/header.html +++ b/users/fcuny/blog/layouts/partials/header.html @@ -1,12 +1,10 @@
    -
    diff --git a/users/fcuny/blog/static/css/custom.css b/users/fcuny/blog/static/css/custom.css index ae6d674..70ce618 100644 --- a/users/fcuny/blog/static/css/custom.css +++ b/users/fcuny/blog/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