all repos — site @ 10c4125a0bf1781a47e0a4cc43da997fbb95a10d

source for my site, found at icyphox.sh

all: big redesign
Anirudh Oppiliappan x@icyphox.sh
Sun, 22 Dec 2024 18:46:53 +0200
commit

10c4125a0bf1781a47e0a4cc43da997fbb95a10d

parent

c53eb9f1b57d46b6f6b5365c582536613509cb2f

M flake.lockflake.lock

@@ -2,11 +2,11 @@ {

"nodes": { "nixpkgs": { "locked": { - "lastModified": 1731852624, - "narHash": "sha256-hfR6InYghPqZo5Lvojj6LqpJumh7G62oD0RN8VfBnkU=", + "lastModified": 1734875733, + "narHash": "sha256-DbgZN1Oz9CqhDZkZ2EC0RmFutIvGqICGyuYvxyLZvok=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8447f0f3e60462c5889a709af429b12b47c29ac5", + "rev": "4f334ebd098a48c6e07c449f5e5321d4abe7a0df", "type": "github" }, "original": {

@@ -41,11 +41,11 @@ "inputs": {

"nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1731853533, - "narHash": "sha256-0KTyWOBy6Eub2hT3EN2Qri6l09vlxeg69XZlexwzl2s=", + "lastModified": 1734875705, + "narHash": "sha256-VV65oVrxxgFIbAbu7Ox9FqftLuOubbv+NK1Xvs/JqsY=", "owner": "icyphox", "repo": "go-vite", - "rev": "81b8a3faf63f5b53e9d6e95aa09149941c4a2f11", + "rev": "f18dcbc513dfef8f521ecf3c4bd7ea02ee124aa1", "type": "github" }, "original": {
M pages/about.mdpages/about.md

@@ -27,17 +27,6 @@ - Electric skateboarding and PEVs.

- 35mm film photography. - Veganism, ethics and plant-based nutrition. -Some of my links: -- Bluesky [@icyphox.sh](https://bsky.app/profile/icyphox.sh) -- Lobsters [@icy](https://lobste.rs/u/icy) -- Hacker News [@icy](https://news.ycombinator.com/user?id=icy) -- Steam [@icyphox](https://steamcommunity.com/id/icyphox) -- GitHub [@icyphox](https://github.com/icyphox) -- Fediverse [@icy@icyphox.sh](https://h.icyphox.sh/@icy) - -If you're interested in **hiring me** -- here's my -[résumé](https://cdn.icyphox.sh/resume.pdf). - ## contact Send mail to [anirudh@oppiliappan.com](mailto:anirudh@oppiliappan.com).

@@ -50,12 +39,24 @@ I'm available on IRC as `icy` on [libera.chat](https://libera.chat) and

[rizon.net](https://rizon.net) but I'm likely to miss messages as I don't get notified. Use the above methods instead. +Some other ways to find me: +- Bluesky [@icyphox.sh](https://bsky.app/profile/icyphox.sh) +- Lobsters [@icy](https://lobste.rs/u/icy) +- Hacker News [@icy](https://news.ycombinator.com/user?id=icy) +- Steam [@icyphox](https://steamcommunity.com/id/icyphox) +- GitHub [@icyphox](https://github.com/icyphox) +- Fediverse [@icy@icyphox.sh](https://h.icyphox.sh/@icy) + +If you're interested in **hiring me** -- here's my +[résumé](https://cdn.icyphox.sh/resume.pdf). + ## colophon -This site is built using [vite](https://git.icyphox.sh/vite) -- a static -site generator written in Go. The source for this site is -[here](https://git.icyphox.sh/site), licensed under MIT. All content on -this site is available under the Creative Commons BY-NC-SA license. +The website is built using [vite](https://git.icyphox.sh/vite) -- a +static site generator written in Go and [hosted at +home](/uses#homelab-k3s-cluster) on +[Garage](https://garagehq.deuxfleurs.fr/). -This site is [hosted at home](/uses#homelab-k3s-cluster) on -[Garage](https://garagehq.deuxfleurs.fr/). +The source code is available [here](https://git.icyphox.sh/site), +licensed under MIT. All content is published under the [Creative Commons +BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/) license.
M pages/blog/_index.mdpages/blog/_index.md

@@ -1,5 +1,5 @@

--- template: blog.html -title: blog +title: writing subtitle: Computers, security & computer security. ---
M static/style.cssstatic/style.css

@@ -1,32 +1,37 @@

:root { - --light: #f4f4f4; --cyan: #509c93; - --light-gray: #eee; - --medium-gray: #ddd; - --gray: #6a6a6a; - --dark: #444; - --darker: #222; - --white: #fff; - --cyan-trans: rgba(80, 156, 147, 0.3); + --light: #fff9eb; + --light-gray: #fceccc; + --medium-gray: #e6dcd1; + --mediumer-gray: #d8cbbe; + --gray: #776e63; + --dark: #4a443d; + --darker: #2a261f; + --bg: #fffdf5; + --fg: #100f0f; + --selection: rgba(143, 105, 213, 0.2); - --font-content: -apple-system, BlinkMacSystemFont, "Inter", "Roboto", "Segoe UI", sans-serif; + --font-content: -apple-system, BlinkMacSystemFont, "Inter", "Roboto", + "Segoe UI", sans-serif; } @media (prefers-color-scheme: dark) { :root { - --light: #222; --cyan: #509c93; - --light-gray: #444; - --medium-gray: #666; - --gray: #ccc; - --dark: #ddd; - --darker: #fff; - --white: #000; + --light: #2a261f; + --light-gray: #4a443d; + --medium-gray: #6b635a; + --gray: #d3cec1; + --fg: #fff6e3; + --dark: #e6dcd1; + --darker: #fff9eb; + --bg: #100f0f; + --selection: rgba(80, 156, 147, 0.2); } html { - background: var(--light); - color: var(--gray); + background: var(--bg); + color: var(--fg); } main a {

@@ -34,29 +39,23 @@ color: var(--gray);

border-bottom: 1.5px solid var(--medium-gray); } - blockquote p { - border-left: 1.5px solid var(--gray); - } - - pre { - background-color: var(--dark); + hr { + background: var(--light); } - .logo, .footimgs { - filter: invert(1); - svg { - fill: var(--gray); - } + blockquote p { + border-left: 1.5px solid var(--gray); } } html { - background: var(--white); + background: var(--bg); + color: var(--fg); -webkit-text-size-adjust: none; } ::selection { - background: var(--cyan-trans); + background: var(--selection); color: var(--darker); }

@@ -96,7 +95,7 @@ }

main h1 { font-size: 30px; - padding: 20px 0 20px 0; + padding: 30px 0 30px 0; } main h2 {

@@ -108,10 +107,11 @@ h3 {

margin: 40px 0 20px 0; } -.logo img { +.logo svg { max-height: 2.5rem; max-width: 2.5rem; transform: translateY(-10%); + fill: var(--fg); } .logo {

@@ -154,19 +154,13 @@ border-bottom: 1.5px solid var(--medium-gray);

} a:hover { - border-bottom: unset; - border-bottom: 1.5px solid var(--dark); -} - -.footer { - column-count: 2; - column-gap: 12px; + border-bottom: 1.5px solid var(--gray); } body { max-width: 655px; - padding: 0 13px; - margin: 40px auto; + padding: 2rem 1rem 20rem; + margin: 1rem auto; } main article img {

@@ -235,18 +229,79 @@ .tagline {

padding: 50px 0 50px 0; } +.book-posts { + padding-top: 2rem; + a { + text-decoration: none; + } + ul { + list-style-type: none; + padding: 0; + margin: 0; + } + ul > li { + display: flex; + align-items: baseline; + } + li > .post { + flex-grow: 1; + } + + .author { + flex-shrink: 1; + white-space: nowrap; + vertical-align: baseline; + color: var(--gray); + } + + .status { + flex-shrink: 1; + white-space: nowrap; + vertical-align: baseline; + } +} + +.posts { + padding-top: 2rem; + h2 { + margin: 0rem 0 2rem 0; + } + + ul { + list-style-type: none; + padding: 0; + margin: 0; + } + ul > li { + display: flex; + align-items: baseline; + } + li > .post { + flex-grow: 1; + } + + li > .index-date { + flex-shrink: 1; + white-space: nowrap; + vertical-align: baseline; + color: var(--gray); + text-transform: lowercase; + float: right; + } +} + pre { overflow-x: auto; overflow-y: hidden; padding: 10px; min-width: 0; - background-color: var(--light-gray) !important; + background-color: var(--light) !important; margin-bottom: 10px; } code { font-size: 0.9rem; - background-color: var(--light-gray); + background-color: var(--light); } .post-date {

@@ -255,6 +310,10 @@ color: var(--gray);

text-transform: lowercase; } +.header { + padding-bottom: 20px; +} + table { table-layout: fixed; width: 100%;

@@ -264,37 +323,12 @@ table a {

text-decoration: none; } -td { - padding: 7px 11px 7px 11px; -} - -td p#subtitle { - color: var(--gray); -} - -td:first-child { - padding-left: 0; -} - -td:last-child { - padding-right: 0; -} - -.index-date { - white-space: nowrap; - vertical-align: baseline; - color: var(--gray); - text-transform: lowercase; -} - -header { - padding-bottom: 20px; -} - hr { max-width: 100%; - text-align: left; - margin: 20px 0 20px 0; + border: 0; + height: 1px; + margin: 1.5rem 0; + background: var(--light-gray); } footer {

@@ -312,9 +346,13 @@ padding-left: 20px;

border-left: 1.5px solid var(--medium-gray); } +ul li::marker { + color: var(--mediumer-gray); +} + nav { - display: flex; - align-items: center; + display: flex; + align-items: center; } nav ul {

@@ -331,27 +369,14 @@ display: inline-block;

} ol { - list-style: none; counter-reset: counter; } ol li { counter-increment: counter; } -ol li:not(.footnotes)::before { - content: counter(counter); - border-radius: 50%; - text-align: center; - line-height: 1.2rem; - color: var(--darker); - background: var(--medium-gray); - width: 18px; - height: 18px; - font-size: 11px; - margin-right: 0.5rem; - box-sizing: content-box; - display: inline-block; - transform: translate(-1.9rem, 0.7rem); - position: absolute; + +ol li:not(.footnotes)::marker { + color: var(--gray); } .footnote-ref a {

@@ -365,6 +390,12 @@ width: 0.8rem;

height: 0.8rem; font-size: 0.6rem; display: inline-block; + border-bottom: unset; +} + +.footnotes > ol { + list-style-type: none; + counter-reset: counter; } .footnotes > ol li::before {

@@ -381,7 +412,7 @@ margin-right: 0.5rem;

box-sizing: content-box; display: inline-block; position: relative; - transform: unset; + transform: translateY(-2px); } .footnotes ol li:not(:last-child) {

@@ -390,16 +421,10 @@ }

.draft { color: red; - font-weight: bold; - font-family: sans; font-size: 1rem; } @media (max-width: 400px) { - .footer { - column-count: 1; - } - .image-grid { column-count: 1; }
M templates/blog.htmltemplates/blog.html

@@ -16,24 +16,26 @@ {{ template "partials/nav.html" }}

</div> <h1>{{ index .Meta "title" }}</h1> {{ .Body }} - <table> - {{ $posts := .Extra }} - {{ range $posts }} - <tr> - <td align="left"> - {{ if .Meta.draft }} - <p><a href=/blog/{{ .Meta.slug }}>{{ .Meta.title }}</a> <span class="draft">[draft]</span></p> - {{ else }} - <p><a href=/blog/{{ .Meta.slug }}>{{ .Meta.title }}</a></p> + + <section class="posts"> + <ul> + {{ $posts := .Extra }} + {{ range $posts }} + <li> + <div class="post"> + <a href=/blog/{{ .Meta.slug }}>{{ .Meta.title }}</a> + {{ if .Meta.draft }} + (<span class="draft">draft</span>) + {{ end }} + <p class="subtitle">{{ .Meta.subtitle }}</p> + </div> + {{ $dateStr := .Meta.date }} + {{ $date := parsedate $dateStr }} + <div class="index-date">{{ $date.Format "02 Jan, 2006" }}</div> + </li> {{ end }} - <p id="subtitle">{{ .Meta.subtitle }}</p> - </td> - {{ $dateStr := .Meta.date }} - {{ $date := parsedate $dateStr }} - <td align="right" class="index-date">{{ $date.Format "02 Jan, 2006" }}</td> - </tr> - {{ end }} - </table> + </ul> + </section> </main> <footer> {{ template "partials/footer.html" }}
M templates/index.htmltemplates/index.html

@@ -12,8 +12,34 @@ <main>

<div class="sidenav"> {{ template "partials/nav.html" }} </div> - <article class="tagline"> + <article> + <section class="tagline"> {{ .Body }} + </section> + + <hr> + + <section class="posts"> + <h2>writing</h2> + <ul> + {{ $posts := .Extra.blog }} + {{ range slice $posts 0 3 }} + <li> + <div class="post"> + <a href=/blog/{{ .Meta.slug }}>{{ .Meta.title }}</a> + {{ if .Meta.draft }} + (<span class="draft">draft</span>) + {{ end }} + <p class="subtitle">{{ .Meta.subtitle }}</p> + </div> + {{ $dateStr := .Meta.date }} + {{ $date := parsedate $dateStr }} + <div class="index-date">{{ $date.Format "02 Jan, 2006" }}</div> + </li> + {{ end }} + </ul> + <a style="border-bottom: unset;" href="/blog"><span>more &RightArrow;</span></a> + </section> </article> </main> <footer>
M templates/partials/footer.htmltemplates/partials/footer.html

@@ -1,22 +1,9 @@

+<hr> + <div class="footer"> - <section class="footimgs"> - <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> - <img alt="cc nc-by-sa" src="/static/cc.svg"> - </a> - <a href="https://webring.xxiivv.com/#random" target="_blank"> - <img alt="xxiivv webring" src="/static/webring.svg"> - </a> - <a href="/blog/feed.xml" > - <img alt="rss feed" src="/static/rss.svg" width="30"> - </a> - <a href="https://git.icyphox.sh"> - <img alt="git" src="/static/git.svg" width="35"> - </a> - <a href="https://h.icyphox.sh/u/icy" rel="me"> - <img alt="fedi" src="/static/fedi.svg" width="35"> - </a> - <a href="https://bsky.app/profile/icyphox.sh" rel="me"> - <img alt="fedi" src="/static/bluesky.svg" width="35"> - </a> - </section> + <p class="muted"> + Follow me via <a href="/blog/feed.xml">RSS</a>, + <a href="https://bsky.app/profile/icyphox.sh">Bluesky</a>, + and <a href="/about#contact">more</a>. + </p> </div>
M templates/partials/nav.htmltemplates/partials/nav.html

@@ -1,10 +1,54 @@

<nav> - <a href="/" class="logo"><img src=/static/white.svg></a> - <ul> - <li><a href="/blog">blog</a></li> - <li><a href="/reading">reading</a></li> - <li><a href="/uses">uses</a></li> - <li><a href="/photos">photos</a></li> - <li><a href="/about">about</a></li> - </ul> + <a href="/" class="logo"> + <svg + version="1.0" + xmlns="http://www.w3.org/2000/svg" + width="619.000000pt" + height="619.000000pt" + viewBox="0 0 619.000000 619.000000" + preserveAspectRatio="xMidYMid meet" + > + <g + transform="translate(0.000000,619.000000) scale(0.100000,-0.100000)" + > + <path + d="M583 4666 c4 -10 9 -28 12 -39 8 -36 105 -457 120 -522 8 -33 26 + -109 40 -170 14 -60 37 -157 50 -215 14 -58 36 -154 51 -215 29 -127 59 -255 + 79 -340 8 -33 37 -159 65 -280 74 -320 77 -330 89 -327 16 3 1091 853 1091 + 862 0 5 -1446 1147 -1564 1235 -30 23 -38 25 -33 11z" + /> + <path + d="M4819 4055 c-436 -344 -795 -628 -797 -633 -3 -9 1069 -860 1089 + -864 12 -3 15 7 89 327 28 121 57 247 65 280 20 85 50 213 79 340 15 61 37 + 157 51 215 13 58 36 155 50 215 14 61 32 137 40 170 8 33 37 159 65 280 27 + 121 54 236 60 254 5 19 8 36 7 38 -2 1 -361 -279 -798 -622z" + /> + <path + d="M2244 3239 c-176 -138 -323 -255 -328 -260 -8 -7 1171 -1749 1184 + -1749 13 0 1192 1742 1184 1749 -5 5 -152 122 -328 260 l-318 251 -538 0 -538 + 0 -318 -251z" + /> + <path + d="M1150 2373 c-338 -267 -626 -494 -639 -504 -13 -11 -22 -21 -20 -23 + 2 -2 83 -25 179 -50 96 -25 209 -54 250 -65 41 -11 127 -33 190 -50 63 -16 + 158 -41 210 -54 52 -14 176 -46 275 -72 99 -26 212 -55 250 -65 181 -48 310 + -81 415 -109 63 -16 178 -46 255 -66 248 -65 360 -94 362 -91 2 2 -1099 1621 + -1111 1633 -1 1 -278 -217 -616 -484z" + /> + <path + d="M3877 2043 c-306 -449 -556 -818 -554 -819 2 -3 115 26 362 91 77 20 + 192 50 255 66 105 28 234 61 415 109 39 10 151 39 250 65 99 26 223 58 275 72 + 52 13 147 38 210 54 63 17 149 39 190 50 41 11 154 40 250 65 170 44 188 50 + 179 57 -5 5 -1251 988 -1264 998 -6 5 -226 -308 -568 -808z" + /> + </g> + </svg> + </a> + <ul> + <li><a href="/blog">writing</a></li> + <li><a href="/reading">reading</a></li> + <li><a href="/uses">uses</a></li> + <li><a href="/photos">photos</a></li> + <li><a href="/about">about</a></li> + </ul> </nav>
M templates/photoindex.htmltemplates/photoindex.html

@@ -27,17 +27,22 @@ </div>

<article align="left"> <h1>{{ .Meta.title }}</h1> {{ .Body }} - <table> + <section class="posts"> + <ul> {{ $posts := .Extra }} {{ range $posts }} - <tr> - <td align="left"> - <a href=/photos/{{ .Meta.slug }}>{{ .Meta.title }} &mdash; {{ .Meta.season }}</a> - <p id="subtitle"> {{ .Meta.camera }} · {{ .Meta.lens }} · {{ .Meta.film }}</p> - </td> - </tr> + <li> + <div class="post"> + <a href=/photos/{{ .Meta.slug }}>{{ .Meta.title }} &mdash; {{ .Meta.season }}</a> + <p class="subtitle">{{ .Meta.camera }} · {{ .Meta.lens }} · {{ .Meta.film }}</p> + </div> + {{ $dateStr := .Meta.date }} + {{ $date := parsedate $dateStr }} + <div class="index-date">{{ $date.Format "02 Jan, 2006" }}</div> + </li> {{ end }} - </table> + </ul> + </section> </article> </main> <footer>
M templates/reading.htmltemplates/reading.html

@@ -20,17 +20,19 @@ {{- $books := .Yaml.books }}

{{- range $i, $yearMap := $books }} {{- range $year, $books := $yearMap }} <h2>{{ $year }}</h2> - <table> - <tbody> - {{- range $book := $books }} - <tr> - <td><a href="{{ $book.link }}">{{ $book.name }}</a></td> - <td>{{ $book.author }}</td> - <td>{{ $book.status }}</td> - </tr> - {{- end }} - </tbody> - </table> + <section class="book-posts"> + <ul> + {{- range $book := $books }} + <li> + <div class="post"> + <a href="{{ $book.link }}">{{ $book.name }}</a> + <p class="subtitle author">{{ $book.author }}</p> + </div> + <span class="status">{{ $book.status }}</span> + </li> + {{- end }} + </ul> + </section> {{- end }} {{- end }} </article>