]> git.xn--bdkaa.com Git - xn--bdkaa.com.git/commitdiff
Add table of contents
authorEvgenii Akentev <i@ak3n.com>
Sat, 2 Mar 2024 19:16:56 +0000 (23:16 +0400)
committerEvgenii Akentev <i@ak3n.com>
Sat, 2 Mar 2024 22:04:54 +0000 (02:04 +0400)
15 files changed:
config.toml
content/pages/books.md
content/pages/projects.md
content/posts/implementations-of-the-handle-pattern.md
content/posts/thoughts-on-backpack-modules-and-records.md
content/posts/why-i-am-not-a-scientist.md
content/posts/wisdom-and-software-engineering.md
themes/theme/layouts/_default/list.html
themes/theme/layouts/_default/single.html
themes/theme/layouts/index.html
themes/theme/layouts/pages/single.html
themes/theme/layouts/partials/header.html
themes/theme/layouts/partials/toc.html [new file with mode: 0644]
themes/theme/static/css/pure-min.css [new file with mode: 0644]
themes/theme/static/css/stylesheet.css

index 5e23f8111bb920a027329b2379dee7629020b077..c6aa350a122149d20d69c57a122f074c18bfa1aa 100644 (file)
@@ -31,3 +31,9 @@ copyright = 'This work is licensed under a Creative Commons Attribution-ShareAli
   [markup.goldmark]
     [markup.goldmark.renderer]
       unsafe = true
+
+  [markup.tableOfContents]
+    endLevel = 5
+    ordered = false
+    startLevel = 2
+
index d824a1352f244424e06814c3195eb33dc370efe2..7ad741169f040f24a81cb82dde0c92b759136caf 100644 (file)
@@ -4,7 +4,7 @@ title: Books
 
 Books I read. Bold titles that I enjoyed and recommend.
 
-#### 2024
+### 2024
 
 - **Zombies in Western Culture, by John Vervaeke, Christopher Mastropietro, Filip Miscevic**
 - **Котлован, Андрей Платонов**
@@ -12,7 +12,7 @@ Books I read. Bold titles that I enjoyed and recommend.
 - A Supposedly Fun Thing I'll Never Do Again, by David Foster Wallace
 - A Russian Journal, by John Steinbeck, Robert Capa
 
-#### 2023
+### 2023
 
 - **Дар, Владимир Набоков**
 - **Blood Meridian, by Cormac McCarthy**
@@ -27,7 +27,7 @@ Books I read. Bold titles that I enjoyed and recommend.
 - The Education of a Value Investor, by Guy Spier
 - **Political Order and Political Decay, by Francis Fukuyama**
 
-#### 2022
+### 2022
 
 - **The Broom of the System, by David Foster Wallace**
 - Philosophy, Pussycats, and Porn, by Stoya
@@ -38,7 +38,7 @@ Books I read. Bold titles that I enjoyed and recommend.
 - **The Culture Code: The Secrets of Highly Successful Groups, by Daniel Coyle**
 - **Clearing the Air: The Beginning and the End of Air Pollution, by Tim Smedley**
 
-#### 2021
+### 2021
 
 - The Art of War, by Sun Tzu
 - A Portrait of the Artist as a Young Man, by James Joyce
index 83d2b21331d642acea07b779eef6a58ab5edc85e..40ddf2c336b428d413968b69ed73aa18677d457a 100644 (file)
@@ -2,7 +2,7 @@
 title: Projects
 ---
 
-#### Hackage packages
+### Hackage packages
 
 <details open="">
   <summary>
@@ -22,7 +22,7 @@ title: Projects
   </p>
 </details>
 
-#### Hosted web projects
+### Hosted web projects
 
 <details>
   <summary>
@@ -48,7 +48,7 @@ title: Projects
 
 
 
-#### Educational
+### Educational
 
 <details open="">
   <summary>
index 6a8e02f860732f0a366c79e7678d759cc794cf33..496e0f4e1781455422956bcf0cabf6818b3426a0 100644 (file)
@@ -3,6 +3,7 @@ title: Implementations of the Handle pattern
 date: 2021-01-31
 draft: false
 tags: [haskell, backpack]
+toc: true
 ---
 
 In ["Monad Transformers and Effects with Backpack"](https://blog.ocharles.org.uk/posts/2020-12-23-monad-transformers-and-effects-with-backpack.html) [@acid2](https://twitter.com/acid2) presented how to apply Backpack to monad transformers. There is a less-popular approach to deal with effects — [Handle](https://jaspervdj.be/posts/2018-03-08-handle-pattern.html) ([Service](https://www.schoolofhaskell.com/user/meiersi/the-service-pattern)) pattern. I recommend reading both posts at first since they answer many questions regarding the design decisions behind the Handle pattern (why `IO`, why not type classes, etc). In this post, I want to show different implementations of the Handle pattern and compare them. All examples described below are available [in this repository](https://git.ak3n.com/?p=handle-examples.git).
index 645b05ecd1263252d49843cc9c31a27fb4c68c84..7a4f8a6a8a4faab354c8fd17bc54dde42cff0c8b 100644 (file)
@@ -3,6 +3,7 @@ title: Thoughts on Backpack, modules, and records
 date: 2021-01-31
 draft: false
 tags: [haskell, backpack, modules, records]
+toc: true
 ---
 
 In ["Implementations of the Handle pattern"](/posts/implementations-of-the-handle-pattern) I have explored how Backpack might be used for the Handle pattern. It helped me to take a better look at Backpack and reflect a bit on modules and records in Haskell.
@@ -26,9 +27,9 @@ What's the point of having an unused feature which is unmaintained and unfinishe
 
 I looked at [the GHC proposals](https://github.com/ghc-proposals/ghc-proposals/) to see if there are any improvements of modularity in the future and, in my opinion, most proposals are focused on concrete problems instead of reflecting on the whole language. It may work well but also it may create inconsistency in the language.
 
-#### [QualifiedDo](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0216-qualified-do.rst)
+#### QualifiedDo
 
-`QualifiedDo` brings syntax sugar for overloading `do` notation:
+[`QualifiedDo`](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0216-qualified-do.rst) brings syntax sugar for overloading `do` notation:
 
 ```haskell
 {-# LANGUAGE LinearTypes #-}
@@ -98,17 +99,17 @@ f <*> x = do
 
 It's just like opening the records! It might be tedious to write these imports instead of `Linear.do`, but we wouldn't need to bring new functionality to the language if we had local imports. Maybe it means that "do notation" is really important to the Haskell community but to me, it feels like a temporary hack at the moment, not a fundamental part of the language.
 
-#### [Local modules](https://github.com/goldfirere/ghc-proposals/blob/local-modules/proposals/0000-local-modules.rst)
+#### Local modules
 
-`LocalModules` sounds like a good step in the right direction. It will be possible to create modules in modules and to open them locally! Just like in the example above with `Linear` module. Another good thing is that each `data` declaration implicitly creates a new local module, [like in Agda](https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#record-modules). I'm not sure if it's possible to open them, I haven't found it in the proposal, but that would unify the opening of records and modules. Unfortunately, the proposal doesn't explore the interaction with Backpack:
+[`LocalModules`](https://github.com/goldfirere/ghc-proposals/blob/local-modules/proposals/0000-local-modules.rst) sounds like a good step in the right direction. It will be possible to create modules in modules and to open them locally! Just like in the example above with `Linear` module. Another good thing is that each `data` declaration implicitly creates a new local module, [like in Agda](https://agda.readthedocs.io/en/v2.6.1/language/record-types.html#record-modules). I'm not sure if it's possible to open them, I haven't found it in the proposal, but that would unify the opening of records and modules. Unfortunately, the proposal doesn't explore the interaction with Backpack:
 
 >This proposal does not appear to interact with Backpack. It does not address signatures, the key feature in Backpack. Perhaps the ideas here could be extended to work with signatures.
 
 Does it mean that there will be `LocalSignatures` in the future? Why not design the whole mechanism at once? Is there a risk of missing something important that would be hard to fix later?
 
-#### [First class modules](https://github.com/michaelpj/ghc-proposals/blob/imp/first-class-modules/proposals/0000-first-class-modules.rst)
+#### First class modules
 
-This proposal is about making a module a first-class entity in the language. Its status is *dormant* because it's too much to change while the benefits seem to be the same as in `LocalModules`. While `LocalModules` is a technical proposal that goes into details, `First class modules` is more about language design proposal. `LocalModules` does not replace `First class modules`, but *a part of it*. This is exactly what I was looking for, the proposal that tries to build a vision for the language, what it might look in the future. The proposal mentions Backpack only once:
+[This proposal](https://github.com/michaelpj/ghc-proposals/blob/imp/first-class-modules/proposals/0000-first-class-modules.rst) is about making a module a first-class entity in the language. Its status is *dormant* because it's too much to change while the benefits seem to be the same as in `LocalModules`. While `LocalModules` is a technical proposal that goes into details, `First class modules` is more about language design proposal. `LocalModules` does not replace `First class modules`, but *a part of it*. This is exactly what I was looking for, the proposal that tries to build a vision for the language, what it might look in the future. The proposal mentions Backpack only once:
 
 > Interface files must be able to handle the possibility that an exported name refers to a module. This may have some interaction with Backpack.
 
index d2db426f78c625414ff5c60942800b9364d80a8d..8bf341d4e8104c21497c10c45fb987f9032109c0 100644 (file)
@@ -19,4 +19,4 @@ That's a perfect way to figure out what's worth learning. What's the real intere
 
 I talked to great researchers (who are amazing persons) about their experience and everyday work. I learned that scientists depend on their funding, on grants and writing grant proposals, and they can't just start researching what they find interesting. They deal with a lot of bureaucracy (which I can't stand, I'm extremely allergic to it) and exist in the rigid social structure (a university or a research institution), while I value freedom too much.
 
-That's how removing the Ego from the equation was a major factor that helped me to resolve my long-standing self-identification crises — to be an engineer or a scientist.
\ No newline at end of file
+That's how removing the Ego from the equation was a major factor that helped me to resolve my long-standing self-identification crises — to be an engineer or a scientist.
index d1a388027ab77a204731dd5d4043d67dfb8550d3..a7a032114c042c987b4120d0944787dbee972ec9 100644 (file)
@@ -3,6 +3,7 @@ title: Wisdom and software engineering
 date: 2024-01-15
 draft: false
 tags: [wisdom, software]
+toc: true
 ---
 
 It's been a while since I read ["The Intelligence Trap"](https://www.goodreads.com/book/show/41817546-the-intelligence-trap) — a nice book on intelligence and wisdom with many facts about knowledge, four stages of competence, how to teach children, how to learn, &c. More importantly it encourages humility and explains how big ego / expertise might be harmful. It certainly bootstraped some thought processes in my mind, getting me curious in different topics — especially wisdom.
index 50c48e740a7088e56730ec52d393b9b5ef5ce797..86d29607eff930e93fe6b894b7059aafe8add164 100644 (file)
@@ -2,21 +2,26 @@
 
 {{ partial "subheader.html" . }}
 
-<h1>{{ .Title }}</h1>
+<div class="pure-g">
+    <div class="pure-u-1-5"></div>
 
-<section>
-  <ul>
-    {{ range .Data.Pages.ByPublishDate.Reverse }}
-      <div class="posts">
-        <div id=date class="date-time-title">
-            <time>{{ .Date.Format (.Site.Params.dateform | default "02 Jan 06") }}</time>
-        </div>
-        <div class="date-time-title post">
-          <a href="{{ .Permalink }}">{{ .Title }}</a>
-        </div>
-      </div>
-    {{ end }}
-  </ul>
-</section>
+    <div class="pure-u-3-5">
+        <h1>{{ .Title }}</h1>
+        <section>
+          <ul>
+            {{ range .Data.Pages.ByPublishDate.Reverse }}
+              <div class="posts">
+                <div id=date class="date-time-title">
+                    <time>{{ .Date.Format (.Site.Params.dateform | default "02 Jan 06") }}</time>
+                </div>
+                <div class="date-time-title post">
+                  <a href="{{ .Permalink }}">{{ .Title }}</a>
+                </div>
+              </div>
+            {{ end }}
+          </ul>
+        </section>
+    </div>
+</div>
 
 {{ partial "footer.html" . }}
index c6a3071f0a7d5f7ad4092b6f677955b4afd16ef3..4666a2050ab9e9f8a584cfb2e910d2fd5e15979c 100644 (file)
@@ -2,22 +2,34 @@
 
 {{ partial "subheader.html" . }}
 
-<section class="blog-post">
-    <h1>{{ .Title }}</h1>
-    <div class="blog-post-subheader">
-        <div>
-            {{ .Date.Format (.Site.Params.dateform | default "January 02, 2006") }}
-        </div>
-        <div>
-            {{ partial "tags.html" (.GetTerms "tags") }}
-        </div>
+<div class="pure-g">
+    <div class="pure-u-1-5">
+        {{ partial "toc.html" . }}
     </div>
-    <div class="blog-post-content">
-        {{ partial "headline.html" .Content }}
-    </div>
-    <div class="blog-post-feedback">
-        If you have a comment or feedback you may <a href="mailto:i@ak3n.com">say hi</a>.
+
+    <div class="pure-u-3-5">
+        <article id="main">
+
+            <section class="blog-post">
+                <h1>{{ .Title }}</h1>
+                <div class="blog-post-subheader">
+                    <div>
+                        {{ .Date.Format (.Site.Params.dateform | default "January 02, 2006") }}
+                    </div>
+                    <div>
+                        {{ partial "tags.html" (.GetTerms "tags") }}
+                    </div>
+                </div>
+                <div class="blog-post-content">
+                    {{ partial "headline.html" .Content }}
+                </div>
+
+                <div class="blog-post-feedback">
+                    If you have a comment or feedback you may <a href="mailto:i@ak3n.com">say hi</a>.
+                </div>
+            </section>
+     </article>
     </div>
-</section>
+</div>
 
 {{ partial "footer.html" . }}
index e029d9e77f6d68651ec3fc50ffc1304340a96e7f..48fd85dd1d9c56162e916728172d61c7ffaeabc3 100644 (file)
@@ -1,21 +1,26 @@
 {{ partial "header.html" . }}
-<section>
-  <div class="center">
-    <img class="avatar" src="/img/me_myself_and_i_tbilisi_2023.webp" alt="Me, Myself, and I, თბილისი 2023"/>
-    <p class="about">თბილისი, July, 2023</p>
-  </div>
 
-  <section id="info">
-    <ul class="center">
-      <li><a href="/posts">posts</a></li>
-      {{ range (where .Site.RegularPages.ByPublishDate.Reverse "Section" "pages") }}
-        <li><a href="{{ .Permalink }}">{{ .Title | lower }}</a></li>
-      {{ end }}
-      <li><a href="https://git.ak3n.com">code</a></li>
-      <li><a href="/index.xml">rss</a></li>
-      <li><a href="mailto:i@ak3n.com">say hi</a></li>
-    </ul>
-  </section>
-</section>
+<div class="pure-g">
+    <div class="pure-u-1-5"></div>
+
+    <div class="pure-u-3-5">
+        <div class="center">
+          <img class="avatar" src="/img/me_myself_and_i_tbilisi_2023.webp" alt="Me, Myself, and I, თბილისი 2023"/>
+          <p class="about">თბილისი, July, 2023</p>
+        </div>
+
+        <section id="info">
+          <ul class="center">
+            <li><a href="/posts">posts</a></li>
+            {{ range (where .Site.RegularPages.ByPublishDate.Reverse "Section" "pages") }}
+              <li><a href="{{ .Permalink }}">{{ .Title | lower }}</a></li>
+            {{ end }}
+            <li><a href="https://git.ak3n.com">code</a></li>
+            <li><a href="/index.xml">rss</a></li>
+            <li><a href="mailto:i@ak3n.com">say hi</a></li>
+          </ul>
+        </section>
+    </div>
+</div>
 
 {{ partial "footer.html" . }}
index 0c5ce02ae47de304f65178dfa73dcc4b397bac0c..4bcdf0def61eb3980eb4f0eb7a53fd16c0a51367 100644 (file)
@@ -2,13 +2,21 @@
 
 {{ partial "subheader.html" . }}
 
-<section class="blog-post">
-    <h1>{{ .Title }}</h1>
-    <div class="blog-post-subheader">
+<div class="pure-g">
+    <div class="pure-u-1-5">
+        {{ partial "toc.html" . }}
     </div>
-    <div class="blog-post-content">
-        {{ partial "headline.html" .Content }}
+
+    <div class="pure-u-3-5">
+        <section class="blog-post">
+            <h1>{{ .Title }}</h1>
+            <div class="blog-post-subheader">
+            </div>
+            <div class="blog-post-content">
+                {{ partial "headline.html" .Content }}
+            </div>
+        </section>
     </div>
-</section>
+</div>
 
 {{ partial "footer.html" . }}
index d3c2a38e5a6c19752355c9c5b66869a9bfcd58af..3fea3de084ab198af4fb68610414248eb93a20fd 100644 (file)
@@ -5,6 +5,7 @@
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
         <title>{{.Title}}</title>
         <link href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" rel="icon" type="image/x-icon">
+        <link rel="stylesheet" href="/css/pure-min.css">
         <link rel="stylesheet" href="/css/stylesheet.css">
         <link rel="stylesheet" href="/css/syntax.css">
         <link rel="alternate"
diff --git a/themes/theme/layouts/partials/toc.html b/themes/theme/layouts/partials/toc.html
new file mode 100644 (file)
index 0000000..a7251b3
--- /dev/null
@@ -0,0 +1,10 @@
+{{ if .Params.toc }}
+  <section class="toc">
+    <details open="">
+      <summary>
+        <b class="contents">Contents</b>
+      </summary>
+      {{ .TableOfContents }}
+    </details>
+  </section>
+{{ end }}
\ No newline at end of file
diff --git a/themes/theme/static/css/pure-min.css b/themes/theme/static/css/pure-min.css
new file mode 100644 (file)
index 0000000..acdc431
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+Pure v3.0.0
+Copyright 2013 Yahoo!
+Licensed under the BSD License.
+https://github.com/pure-css/pure/blob/master/LICENSE
+*/
+/*!
+normalize.css v | MIT License | https://necolas.github.io/normalize.css/
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{display:flex;flex-flow:row wrap;align-content:flex-start}.pure-u{display:inline-block;vertical-align:top}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-0.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129FEA;outline:1px auto #129FEA}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent;cursor:default}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}
\ No newline at end of file
index ee2a782b42dcbf9abc3cb754752da010b9773c04..9d35d63ba8026c32f0ce71bba1763f53c81615cf 100644 (file)
@@ -1,15 +1,15 @@
 body {
     font-family: sans-serif;
     color: black;
-    margin: auto;
+/*    margin: auto;
     max-width: 50em;
-}
+*/}
 
 .center {
     text-align: center;
 }
 
-#page-title h1 a, .post a {
+#page-title h1 a, .post a, .toc a {
     color: black;
 }
 
@@ -17,12 +17,6 @@ a {
     text-decoration: none;
 }
 
-#whoami {
-    margin-left: auto;
-    margin-right: auto;
-    width: 60%;
-}
-
 #info ul {
     margin-top: 1em;
     padding: 0;
@@ -39,7 +33,7 @@ ul li h4 {
   margin-bottom: 0.5em;
 }
 
-.post a:hover {
+.post a:hover, .toc a:hover {
     text-decoration: underline;
 }
 
@@ -51,12 +45,49 @@ ul li h4 {
     padding-left: 2em;
 }
 
-.post, .subcategory {
+.toc {
+    position: fixed;
+    width: inherit;
+}
+
+.toc summary::marker {
+    content: none;
+/*    display: flex;*/
+/*    justify-content: space-between;*/
+}
+
+.toc summary::after {
+  content: ' show';
+}
+.toc details[open] summary:after {
+  content: " hide";
+}
+
+.toc a {
+  color: #696969;
+
+}
+
+.toc li,
+.toc ul,
+.toc ul li {
+  list-style: outside none none;
+}
+
+.contents,
+.toc li,
+.toc ul,
+.toc ul li {
+    padding-left: 5px;
+}
+
+.post {
     padding-left: 1em;
 }
 
 .blog-post {
-    padding-left: 1em;
+    padding-left: 2em;
+    padding-right: 2em;
 }
 
 .blog-post img {