Week 07 of 2024
Development log of Tad Lispy website
26 items
- Replace Zola Playground with tad-lispy.com
- Port content of the home page
- Write a comment about dumping all the context
- Import blog posts from old website
- Remove the angry bear sigil from the blog section
- Unware the blog section content
- Display a date in blog listing
- Update the npm-git-install post
- Add breadcrumbs to blog posts
- Support inline markdown in post titles
- Import the cp / mv to previous directory post
- Import the Shape Up post
- Import "Why is this so terrible" post
- Create some favicons and the web manifest
- Center the content on the home page
- Give the silhouette googly eyes
- Give silhouette eyes a white-ish background
- Display a sigil below each post
- Scale, simplify and center the home page
- Center the home page vertically
- Add breadcrumb to blog index, style the list
- Reuse the footer with sigil on the blog index page
- Mark broken links, so they don't break the build
- Provide a verification for Mastodon
- Make the sigil a link home, with a cute animation
- Correct sigil link
Replace Zola Playground with tad-lispy.com
On by
index 404dbd0..5ec0fa6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,5 @@
=variables:
- project_name: "zola-playground"
+ project_name: "tad-lispy.com"
=
=test:
= stage: testindex 9cf214d..5521642 100644
--- a/config.toml
+++ b/config.toml
@@ -1,5 +1,5 @@
=# The URL the site will be built for
-base_url = "https://tad-lispy.gitlab.io/zola-playground/"
+base_url = "https://tad-lispy.com/"
=
=# Whether to automatically compile all Sass files in the sass directory
=compile_sass = trueindex d73d345..135001c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,5 +1,5 @@
={
- description = "Playing with the Zola static site generator";
+ description = "The personal website of Tad Lispy";
=
= inputs = {
= nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
@@ -9,7 +9,7 @@
= outputs = { self, nixpkgs, flake-utils }:
= flake-utils.lib.eachDefaultSystem (system:
= let
- project-name = "zola-playground";
+ project-name = "tad-lispy.com";
= overlays = [ ];
= pkgs = import nixpkgs {
= inherit system overlays;index e9ba3d3..15ba319 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -3,8 +3,10 @@
= <head>
= <meta charset="utf-8">
= <meta http-equiv="x-ua-compatible" content="ie=edge">
- <title>Tad Zola Playground</title>
- <meta name="description" content="Playing with Zola">
+ <title>The Tad Website</title>
+
+ <!-- TODO: Fetch description from a markdown frontmatter -->
+ <meta name="description" content="Hello, my name is Tad. I'm a web and mobile developer.">
= <meta name="viewport" content="width=device-width, initial-scale=1">
= <link rel="stylesheet" href="{{ get_url(path = "/style.css") }}" type="text/css" media="screen" />
=index fb2a3dc..2bfd1af 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,7 +1,7 @@
={% extends "base.html" %}
=
={% block content %}
-<h1 class="title">Welcome to the Zola playground!!!</h1>
+<h1 class="title">Welcome to the <strong>Tad Website</strong>.</h1>
=
=<p>See the <a href="{{ get_url(path='@/blog/_index.md') }}">blog posts</a>.</p>
={% endblock content %}Port content of the home page
On by
new file mode 100644
index 0000000..04fb81f
--- /dev/null
+++ b/content/_index.md
@@ -0,0 +1,25 @@
+---
+description: "Personal website of Tad Lispy"
+title: "Tad Lispy"
+extra:
+ links:
+ - href: "blog/"
+ label: Blog
+ - href: "https://gitlab.com/tad-lispy"
+ label: GitLab
+ - href: "https://github.com/tad-lispy"
+ label: GitHub
+ - href: "https://stackoverflow.com/users/1151982/tad-lispy?tab=profile"
+ label: StackOverflow
+ - href: "https://chaos.social/@lazurski"
+ label: Mastodon
+ - href: "https://linkedin.com/in/lazurski"
+ label: LinkedIn
+---
+
+**Hello**, my name is **Tad**. I'm a **web and mobile developer**.
+
+
+
+You can hire me through my company [Software Garden](https://software.garden/). We are based in the wonderful Amsterdam, the Netherlands.
+new file mode 100644
index 0000000..65d412e
Binary files /dev/null and b/content/tad-lispy.png differindex 15ba319..df575bf 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,22 +1,27 @@
+{%- block variables -%}
+{#- Default values for variables that can be used in this template -#}
+
+{%- set description = "Personal website of Tad Lispy" -%}
+{%- set title = "Tad Lispy" -%}
+
+{%- endblock variables -%}
+
=<!doctype html>
=<html class="no-js" lang="en">
= <head>
= <meta charset="utf-8">
= <meta http-equiv="x-ua-compatible" content="ie=edge">
- <title>The Tad Website</title>
+ <title>{{ title }}</title>
=
- <!-- TODO: Fetch description from a markdown frontmatter -->
- <meta name="description" content="Hello, my name is Tad. I'm a web and mobile developer.">
+ <meta name="description" content="{{ description }}">
= <meta name="viewport" content="width=device-width, initial-scale=1">
= <link rel="stylesheet" href="{{ get_url(path = "/style.css") }}" type="text/css" media="screen" />
=
= <!-- TODO: Place favicon.ico in the root directory -->
=
= </head>
- <body>
- <main class="container">
- {% block content %}{% endblock %}
- </main>
-
+ <body class="container">
+ {% block content %}
+ {% endblock content %}
= </body>
=</html>index 2bfd1af..08a50c0 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,7 +1,28 @@
={% extends "base.html" %}
=
+{%- block variables -%}
+{#- These variables are used in base.html. The super call allows inheritance. -#}
+
+{{- super() -}}
+
+{%- set description = section.description -%}
+{%- set title = section.title -%}
+
+{%- endblock variables -%}
+
+<p>What if I have content here?</p>
+
={% block content %}
-<h1 class="title">Welcome to the <strong>Tad Website</strong>.</h1>
+ <main>
+ {{ section.content | safe }}
+ </main>
=
-<p>See the <a href="{{ get_url(path='@/blog/_index.md') }}">blog posts</a>.</p>
+ <footer>
+ <p>Find my content:</p>
+ <ul>
+ {% for link in section.extra.links %}
+ <li><a href="{{ link.href }}">{{ link.label }}</a></li>
+ {% endfor %}
+ </ul>
+ </footer>
={% endblock content %}Write a comment about dumping all the context
On by
Helpful in development.
index df575bf..8f525f7 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -23,5 +23,17 @@
= <body class="container">
= {% block content %}
= {% endblock content %}
+
+ {# Fix the closing comment bracket on this line to dump available data # }
+ {%- if config.mode == "serve" %}
+ <article>
+ <header>Template context</header>
+ <pre><code>
+ {{- __tera_context -}}
+ </code></pre>
+ </article>
+ {% endif -%}
+ {# #}
+
= </body>
=</html>Import blog posts from old website
On by
new file mode 100644
index 0000000..fff3d25
--- /dev/null
+++ b/content/blog/2015-04-28-npm-install-coffee-from-git/index.md
@@ -0,0 +1,38 @@
+---
+title: How to Install NPM Packages Written in CoffeeScript from a Git Repo
+---
+
+> NOTE: Eventually it lead me to create <https://github.com/lzrski/npm-git-install>
+
+IDEA: Use npm `install` script with value same as `prepublish`, but this would have to be changed before publishing to registry.
+
+It is said to be an anti-pattern
+
+See <https://docs.npmjs.com/misc/scripts#common-uses>
+
+An issue by isaacs [run `prepublish` for git url packages](https://github.com/npm/npm/issues/3055)
+
+Installing it from a directory (`../package/`) runs `prepublish`. WTF?
+
+> IDEA: Make a gitinstall gulp task, which will:
+
+- npm install (to get dev dependencies)
+- run build task
+
+Would it be possible use .npmignore then?
+
+The problem is that gulp is in dev-dependencies. So npm install has to be in install script, which seems a little strange.
+
+Result: endless loop (npm install triggers install script; obviously).
+
+> NOTE: Installing from local directory triggers prepublish
+
+Maybe installing from git should work like that:
+
+1. clone to tmp dir
+2. install from tmp dir
+3. remove tmp dir
+
+This doesn't seem very hard to do.
+
+> TODO: Ask in #3055 is this good approachnew file mode 100644
index 0000000..8ceabb9
--- /dev/null
+++ b/content/blog/2015-07-12-an-idea-for-a-blog/index.md
@@ -0,0 +1,45 @@
+---
+title: An idea for a blog
+---
+
+Obviously I have this, or some other idea for a long while. Now it's time to pinpoint it.
+
+The blog will be about web craftsmanship. I want to write on regular basis (no less then once a week) about things I'm learning in this field.
+
+I want to create and maintain my own engine for this. The reasons are:
+
+- it will be a nice playground development,
+
+- I will have everything my way.
+
+- I will be able to write about developing my blog on my blog.
+
+# Technical considerations
+
+- Isomorphic app
+
+ Rendered to static files on build time. Raw markdown and metadata should be hosted along compiled HTML for client side routing and rendering.
+
+- Adhere to *progressive enhancement* principles
+
+- Git integrated
+
+ Both engine and content should be version controlled. There should be two separate repos. Eventually I want to post and update via `git push`.
+
+ As much metadata as possible should be gathered from repo. This would ideally include:
+
+ - Publication date (i.e. the [date given post was merged to master](http://stackoverflow.com/questions/11327535/finding-the-date-time-a-file-appeared-in-a-git-branch)?)
+ - Editing history
+ - Authors (if there were changes merged from pull requests)
+
+# Nice to have features
+
+- Twitter integration
+
+ Display my tweets and retweets in a feed among blog posts.
+
+ Post updates to Twitter automatically.
+
+- Stack Exchange integration
+
+ Display my Stack Exchange activity (questions and answers) in a feed among blog posts.new file mode 100644
index 0000000..1274ffe
--- /dev/null
+++ b/content/blog/2015-07-29-react-component-testing/index.md
@@ -0,0 +1,17 @@
+---
+title: How to Test if a Given Value is a React.js Component
+---
+
+It may seem trivial, but it's a bit tricky to test for that. The [documentation for React's Test Utils](https://facebook.github.io/react/docs/test-utils.html) is lacking examples (as of the time of writing).
+
+By comparing it with [Virtual DOM glossary](https://facebook.github.io/react/docs/glossary.html#react-components) one can assume that instantiating it with new keyword and then checking with `TestUtils.isCompositeComponent` is a way to go.
+
+That's how I do it in CoffeScript:
+
+``` coffee
+it "is a react component", ->
+ # ReactComponents can be instantiated with new keyword for test purposes
+ # See https://facebook.github.io/react/docs/glossary.html#react-components
+ expect (TestUtils.isCompositeComponent new CheckboxSelect)
+ .to.be.ok
+```new file mode 100644
index 0000000..ef18572
--- /dev/null
+++ b/content/blog/2017-06-29-managing-access-to-npm-private-packages/index.md
@@ -0,0 +1,9 @@
+---
+title: Managing access to private NPM repositories
+---
+
+Make private package accessible to members of deployment team from command line:
+
+``` sh
+npm access grant read-only your-organisation:deployment @your-organisation/your-package
+```new file mode 100644
index 0000000..c5bed44
--- /dev/null
+++ b/content/blog/2017-07-20-how-to-setup-ssh-key-limited-to-creating-a-tunnel/index.md
@@ -0,0 +1,39 @@
+---
+title: How to Setup SSH Key limited to Creating a Tunnel
+---
+
+For a given key I was intending to prevent **any** interaction **except** for starting an SSH tunnel to a particular local port. Turns out that for each key in `~/.ssh/authorized_keys` you can add so called *login options*, by preppending them to the key, like that:
+
+ option="value",option-without-value,another-option <KEY ...> <COMMENT>
+
+This combination of options seem to do the trick:
+
+ command="",restrict,port-forwarding,permitopen="localhost:80"
+
+Let me go through each of them individually:
+
+- `command=""`
+
+ disallows any command to be executed using this key
+
+- `restrict`
+
+ Disable all options, such as TTY allocation, port forwarding, agent forwarding, user-rc, and X11 forwarding all at once.
+
+- `port-forwarding`
+
+ Enables TCP port forwarding, but see below.
+
+- `permitopen="localhost:80"`
+
+ Limits TCP port forwarding to local port `80`. That's the **only** thing this key should allow.
+
+So in total it's:
+
+ command="",restrict,port-forwarding,permitopen="localhost:80" ssh-rsa AAAAB3NzaC1yc2EAAA[...]3c7rmJT5/ tunnel@a.example.com
+
+Make sure it's all in one line and there are is no whitespace between the options.
+
+I've been able to figure this out mainly by reading [Client Configuration Files chapter of OpenSSH WikiBook](https://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files), so the majority of credit goes to it's authors (Lars Noodén et al.). Missing part was `port-forwarding` - without it forwarding is forbidden even though `permitopen` would suggest otherwise.
+
+Here is some more background: <https://superuser.com/a/1231232/195460>new file mode 100644
index 0000000..aabbdaa
--- /dev/null
+++ b/content/blog/2017-07-21-facebook-flow-in-an-alpine-node-docker-container/index.md
@@ -0,0 +1,57 @@
+---
+title: Running Facebook's Flow in an Alpine Node Container
+---
+
+Create a `Dockerfile` and an `npmrc` template
+
+Creating the Dockerfile was more chalanging than expected. To make flow work in Alpine we need `glibc`. To get glibc from GitHub we need `wget` with SSL support (and ca-certs).
+
+All in all this `Dockerfile` works:
+
+``` dockerfile
+FROM node:8-alpine
+
+# Install bash (required by scripts/*) and GNU wget
+RUN apk update \
+ && apk add \
+ bash \
+ wget \
+ ca-certificates
+
+# Install glibc comaptibility for alpine (required by flow)
+RUN wget \
+ --quiet \
+ --output-document=/etc/apk/keys/sgerrand.rsa.pub \
+ https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub \
+ && wget \
+ --quiet \
+ https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-2.25-r0.apk \
+ && apk add glibc-2.25-r0.apk
+
+# Slim the image by removing APK cache
+RUN rm -rf /var/cache/apk/*
+
+USER node
+# This build time argument should be passed by build script.
+# See common.sh, jenkins-build.sh and .npmrc files
+ARG npm_token
+
+WORKDIR /home/node
+COPY package.json ./
+COPY package-lock.json ./
+COPY .flowconfig ./.flowconfig
+COPY npmrc.template ./.npmrc
+COPY src ./src
+COPY scripts ./scripts
+
+RUN npm install
+
+RUN rm ./.npmrc
+
+CMD npm start
+```
+
+Sources:
+
+- <https://github.com/facebook/flow/issues/3649#issuecomment-308070179>
+- <https://github.com/google/cadvisor/issues/1131#issuecomment-229108215>new file mode 100644
index 0000000..943a46a
--- /dev/null
+++ b/content/blog/2017-08-04-node-promise-race-timeout/index.md
@@ -0,0 +1,48 @@
+---
+title: Using Promise.race in Node.js to enforce a timeout
+---
+
+It is a little bit more tricky than this:
+
+``` javascript
+const task = new Promise((resolve, reject) =>
+ setTimeout(resolve, 5000, 'done')
+)
+
+const timeout = new Promise((resolve, reject) =>
+ setTimeout(reject, 100, 'timed out')
+)
+
+Promise
+ .race([
+ timeout,
+ task
+ ])
+ .then(console.log)
+ .catch(console.error);
+```
+
+If you run this, you will find out that the process terminates only after both promises are done (i.e. after around 5 seconds):
+
+``` text
+$ time node src/race.js
+timed out
+node src/race.js 0,36s user 0,03s system 7% cpu 5,370 total
+```
+
+In fact, if one of them is never resolved (and that's exactly what we expect, otherwise we would not introduce a timeout here), the process will hang forever. Seems like \`Promise.race\` is not doing a proper cleanup. The \`task\` promise remains pending (event though it's eventual value will never propagate through the chain). This makes the runtime wait for it's resolution before it terminates.
+
+Unfortunately I don't know of any elegant workaround for this. Currently I simply call \`process.exit\` somewhere down the chain:
+
+``` javascript
+Promise
+ .race([
+ timeout,
+ task
+ ])
+ .then(console.log)
+ .catch(console.error);
+ .then(process.exit)
+```
+
+In my book it's not an elegant solution.new file mode 100644
index 0000000..53e5364
--- /dev/null
+++ b/content/blog/2017-08-04-promise-then-undefined/index.md
@@ -0,0 +1,28 @@
+---
+title: Passing undefined to a JavaScript promise
+---
+
+Consider this simple snippet:
+
+``` javascript
+Promise
+ .resolve('JavaScript, why are you doing this to me?')
+ .then(console.logg)
+ .catch(console.error)
+```
+
+Note that `console.logg` is `undefined`. What will be printed?
+
+**Nothing**.
+
+The promise will silently resolve to the value of
+
+``` javascript
+'JavaScript, why are you doing this to me?'
+```
+
+Which is a good question. I think it's because it hates me.
+
+It's obviously a developer's mistake. My first thought was that introducing type system (like Flow) would solve this - and it would. But why isn't `then` method of a `Promise` just throwing a type error as soon as anything other than `function` is passed to it?
+
+This leads to silent and hard to spot bugs. Unfortunately in JS community there is a strong attitude of ignoring the errors and going on as if nothing ever happened.new file mode 100644
index 0000000..6954bbd
--- /dev/null
+++ b/content/blog/2017-08-04-weird-aws-region-bug/index.md
@@ -0,0 +1,37 @@
+---
+title: Weird AWS region bug
+---
+
+I've been fighting a weird error coming from AWS SDK for Node.js:
+
+ ConfigError: Missing region in config
+
+I was setting the region like that:
+
+``` javascript
+// Setup AWS SDK
+const AWS = require('aws-sdk');
+
+AWS.config.update({
+ region: aws_region
+});
+```
+
+Turns out that despite the fact that AWS is a singleton, it's config passed to service instances is not.
+
+What is a *service instance*. E.g. this:
+
+``` javascript
+new AWS.SQS()
+```
+
+In other words, SQS instance will have it's config baked in, and subsequent changes to AWS.config won't affect it.
+
+So the order of execution is important. Consider:
+
+``` javascript
+AWS.config.update({ region: A })
+const sqs = new AWS.SQS()
+AWS.config.update({ region: B })
+sqs.sendMessage(...) // the region from the sqs perspective is A!
+```index 66cf43e..3fe7410 100644
--- a/content/blog/_index.md
+++ b/content/blog/_index.md
@@ -1,10 +1,12 @@
=---
-title: "Tad Blog"
+title: "TILT: Things I've Learnt Today"
=sort_by: "date"
=template: "blog.html"
=page_template: "blog-post.html"
=---
=
-Here go Tad writings.
+# TILT <small>Things I've Learnt Today</small>
+
+(┛◉Д◉)┛彡┻━┻
=
=deleted file mode 100644
index 3b465f9..0000000
--- a/content/blog/first.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "First Tad Post"
-date: 2024-02-09
----
-
-Something something something and then we have **a blog**.
-deleted file mode 100644
index 46dab12..0000000
--- a/content/blog/second.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Something Else
-date: 2024-02-10
----
-
-Yesterday I wrote about [something](@/blog/first.md). And now for something _completely_ different.
-
-Here is some Rust:
-
-``` rust
-let rust = Awesome::Cool;
-```
-index 981065f..6451574 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -1,10 +1,12 @@
={% extends "base.html" %}
=
={% block content %}
-<hgroup>
- <h1 class="title">{{ page.title }}</h1>
- <p>{{ page.date }}</p>
-</hgroup>
+<main>
+ <hgroup>
+ <h1 class="title">{{ page.title }}</h1>
+ <p>{{ page.date }}</p>
+ </hgroup>
=
-{{ page.content | safe }}
+ {{ page.content | safe }}
+</main>
={% endblock content %}index 35ccd78..01a670b 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -1,14 +1,26 @@
={% extends "base.html" %}
=
+{%- block variables -%}
+{#- These variables are used in base.html. The super call allows inheritance. -#}
+
+{{- super() -}}
+
+{%- set description = section.description -%}
+{%- set title = section.title ~ " - " ~ title -%}
+
+{%- endblock variables -%}
+
={% block content %}
-<h1 class="title">{{ section.title }}</h1>
-
-<div>
- {{ section.content | safe }}
-</div>
-<ul>
- {% for post in section.pages %}
- <li><a href="{{ post.permalink | safe }}">{{ post.title }}</a></li>
- {% endfor %}
-</ul>
+
+<main>
+ <div>
+ {{ section.content | safe }}
+ </div>
+
+ <ul>
+ {% for post in section.pages %}
+ <li><a href="{{ post.permalink | safe }}">{{ post.title }}</a></li>
+ {% endfor %}
+ </ul>
+</main>
={% endblock content %}Remove the angry bear sigil from the blog section
On by
index 3fe7410..2f10313 100644
--- a/content/blog/_index.md
+++ b/content/blog/_index.md
@@ -7,6 +7,5 @@ page_template: "blog-post.html"
=
=# TILT <small>Things I've Learnt Today</small>
=
-(┛◉Д◉)┛彡┻━┻
=
=index 01a670b..3e147b2 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -23,4 +23,5 @@
= {% endfor %}
= </ul>
=</main>
+
={% endblock content %}Unware the blog section content
On by
No need for a div there.
index 3e147b2..f6a769d 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -13,9 +13,7 @@
={% block content %}
=
=<main>
- <div>
- {{ section.content | safe }}
- </div>
+ {{ section.content | safe }}
=
= <ul>
= {% for post in section.pages %}Display a date in blog listing
On by
index f6a769d..f6800b2 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -17,7 +17,10 @@
=
= <ul>
= {% for post in section.pages %}
- <li><a href="{{ post.permalink | safe }}">{{ post.title }}</a></li>
+ <li>
+ <date>{{ post.date }}</date>
+ <a href="{{ post.permalink | safe }}">{{ post.title }}</a>
+ </li>
= {% endfor %}
= </ul>
=</main>Update the npm-git-install post
On by
index fff3d25..66b1e60 100644
--- a/content/blog/2015-04-28-npm-install-coffee-from-git/index.md
+++ b/content/blog/2015-04-28-npm-install-coffee-from-git/index.md
@@ -2,7 +2,9 @@
=title: How to Install NPM Packages Written in CoffeeScript from a Git Repo
=---
=
-> NOTE: Eventually it lead me to create <https://github.com/lzrski/npm-git-install>
+> 2024 update:
+>
+> Working on this problem eventually lead me to create [npm-git-install](https://github.com/lzrski/npm-git-install) helper. The program should not be needed since the introduction of [the `prepare` NPM script](https://docs.npmjs.com/cli/v10/using-npm/scripts#prepare-and-prepublish) in 2017.
=
=IDEA: Use npm `install` script with value same as `prepublish`, but this would have to be changed before publishing to registry.
=
@@ -15,9 +17,9 @@ An issue by isaacs [run `prepublish` for git url packages](https://github.com/np
=Installing it from a directory (`../package/`) runs `prepublish`. WTF?
=
=> IDEA: Make a gitinstall gulp task, which will:
-
-- npm install (to get dev dependencies)
-- run build task
+>
+> - npm install (to get dev dependencies)
+> - run build task
=
=Would it be possible use .npmignore then?
=Add breadcrumbs to blog posts
On by
index 6451574..04e3252 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -2,10 +2,14 @@
=
={% block content %}
=<main>
- <hgroup>
- <h1 class="title">{{ page.title }}</h1>
- <p>{{ page.date }}</p>
- </hgroup>
+ <nav aria-label="breadcrumb">
+ <ul>
+ <li><a href="{{ get_url(path='@/_index.md') }}">Tad Lispy</a></li>
+ <li><a href="{{ get_url(path='@/blog/_index.md') }}">Blog</a></li>
+ <li>{{ page.date }}</li>
+ </ul>
+ </nav>
+ <h1 class="title">{{ page.title }}</h1>
=
= {{ page.content | safe }}
=</main>Support inline markdown in post titles
On by
Mainly for inline code, but might come in handy with emphasize, strong, strikethrough.
The markup is removed in head > title elements.
index 943a46a..7272fc7 100644
--- a/content/blog/2017-08-04-node-promise-race-timeout/index.md
+++ b/content/blog/2017-08-04-node-promise-race-timeout/index.md
@@ -1,5 +1,5 @@
=---
-title: Using Promise.race in Node.js to enforce a timeout
+title: Using `Promise.race` in Node.js to enforce a timeout
=---
=
=It is a little bit more tricky than this:index 53e5364..d51c438 100644
--- a/content/blog/2017-08-04-promise-then-undefined/index.md
+++ b/content/blog/2017-08-04-promise-then-undefined/index.md
@@ -1,5 +1,5 @@
=---
-title: Passing undefined to a JavaScript promise
+title: Passing `undefined` to a JavaScript promise
=---
=
=Consider this simple snippet:index 55c2b50..3f6b9ce 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -1 +1,11 @@
=@import "_picocss/pico.scss";
+
+// Simplify inline code in headers and links
+h1, h2, h3, h4, h5, h6, a {
+ code {
+ background: none;
+ border: none;
+ display: initial;
+ padding: initial;
+ }
+}index 04e3252..84376d0 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -1,5 +1,10 @@
={% extends "base.html" %}
=
+{% block variables %}
+{{ super() }}
+{% set title = page.title | markdown(inline=true) | striptags %}
+{% endblock variables %}
+
={% block content %}
=<main>
= <nav aria-label="breadcrumb">
@@ -9,7 +14,7 @@
= <li>{{ page.date }}</li>
= </ul>
= </nav>
- <h1 class="title">{{ page.title }}</h1>
+ <h1 class="title">{{ page.title | markdown(inline=true) | safe }}</h1>
=
= {{ page.content | safe }}
=</main>index f6800b2..8050042 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -19,7 +19,7 @@
= {% for post in section.pages %}
= <li>
= <date>{{ post.date }}</date>
- <a href="{{ post.permalink | safe }}">{{ post.title }}</a>
+ <a href="{{ post.permalink | safe }}">{{ post.title | markdown(inline=true) | safe }}</a>
= </li>
= {% endfor %}
= </ul>Import the cp / mv to previous directory post
On by
It's really a link to a SuperUser.com question with a bit of comantary.
new file mode 100644
index 0000000..460bbce
--- /dev/null
+++ b/content/blog/2019-03-31-move-files-to-previously-visited-directory.md
@@ -0,0 +1,12 @@
+---
+title: Is there an equivalent of `cd -` for `cp` or `mv`?
+---
+
+Perhaps you know that in Unix shell you can go back and forth between current and previous directory using handy shortcut for the `cd` command:
+
+``` sh
+cd -
+```
+
+But this is `cd` specific. Is there a way to copy or move a file from current directory to the previous? Turns out there is. [Read more](https://superuser.com/q/1419624/195460).
+Import the Shape Up post
On by
With an update.
new file mode 100644
index 0000000..383f82d
--- /dev/null
+++ b/content/blog/2019-08-27-shape-up-by-ryan-singer/index.md
@@ -0,0 +1,7 @@
+---
+title: Shape Up by Ryan Singer from Basecamp
+---
+
+> 2024 Update: To large extent [Software Garden](https://software.garden/) was an attempt to implement the ideas from Singer's book, but adapted to working with clients.
+
+Oh my! This book is the best. I want to work like that! You can [read the book here](https://basecamp.com/shapeup).Import "Why is this so terrible" post
On by
new file mode 100644
index 0000000..45957f0
--- /dev/null
+++ b/content/blog/2020-01-16-why-is-this-so-terrible/index.md
@@ -0,0 +1,5 @@
+---
+title: Why is `this` so terrible
+---
+
+Recently at a meetup in Utrecht I gave a short presentation: *Elements of Functional Programming for React.js Developers*. See [the slides](https://tad-lispy.gitlab.io/why-is-this-so-terrible/).Create some favicons and the web manifest
On by
Thanks to the amazing https://realfavicongenerator.net/.
new file mode 100644
index 0000000..24b6668
Binary files /dev/null and b/static/android-chrome-192x192.png differnew file mode 100644
index 0000000..4a598a6
Binary files /dev/null and b/static/android-chrome-384x384.png differnew file mode 100644
index 0000000..0bfaa11
Binary files /dev/null and b/static/apple-touch-icon.png differnew file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/static/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square150x150logo src="/mstile-150x150.png"/>
+ <TileColor>#da532c</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>new file mode 100644
index 0000000..5eac05c
Binary files /dev/null and b/static/favicon-16x16.png differnew file mode 100644
index 0000000..c124eca
Binary files /dev/null and b/static/favicon-32x32.png differnew file mode 100644
index 0000000..1c54a47
Binary files /dev/null and b/static/favicon.ico differnew file mode 100644
index 0000000..dbccc31
Binary files /dev/null and b/static/mstile-150x150.png differnew file mode 100644
index 0000000..cf6eb9c
--- /dev/null
+++ b/static/safari-pinned-tab.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.0"
+ width="403.000000pt"
+ height="403.000000pt"
+ viewBox="0 0 403.000000 403.000000"
+ preserveAspectRatio="xMidYMid meet"
+ id="svg2"
+ sodipodi:docname="safari-pinned-tab.svg"
+ inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="namedview2"
+ pagecolor="#505050"
+ bordercolor="#ffffff"
+ borderopacity="1"
+ inkscape:showpageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="1"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="pt"
+ inkscape:zoom="1.0040741"
+ inkscape:cx="28.38436"
+ inkscape:cy="270.39837"
+ inkscape:window-width="1920"
+ inkscape:window-height="1011"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g2" />
+ <metadata
+ id="metadata1">
+Created by potrace 1.14, written by Peter Selinger 2001-2017
+</metadata>
+ <g
+ transform="translate(0.000000,403.000000) scale(0.100000,-0.100000)"
+ fill="#000000"
+ stroke="none"
+ id="g2">
+ <path
+ d="m 2528,3943 c -9,-10 -44,-92 -78,-183 -34,-91 -68,-171 -74,-178 -10,-10 -21,-9 -60,4 -44,15 -51,15 -102,-1 -64,-20 -85,-46 -92,-114 l -4,-47 63,-12 c 58,-10 68,-16 110,-62 l 46,-51 12,-112 c 6.8459,-63.884 11.6463,-127.7933 10,-192 l -32,65 c -41,85 -108,151 -167,167 -126,33 -214,24 -331,-37 l -80,-41 -106,95 c -59,53 -112,96 -119,96 -34,0 -13,-34 74,-122 53,-54 91,-98 85,-98 -2.5134,0 -43.0118,26.0078 -119,76 -92,60 -133,78 -150,63 -23,-19 -16,-34 21,-52 51.6341,-28.7862 139.2465,-57.2199 196,-128 9,-18 7,-19 -18,-13 -15,4 -50,15 -78,25 -44.2923,7.4448 -230.4274,91.2673 -259,44 -7,-18 13,-27 99,-45 72,-14 163,-46 190,-66 18,-13 18,-17 5,-47 -7,-17 -15,-60 -17,-93 -4,-52 0,-73 28,-140 18,-44 45,-100 61,-125 15,-25 28,-49 28,-52 0,-7.6927 -170,-56.2758 -170,-75 1,-16 29,-43 67,-64 l 41,-24 -111,-86 c -185,-143 -185,-143 -165,-164 16,-17 20,-15 80,31 35,27 80,64 101,82 21,19 105.4072,92.1763 111.4072,89.1763 11,-8 -53.4072,-70.1763 -128.4072,-170.1763 -46,-62 -57,-82 -49,-95 22,-34 40,-21 102,71 60,91 129,174 137,165 2,-2 -9,-48 -26,-102 -32,-103 -30,-125 12,-125 23,0 22,-1 63,156 36,142 34,141 86,32 25,-53 26,-50 -41,-157 -22,-34 -40,-65 -40,-68 0,-2 -11,-19 -24,-36 -49,-66 -132,-214 -151,-269 -17,-53 -22,-58 -48,-58 -16,0 -43,6 -60,14 -60,27 -175,56 -219,56 -75.9326,0 -1353.60186,-560 -1190,-560 202.42763,-17.9214 404.85774,-39.8296 607,-62 l 234,96 c 129,53 236,96 238,96 1,0 3,-37 3,-83 v -84 L 983,1101 C 852.99288,1039.1673 327.82997,778.24496 311,753 c 23.50034,-28.84967 46.58673,-55.58673 71,-80 191.47827,37.71542 370.03204,79.28411 583,132 326,79 302,76 354,37 20,-15 50,-34 66,-42 l 30,-13 C 1292.2787,744.97091 1204.161,717.31675 1071,674 903.7751,496.06449 738.2159,317.90369 580,132 c 281.67109,92.57398 520.4309,166.23787 780,273 316,131 320,133 428,275 73.0294,96.5873 100.3349,129.04179 125,150 51.7891,44.00574 133.5285,71.10084 197,92 45.9264,-39.95969 81.5482,-96.36577 148,-88 80.876,9.70512 117,25.13993 117,151 l 125,43 C 3580.1282,1316.3242 4116.017,2044.1893 4017.0564,2194.2438 3894.0053,2341.5666 3469.6925,2479.3096 3075,2374 c -49,-14 -97,-25 -106,-25 -48.488,20.8532 -166.1562,92.9801 -259,130 -1,65 3,370 6,401 -4.2647,74.6696 -19.9664,239.4235 22,285 16,17 47,68 110,186 19,33 46,66 71,83 22,16 61,51 87,78 42,45 46,53 41,85 -7,38 -32,73 -53,73 -30.971,0 -130.7531,-127.583 -190,-121 -30,3 -20,40 40,158 57,111 63,129 55,158 -49.0527,147.8099 -135.4004,-9.6833 -177,-74 -46,-71 -90,-132 -98,-135 -74.1408,-27.4596 61.6681,215.7484 1,284 -23,25 -76,26 -97,3 z"
+ id="path1"
+ sodipodi:nodetypes="cscccccccccccccccscscccccccccccccscccccccccccccscccsccscssccsscccccsccccccsccccccscccccccsccccccc" />
+ </g>
+</svg>new file mode 100644
index 0000000..92760ca
--- /dev/null
+++ b/static/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "Tad Lispy",
+ "short_name": "Tad Lispy",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-384x384.png",
+ "sizes": "384x384",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}index 8f525f7..8a80b5e 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -17,7 +17,13 @@
= <meta name="viewport" content="width=device-width, initial-scale=1">
= <link rel="stylesheet" href="{{ get_url(path = "/style.css") }}" type="text/css" media="screen" />
=
- <!-- TODO: Place favicon.ico in the root directory -->
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ get_url(path='/apple-touch-icon.png' )}}">
+ <link rel="icon" type="image/png" sizes="32x32" href="{{ get_url(path = '/favicon-32x32.png') }}">
+ <link rel="icon" type="image/png" sizes="16x16" href="{{ get_url(path = '/favicon-16x16.png') }}">
+ <link rel="manifest" href="{{ get_url(path = '/site.webmanifest') }}">
+ <link rel="mask-icon" href="{{ get_url(path = '/safari-pinned-tab.svg') }}" color="#5bbad5">
+ <meta name="msapplication-TileColor" content="#da532c">
+ <meta name="theme-color" content="#ffffff">
=
= </head>
= <body class="container">Center the content on the home page
On by
To make it so, I prepared a doctored version of the logo, with the circle centered. The templates can now set a class for the html element, so that specialized styles can be applied to certain pages (like the home page in this case). Also, since I needed it for icons, I stored a SVG and PNG versions of silhouette (rocket and krtek only, without the circular hole).
index 04fb81f..478d78c 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -19,7 +19,6 @@ extra:
=
=**Hello**, my name is **Tad**. I'm a **web and mobile developer**.
=
-
+
=
=You can hire me through my company [Software Garden](https://software.garden/). We are based in the wonderful Amsterdam, the Netherlands.
-new file mode 100644
index 0000000..84172c8
Binary files /dev/null and b/content/icon.png differnew file mode 100644
index 0000000..3d5dd61
Binary files /dev/null and b/content/tad-lispy-centered.png differnew file mode 100644
index 0000000..5c53115
Binary files /dev/null and b/content/tad-lispy-silhouette.png differnew file mode 100644
index 0000000..76e6383
--- /dev/null
+++ b/content/tad-lispy-silhouette.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ version="1.0"
+ width="403.000000pt"
+ height="403.000000pt"
+ viewBox="0 0 403.000000 403.000000"
+ preserveAspectRatio="xMidYMid meet"
+ id="svg2"
+ sodipodi:docname="tad-lispy-silhouette.svg"
+ inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="namedview2"
+ pagecolor="#505050"
+ bordercolor="#ffffff"
+ borderopacity="1"
+ inkscape:showpageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="1"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="pt"
+ inkscape:zoom="1.0040741"
+ inkscape:cx="28.38436"
+ inkscape:cy="270.39837"
+ inkscape:window-width="1920"
+ inkscape:window-height="1011"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g2" />
+ <metadata
+ id="metadata1">
+Created by potrace 1.14, written by Peter Selinger 2001-2017
+</metadata>
+ <g
+ transform="translate(0.000000,403.000000) scale(0.100000,-0.100000)"
+ fill="#000000"
+ stroke="none"
+ id="g2">
+ <path
+ d="m 2528,3943 c -9,-10 -44,-92 -78,-183 -34,-91 -68,-171 -74,-178 -10,-10 -21,-9 -60,4 -44,15 -51,15 -102,-1 -64,-20 -85,-46 -92,-114 l -4,-47 63,-12 c 58,-10 68,-16 110,-62 l 46,-51 12,-112 c 6.8459,-63.884 11.6463,-127.7933 10,-192 l -32,65 c -41,85 -108,151 -167,167 -126,33 -214,24 -331,-37 l -80,-41 -106,95 c -59,53 -112,96 -119,96 -34,0 -13,-34 74,-122 53,-54 91,-98 85,-98 -2.5134,0 -43.0118,26.0078 -119,76 -92,60 -133,78 -150,63 -23,-19 -16,-34 21,-52 51.6341,-28.7862 139.2465,-57.2199 196,-128 9,-18 7,-19 -18,-13 -15,4 -50,15 -78,25 -44.2923,7.4448 -230.4274,91.2673 -259,44 -7,-18 13,-27 99,-45 72,-14 163,-46 190,-66 18,-13 18,-17 5,-47 -7,-17 -15,-60 -17,-93 -4,-52 0,-73 28,-140 18,-44 45,-100 61,-125 15,-25 28,-49 28,-52 0,-7.6927 -170,-56.2758 -170,-75 1,-16 29,-43 67,-64 l 41,-24 -111,-86 c -185,-143 -185,-143 -165,-164 16,-17 20,-15 80,31 35,27 80,64 101,82 21,19 105.4072,92.1763 111.4072,89.1763 11,-8 -53.4072,-70.1763 -128.4072,-170.1763 -46,-62 -57,-82 -49,-95 22,-34 40,-21 102,71 60,91 129,174 137,165 2,-2 -9,-48 -26,-102 -32,-103 -30,-125 12,-125 23,0 22,-1 63,156 36,142 34,141 86,32 25,-53 26,-50 -41,-157 -22,-34 -40,-65 -40,-68 0,-2 -11,-19 -24,-36 -49,-66 -132,-214 -151,-269 -17,-53 -22,-58 -48,-58 -16,0 -43,6 -60,14 -60,27 -175,56 -219,56 -75.9326,0 -1353.60186,-560 -1190,-560 202.42763,-17.9214 404.85774,-39.8296 607,-62 l 234,96 c 129,53 236,96 238,96 1,0 3,-37 3,-83 v -84 L 983,1101 C 852.99288,1039.1673 327.82997,778.24496 311,753 c 23.50034,-28.84967 46.58673,-55.58673 71,-80 191.47827,37.71542 370.03204,79.28411 583,132 326,79 302,76 354,37 20,-15 50,-34 66,-42 l 30,-13 C 1292.2787,744.97091 1204.161,717.31675 1071,674 903.7751,496.06449 738.2159,317.90369 580,132 c 281.67109,92.57398 520.4309,166.23787 780,273 316,131 320,133 428,275 73.0294,96.5873 100.3349,129.04179 125,150 51.7891,44.00574 133.5285,71.10084 197,92 45.9264,-39.95969 81.5482,-96.36577 148,-88 80.876,9.70512 117,25.13993 117,151 l 125,43 C 3580.1282,1316.3242 4116.017,2044.1893 4017.0564,2194.2438 3894.0053,2341.5666 3469.6925,2479.3096 3075,2374 c -49,-14 -97,-25 -106,-25 -48.488,20.8532 -166.1562,92.9801 -259,130 -1,65 3,370 6,401 -4.2647,74.6696 -19.9664,239.4235 22,285 16,17 47,68 110,186 19,33 46,66 71,83 22,16 61,51 87,78 42,45 46,53 41,85 -7,38 -32,73 -53,73 -30.971,0 -130.7531,-127.583 -190,-121 -30,3 -20,40 40,158 57,111 63,129 55,158 -49.0527,147.8099 -135.4004,-9.6833 -177,-74 -46,-71 -90,-132 -98,-135 -74.1408,-27.4596 61.6681,215.7484 1,284 -23,25 -76,26 -97,3 z"
+ id="path1"
+ sodipodi:nodetypes="cscccccccccccccccscscccccccccccccscccccccccccccscccsccscssccsscccccsccccccsccccccscccccccsccccccc" />
+ </g>
+</svg>index 3f6b9ce..9064f0a 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -9,3 +9,7 @@ h1, h2, h3, h4, h5, h6, a {
= padding: initial;
= }
=}
+
+html.home main {
+ text-align: center;
+}index 8a80b5e..9e81d82 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,13 +1,14 @@
={%- block variables -%}
={#- Default values for variables that can be used in this template -#}
=
+{%- set page_class = "" %}
={%- set description = "Personal website of Tad Lispy" -%}
={%- set title = "Tad Lispy" -%}
=
={%- endblock variables -%}
=
=<!doctype html>
-<html class="no-js" lang="en">
+<html class="no-js {{ page_class }}" lang="en">
= <head>
= <meta charset="utf-8">
= <meta http-equiv="x-ua-compatible" content="ie=edge">index 08a50c0..df4a8e1 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -5,6 +5,7 @@
=
={{- super() -}}
=
+{%- set page_class = "home" %}
={%- set description = section.description -%}
={%- set title = section.title -%}
=Give the silhouette googly eyes
On by
Also scale it to 360px for easy divisibility.
index 5c53115..81b1baa 100644
Binary files a/content/tad-lispy-silhouette.png and b/content/tad-lispy-silhouette.png differindex 76e6383..4815d5f 100644
--- a/content/tad-lispy-silhouette.svg
+++ b/content/tad-lispy-silhouette.svg
@@ -1,19 +1,101 @@
=<?xml version="1.0" encoding="UTF-8" standalone="no"?>
=<svg
= version="1.0"
- width="403.000000pt"
- height="403.000000pt"
- viewBox="0 0 403.000000 403.000000"
- preserveAspectRatio="xMidYMid meet"
+ width="360"
+ height="360"
+ viewBox="0 0 360 360"
+ preserveAspectRatio="xMidYMid"
= id="svg2"
= sodipodi:docname="tad-lispy-silhouette.svg"
= inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+ inkscape:export-filename="tad-lispy-silhouette.png"
+ inkscape:export-xdpi="192"
+ inkscape:export-ydpi="192"
= xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
= xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
= xmlns="http://www.w3.org/2000/svg"
= xmlns:svg="http://www.w3.org/2000/svg">
= <defs
- id="defs2" />
+ id="defs2">
+ <inkscape:path-effect
+ effect="powerstroke"
+ id="path-effect10"
+ is_visible="true"
+ lpeversion="1.3"
+ scale_width="1"
+ interpolator_type="CentripetalCatmullRom"
+ interpolator_beta="0.75"
+ start_linecap_type="round"
+ end_linecap_type="round"
+ offset_points="2.0777475,0.9150772"
+ linejoin_type="spiro"
+ miter_limit="4"
+ not_jump="true"
+ sort_points="true"
+ message="<b>Ctrl + click</b> on existing node and move it" />
+ <inkscape:path-effect
+ effect="simplify"
+ id="path-effect9"
+ is_visible="true"
+ lpeversion="1.3"
+ threshold="0.014201184"
+ steps="1"
+ smooth_angles="0"
+ helper_size="0"
+ simplify_individual_paths="false"
+ simplify_just_coalesce="false"
+ step="1" />
+ <inkscape:path-effect
+ effect="simplify"
+ id="path-effect7"
+ is_visible="true"
+ lpeversion="1.3"
+ threshold="96.1538"
+ steps="1"
+ smooth_angles="360"
+ helper_size="0"
+ simplify_individual_paths="false"
+ simplify_just_coalesce="false" />
+ <inkscape:path-effect
+ effect="powerstroke"
+ id="path-effect6"
+ is_visible="true"
+ lpeversion="1.3"
+ scale_width="1"
+ interpolator_type="CentripetalCatmullRom"
+ interpolator_beta="0.75"
+ start_linecap_type="round"
+ end_linecap_type="round"
+ offset_points="3.1002591,0.9150772"
+ linejoin_type="spiro"
+ miter_limit="4"
+ not_jump="true"
+ sort_points="true"
+ message="<b>Ctrl + click</b> on existing node and move it" />
+ <inkscape:path-effect
+ effect="simplify"
+ id="path-effect5"
+ is_visible="true"
+ lpeversion="1.3"
+ threshold="0.014201184"
+ steps="1"
+ smooth_angles="0"
+ helper_size="0"
+ simplify_individual_paths="false"
+ simplify_just_coalesce="false"
+ step="1" />
+ <inkscape:path-effect
+ effect="simplify"
+ id="path-effect4"
+ is_visible="true"
+ lpeversion="1.3"
+ threshold="96.1538"
+ steps="1"
+ smooth_angles="360"
+ helper_size="0"
+ simplify_individual_paths="false"
+ simplify_just_coalesce="false" />
+ </defs>
= <sodipodi:namedview
= id="namedview2"
= pagecolor="#505050"
@@ -23,28 +105,22 @@
= inkscape:pageopacity="0"
= inkscape:pagecheckerboard="1"
= inkscape:deskcolor="#d1d1d1"
- inkscape:document-units="pt"
- inkscape:zoom="1.0040741"
- inkscape:cx="28.38436"
- inkscape:cy="270.39837"
+ inkscape:document-units="px"
+ inkscape:zoom="2.0490074"
+ inkscape:cx="154.95307"
+ inkscape:cy="174.96276"
= inkscape:window-width="1920"
= inkscape:window-height="1011"
= inkscape:window-x="0"
= inkscape:window-y="0"
= inkscape:window-maximized="1"
- inkscape:current-layer="g2" />
+ inkscape:current-layer="svg2" />
= <metadata
= id="metadata1">
=Created by potrace 1.14, written by Peter Selinger 2001-2017
=</metadata>
- <g
- transform="translate(0.000000,403.000000) scale(0.100000,-0.100000)"
- fill="#000000"
- stroke="none"
- id="g2">
- <path
- d="m 2528,3943 c -9,-10 -44,-92 -78,-183 -34,-91 -68,-171 -74,-178 -10,-10 -21,-9 -60,4 -44,15 -51,15 -102,-1 -64,-20 -85,-46 -92,-114 l -4,-47 63,-12 c 58,-10 68,-16 110,-62 l 46,-51 12,-112 c 6.8459,-63.884 11.6463,-127.7933 10,-192 l -32,65 c -41,85 -108,151 -167,167 -126,33 -214,24 -331,-37 l -80,-41 -106,95 c -59,53 -112,96 -119,96 -34,0 -13,-34 74,-122 53,-54 91,-98 85,-98 -2.5134,0 -43.0118,26.0078 -119,76 -92,60 -133,78 -150,63 -23,-19 -16,-34 21,-52 51.6341,-28.7862 139.2465,-57.2199 196,-128 9,-18 7,-19 -18,-13 -15,4 -50,15 -78,25 -44.2923,7.4448 -230.4274,91.2673 -259,44 -7,-18 13,-27 99,-45 72,-14 163,-46 190,-66 18,-13 18,-17 5,-47 -7,-17 -15,-60 -17,-93 -4,-52 0,-73 28,-140 18,-44 45,-100 61,-125 15,-25 28,-49 28,-52 0,-7.6927 -170,-56.2758 -170,-75 1,-16 29,-43 67,-64 l 41,-24 -111,-86 c -185,-143 -185,-143 -165,-164 16,-17 20,-15 80,31 35,27 80,64 101,82 21,19 105.4072,92.1763 111.4072,89.1763 11,-8 -53.4072,-70.1763 -128.4072,-170.1763 -46,-62 -57,-82 -49,-95 22,-34 40,-21 102,71 60,91 129,174 137,165 2,-2 -9,-48 -26,-102 -32,-103 -30,-125 12,-125 23,0 22,-1 63,156 36,142 34,141 86,32 25,-53 26,-50 -41,-157 -22,-34 -40,-65 -40,-68 0,-2 -11,-19 -24,-36 -49,-66 -132,-214 -151,-269 -17,-53 -22,-58 -48,-58 -16,0 -43,6 -60,14 -60,27 -175,56 -219,56 -75.9326,0 -1353.60186,-560 -1190,-560 202.42763,-17.9214 404.85774,-39.8296 607,-62 l 234,96 c 129,53 236,96 238,96 1,0 3,-37 3,-83 v -84 L 983,1101 C 852.99288,1039.1673 327.82997,778.24496 311,753 c 23.50034,-28.84967 46.58673,-55.58673 71,-80 191.47827,37.71542 370.03204,79.28411 583,132 326,79 302,76 354,37 20,-15 50,-34 66,-42 l 30,-13 C 1292.2787,744.97091 1204.161,717.31675 1071,674 903.7751,496.06449 738.2159,317.90369 580,132 c 281.67109,92.57398 520.4309,166.23787 780,273 316,131 320,133 428,275 73.0294,96.5873 100.3349,129.04179 125,150 51.7891,44.00574 133.5285,71.10084 197,92 45.9264,-39.95969 81.5482,-96.36577 148,-88 80.876,9.70512 117,25.13993 117,151 l 125,43 C 3580.1282,1316.3242 4116.017,2044.1893 4017.0564,2194.2438 3894.0053,2341.5666 3469.6925,2479.3096 3075,2374 c -49,-14 -97,-25 -106,-25 -48.488,20.8532 -166.1562,92.9801 -259,130 -1,65 3,370 6,401 -4.2647,74.6696 -19.9664,239.4235 22,285 16,17 47,68 110,186 19,33 46,66 71,83 22,16 61,51 87,78 42,45 46,53 41,85 -7,38 -32,73 -53,73 -30.971,0 -130.7531,-127.583 -190,-121 -30,3 -20,40 40,158 57,111 63,129 55,158 -49.0527,147.8099 -135.4004,-9.6833 -177,-74 -46,-71 -90,-132 -98,-135 -74.1408,-27.4596 61.6681,215.7484 1,284 -23,25 -76,26 -97,3 z"
- id="path1"
- sodipodi:nodetypes="cscccccccccccccccscscccccccccccccscccccccccccccscccsccscssccsscccccsccccccsccccccscccccccsccccccc" />
- </g>
+ <path
+ id="path1"
+ style="fill:currentColor;stroke:none;stroke-width:0.0901099;opacity:0.99"
+ d="M 229.07812 7.5527344 C 227.38861 7.5076795 225.72154 8.0047576 224.77539 9.0410156 C 223.9644 9.9421098 220.80983 17.331293 217.74609 25.53125 C 214.68241 33.731209 211.61878 40.939547 211.07812 41.570312 C 210.17708 42.47141 209.18612 42.380408 205.67188 41.208984 C 201.70705 39.857346 201.07602 39.85709 196.48047 41.298828 C 190.71344 43.101015 188.82022 45.444826 188.18945 51.572266 L 187.83008 55.806641 L 193.50586 56.888672 C 198.73218 57.789765 199.63336 58.331532 203.41797 62.476562 L 207.56445 67.070312 L 208.64453 77.164062 C 209.26142 82.920616 209.69518 88.679217 209.54688 94.464844 L 206.66211 88.607422 C 202.96762 80.948121 196.93171 75.000343 191.61523 73.558594 C 180.26148 70.584983 172.32992 71.395905 161.78711 76.892578 L 154.58008 80.587891 L 145.02734 72.027344 C 139.71091 67.251547 134.93547 63.376953 134.30469 63.376953 C 131.24097 63.376953 133.1331 66.439512 140.97266 74.369141 C 145.74844 79.235049 149.17347 83.201172 148.63281 83.201172 C 148.40633 83.201172 144.75548 80.856334 137.9082 76.351562 C 129.61813 70.945001 125.92446 69.324143 124.39258 70.675781 C 122.32005 72.387864 122.95109 73.739361 126.28516 75.361328 C 130.93786 77.95524 138.83322 80.51658 143.94727 86.894531 C 144.75821 88.516503 144.57697 88.607065 142.32422 88.066406 C 140.97257 87.70597 137.818 86.715546 135.29492 85.814453 C 131.3038 85.143607 114.53169 77.590385 111.95703 81.849609 C 111.32626 83.471583 113.12945 84.282325 120.87891 85.904297 C 127.36677 87.165831 135.56703 90.049375 138 91.851562 C 139.62197 93.022984 139.62064 93.382654 138.44922 96.085938 C 137.81845 97.617808 137.09819 101.49317 136.91797 104.4668 C 136.55752 109.15246 136.91834 111.04472 139.44141 117.08203 C 141.06333 121.04687 143.49571 126.09301 144.9375 128.3457 C 146.28914 130.59844 147.46094 132.76092 147.46094 133.03125 C 147.46094 133.72444 132.14258 138.10182 132.14258 139.78906 C 132.23268 141.23082 134.75551 143.66432 138.17969 145.55664 L 141.87305 147.71875 L 131.87109 155.46875 C 115.20086 168.35441 115.20169 168.35383 117.00391 170.24609 C 118.44561 171.77795 118.80635 171.59817 124.21289 167.45312 C 127.36674 165.0202 131.4202 161.68643 133.3125 160.06445 C 135.20482 158.35236 142.81089 151.75898 143.35156 152.0293 C 144.34277 152.75017 138.53944 158.35233 131.78125 167.36328 C 127.63619 172.95009 126.6444 174.7524 127.36523 175.92383 C 129.34765 178.98755 130.96989 177.81544 136.55664 169.52539 C 141.96324 161.32545 148.18146 153.84721 148.90234 154.6582 C 149.08256 154.83841 148.09045 158.98367 146.55859 163.84961 C 143.67511 173.13087 143.85606 175.11328 147.64062 175.11328 C 149.71314 175.11328 149.62385 175.20383 153.31836 161.05664 C 156.56231 148.26108 156.3807 148.34991 161.06641 158.17188 C 163.31911 162.94767 163.41037 162.6786 157.37305 172.32031 C 155.39064 175.38404 153.76758 178.17695 153.76758 178.44727 C 153.76758 178.62749 152.7769 180.15954 151.60547 181.69141 C 147.1901 187.6386 139.71209 200.97365 138 205.92969 C 136.46813 210.70547 136.01669 211.15625 133.67383 211.15625 C 132.23208 211.15625 129.79945 210.61541 128.26758 209.89453 C 122.86099 207.46156 112.49803 204.84961 108.5332 204.84961 C 101.69097 204.84961 -13.439334 255.31055 1.3027344 255.31055 C 19.543372 256.92544 37.785077 258.90068 56 260.89844 L 77.083984 252.24609 C 88.708103 247.47032 98.35103 243.5957 98.53125 243.5957 C 98.62135 243.5957 98.800781 246.93117 98.800781 251.07617 L 98.800781 258.64453 L 85.554688 265.13281 C 73.83982 270.70455 26.518494 294.21546 25.001953 296.49023 C 27.119554 299.08987 29.19857 301.49935 31.398438 303.69922 C 48.65243 300.30068 64.743172 296.55487 83.933594 291.80469 C 113.30925 284.68601 111.14638 284.95646 115.83203 288.4707 C 117.63424 289.82234 120.33755 291.53499 121.7793 292.25586 L 124.48242 293.42773 C 113.42406 297.21497 105.48344 299.70612 93.484375 303.60938 C 78.415836 319.64303 63.496978 335.69755 49.240234 352.44922 C 74.621455 344.10744 96.137744 337.46989 119.52734 327.84961 C 148.00196 316.04527 148.36193 315.86391 158.09375 303.06836 C 164.67436 294.36494 167.13487 291.44128 169.35742 289.55273 C 174.02415 285.58744 181.38998 283.14493 187.10938 281.26172 C 191.24776 284.86247 194.45739 289.94525 200.44531 289.19141 C 207.73302 288.31689 210.98828 286.92713 210.98828 275.58594 L 222.25195 271.71094 C 319.58171 245.7302 367.87045 180.14243 358.95312 166.62109 C 347.8651 153.34595 309.62998 140.93244 274.06445 150.42188 C 269.64911 151.68337 265.32466 152.67578 264.51367 152.67578 C 260.14447 150.79668 249.54187 144.29675 241.17578 140.96094 C 241.08568 135.1038 241.44451 107.62153 241.71484 104.82812 C 241.33055 98.099719 239.91568 83.253358 243.69727 79.146484 C 245.13898 77.614627 247.93246 73.017675 253.60938 62.384766 C 255.32143 59.411154 257.75506 56.438107 260.00781 54.90625 C 261.99022 53.464496 265.50481 50.309911 267.84766 47.876953 C 271.63221 43.822029 271.99158 43.10225 271.54102 40.21875 C 270.91026 36.794591 268.65793 33.640625 266.76562 33.640625 C 263.97487 33.640625 254.98326 45.136157 249.64453 44.542969 C 246.94124 44.27264 247.84346 40.939552 253.25 30.306641 C 258.38621 20.304495 258.92597 18.681536 258.20508 16.068359 C 253.78495 2.7492963 246.00441 16.940788 242.25586 22.736328 C 238.11082 29.134098 234.14665 34.632014 233.42578 34.902344 C 226.745 37.376711 238.98242 15.46066 233.51562 9.3105469 C 232.47943 8.184179 230.76768 7.5977889 229.07812 7.5527344 z M 157.79688 103.62109 A 14.244618 6.6080966 62.853256 0 1 168.43359 113.62891 A 14.244618 6.6080966 62.853256 0 1 169.05273 129.32031 A 14.244618 6.6080966 62.853256 0 1 156.67188 119.66016 A 14.244618 6.6080966 62.853256 0 1 156.05273 103.96875 A 14.244618 6.6080966 62.853256 0 1 157.79688 103.62109 z M 146.54688 110.83008 A 13.205237 5.6417646 62.853256 0 1 156.08789 120.27344 A 13.205237 5.6417646 62.853256 0 1 158.84961 129.33008 L 155.88477 130.44922 A 7.4787016 1.9941163 62.853256 0 0 153.83789 124.27148 A 7.4787016 1.9941163 62.853256 0 0 148.88867 118.4668 A 7.4787016 1.9941163 62.853256 0 0 148.65039 118.52734 A 7.4787016 1.9941163 62.853256 0 0 150.28711 126.0918 A 7.4787016 1.9941163 62.853256 0 0 153.91211 131.19336 L 151.23828 132.20312 A 13.205237 5.6417646 62.853256 0 1 146.04688 125.42188 A 13.205237 5.6417646 62.853256 0 1 145.04102 111.0957 A 13.205237 5.6417646 62.853256 0 1 146.54688 110.83008 z M 159.61133 112.31055 A 7.7483048 2.0767839 62.853256 0 0 159.36328 112.375 A 7.7483048 2.0767839 62.853256 0 0 161.05078 120.2168 A 7.7483048 2.0767839 62.853256 0 0 166.43359 126.16406 A 7.7483048 2.0767839 62.853256 0 0 164.74609 118.32031 A 7.7483048 2.0767839 62.853256 0 0 159.61133 112.31055 z " />
=</svg>index cf6eb9c..09acd7d 100644
--- a/static/safari-pinned-tab.svg
+++ b/static/safari-pinned-tab.svg
@@ -1,50 +1,21 @@
=<?xml version="1.0" encoding="UTF-8" standalone="no"?>
=<svg
= version="1.0"
- width="403.000000pt"
- height="403.000000pt"
- viewBox="0 0 403.000000 403.000000"
- preserveAspectRatio="xMidYMid meet"
+ width="360"
+ height="360"
+ viewBox="0 0 360 360"
+ preserveAspectRatio="xMidYMid"
= id="svg2"
- sodipodi:docname="safari-pinned-tab.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
= xmlns="http://www.w3.org/2000/svg"
= xmlns:svg="http://www.w3.org/2000/svg">
= <defs
= id="defs2" />
- <sodipodi:namedview
- id="namedview2"
- pagecolor="#505050"
- bordercolor="#ffffff"
- borderopacity="1"
- inkscape:showpageshadow="0"
- inkscape:pageopacity="0"
- inkscape:pagecheckerboard="1"
- inkscape:deskcolor="#d1d1d1"
- inkscape:document-units="pt"
- inkscape:zoom="1.0040741"
- inkscape:cx="28.38436"
- inkscape:cy="270.39837"
- inkscape:window-width="1920"
- inkscape:window-height="1011"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g2" />
= <metadata
= id="metadata1">
=Created by potrace 1.14, written by Peter Selinger 2001-2017
=</metadata>
- <g
- transform="translate(0.000000,403.000000) scale(0.100000,-0.100000)"
- fill="#000000"
- stroke="none"
- id="g2">
- <path
- d="m 2528,3943 c -9,-10 -44,-92 -78,-183 -34,-91 -68,-171 -74,-178 -10,-10 -21,-9 -60,4 -44,15 -51,15 -102,-1 -64,-20 -85,-46 -92,-114 l -4,-47 63,-12 c 58,-10 68,-16 110,-62 l 46,-51 12,-112 c 6.8459,-63.884 11.6463,-127.7933 10,-192 l -32,65 c -41,85 -108,151 -167,167 -126,33 -214,24 -331,-37 l -80,-41 -106,95 c -59,53 -112,96 -119,96 -34,0 -13,-34 74,-122 53,-54 91,-98 85,-98 -2.5134,0 -43.0118,26.0078 -119,76 -92,60 -133,78 -150,63 -23,-19 -16,-34 21,-52 51.6341,-28.7862 139.2465,-57.2199 196,-128 9,-18 7,-19 -18,-13 -15,4 -50,15 -78,25 -44.2923,7.4448 -230.4274,91.2673 -259,44 -7,-18 13,-27 99,-45 72,-14 163,-46 190,-66 18,-13 18,-17 5,-47 -7,-17 -15,-60 -17,-93 -4,-52 0,-73 28,-140 18,-44 45,-100 61,-125 15,-25 28,-49 28,-52 0,-7.6927 -170,-56.2758 -170,-75 1,-16 29,-43 67,-64 l 41,-24 -111,-86 c -185,-143 -185,-143 -165,-164 16,-17 20,-15 80,31 35,27 80,64 101,82 21,19 105.4072,92.1763 111.4072,89.1763 11,-8 -53.4072,-70.1763 -128.4072,-170.1763 -46,-62 -57,-82 -49,-95 22,-34 40,-21 102,71 60,91 129,174 137,165 2,-2 -9,-48 -26,-102 -32,-103 -30,-125 12,-125 23,0 22,-1 63,156 36,142 34,141 86,32 25,-53 26,-50 -41,-157 -22,-34 -40,-65 -40,-68 0,-2 -11,-19 -24,-36 -49,-66 -132,-214 -151,-269 -17,-53 -22,-58 -48,-58 -16,0 -43,6 -60,14 -60,27 -175,56 -219,56 -75.9326,0 -1353.60186,-560 -1190,-560 202.42763,-17.9214 404.85774,-39.8296 607,-62 l 234,96 c 129,53 236,96 238,96 1,0 3,-37 3,-83 v -84 L 983,1101 C 852.99288,1039.1673 327.82997,778.24496 311,753 c 23.50034,-28.84967 46.58673,-55.58673 71,-80 191.47827,37.71542 370.03204,79.28411 583,132 326,79 302,76 354,37 20,-15 50,-34 66,-42 l 30,-13 C 1292.2787,744.97091 1204.161,717.31675 1071,674 903.7751,496.06449 738.2159,317.90369 580,132 c 281.67109,92.57398 520.4309,166.23787 780,273 316,131 320,133 428,275 73.0294,96.5873 100.3349,129.04179 125,150 51.7891,44.00574 133.5285,71.10084 197,92 45.9264,-39.95969 81.5482,-96.36577 148,-88 80.876,9.70512 117,25.13993 117,151 l 125,43 C 3580.1282,1316.3242 4116.017,2044.1893 4017.0564,2194.2438 3894.0053,2341.5666 3469.6925,2479.3096 3075,2374 c -49,-14 -97,-25 -106,-25 -48.488,20.8532 -166.1562,92.9801 -259,130 -1,65 3,370 6,401 -4.2647,74.6696 -19.9664,239.4235 22,285 16,17 47,68 110,186 19,33 46,66 71,83 22,16 61,51 87,78 42,45 46,53 41,85 -7,38 -32,73 -53,73 -30.971,0 -130.7531,-127.583 -190,-121 -30,3 -20,40 40,158 57,111 63,129 55,158 -49.0527,147.8099 -135.4004,-9.6833 -177,-74 -46,-71 -90,-132 -98,-135 -74.1408,-27.4596 61.6681,215.7484 1,284 -23,25 -76,26 -97,3 z"
- id="path1"
- sodipodi:nodetypes="cscccccccccccccccscscccccccccccccscccccccccccccscccsccscssccsscccccsccccccsccccccscccccccsccccccc" />
- </g>
+ <path
+ id="path1"
+ style="fill:currentColor;stroke:none;stroke-width:0.0901099;opacity:0.99"
+ d="M 229.07812 7.5527344 C 227.38861 7.5076795 225.72154 8.0047576 224.77539 9.0410156 C 223.9644 9.9421098 220.80983 17.331293 217.74609 25.53125 C 214.68241 33.731209 211.61878 40.939547 211.07812 41.570312 C 210.17708 42.47141 209.18612 42.380408 205.67188 41.208984 C 201.70705 39.857346 201.07602 39.85709 196.48047 41.298828 C 190.71344 43.101015 188.82022 45.444826 188.18945 51.572266 L 187.83008 55.806641 L 193.50586 56.888672 C 198.73218 57.789765 199.63336 58.331532 203.41797 62.476562 L 207.56445 67.070312 L 208.64453 77.164062 C 209.26142 82.920616 209.69518 88.679217 209.54688 94.464844 L 206.66211 88.607422 C 202.96762 80.948121 196.93171 75.000343 191.61523 73.558594 C 180.26148 70.584983 172.32992 71.395905 161.78711 76.892578 L 154.58008 80.587891 L 145.02734 72.027344 C 139.71091 67.251547 134.93547 63.376953 134.30469 63.376953 C 131.24097 63.376953 133.1331 66.439512 140.97266 74.369141 C 145.74844 79.235049 149.17347 83.201172 148.63281 83.201172 C 148.40633 83.201172 144.75548 80.856334 137.9082 76.351562 C 129.61813 70.945001 125.92446 69.324143 124.39258 70.675781 C 122.32005 72.387864 122.95109 73.739361 126.28516 75.361328 C 130.93786 77.95524 138.83322 80.51658 143.94727 86.894531 C 144.75821 88.516503 144.57697 88.607065 142.32422 88.066406 C 140.97257 87.70597 137.818 86.715546 135.29492 85.814453 C 131.3038 85.143607 114.53169 77.590385 111.95703 81.849609 C 111.32626 83.471583 113.12945 84.282325 120.87891 85.904297 C 127.36677 87.165831 135.56703 90.049375 138 91.851562 C 139.62197 93.022984 139.62064 93.382654 138.44922 96.085938 C 137.81845 97.617808 137.09819 101.49317 136.91797 104.4668 C 136.55752 109.15246 136.91834 111.04472 139.44141 117.08203 C 141.06333 121.04687 143.49571 126.09301 144.9375 128.3457 C 146.28914 130.59844 147.46094 132.76092 147.46094 133.03125 C 147.46094 133.72444 132.14258 138.10182 132.14258 139.78906 C 132.23268 141.23082 134.75551 143.66432 138.17969 145.55664 L 141.87305 147.71875 L 131.87109 155.46875 C 115.20086 168.35441 115.20169 168.35383 117.00391 170.24609 C 118.44561 171.77795 118.80635 171.59817 124.21289 167.45312 C 127.36674 165.0202 131.4202 161.68643 133.3125 160.06445 C 135.20482 158.35236 142.81089 151.75898 143.35156 152.0293 C 144.34277 152.75017 138.53944 158.35233 131.78125 167.36328 C 127.63619 172.95009 126.6444 174.7524 127.36523 175.92383 C 129.34765 178.98755 130.96989 177.81544 136.55664 169.52539 C 141.96324 161.32545 148.18146 153.84721 148.90234 154.6582 C 149.08256 154.83841 148.09045 158.98367 146.55859 163.84961 C 143.67511 173.13087 143.85606 175.11328 147.64062 175.11328 C 149.71314 175.11328 149.62385 175.20383 153.31836 161.05664 C 156.56231 148.26108 156.3807 148.34991 161.06641 158.17188 C 163.31911 162.94767 163.41037 162.6786 157.37305 172.32031 C 155.39064 175.38404 153.76758 178.17695 153.76758 178.44727 C 153.76758 178.62749 152.7769 180.15954 151.60547 181.69141 C 147.1901 187.6386 139.71209 200.97365 138 205.92969 C 136.46813 210.70547 136.01669 211.15625 133.67383 211.15625 C 132.23208 211.15625 129.79945 210.61541 128.26758 209.89453 C 122.86099 207.46156 112.49803 204.84961 108.5332 204.84961 C 101.69097 204.84961 -13.439334 255.31055 1.3027344 255.31055 C 19.543372 256.92544 37.785077 258.90068 56 260.89844 L 77.083984 252.24609 C 88.708103 247.47032 98.35103 243.5957 98.53125 243.5957 C 98.62135 243.5957 98.800781 246.93117 98.800781 251.07617 L 98.800781 258.64453 L 85.554688 265.13281 C 73.83982 270.70455 26.518494 294.21546 25.001953 296.49023 C 27.119554 299.08987 29.19857 301.49935 31.398438 303.69922 C 48.65243 300.30068 64.743172 296.55487 83.933594 291.80469 C 113.30925 284.68601 111.14638 284.95646 115.83203 288.4707 C 117.63424 289.82234 120.33755 291.53499 121.7793 292.25586 L 124.48242 293.42773 C 113.42406 297.21497 105.48344 299.70612 93.484375 303.60938 C 78.415836 319.64303 63.496978 335.69755 49.240234 352.44922 C 74.621455 344.10744 96.137744 337.46989 119.52734 327.84961 C 148.00196 316.04527 148.36193 315.86391 158.09375 303.06836 C 164.67436 294.36494 167.13487 291.44128 169.35742 289.55273 C 174.02415 285.58744 181.38998 283.14493 187.10938 281.26172 C 191.24776 284.86247 194.45739 289.94525 200.44531 289.19141 C 207.73302 288.31689 210.98828 286.92713 210.98828 275.58594 L 222.25195 271.71094 C 319.58171 245.7302 367.87045 180.14243 358.95312 166.62109 C 347.8651 153.34595 309.62998 140.93244 274.06445 150.42188 C 269.64911 151.68337 265.32466 152.67578 264.51367 152.67578 C 260.14447 150.79668 249.54187 144.29675 241.17578 140.96094 C 241.08568 135.1038 241.44451 107.62153 241.71484 104.82812 C 241.33055 98.099719 239.91568 83.253358 243.69727 79.146484 C 245.13898 77.614627 247.93246 73.017675 253.60938 62.384766 C 255.32143 59.411154 257.75506 56.438107 260.00781 54.90625 C 261.99022 53.464496 265.50481 50.309911 267.84766 47.876953 C 271.63221 43.822029 271.99158 43.10225 271.54102 40.21875 C 270.91026 36.794591 268.65793 33.640625 266.76562 33.640625 C 263.97487 33.640625 254.98326 45.136157 249.64453 44.542969 C 246.94124 44.27264 247.84346 40.939552 253.25 30.306641 C 258.38621 20.304495 258.92597 18.681536 258.20508 16.068359 C 253.78495 2.7492963 246.00441 16.940788 242.25586 22.736328 C 238.11082 29.134098 234.14665 34.632014 233.42578 34.902344 C 226.745 37.376711 238.98242 15.46066 233.51562 9.3105469 C 232.47943 8.184179 230.76768 7.5977889 229.07812 7.5527344 z M 157.79688 103.62109 A 14.244618 6.6080966 62.853256 0 1 168.43359 113.62891 A 14.244618 6.6080966 62.853256 0 1 169.05273 129.32031 A 14.244618 6.6080966 62.853256 0 1 156.67188 119.66016 A 14.244618 6.6080966 62.853256 0 1 156.05273 103.96875 A 14.244618 6.6080966 62.853256 0 1 157.79688 103.62109 z M 146.54688 110.83008 A 13.205237 5.6417646 62.853256 0 1 156.08789 120.27344 A 13.205237 5.6417646 62.853256 0 1 158.84961 129.33008 L 155.88477 130.44922 A 7.4787016 1.9941163 62.853256 0 0 153.83789 124.27148 A 7.4787016 1.9941163 62.853256 0 0 148.88867 118.4668 A 7.4787016 1.9941163 62.853256 0 0 148.65039 118.52734 A 7.4787016 1.9941163 62.853256 0 0 150.28711 126.0918 A 7.4787016 1.9941163 62.853256 0 0 153.91211 131.19336 L 151.23828 132.20312 A 13.205237 5.6417646 62.853256 0 1 146.04688 125.42188 A 13.205237 5.6417646 62.853256 0 1 145.04102 111.0957 A 13.205237 5.6417646 62.853256 0 1 146.54688 110.83008 z M 159.61133 112.31055 A 7.7483048 2.0767839 62.853256 0 0 159.36328 112.375 A 7.7483048 2.0767839 62.853256 0 0 161.05078 120.2168 A 7.7483048 2.0767839 62.853256 0 0 166.43359 126.16406 A 7.7483048 2.0767839 62.853256 0 0 164.74609 118.32031 A 7.7483048 2.0767839 62.853256 0 0 159.61133 112.31055 z " />
=</svg>Give silhouette eyes a white-ish background
On by
So they don't look creepy on dark background. Note that the pin icon for Safari doesn't have that, because the icon needs to be monochrome.
index 4815d5f..b8f9e79 100644
--- a/content/tad-lispy-silhouette.svg
+++ b/content/tad-lispy-silhouette.svg
@@ -106,9 +106,9 @@
= inkscape:pagecheckerboard="1"
= inkscape:deskcolor="#d1d1d1"
= inkscape:document-units="px"
- inkscape:zoom="2.0490074"
- inkscape:cx="154.95307"
- inkscape:cy="174.96276"
+ inkscape:zoom="8.1960298"
+ inkscape:cx="154.64805"
+ inkscape:cy="135.85846"
= inkscape:window-width="1920"
= inkscape:window-height="1011"
= inkscape:window-x="0"
@@ -119,8 +119,16 @@
= id="metadata1">
=Created by potrace 1.14, written by Peter Selinger 2001-2017
=</metadata>
+ <path
+ style="opacity:1;fill:#ebe0e0;stroke:none;stroke-width:1.7595;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0.366031, 0.366031;-inkscape-stroke:none;paint-order:stroke fill markers;fill-opacity:1"
+ d="m 157.49265,102.70884 c -2.11052,-0.0536 -3.79343,1.71968 -4.2563,3.67198 -0.92852,3.68674 0.064,7.54681 1.40145,11.00452 1.84931,4.45688 4.54757,8.75632 8.51808,11.60861 1.77844,1.2494 4.24432,2.1721 6.32547,1.12979 1.75848,-1.02625 2.6173,-3.05187 2.71108,-5.01959 0.28192,-4.6384 -1.44684,-9.14879 -3.64998,-13.14946 -1.91957,-3.32585 -4.39799,-6.54678 -7.83559,-8.40107 -0.99356,-0.50402 -2.09003,-0.86026 -3.21421,-0.84478 z m 2.41018,10.68448 c 1.86624,1.41264 3.01686,3.55197 4.10044,5.57945 0.91541,1.95566 1.89682,4.01099 1.92287,6.21003 -1.73664,-1.29154 -2.83778,-3.29473 -3.85901,-5.07792 -1.04701,-2.08213 -2.16091,-4.34019 -2.1643,-6.71156 z"
+ id="path11" />
+ <path
+ style="opacity:1;fill:#ebe0e0;stroke:none;stroke-width:1.7595;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0.366031, 0.366031;-inkscape-stroke:none;paint-order:stroke fill markers;fill-opacity:1"
+ d="m 146.16166,109.90697 c -1.98917,-0.005 -3.46358,1.81389 -3.69296,3.67746 -0.58306,4.29038 0.89,8.57232 2.82507,12.34425 1.42566,2.60041 3.18017,5.09467 5.43802,7.02337 0.90866,0.44413 1.83695,-0.38658 2.73707,-0.58321 0.7885,-0.10644 1.52247,-0.91157 1.05146,-1.70368 -1.34739,-1.6254 -2.55593,-3.27905 -3.4856,-5.21237 -0.87222,-1.85315 -1.80313,-3.79596 -1.84806,-5.88032 1.81049,1.36506 2.9036,3.45494 3.92873,5.4307 0.86881,1.75657 1.58765,3.60489 1.87176,5.54975 0.28271,0.94807 1.4377,0.80963 2.12612,0.42553 0.83067,-0.40154 1.9325,-0.45989 2.52755,-1.19709 0.34049,-0.96922 -0.10841,-2.03002 -0.24108,-3.01862 -0.53571,-2.44669 -1.32694,-4.85107 -2.61492,-7.01087 -1.74523,-3.53598 -4.22618,-6.84792 -7.60579,-8.95866 -0.9157,-0.52442 -1.94775,-0.91594 -3.01737,-0.88624 z"
+ id="path12" />
= <path
= id="path1"
- style="fill:currentColor;stroke:none;stroke-width:0.0901099;opacity:0.99"
+ style="fill:currentColor;stroke:none;stroke-width:0.0901099;opacity:1"
= d="M 229.07812 7.5527344 C 227.38861 7.5076795 225.72154 8.0047576 224.77539 9.0410156 C 223.9644 9.9421098 220.80983 17.331293 217.74609 25.53125 C 214.68241 33.731209 211.61878 40.939547 211.07812 41.570312 C 210.17708 42.47141 209.18612 42.380408 205.67188 41.208984 C 201.70705 39.857346 201.07602 39.85709 196.48047 41.298828 C 190.71344 43.101015 188.82022 45.444826 188.18945 51.572266 L 187.83008 55.806641 L 193.50586 56.888672 C 198.73218 57.789765 199.63336 58.331532 203.41797 62.476562 L 207.56445 67.070312 L 208.64453 77.164062 C 209.26142 82.920616 209.69518 88.679217 209.54688 94.464844 L 206.66211 88.607422 C 202.96762 80.948121 196.93171 75.000343 191.61523 73.558594 C 180.26148 70.584983 172.32992 71.395905 161.78711 76.892578 L 154.58008 80.587891 L 145.02734 72.027344 C 139.71091 67.251547 134.93547 63.376953 134.30469 63.376953 C 131.24097 63.376953 133.1331 66.439512 140.97266 74.369141 C 145.74844 79.235049 149.17347 83.201172 148.63281 83.201172 C 148.40633 83.201172 144.75548 80.856334 137.9082 76.351562 C 129.61813 70.945001 125.92446 69.324143 124.39258 70.675781 C 122.32005 72.387864 122.95109 73.739361 126.28516 75.361328 C 130.93786 77.95524 138.83322 80.51658 143.94727 86.894531 C 144.75821 88.516503 144.57697 88.607065 142.32422 88.066406 C 140.97257 87.70597 137.818 86.715546 135.29492 85.814453 C 131.3038 85.143607 114.53169 77.590385 111.95703 81.849609 C 111.32626 83.471583 113.12945 84.282325 120.87891 85.904297 C 127.36677 87.165831 135.56703 90.049375 138 91.851562 C 139.62197 93.022984 139.62064 93.382654 138.44922 96.085938 C 137.81845 97.617808 137.09819 101.49317 136.91797 104.4668 C 136.55752 109.15246 136.91834 111.04472 139.44141 117.08203 C 141.06333 121.04687 143.49571 126.09301 144.9375 128.3457 C 146.28914 130.59844 147.46094 132.76092 147.46094 133.03125 C 147.46094 133.72444 132.14258 138.10182 132.14258 139.78906 C 132.23268 141.23082 134.75551 143.66432 138.17969 145.55664 L 141.87305 147.71875 L 131.87109 155.46875 C 115.20086 168.35441 115.20169 168.35383 117.00391 170.24609 C 118.44561 171.77795 118.80635 171.59817 124.21289 167.45312 C 127.36674 165.0202 131.4202 161.68643 133.3125 160.06445 C 135.20482 158.35236 142.81089 151.75898 143.35156 152.0293 C 144.34277 152.75017 138.53944 158.35233 131.78125 167.36328 C 127.63619 172.95009 126.6444 174.7524 127.36523 175.92383 C 129.34765 178.98755 130.96989 177.81544 136.55664 169.52539 C 141.96324 161.32545 148.18146 153.84721 148.90234 154.6582 C 149.08256 154.83841 148.09045 158.98367 146.55859 163.84961 C 143.67511 173.13087 143.85606 175.11328 147.64062 175.11328 C 149.71314 175.11328 149.62385 175.20383 153.31836 161.05664 C 156.56231 148.26108 156.3807 148.34991 161.06641 158.17188 C 163.31911 162.94767 163.41037 162.6786 157.37305 172.32031 C 155.39064 175.38404 153.76758 178.17695 153.76758 178.44727 C 153.76758 178.62749 152.7769 180.15954 151.60547 181.69141 C 147.1901 187.6386 139.71209 200.97365 138 205.92969 C 136.46813 210.70547 136.01669 211.15625 133.67383 211.15625 C 132.23208 211.15625 129.79945 210.61541 128.26758 209.89453 C 122.86099 207.46156 112.49803 204.84961 108.5332 204.84961 C 101.69097 204.84961 -13.439334 255.31055 1.3027344 255.31055 C 19.543372 256.92544 37.785077 258.90068 56 260.89844 L 77.083984 252.24609 C 88.708103 247.47032 98.35103 243.5957 98.53125 243.5957 C 98.62135 243.5957 98.800781 246.93117 98.800781 251.07617 L 98.800781 258.64453 L 85.554688 265.13281 C 73.83982 270.70455 26.518494 294.21546 25.001953 296.49023 C 27.119554 299.08987 29.19857 301.49935 31.398438 303.69922 C 48.65243 300.30068 64.743172 296.55487 83.933594 291.80469 C 113.30925 284.68601 111.14638 284.95646 115.83203 288.4707 C 117.63424 289.82234 120.33755 291.53499 121.7793 292.25586 L 124.48242 293.42773 C 113.42406 297.21497 105.48344 299.70612 93.484375 303.60938 C 78.415836 319.64303 63.496978 335.69755 49.240234 352.44922 C 74.621455 344.10744 96.137744 337.46989 119.52734 327.84961 C 148.00196 316.04527 148.36193 315.86391 158.09375 303.06836 C 164.67436 294.36494 167.13487 291.44128 169.35742 289.55273 C 174.02415 285.58744 181.38998 283.14493 187.10938 281.26172 C 191.24776 284.86247 194.45739 289.94525 200.44531 289.19141 C 207.73302 288.31689 210.98828 286.92713 210.98828 275.58594 L 222.25195 271.71094 C 319.58171 245.7302 367.87045 180.14243 358.95312 166.62109 C 347.8651 153.34595 309.62998 140.93244 274.06445 150.42188 C 269.64911 151.68337 265.32466 152.67578 264.51367 152.67578 C 260.14447 150.79668 249.54187 144.29675 241.17578 140.96094 C 241.08568 135.1038 241.44451 107.62153 241.71484 104.82812 C 241.33055 98.099719 239.91568 83.253358 243.69727 79.146484 C 245.13898 77.614627 247.93246 73.017675 253.60938 62.384766 C 255.32143 59.411154 257.75506 56.438107 260.00781 54.90625 C 261.99022 53.464496 265.50481 50.309911 267.84766 47.876953 C 271.63221 43.822029 271.99158 43.10225 271.54102 40.21875 C 270.91026 36.794591 268.65793 33.640625 266.76562 33.640625 C 263.97487 33.640625 254.98326 45.136157 249.64453 44.542969 C 246.94124 44.27264 247.84346 40.939552 253.25 30.306641 C 258.38621 20.304495 258.92597 18.681536 258.20508 16.068359 C 253.78495 2.7492963 246.00441 16.940788 242.25586 22.736328 C 238.11082 29.134098 234.14665 34.632014 233.42578 34.902344 C 226.745 37.376711 238.98242 15.46066 233.51562 9.3105469 C 232.47943 8.184179 230.76768 7.5977889 229.07812 7.5527344 z M 157.79688 103.62109 A 14.244618 6.6080966 62.853256 0 1 168.43359 113.62891 A 14.244618 6.6080966 62.853256 0 1 169.05273 129.32031 A 14.244618 6.6080966 62.853256 0 1 156.67188 119.66016 A 14.244618 6.6080966 62.853256 0 1 156.05273 103.96875 A 14.244618 6.6080966 62.853256 0 1 157.79688 103.62109 z M 146.54688 110.83008 A 13.205237 5.6417646 62.853256 0 1 156.08789 120.27344 A 13.205237 5.6417646 62.853256 0 1 158.84961 129.33008 L 155.88477 130.44922 A 7.4787016 1.9941163 62.853256 0 0 153.83789 124.27148 A 7.4787016 1.9941163 62.853256 0 0 148.88867 118.4668 A 7.4787016 1.9941163 62.853256 0 0 148.65039 118.52734 A 7.4787016 1.9941163 62.853256 0 0 150.28711 126.0918 A 7.4787016 1.9941163 62.853256 0 0 153.91211 131.19336 L 151.23828 132.20312 A 13.205237 5.6417646 62.853256 0 1 146.04688 125.42188 A 13.205237 5.6417646 62.853256 0 1 145.04102 111.0957 A 13.205237 5.6417646 62.853256 0 1 146.54688 110.83008 z M 159.61133 112.31055 A 7.7483048 2.0767839 62.853256 0 0 159.36328 112.375 A 7.7483048 2.0767839 62.853256 0 0 161.05078 120.2168 A 7.7483048 2.0767839 62.853256 0 0 166.43359 126.16406 A 7.7483048 2.0767839 62.853256 0 0 164.74609 118.32031 A 7.7483048 2.0767839 62.853256 0 0 159.61133 112.31055 z " />
=</svg>Display a sigil below each post
On by
The new sigil is the silhouette. To save some bytes, there is an optimized version now.
new file mode 100644
index 0000000..5264675
--- /dev/null
+++ b/content/tad-lispy-silhouette-optimized.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="360" height="360" preserveAspectRatio="xMidYMid" version="1.0" viewBox="0 0 360 360" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <title>Tad Lispy Silhouette</title>
+ <path id="left-eye" d="m157.49 102.71c-2.1105-0.0536-3.7934 1.7197-4.2563 3.672-0.92852 3.6867 0.064 7.5468 1.4014 11.005 1.8493 4.4569 4.5476 8.7563 8.5181 11.609 1.7784 1.2494 4.2443 2.1721 6.3255 1.1298 1.7585-1.0262 2.6173-3.0519 2.7111-5.0196 0.28192-4.6384-1.4468-9.1488-3.65-13.149-1.9196-3.3258-4.398-6.5468-7.8356-8.4011-0.99356-0.50402-2.09-0.86026-3.2142-0.84478zm2.4102 10.684c1.8662 1.4126 3.0169 3.552 4.1004 5.5794 0.91541 1.9557 1.8968 4.011 1.9229 6.21-1.7366-1.2915-2.8378-3.2947-3.859-5.0779-1.047-2.0821-2.1609-4.3402-2.1643-6.7116z" fill="#ebe0e0"/>
+ <path id="right-eye" d="m146.16 109.91c-1.9892-5e-3 -3.4636 1.8139-3.693 3.6775-0.58306 4.2904 0.89 8.5723 2.8251 12.344 1.4257 2.6004 3.1802 5.0947 5.438 7.0234 0.90866 0.44413 1.837-0.38658 2.7371-0.58321 0.7885-0.10644 1.5225-0.91157 1.0515-1.7037-1.3474-1.6254-2.5559-3.279-3.4856-5.2124-0.87222-1.8532-1.8031-3.796-1.8481-5.8803 1.8105 1.3651 2.9036 3.4549 3.9287 5.4307 0.86881 1.7566 1.5876 3.6049 1.8718 5.5498 0.28271 0.94807 1.4377 0.80963 2.1261 0.42553 0.83067-0.40154 1.9325-0.45989 2.5276-1.1971 0.34049-0.96922-0.10841-2.03-0.24108-3.0186-0.53571-2.4467-1.3269-4.8511-2.6149-7.0109-1.7452-3.536-4.2262-6.8479-7.6058-8.9587-0.9157-0.52442-1.9478-0.91594-3.0174-0.88624z" fill="#ebe0e0"/>
+ <path id="silhouette" d="m229.08 7.5527c-1.6895-0.045055-3.3566 0.45202-4.3027 1.4883-0.81099 0.90109-3.9656 8.2903-7.0293 16.49-3.0637 8.2-6.1273 15.408-6.668 16.039-0.90104 0.9011-1.892 0.8101-5.4062-0.36133-3.9648-1.3516-4.5959-1.3519-9.1914 0.08984-5.767 1.8022-7.6602 4.146-8.291 10.273l-0.35937 4.2344 5.6758 1.082c5.2263 0.90109 6.1275 1.4429 9.9121 5.5879l4.1465 4.5938 1.0801 10.094c0.61689 5.7566 1.0506 11.515 0.90235 17.301l-2.8848-5.8574c-3.6945-7.6593-9.7304-13.607-15.047-15.049-11.354-2.9736-19.285-2.1627-29.828 3.334l-7.207 3.6953-9.5527-8.5605c-5.3164-4.7758-10.092-8.6504-10.723-8.6504-3.0637 0-1.1716 3.0626 6.668 10.992 4.7758 4.8659 8.2008 8.832 7.6602 8.832-0.22648 0-3.8773-2.3448-10.725-6.8496-8.2901-5.4066-11.984-7.0274-13.516-5.6758-2.0725 1.7121-1.4415 3.0636 1.8926 4.6855 4.6527 2.5939 12.548 5.1553 17.662 11.533 0.81094 1.622 0.6297 1.7125-1.623 1.1719-1.3516-0.36044-4.5062-1.3509-7.0293-2.252-3.9911-0.67085-20.763-8.2241-23.338-3.9648-0.63077 1.622 1.1724 2.4327 8.9219 4.0547 6.4879 1.2615 14.688 4.1451 17.121 5.9473 1.622 1.1714 1.6206 1.5311 0.44922 4.2344-0.63077 1.5319-1.351 5.4072-1.5312 8.3809-0.36045 4.6857 3.7e-4 6.5779 2.5234 12.615 1.6219 3.9648 4.0543 9.011 5.4961 11.264 1.3516 2.2527 2.5234 4.4152 2.5234 4.6856 0 0.69319-15.318 5.0706-15.318 6.7578 0.0901 1.4418 2.6129 3.8753 6.0371 5.7676l3.6934 2.1621-10.002 7.75c-16.67 12.886-16.669 12.885-14.867 14.777 1.4417 1.5319 1.8024 1.3521 7.209-2.793 9.8872-7.6271 18.338-15.824 19.139-15.424 0.99121 0.72087-4.8121 6.323-11.57 15.334-4.1451 5.5868-5.1368 7.3891-4.416 8.5606 1.9824 3.0637 3.6047 1.8916 9.1914-6.3984 5.4066-8.1999 11.625-15.678 12.346-14.867 0.18022 0.18021-0.81189 4.3255-2.3438 9.1914-2.8835 9.2813-2.7025 11.264 1.082 11.264 2.0725 0 1.9832 0.0906 5.6777-14.057 3.244-12.796 3.0623-12.707 7.748-2.8848 2.2527 4.7758 2.344 4.5067-3.6934 14.148-4.6094 7.1236-16.891 26.423-19.373 33.609-1.5319 4.7758-1.9833 5.2266-4.3262 5.2266-3.874 0-16.736-6.3066-25.141-6.3066-6.8422 0-121.97 50.461-107.23 50.461 18.241 1.6149 36.482 3.5901 54.697 5.5879l21.084-8.6524c11.624-4.7758 21.267-8.6504 21.447-8.6504 0.2363 0 0.26953 5.5589 0.26953 15.049l-13.246 6.4883c-11.715 5.5717-59.036 29.083-60.553 31.357 2.1176 2.5996 4.1966 5.0091 6.3965 7.209 17.254-3.3985 33.345-7.1444 52.535-11.895 29.376-7.1187 27.213-6.8482 31.898-3.334 2.6318 2.1063 5.5823 3.6269 8.6504 4.957-11.058 3.7872-18.999 6.2784-30.998 10.182-15.069 16.034-29.987 32.088-44.244 48.84 25.381-8.3418 46.898-14.979 70.287-24.6 28.475-11.804 28.835-11.986 38.566-24.781 6.5806-8.7034 9.0411-11.627 11.264-13.516 4.6667-3.9653 12.033-6.4078 17.752-8.291 4.1384 3.6008 7.348 8.6835 13.336 7.9297 7.2877-0.87452 10.543-2.2643 10.543-13.605l11.264-3.875c97.33-25.981 145.62-91.569 136.7-105.09-11.088-13.275-49.323-25.689-84.889-16.199-4.4153 1.2615-8.7398 2.2539-9.5508 2.2539-4.3692-1.8791-14.972-8.379-23.338-11.715-0.0901-5.8571 0.26873-33.339 0.53906-36.133-0.38429-6.7284-1.7992-21.575 1.9824-25.682 1.4417-1.5319 4.2352-6.1288 9.9121-16.762 6.0374-10.486 19.167-14.26 17.932-22.166-0.63076-3.4242-2.8831-6.5781-4.7754-6.5781-2.7908 0-11.782 11.496-17.121 10.902-2.7033-0.27033-1.8011-3.6034 3.6055-14.236 5.1362-10.002 5.676-11.625 4.9551-14.238-4.4201-13.319-12.201 0.87243-15.949 6.668-4.145 6.3978-8.1092 11.896-8.8301 12.166-6.6808 2.4744 5.5566-19.442 0.0898-25.592-1.0362-1.1264-2.7479-1.7128-4.4375-1.7578zm-71.281 96.068c3.3319 0.16587 7.6947 4.2707 10.637 10.008 3.59 7.001 3.8672 14.027 0.61914 15.691-3.2473 1.6668-8.7909-2.6586-12.381-9.6602-3.59-7.001-3.8672-14.027-0.61915-15.691 0.51413-0.2633 1.1005-0.38018 1.7442-0.34766zm-11.25 7.209c2.9008 0.25144 6.8141 4.1247 9.541 9.4434 1.5914 3.1211 2.5848 6.379 2.7617 9.0566l-2.9648 1.1191c-0.0599-1.4611-0.83902-3.8125-2.0469-6.1777-1.7266-3.3668-3.8514-5.8588-4.9492-5.8047-0.0873 4e-3 -0.1669 0.0242-0.23828 0.0605-0.9811 0.50095-0.24822 3.8881 1.6367 7.5645 1.1437 2.22 2.5037 4.1339 3.625 5.1016l-2.6738 1.0098c-1.8616-1.616-3.7021-4.0202-5.1914-6.7812-3.3282-6.4899-3.7786-12.904-1.0059-14.326 0.43905-0.22507 0.94533-0.31437 1.5059-0.26562zm13.064 1.4805c-0.0909 5e-3 -0.17374 0.0261-0.24805 0.0644-1.0201 0.52398-0.26462 4.0346 1.6875 7.8418 1.9522 3.8072 4.3619 6.4696 5.3828 5.9473 1.0214-0.52259 0.26575-4.0349-1.6875-7.8438-1.788-3.4866-3.992-6.0662-5.1348-6.0098z" fill="currentColor"/>
+ <metadata>
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:title>Tad Lispy Silhouette</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+</svg>index 81b1baa..d6241a0 100644
Binary files a/content/tad-lispy-silhouette.png and b/content/tad-lispy-silhouette.png differindex b8f9e79..2c4d144 100644
--- a/content/tad-lispy-silhouette.svg
+++ b/content/tad-lispy-silhouette.svg
@@ -14,88 +14,14 @@
= xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
= xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
= xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <title
+ id="title12">Tad Lispy Silhouette</title>
= <defs
- id="defs2">
- <inkscape:path-effect
- effect="powerstroke"
- id="path-effect10"
- is_visible="true"
- lpeversion="1.3"
- scale_width="1"
- interpolator_type="CentripetalCatmullRom"
- interpolator_beta="0.75"
- start_linecap_type="round"
- end_linecap_type="round"
- offset_points="2.0777475,0.9150772"
- linejoin_type="spiro"
- miter_limit="4"
- not_jump="true"
- sort_points="true"
- message="<b>Ctrl + click</b> on existing node and move it" />
- <inkscape:path-effect
- effect="simplify"
- id="path-effect9"
- is_visible="true"
- lpeversion="1.3"
- threshold="0.014201184"
- steps="1"
- smooth_angles="0"
- helper_size="0"
- simplify_individual_paths="false"
- simplify_just_coalesce="false"
- step="1" />
- <inkscape:path-effect
- effect="simplify"
- id="path-effect7"
- is_visible="true"
- lpeversion="1.3"
- threshold="96.1538"
- steps="1"
- smooth_angles="360"
- helper_size="0"
- simplify_individual_paths="false"
- simplify_just_coalesce="false" />
- <inkscape:path-effect
- effect="powerstroke"
- id="path-effect6"
- is_visible="true"
- lpeversion="1.3"
- scale_width="1"
- interpolator_type="CentripetalCatmullRom"
- interpolator_beta="0.75"
- start_linecap_type="round"
- end_linecap_type="round"
- offset_points="3.1002591,0.9150772"
- linejoin_type="spiro"
- miter_limit="4"
- not_jump="true"
- sort_points="true"
- message="<b>Ctrl + click</b> on existing node and move it" />
- <inkscape:path-effect
- effect="simplify"
- id="path-effect5"
- is_visible="true"
- lpeversion="1.3"
- threshold="0.014201184"
- steps="1"
- smooth_angles="0"
- helper_size="0"
- simplify_individual_paths="false"
- simplify_just_coalesce="false"
- step="1" />
- <inkscape:path-effect
- effect="simplify"
- id="path-effect4"
- is_visible="true"
- lpeversion="1.3"
- threshold="96.1538"
- steps="1"
- smooth_angles="360"
- helper_size="0"
- simplify_individual_paths="false"
- simplify_just_coalesce="false" />
- </defs>
+ id="defs2" />
= <sodipodi:namedview
= id="namedview2"
= pagecolor="#505050"
@@ -106,29 +32,35 @@
= inkscape:pagecheckerboard="1"
= inkscape:deskcolor="#d1d1d1"
= inkscape:document-units="px"
- inkscape:zoom="8.1960298"
- inkscape:cx="154.64805"
- inkscape:cy="135.85846"
+ inkscape:zoom="2.0490074"
+ inkscape:cx="179.84317"
+ inkscape:cy="179.84317"
= inkscape:window-width="1920"
= inkscape:window-height="1011"
= inkscape:window-x="0"
= inkscape:window-y="0"
= inkscape:window-maximized="1"
= inkscape:current-layer="svg2" />
- <metadata
- id="metadata1">
-Created by potrace 1.14, written by Peter Selinger 2001-2017
-</metadata>
= <path
- style="opacity:1;fill:#ebe0e0;stroke:none;stroke-width:1.7595;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0.366031, 0.366031;-inkscape-stroke:none;paint-order:stroke fill markers;fill-opacity:1"
+ style="fill:#ebe0e0;stroke:none;"
= d="m 157.49265,102.70884 c -2.11052,-0.0536 -3.79343,1.71968 -4.2563,3.67198 -0.92852,3.68674 0.064,7.54681 1.40145,11.00452 1.84931,4.45688 4.54757,8.75632 8.51808,11.60861 1.77844,1.2494 4.24432,2.1721 6.32547,1.12979 1.75848,-1.02625 2.6173,-3.05187 2.71108,-5.01959 0.28192,-4.6384 -1.44684,-9.14879 -3.64998,-13.14946 -1.91957,-3.32585 -4.39799,-6.54678 -7.83559,-8.40107 -0.99356,-0.50402 -2.09003,-0.86026 -3.21421,-0.84478 z m 2.41018,10.68448 c 1.86624,1.41264 3.01686,3.55197 4.10044,5.57945 0.91541,1.95566 1.89682,4.01099 1.92287,6.21003 -1.73664,-1.29154 -2.83778,-3.29473 -3.85901,-5.07792 -1.04701,-2.08213 -2.16091,-4.34019 -2.1643,-6.71156 z"
- id="path11" />
+ id="left-eye" />
= <path
- style="opacity:1;fill:#ebe0e0;stroke:none;stroke-width:1.7595;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0.366031, 0.366031;-inkscape-stroke:none;paint-order:stroke fill markers;fill-opacity:1"
+ style="fill:#ebe0e0;stroke:none;"
= d="m 146.16166,109.90697 c -1.98917,-0.005 -3.46358,1.81389 -3.69296,3.67746 -0.58306,4.29038 0.89,8.57232 2.82507,12.34425 1.42566,2.60041 3.18017,5.09467 5.43802,7.02337 0.90866,0.44413 1.83695,-0.38658 2.73707,-0.58321 0.7885,-0.10644 1.52247,-0.91157 1.05146,-1.70368 -1.34739,-1.6254 -2.55593,-3.27905 -3.4856,-5.21237 -0.87222,-1.85315 -1.80313,-3.79596 -1.84806,-5.88032 1.81049,1.36506 2.9036,3.45494 3.92873,5.4307 0.86881,1.75657 1.58765,3.60489 1.87176,5.54975 0.28271,0.94807 1.4377,0.80963 2.12612,0.42553 0.83067,-0.40154 1.9325,-0.45989 2.52755,-1.19709 0.34049,-0.96922 -0.10841,-2.03002 -0.24108,-3.01862 -0.53571,-2.44669 -1.32694,-4.85107 -2.61492,-7.01087 -1.74523,-3.53598 -4.22618,-6.84792 -7.60579,-8.95866 -0.9157,-0.52442 -1.94775,-0.91594 -3.01737,-0.88624 z"
- id="path12" />
+ id="right-eye" />
= <path
- id="path1"
- style="fill:currentColor;stroke:none;stroke-width:0.0901099;opacity:1"
- d="M 229.07812 7.5527344 C 227.38861 7.5076795 225.72154 8.0047576 224.77539 9.0410156 C 223.9644 9.9421098 220.80983 17.331293 217.74609 25.53125 C 214.68241 33.731209 211.61878 40.939547 211.07812 41.570312 C 210.17708 42.47141 209.18612 42.380408 205.67188 41.208984 C 201.70705 39.857346 201.07602 39.85709 196.48047 41.298828 C 190.71344 43.101015 188.82022 45.444826 188.18945 51.572266 L 187.83008 55.806641 L 193.50586 56.888672 C 198.73218 57.789765 199.63336 58.331532 203.41797 62.476562 L 207.56445 67.070312 L 208.64453 77.164062 C 209.26142 82.920616 209.69518 88.679217 209.54688 94.464844 L 206.66211 88.607422 C 202.96762 80.948121 196.93171 75.000343 191.61523 73.558594 C 180.26148 70.584983 172.32992 71.395905 161.78711 76.892578 L 154.58008 80.587891 L 145.02734 72.027344 C 139.71091 67.251547 134.93547 63.376953 134.30469 63.376953 C 131.24097 63.376953 133.1331 66.439512 140.97266 74.369141 C 145.74844 79.235049 149.17347 83.201172 148.63281 83.201172 C 148.40633 83.201172 144.75548 80.856334 137.9082 76.351562 C 129.61813 70.945001 125.92446 69.324143 124.39258 70.675781 C 122.32005 72.387864 122.95109 73.739361 126.28516 75.361328 C 130.93786 77.95524 138.83322 80.51658 143.94727 86.894531 C 144.75821 88.516503 144.57697 88.607065 142.32422 88.066406 C 140.97257 87.70597 137.818 86.715546 135.29492 85.814453 C 131.3038 85.143607 114.53169 77.590385 111.95703 81.849609 C 111.32626 83.471583 113.12945 84.282325 120.87891 85.904297 C 127.36677 87.165831 135.56703 90.049375 138 91.851562 C 139.62197 93.022984 139.62064 93.382654 138.44922 96.085938 C 137.81845 97.617808 137.09819 101.49317 136.91797 104.4668 C 136.55752 109.15246 136.91834 111.04472 139.44141 117.08203 C 141.06333 121.04687 143.49571 126.09301 144.9375 128.3457 C 146.28914 130.59844 147.46094 132.76092 147.46094 133.03125 C 147.46094 133.72444 132.14258 138.10182 132.14258 139.78906 C 132.23268 141.23082 134.75551 143.66432 138.17969 145.55664 L 141.87305 147.71875 L 131.87109 155.46875 C 115.20086 168.35441 115.20169 168.35383 117.00391 170.24609 C 118.44561 171.77795 118.80635 171.59817 124.21289 167.45312 C 127.36674 165.0202 131.4202 161.68643 133.3125 160.06445 C 135.20482 158.35236 142.81089 151.75898 143.35156 152.0293 C 144.34277 152.75017 138.53944 158.35233 131.78125 167.36328 C 127.63619 172.95009 126.6444 174.7524 127.36523 175.92383 C 129.34765 178.98755 130.96989 177.81544 136.55664 169.52539 C 141.96324 161.32545 148.18146 153.84721 148.90234 154.6582 C 149.08256 154.83841 148.09045 158.98367 146.55859 163.84961 C 143.67511 173.13087 143.85606 175.11328 147.64062 175.11328 C 149.71314 175.11328 149.62385 175.20383 153.31836 161.05664 C 156.56231 148.26108 156.3807 148.34991 161.06641 158.17188 C 163.31911 162.94767 163.41037 162.6786 157.37305 172.32031 C 155.39064 175.38404 153.76758 178.17695 153.76758 178.44727 C 153.76758 178.62749 152.7769 180.15954 151.60547 181.69141 C 147.1901 187.6386 139.71209 200.97365 138 205.92969 C 136.46813 210.70547 136.01669 211.15625 133.67383 211.15625 C 132.23208 211.15625 129.79945 210.61541 128.26758 209.89453 C 122.86099 207.46156 112.49803 204.84961 108.5332 204.84961 C 101.69097 204.84961 -13.439334 255.31055 1.3027344 255.31055 C 19.543372 256.92544 37.785077 258.90068 56 260.89844 L 77.083984 252.24609 C 88.708103 247.47032 98.35103 243.5957 98.53125 243.5957 C 98.62135 243.5957 98.800781 246.93117 98.800781 251.07617 L 98.800781 258.64453 L 85.554688 265.13281 C 73.83982 270.70455 26.518494 294.21546 25.001953 296.49023 C 27.119554 299.08987 29.19857 301.49935 31.398438 303.69922 C 48.65243 300.30068 64.743172 296.55487 83.933594 291.80469 C 113.30925 284.68601 111.14638 284.95646 115.83203 288.4707 C 117.63424 289.82234 120.33755 291.53499 121.7793 292.25586 L 124.48242 293.42773 C 113.42406 297.21497 105.48344 299.70612 93.484375 303.60938 C 78.415836 319.64303 63.496978 335.69755 49.240234 352.44922 C 74.621455 344.10744 96.137744 337.46989 119.52734 327.84961 C 148.00196 316.04527 148.36193 315.86391 158.09375 303.06836 C 164.67436 294.36494 167.13487 291.44128 169.35742 289.55273 C 174.02415 285.58744 181.38998 283.14493 187.10938 281.26172 C 191.24776 284.86247 194.45739 289.94525 200.44531 289.19141 C 207.73302 288.31689 210.98828 286.92713 210.98828 275.58594 L 222.25195 271.71094 C 319.58171 245.7302 367.87045 180.14243 358.95312 166.62109 C 347.8651 153.34595 309.62998 140.93244 274.06445 150.42188 C 269.64911 151.68337 265.32466 152.67578 264.51367 152.67578 C 260.14447 150.79668 249.54187 144.29675 241.17578 140.96094 C 241.08568 135.1038 241.44451 107.62153 241.71484 104.82812 C 241.33055 98.099719 239.91568 83.253358 243.69727 79.146484 C 245.13898 77.614627 247.93246 73.017675 253.60938 62.384766 C 255.32143 59.411154 257.75506 56.438107 260.00781 54.90625 C 261.99022 53.464496 265.50481 50.309911 267.84766 47.876953 C 271.63221 43.822029 271.99158 43.10225 271.54102 40.21875 C 270.91026 36.794591 268.65793 33.640625 266.76562 33.640625 C 263.97487 33.640625 254.98326 45.136157 249.64453 44.542969 C 246.94124 44.27264 247.84346 40.939552 253.25 30.306641 C 258.38621 20.304495 258.92597 18.681536 258.20508 16.068359 C 253.78495 2.7492963 246.00441 16.940788 242.25586 22.736328 C 238.11082 29.134098 234.14665 34.632014 233.42578 34.902344 C 226.745 37.376711 238.98242 15.46066 233.51562 9.3105469 C 232.47943 8.184179 230.76768 7.5977889 229.07812 7.5527344 z M 157.79688 103.62109 A 14.244618 6.6080966 62.853256 0 1 168.43359 113.62891 A 14.244618 6.6080966 62.853256 0 1 169.05273 129.32031 A 14.244618 6.6080966 62.853256 0 1 156.67188 119.66016 A 14.244618 6.6080966 62.853256 0 1 156.05273 103.96875 A 14.244618 6.6080966 62.853256 0 1 157.79688 103.62109 z M 146.54688 110.83008 A 13.205237 5.6417646 62.853256 0 1 156.08789 120.27344 A 13.205237 5.6417646 62.853256 0 1 158.84961 129.33008 L 155.88477 130.44922 A 7.4787016 1.9941163 62.853256 0 0 153.83789 124.27148 A 7.4787016 1.9941163 62.853256 0 0 148.88867 118.4668 A 7.4787016 1.9941163 62.853256 0 0 148.65039 118.52734 A 7.4787016 1.9941163 62.853256 0 0 150.28711 126.0918 A 7.4787016 1.9941163 62.853256 0 0 153.91211 131.19336 L 151.23828 132.20312 A 13.205237 5.6417646 62.853256 0 1 146.04688 125.42188 A 13.205237 5.6417646 62.853256 0 1 145.04102 111.0957 A 13.205237 5.6417646 62.853256 0 1 146.54688 110.83008 z M 159.61133 112.31055 A 7.7483048 2.0767839 62.853256 0 0 159.36328 112.375 A 7.7483048 2.0767839 62.853256 0 0 161.05078 120.2168 A 7.7483048 2.0767839 62.853256 0 0 166.43359 126.16406 A 7.7483048 2.0767839 62.853256 0 0 164.74609 118.32031 A 7.7483048 2.0767839 62.853256 0 0 159.61133 112.31055 z " />
+ id="silhouette"
+ style="fill:currentColor;stroke:none;"
+ d="m 229.07812,7.5527344 c -1.68951,-0.045055 -3.35658,0.4520232 -4.30273,1.4882812 -0.81099,0.9010942 -3.96556,8.2902774 -7.0293,16.4902344 -3.06368,8.199959 -6.12731,15.408297 -6.66797,16.039062 -0.90104,0.901098 -1.892,0.810096 -5.40624,-0.361328 -3.96483,-1.351638 -4.59586,-1.351894 -9.19141,0.08984 -5.76703,1.802187 -7.66025,4.145998 -8.29102,10.273438 l -0.35937,4.234375 5.67578,1.082031 c 5.22632,0.901093 6.1275,1.44286 9.91211,5.58789 l 4.14648,4.59375 1.08008,10.09375 c 0.61689,5.756554 1.05065,11.515155 0.90235,17.300782 l -2.88477,-5.857422 c -3.69449,-7.659301 -9.7304,-13.607079 -15.04688,-15.048828 -11.35375,-2.973611 -19.28531,-2.162689 -29.82812,3.333984 l -7.20703,3.695313 -9.55274,-8.560547 c -5.31643,-4.775797 -10.09187,-8.650391 -10.72265,-8.650391 -3.06372,0 -1.17159,3.062559 6.66797,10.992188 4.77578,4.865908 8.20081,8.832031 7.66015,8.832031 -0.22648,0 -3.87733,-2.344838 -10.72461,-6.84961 -8.29007,-5.406561 -11.98374,-7.027419 -13.51562,-5.675781 -2.07253,1.712083 -1.44149,3.06358 1.89258,4.685547 4.6527,2.593912 12.54806,5.155252 17.66211,11.533203 0.81094,1.621972 0.6297,1.712534 -1.62305,1.171875 -1.35165,-0.360436 -4.50622,-1.35086 -7.0293,-2.251953 -3.99112,-0.670846 -20.76323,-8.224068 -23.33789,-3.964844 -0.63077,1.621974 1.17242,2.432716 8.92188,4.054688 6.48786,1.261534 14.68812,4.145078 17.12109,5.947265 1.62197,1.171422 1.62064,1.531092 0.44922,4.234376 -0.63077,1.53187 -1.35103,5.407236 -1.53125,8.380866 -0.36045,4.68566 3.7e-4,6.57792 2.52344,12.61523 1.62192,3.96484 4.0543,9.01098 5.49609,11.26367 1.35164,2.25274 2.52344,4.41522 2.52344,4.68555 0,0.69319 -15.31836,5.07057 -15.31836,6.75781 0.0901,1.44176 2.61293,3.87526 6.03711,5.76758 l 3.69336,2.16211 -10.00196,7.75 c -16.67023,12.88566 -16.6694,12.88508 -14.86718,14.77734 1.4417,1.53186 1.80244,1.35208 7.20898,-2.79297 9.88722,-7.62713 18.33839,-15.82394 19.13867,-15.42382 0.99121,0.72087 -4.81212,6.32303 -11.57031,15.33398 -4.14506,5.58681 -5.13685,7.38912 -4.41602,8.56055 1.98242,3.06372 3.60466,1.89161 9.19141,-6.39844 5.4066,-8.19994 11.62482,-15.67818 12.3457,-14.86719 0.18022,0.18021 -0.81189,4.32547 -2.34375,9.19141 -2.88348,9.28126 -2.70253,11.26367 1.08203,11.26367 2.07252,0 1.98323,0.0906 5.67774,-14.05664 3.24395,-12.79556 3.06234,-12.70673 7.74805,-2.88476 2.2527,4.77579 2.34396,4.50672 -3.69336,14.14843 -4.60938,7.1236 -16.89056,26.42325 -19.37305,33.60938 -1.53187,4.77578 -1.98331,5.22656 -4.32617,5.22656 -3.87397,0 -16.73632,-6.30664 -25.14063,-6.30664 -6.84223,0 -121.972534,50.46094 -107.2304656,50.46094 C 19.543372,256.92544 37.785077,258.90068 56,260.89844 l 21.083984,-8.65235 c 11.624119,-4.77577 21.267046,-8.65039 21.447266,-8.65039 0.2363,0 0.269531,5.55894 0.269531,15.04883 l -13.246093,6.48828 c -11.714868,5.57174 -59.036194,29.08265 -60.552735,31.35742 2.117601,2.59964 4.196617,5.00912 6.396485,7.20899 17.253992,-3.39854 33.344734,-7.14435 52.535156,-11.89453 29.375656,-7.11868 27.212786,-6.84823 31.898436,-3.33399 2.63176,2.10634 5.5823,3.62694 8.65039,4.95703 -11.05836,3.78724 -18.99898,6.27839 -30.998045,10.18165 -15.068539,16.03365 -29.987397,32.08817 -44.244141,48.83984 25.381221,-8.34178 46.89751,-14.97933 70.287106,-24.59961 28.47462,-11.80434 28.83459,-11.9857 38.56641,-24.78125 6.58061,-8.70342 9.04112,-11.62708 11.26367,-13.51563 4.66673,-3.96529 12.03256,-6.4078 17.75196,-8.29101 4.13838,3.60075 7.34801,8.68353 13.33593,7.92969 7.28771,-0.87452 10.54297,-2.26428 10.54297,-13.60547 l 11.26367,-3.875 c 97.32976,-25.98074 145.6185,-91.56851 136.70117,-105.08985 -11.08802,-13.27514 -49.32314,-25.68865 -84.88867,-16.19921 -4.41534,1.26149 -8.73979,2.2539 -9.55078,2.2539 -4.3692,-1.8791 -14.9718,-8.37903 -23.33789,-11.71484 -0.0901,-5.85714 0.26873,-33.33941 0.53906,-36.13282 -0.38429,-6.728401 -1.79916,-21.574762 1.98243,-25.681636 1.44171,-1.531857 4.23519,-6.128809 9.91211,-16.761718 6.03741,-10.486214 19.16698,-14.260058 17.93164,-22.166016 -0.63076,-3.424159 -2.88309,-6.578125 -4.7754,-6.578125 -2.79075,0 -11.78236,11.495532 -17.12109,10.902344 -2.70329,-0.270329 -1.80107,-3.603417 3.60547,-14.236328 5.13621,-10.002146 5.67597,-11.625105 4.95508,-14.238282 -4.42013,-13.3190627 -12.20067,0.872429 -15.94922,6.667969 -4.14504,6.39777 -8.10921,11.895686 -8.83008,12.166016 -6.68078,2.474367 5.55664,-19.441684 0.0898,-25.5917971 -1.03619,-1.1263679 -2.74794,-1.712758 -4.4375,-1.7578125 z M 157.79688,103.62109 c 3.33192,0.16587 7.69468,4.27068 10.63671,10.00782 3.59001,7.00099 3.86722,14.02659 0.61914,15.6914 -3.24734,1.66676 -8.79087,-2.65858 -12.38085,-9.66015 -3.59001,-7.00099 -3.86723,-14.0266 -0.61915,-15.69141 0.51413,-0.2633 1.10051,-0.38018 1.74415,-0.34766 z m -11.25,7.20899 c 2.9008,0.25144 6.81412,4.1247 9.54101,9.44336 1.59136,3.1211 2.58483,6.37903 2.76172,9.05664 l -2.96484,1.11914 c -0.0599,-1.46112 -0.83902,-3.81252 -2.04688,-6.17774 -1.72657,-3.36677 -3.85136,-5.85883 -4.94922,-5.80468 -0.0873,0.004 -0.1669,0.0242 -0.23828,0.0605 -0.9811,0.50095 -0.24822,3.88811 1.63672,7.56446 1.14374,2.22003 2.50366,4.13388 3.625,5.10156 l -2.67383,1.00976 c -1.86155,-1.616 -3.7021,-4.02021 -5.1914,-6.78124 -3.3282,-6.48991 -3.77855,-12.90418 -1.00586,-14.32618 0.43905,-0.22507 0.94533,-0.31437 1.50586,-0.26562 z m 13.06445,1.48047 c -0.0909,0.005 -0.17374,0.0261 -0.24805,0.0644 -1.02007,0.52398 -0.26462,4.03456 1.6875,7.8418 1.95217,3.80715 4.3619,6.46957 5.38281,5.94726 1.02138,-0.52259 0.26575,-4.03488 -1.6875,-7.84375 -1.788,-3.48659 -3.99201,-6.06618 -5.13476,-6.00976 z"
+ sodipodi:nodetypes="ccccccccccccccccccscscccccccccccccsccccccccccccsccccsscccscccccsccccccccccccccccccsccccccsccccccccccccccccccccccsscscc" />
+ <metadata
+ id="metadata12">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:title>Tad Lispy Silhouette</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
=</svg>index 9064f0a..6d8847e 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -13,3 +13,13 @@ h1, h2, h3, h4, h5, h6, a {
=html.home main {
= text-align: center;
=}
+
+.sigil > svg {
+ margin: auto;
+ height: 6rem;
+ width: 6rem;
+ color: var(--contrast);
+ @media only screen and (prefers-color-scheme: dark) {
+ color: var(--contrast-inverse);
+ }
+}index 84376d0..1809a7a 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -17,5 +17,12 @@
= <h1 class="title">{{ page.title | markdown(inline=true) | safe }}</h1>
=
= {{ page.content | safe }}
+
=</main>
+
+<footer>
+ <div class="sigil">
+ {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
+ </div>
+</footer>
={% endblock content %}Scale, simplify and center the home page
On by
Image is smaller. Links are centered and expand into row on wide screens. No more bullets.
index 6d8847e..b4d6a83 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -10,8 +10,32 @@ h1, h2, h3, h4, h5, h6, a {
= }
=}
=
-html.home main {
- text-align: center;
+html.home {
+
+ .container {
+ max-width: 32rem;
+ }
+
+ main {
+ text-align: center;
+
+ img {
+ max-height: 6rem;
+ }
+ }
+
+ nav {
+ justify-content: space-around;
+
+ ul {
+ flex-direction: column;
+ @media (min-width: 768px) {
+ flex-direction: row;
+ }
+
+ }
+ }
+
=}
=
=.sigil > svg {index df4a8e1..3332e3e 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -15,15 +15,14 @@
=
={% block content %}
= <main>
- {{ section.content | safe }}
+ {{ section.content | safe }}
= </main>
=
- <footer>
- <p>Find my content:</p>
+ <nav>
= <ul>
= {% for link in section.extra.links %}
= <li><a href="{{ link.href }}">{{ link.label }}</a></li>
= {% endfor %}
= </ul>
- </footer>
+ </nav>
={% endblock content %}Center the home page vertically
On by
index b4d6a83..5633adf 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -12,6 +12,11 @@ h1, h2, h3, h4, h5, h6, a {
=
=html.home {
=
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+
= .container {
= max-width: 32rem;
= }Add breadcrumb to blog index, style the list
On by
The list looks a bit like a table, with two columns: date and title.
index 5633adf..b4b6085 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -43,6 +43,30 @@ html.home {
=
=}
=
+html.blog-index {
+ ul.posts {
+ padding-left: 0;
+ li {
+ list-style: none;
+
+ a {
+ display: flex;
+ gap: 2rem;
+
+ .date {
+ width: 6rem;
+ flex-shrink: 0;
+ }
+
+ .title {
+ flex-shrink: 1;
+ }
+ }
+
+ }
+ }
+}
+
=.sigil > svg {
= margin: auto;
= height: 6rem;index 8050042..cf78f3e 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -5,6 +5,7 @@
=
={{- super() -}}
=
+{%- set page_class = "blog-index" -%}
={%- set description = section.description -%}
={%- set title = section.title ~ " - " ~ title -%}
=
@@ -12,17 +13,24 @@
=
={% block content %}
=
-<main>
+<header>
+ <nav aria-label="breadcrumb">
+ <ul>
+ <li><a href="{{ get_url(path='@/_index.md') }}">Tad Lispy</a></li>
+ <li>Blog</li>
+ </ul>
+ </nav>
= {{ section.content | safe }}
-
- <ul>
- {% for post in section.pages %}
- <li>
- <date>{{ post.date }}</date>
- <a href="{{ post.permalink | safe }}">{{ post.title | markdown(inline=true) | safe }}</a>
- </li>
- {% endfor %}
- </ul>
-</main>
+</header>
+<ul class="posts">
+ {% for post in section.pages %}
+ <li>
+ <a href="{{ post.permalink | safe }}">
+ <small class="date"><date>{{ post.date }}</date></small>
+ <span class="title">{{- post.title | markdown(inline=true) | safe -}}</span>
+ </a>
+ </li>
+ {% endfor %}
+</ul>
=
={% endblock content %}Reuse the footer with sigil on the blog index page
On by
Also, add a copyright notice.
index b4b6085..c54551f 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -67,12 +67,25 @@ html.blog-index {
= }
=}
=
-.sigil > svg {
- margin: auto;
- height: 6rem;
- width: 6rem;
- color: var(--contrast);
- @media only screen and (prefers-color-scheme: dark) {
- color: var(--contrast-inverse);
+footer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2rem;
+
+ .sigil {
+ > svg {
+ margin: auto;
+ height: 6rem;
+ width: 6rem;
+ color: var(--contrast);
+ @media only screen and (prefers-color-scheme: dark) {
+ color: var(--contrast-inverse);
+ }
+ }
+ }
+
+ .copyright {
+ color: var(--muted-color);
= }
=}index 1809a7a..8963609 100644
--- a/templates/blog-post.html
+++ b/templates/blog-post.html
@@ -20,9 +20,5 @@
=
=</main>
=
-<footer>
- <div class="sigil">
- {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
- </div>
-</footer>
+{% include "includes/footer.html" %}
={% endblock content %}index cf78f3e..0d622b2 100644
--- a/templates/blog.html
+++ b/templates/blog.html
@@ -33,4 +33,5 @@
= {% endfor %}
=</ul>
=
+{% include "includes/footer.html" %}
={% endblock content %}new file mode 100644
index 0000000..48dda17
--- /dev/null
+++ b/templates/includes/footer.html
@@ -0,0 +1,8 @@
+<footer>
+ <div class="sigil">
+ {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
+ </div>
+ <div class="copyright">
+ © Tad Lispy
+ </div>
+</footer>Mark broken links, so they don't break the build
On by
It's so nice that Zola checks for broken links!
index 66b1e60..2e7898c 100644
--- a/content/blog/2015-04-28-npm-install-coffee-from-git/index.md
+++ b/content/blog/2015-04-28-npm-install-coffee-from-git/index.md
@@ -2,15 +2,15 @@
=title: How to Install NPM Packages Written in CoffeeScript from a Git Repo
=---
=
-> 2024 update:
->
-> Working on this problem eventually lead me to create [npm-git-install](https://github.com/lzrski/npm-git-install) helper. The program should not be needed since the introduction of [the `prepare` NPM script](https://docs.npmjs.com/cli/v10/using-npm/scripts#prepare-and-prepublish) in 2017.
+> 2024 Update: Some links to external content are unfortunately outdated. The content in this post doesn't seem relevant to me anymore, except for archival reasons, so I'm not going to update those broken links.
+
+> 2017 update: Working on this problem eventually lead me to create [npm-git-install](https://github.com/lzrski/npm-git-install) helper. The program should not be needed since the introduction of [the `prepare` NPM script](https://docs.npmjs.com/cli/v10/using-npm/scripts#prepare-and-prepublish).
=
=IDEA: Use npm `install` script with value same as `prepublish`, but this would have to be changed before publishing to registry.
=
=It is said to be an anti-pattern
=
-See <https://docs.npmjs.com/misc/scripts#common-uses>
+See ~~https://docs.npmjs.com/misc/scripts#common-uses~~ (broken link)
=
=An issue by isaacs [run `prepublish` for git url packages](https://github.com/npm/npm/issues/3055)
=
@@ -36,5 +36,3 @@ Maybe installing from git should work like that:
=3. remove tmp dir
=
=This doesn't seem very hard to do.
-
-> TODO: Ask in #3055 is this good approachindex 1274ffe..e7d1032 100644
--- a/content/blog/2015-07-29-react-component-testing/index.md
+++ b/content/blog/2015-07-29-react-component-testing/index.md
@@ -2,9 +2,11 @@
=title: How to Test if a Given Value is a React.js Component
=---
=
-It may seem trivial, but it's a bit tricky to test for that. The [documentation for React's Test Utils](https://facebook.github.io/react/docs/test-utils.html) is lacking examples (as of the time of writing).
+> 2024 Update: Some links to external content are unfortunately outdated. The content in this post doesn't seem relevant to me anymore, except for archival reasons, so I'm not going to update those broken links.
=
-By comparing it with [Virtual DOM glossary](https://facebook.github.io/react/docs/glossary.html#react-components) one can assume that instantiating it with new keyword and then checking with `TestUtils.isCompositeComponent` is a way to go.
+It may seem trivial, but it's a bit tricky to test for that. The documentation for React's Test Utils[^broken-1] is lacking examples (as of the time of writing).
+
+By comparing it with Virtual DOM glossary[^broken-2] one can assume that instantiating it with new keyword and then checking with `TestUtils.isCompositeComponent` is a way to go.
=
=That's how I do it in CoffeScript:
=
@@ -15,3 +17,9 @@ it "is a react component", ->
= expect (TestUtils.isCompositeComponent new CheckboxSelect)
= .to.be.ok
=```
+
+---
+
+[^broken-1]: Broken link to https://facebook.github.io/react/docs/test-utils.html
+
+[^broken-2]: Broken link to https://facebook.github.io/react/docs/glossary.html#react-componentsindex c54551f..ebe3d65 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -89,3 +89,15 @@ footer {
= color: var(--muted-color);
= }
=}
+
+
+.footnote-definition {
+ display: flex;
+ gap: 0.5rem;
+ align-items: baseline;
+
+ .footnote-definition-label {
+ width: 1rem;
+ flex-shrink: 0;
+ }
+}Provide a verification for Mastodon
On by
index 478d78c..b8ffec6 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -2,7 +2,7 @@
=description: "Personal website of Tad Lispy"
=title: "Tad Lispy"
=extra:
- links:
+ links:
= - href: "blog/"
= label: Blog
= - href: "https://gitlab.com/tad-lispy"
@@ -13,10 +13,12 @@ extra:
= label: StackOverflow
= - href: "https://chaos.social/@lazurski"
= label: Mastodon
+ rel: me
= - href: "https://linkedin.com/in/lazurski"
= label: LinkedIn
=---
=
+
=**Hello**, my name is **Tad**. I'm a **web and mobile developer**.
=
=index 3332e3e..95e5d46 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -21,7 +21,7 @@
= <nav>
= <ul>
= {% for link in section.extra.links %}
- <li><a href="{{ link.href }}">{{ link.label }}</a></li>
+ <li><a href="{{ link.href }}" {%- if link.rel -%}rel="{{ link.rel }}"{%- endif -%}>{{ link.label }}</a></li>
= {% endfor %}
= </ul>
= </nav>Make the sigil a link home, with a cute animation
On by
index ebe3d65..82d6351 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -67,6 +67,12 @@ html.blog-index {
= }
=}
=
+@keyframes fly-away {
+ to {
+ transform: translate(50vw, -10vw) scale(0, 0);
+ }
+}
+
=footer {
= display: flex;
= flex-direction: column;
@@ -74,7 +80,11 @@ footer {
= gap: 2rem;
=
= .sigil {
- > svg {
+ a {
+ display: block;
+ border-radius: 50%;
+ }
+ svg {
= margin: auto;
= height: 6rem;
= width: 6rem;
@@ -82,6 +92,11 @@ footer {
= @media only screen and (prefers-color-scheme: dark) {
= color: var(--contrast-inverse);
= }
+
+ animation: unset;
+ &:active {
+ animation: 500ms ease-in forwards fly-away;
+ }
= }
= }
=index 48dda17..ccd7f82 100644
--- a/templates/includes/footer.html
+++ b/templates/includes/footer.html
@@ -1,6 +1,8 @@
=<footer>
= <div class="sigil">
- {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
+ <a href="{{ get_url(path='/') }}">
+ {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
+ </a>
= </div>
= <div class="copyright">
= © Tad LispyCorrect sigil link
On by
For some reason it worked in development (zola serve), but in production build it pointed to the same page as currently viewed instead of home page. Now seem to be working in both cases.
index ccd7f82..6f88142 100644
--- a/templates/includes/footer.html
+++ b/templates/includes/footer.html
@@ -1,6 +1,6 @@
=<footer>
= <div class="sigil">
- <a href="{{ get_url(path='/') }}">
+ <a href="{{ get_url(path='@/_index.md') }}">
= {{ load_data(path="/tad-lispy-silhouette-optimized.svg") | safe }}
= </a>
= </div>