new site
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
3e7a23eef2
commit
c0aef1cb38
|
|
@ -3,10 +3,6 @@ type: docker
|
||||||
name: default
|
name: default
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build
|
|
||||||
image: klakegg/hugo
|
|
||||||
commands:
|
|
||||||
- hugo
|
|
||||||
- name: deploy
|
- name: deploy
|
||||||
image: instrumentisto/rsync-ssh
|
image: instrumentisto/rsync-ssh
|
||||||
commands:
|
commands:
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1 @@
|
||||||
public/
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
title: "{{ replace .Name "-" " " | title }}"
|
|
||||||
date: {{ .Date }}
|
|
||||||
draft: true
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
baseURL = 'https://kwolek.io/'
|
|
||||||
languageCode = 'en-us'
|
|
||||||
title = 'Wojciech Kwolek'
|
|
||||||
theme = "kwolek"
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
---
|
|
||||||
title: "A Duolingo helper to avoid skipping through corrections."
|
|
||||||
date: 2020-09-23T17:24:45+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
I tend to go through [Duolingo](https://duolingo.com) lessons quite fast (if you do not know what Duolingo is, I recommend checking it out - it is quite a fun way to learn languages, and for free.)
|
|
||||||
|
|
||||||
This results in me usually typing in the sentences at my 80 WPM (well, the average is probaly less, but I'm trying to train it to be more consistent), then quickly smashing Enter twice to first submit the sentence, and then accept the "Correct!" message.
|
|
||||||
|
|
||||||
Sometimes, however, I make a mistake, and would like to read the correction before advancing further. Unfortunately, my monkey brain got trained to mash the Enter key twice to go as fast as possible to the next lessons. Aaand then I decided to fix that with my computer-y powers.
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
## Solution
|
|
||||||
|
|
||||||
[A Tampermonkey script.](/content/duolingo-tampermonkey.js)
|
|
||||||
|
|
||||||
It is a simple userscript for Tampermonkey, which catches all the Enter keypresses, and works as follows:
|
|
||||||
|
|
||||||
* If you did the exercise correctly, the second enter gets you to the next one.
|
|
||||||
* If you made a mistake, the second Enter keypress is ignored, you can read the correction, and then press Enter again to advance.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
To install it you need to get the [Tampermonkey extension](https://www.tampermonkey.net), click on its icon, go to "Dashboard", then "Utilities", and you can paste the URL from below in the "Install from URL" field.
|
|
||||||
|
|
||||||
```
|
|
||||||
https://irth.pl/content/duolingo-tampermonkey.js
|
|
||||||
```
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
---
|
|
||||||
title: "Reverse pomodoro."
|
|
||||||
date: 2021-01-09T17:32:00+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
Hello 2021.
|
|
||||||
|
|
||||||
I am an university student. I don't think I like being one, and around two weeks before the christmas break my brain decided to literally stop all the productivity. Couldn't even get myself to check what I am supposed to be doing/learning.
|
|
||||||
|
|
||||||
This continued well into the christmas break, and only after the New Year's I came across a tweet that helped me break out of this productivity sinkhole loop, and I'd like to share it here because I'd be in much more trouble at uni if I didn't encounter this.
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
{{< tweet 1344018455347953665 >}}
|
|
||||||
|
|
||||||
Go read her thread about this. It's just a few tweets, do so.
|
|
||||||
|
|
||||||
The basic idea, however, is that you do pomodoro, but in reverse - do 5 minutes of work and 25 minutes of fun (or even much more!).
|
|
||||||
|
|
||||||
The reasoning is, even 5 minutes is so so so much better than doing literally nothing. And the fun is actually fun, because you don't have hate yourself for being unproductive because it's part of the technique.
|
|
||||||
|
|
||||||
{{< tweet 1344018462973181956 >}}
|
|
||||||
|
|
||||||
Good luck. YMMV.
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
---
|
|
||||||
title: "2022: new year new me or something"
|
|
||||||
date: 2022-01-03T19:12:42+01:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
Soooo we are starting a new year. I usually don't do new year resolutions but I
|
|
||||||
am at a point in my life where I actually have to do something with my life or
|
|
||||||
it is going to be bad.
|
|
||||||
|
|
||||||
So, December ended with some intense emotional turmoil, I had to cut off the
|
|
||||||
connection which I had with a friend who is very dear to me (after like, 5 years
|
|
||||||
of basically being non-stop in each other's lives.)
|
|
||||||
|
|
||||||
I think using this year to improve myself or something might be what I need
|
|
||||||
right now to avoid just giving up in the fight with my depression.
|
|
||||||
|
|
||||||
So, without any further ado...
|
|
||||||
|
|
||||||
## Stuff I want to do/achieve in 2022.
|
|
||||||
|
|
||||||
### Weight loss.
|
|
||||||
|
|
||||||
I am currently around 110kg @ 183cm. I don't look too bad, but I would like to
|
|
||||||
at least get into the two digits category.
|
|
||||||
|
|
||||||
I ordered a 2200 kcal box diet for two weeks (starting tomorrow), to see if I
|
|
||||||
like it (I actually don't like a lot of food and I'm hoping that I can widen my
|
|
||||||
horizons by doing this, while also eating healthily).
|
|
||||||
|
|
||||||
I am way too lazy/depressed to cook for myself right now, so this is a stop-gap
|
|
||||||
solution until I get better.
|
|
||||||
|
|
||||||
I would also like to get back to playing Ring Fit Adventure on my Switch, to get
|
|
||||||
some movement without having to go anywhere.
|
|
||||||
|
|
||||||
* **Minimal goal:** get under 100kg (so, around 0.5kg per week)
|
|
||||||
* **Unrealistic goal:** get to 85kg, but that will probably take a bit longer
|
|
||||||
*if I want do it in a healthy manner.
|
|
||||||
|
|
||||||
### Keeping my room clean.
|
|
||||||
|
|
||||||
This is simple, but I always have trouble with it. I am writing this post during
|
|
||||||
a break from tidying up my room. Once I get it clean I want to focus on not
|
|
||||||
making a mess.
|
|
||||||
|
|
||||||
The way I intend to do it is:
|
|
||||||
|
|
||||||
1. Try to clean up after myself immediately.
|
|
||||||
2. Designate a 10 minute cleaning time every day.
|
|
||||||
3. Designate a 30 minute cleaning time every week.
|
|
||||||
|
|
||||||
### Streaming/content creation.
|
|
||||||
|
|
||||||
I have taken up streaming recently, and it seems fun but this year I want to
|
|
||||||
actually make it a real thing. I want to make some nice layouts for Twitch,
|
|
||||||
create a schedule, stream Animal Crossing and then cut the recordings up for
|
|
||||||
YouTube, so I can use their discovery algorithms to maybe find some people who
|
|
||||||
will watch me.
|
|
||||||
|
|
||||||
I also want to start planning my streams, and actively finding some stuff to
|
|
||||||
talk about during these streams, so that there's some value in there besides the
|
|
||||||
gameplay (which, admittedly, is not my strong side.)
|
|
||||||
|
|
||||||
I wanna play Animal Crossing, BOTW and maybe Minecraft. I think I'll set up a
|
|
||||||
schedule that'll look something like: Mondays 7PM - Animal Crossing, Sundays 7PM - Zelda, etc.
|
|
||||||
|
|
||||||
I've heard consistency is key.
|
|
||||||
|
|
||||||
I also want to make new social media for this, so that I can start it all fresh.
|
|
||||||
|
|
||||||
* **Minimal goal:** get the Twitch affiliate status and stream regularly for two
|
|
||||||
months.
|
|
||||||
* **Ideal goal:** stream consistently the whole year :)
|
|
||||||
|
|
||||||
### Reading/listening to books.
|
|
||||||
|
|
||||||
When I was a child I used to read books at an incredible pace (haven't we all?) but then I kinda stopped. I wanna get back to that. I subscribed to an audiobook app. We'll see about that. This might also give me something to chat about during streams.
|
|
||||||
|
|
||||||
* **Minimal goal:** 1 book per month.
|
|
||||||
* **Ideal goal:** 2 books per month? Idk I want to make these goals reachable.
|
|
||||||
|
|
||||||
### Trying new things.
|
|
||||||
|
|
||||||
I am really bad at coming out of my comfort zone. So I want to try some new things this year.
|
|
||||||
|
|
||||||
* **Minimal goal:** 1 new thing per two months.
|
|
||||||
* **Ideal goal:** 1 new thing monthly.
|
|
||||||
|
|
||||||
## Holding myself accountable.
|
|
||||||
|
|
||||||
This of course won't work if I don't hold myself accountable, so I plan on making a summary post each week, and a larger one each month. Let's see how it goes.
|
|
||||||
|
|
||||||
So, to finish, I wish you all an... acceptable 2022. Bye!
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
title: "2022: new year's resolutions: big update"
|
|
||||||
date: 2022-11-28T15:06:42+01:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
i got diagnosed with adhd lmao
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
---
|
|
||||||
title: "Using Docker buildx for native multiarch builds."
|
|
||||||
date: 2022-12-24T05:07:00+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## TL;DR
|
|
||||||
|
|
||||||
I wanted to build multiarch images using multiple machines with different architectures instead of QEMU.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# add some amd64 machine that has docker
|
|
||||||
docker context create bob --docker "host=ssh://bob@10.0.0.2"
|
|
||||||
# create a buildx builder with your local machine added to it
|
|
||||||
docker buildx create \
|
|
||||||
--name multiarch --node arm64 \
|
|
||||||
--platform linux/arm64/v8 \
|
|
||||||
default
|
|
||||||
# add the amd64 machine to it
|
|
||||||
docker buildx create --append \
|
|
||||||
--name multiarch --node amd64 \
|
|
||||||
--platform linux/amd64,linux/amd64/v2,linux/386\
|
|
||||||
bob
|
|
||||||
# build & push your image
|
|
||||||
docker buildx build \
|
|
||||||
--builder multiarch \
|
|
||||||
--platform linux/amd64,linux/arm64/v8 \
|
|
||||||
--push --tag username/imagename .
|
|
||||||
|
|
||||||
# the amd64 image will be build natively on the amd64 machine,
|
|
||||||
# the arm64 machine will be build natively on the arm64 machine
|
|
||||||
```
|
|
||||||
|
|
||||||
## Actual post
|
|
||||||
|
|
||||||
I wanted to build a multiarch image for `linux/arm64/v8` and `linux/amd64`, however the `x86` builds were really slow when running through QEMU on my _Apple Silicon_ laptop. Turns out, you can tell Docker to use another machine (which happens to be `x86_64`), to build the `linux/amd64` images, and use the local Docker Desktop instance for the ARM stuff.
|
|
||||||
|
|
||||||
Here's how:
|
|
||||||
|
|
||||||
1. Set up Docker on a machine (or many machines) that supports the architecture(s) you want to build for. Make sure you can SSH into it without using passwords (use SSH keys, and maybe ssh-agent if keys don't work on their own).
|
|
||||||
|
|
||||||
Also, the user you're SSH-ing into needs to be able to access Docker.
|
|
||||||
|
|
||||||
2. Create a _Docker context_ for the remote machine.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker context create <context_name> --docker "host=ssh://<USER>@<HOST>:<PORT>"
|
|
||||||
```
|
|
||||||
|
|
||||||
`<USER>@` can be omitted - your local username will be used. `:<PORT>` can also be omitted if it's `22`.
|
|
||||||
|
|
||||||
Let's say we have an `amd64` host on ip `10.0.0.2`, and we want to call it bob (the builder).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker context create bob --docker "host=ssh://bob@10.0.0.2"
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Create a buildx builder for your local computer.
|
|
||||||
|
|
||||||
In this case, my local machine supports `linux/arm64/v8` natively, but it also can build `amd64` images through QEMU, so I explicitly set `--platform` to just `linux/arm64/v8`. I might also add `linux/arm/v7` for images meant to run on something like a Raspberry Pi here, because even though it will still run via QEMU, I don't have anything better to build for `armv7` anyway. (it's comma separated)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker buildx create \
|
|
||||||
--name multiarch --node arm64 \
|
|
||||||
--platform linux/arm64/v8 \
|
|
||||||
default
|
|
||||||
```
|
|
||||||
|
|
||||||
`multiarch` will be the name of our builder, `--node` is the name for the node we're adding to the builder (it doesn't have to contain the architecture, it can be anything, only the `--platform` value is taken into consideration by Docker).
|
|
||||||
|
|
||||||
`default` is the name of the default context, which usually is your local machine. If not, replace it with whatever you use.
|
|
||||||
|
|
||||||
4. Now, the fun part - add additional nodes for other architectures! In our example, we want to add `bob` which can build `linux/amd64` images natively.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker buildx create --append \
|
|
||||||
--name multiarch --node amd64 bob
|
|
||||||
```
|
|
||||||
|
|
||||||
Notice the `--append` - it tells Docker to add the node to an existing builder.
|
|
||||||
|
|
||||||
I've omitted `--platform` here, because in my case, `bob` only supports x86 anyways, so I don't have to limit it artificially. This was different for the local node, as Docker Desktop on MacOS comes with cross-platform build support preconfigured.
|
|
||||||
|
|
||||||
5. Set the builder as default (optional, you can use `--builder multiarch` for `docker buildx build` to set the builder manually)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker buildx use multiarch
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Finally, you can build your images:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker buildx build \
|
|
||||||
--platform linux/amd64,linux/arm64/v8 \
|
|
||||||
--push --tag username/imagename .
|
|
||||||
```
|
|
||||||
|
|
||||||
Unfortunately, it's not yet possible to load multiarch images into your local Docker daemon, which means you're gonna have to tag and `--push` to the Docker registry.
|
|
||||||
|
|
||||||
You can still use `--load` instead of `--push` (to load into your local daemon) if you only specify a single `--platform`. Idk, might be useful for testing or something.
|
|
||||||
|
|
||||||
Enjoy.
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
title: "Life update: 4 day workweek."
|
|
||||||
date: 2021-10-10T13:07:27+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
This is just a short update post, but starting this month (October) I have switched to a 4 day * 8 hours workweek,
|
|
||||||
so now I work from Tuesdays to Fridays, which means I can relax on the weekend and then do something useful for myself on Monday.
|
|
||||||
|
|
||||||
Alternatively, I have an additional day for being sad, or something.
|
|
||||||
|
|
||||||
Hopefully, this means that I'll get back into my open source projects.
|
|
||||||
|
|
||||||
I've also already used this time to set up a CI for myself. Now I have some nice Ansible roles that set up [Gitea](https://gitea.io) and [Drone CI](https://www.drone.io), and this blog is now auto-published on each commit :)
|
|
||||||
|
|
||||||
[](https://drone.kwolek.io/wojciech/website)
|
|
||||||
|
|
||||||
I recommend this four-day workweek to everyone who can do this.
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
---
|
|
||||||
title: "Blag"
|
|
||||||
date: 2021-09-12T18:02:10+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
A static site (blog) generator written in Go, with optional Disqus and Google Analytics support.
|
|
||||||
<!--more-->
|
|
||||||
[View on Github](https://github.com/irth/blag)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[Source: XKCD](https://xkcd.com/148)
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
---
|
|
||||||
title: "DoneTh.at"
|
|
||||||
date: 2021-09-12T18:06:12+02:00
|
|
||||||
draft: false
|
|
||||||
projectName: donethat
|
|
||||||
---
|
|
||||||
|
|
||||||
[DoneTh.at](https://DoneTh.at) is a simple web app written in Flask that allows you to track your productivity more objectively, by keeping track of your accomplishments.
|
|
||||||
|
|
||||||
It allows the user to assign points based on task difficulty, keep a daily goal and view statistics.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
Git instance hosting the app is temporarily down.
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
title: "GopherNews"
|
|
||||||
date: 2021-09-12T17:59:35+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
A proxy that allows you to browse Hacker News using your favourite Gopher client, written in Go.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
[View on Github](https://github.com/irth/gophernews)
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
---
|
|
||||||
title: "Together for Spotify"
|
|
||||||
date: 2021-09-12T18:04:46+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
A web app that allows two Spotify users to log in and find the cross section of their music libraries. It is then stored as a playlist, to which they can listen together.
|
|
||||||
|
|
||||||
* Ruby on Rails 5
|
|
||||||
* Tailwind.css
|
|
||||||
* Vue.js
|
|
||||||
* Capistrano
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
(Temporarily offline)
|
|
||||||
|
|
||||||
[View on Github](https://github.com/irth/together)
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
title: "About me"
|
|
||||||
date: 2021-09-12T17:12:35+02:00
|
|
||||||
draft: false
|
|
||||||
---
|
|
||||||
Hi! My name is Wojciech Kwolek, I am from Poland. I like coding, creating things, usually while listening to music. I sometimes roller-blade or ski. Enjoy!
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
---
|
|
||||||
title: "DoneTh.at: the why and the future."
|
|
||||||
date: 2020-09-22T17:15:30+02:00
|
|
||||||
draft: false
|
|
||||||
project: donethat
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
As some of you might know (because it is on my main website), I have recently built DoneTh.at:
|
|
||||||
|
|
||||||
[https://doneth.at](https://doneth.at)
|
|
||||||
|
|
||||||
The reasoning behind the project is that I noticed that I often feel like I waste my time a lot or am unproductive everyday. Even though that is true sometimes, usually it's just that I quickly forget what I accomplished during the day, and unless I have been working on something all day, I feel like I didn't do much.
|
|
||||||
<!--more-->
|
|
||||||
So, I made a simple website that allows me to track what I accomplished each day. Each accomplishement has a difficulty value assigned, which allows me to compare days, have daily goals and draw graphs.
|
|
||||||
|
|
||||||
Originally, it was supposed to be an app that takes your TODOs from CalDAV or other services and draws a Github style activity graph based on how many tasks you complete. However, this had a few issues:
|
|
||||||
|
|
||||||
* CalDAV is a PITA to work with.
|
|
||||||
* CalDAV doesn't support hand written TODOs, which I'll switch to once I get my reMarkable 2.
|
|
||||||
* You need to plan for each task ahead of time, no easy way to get points for something done without planning.
|
|
||||||
* Lot's of edge cases when syncing.
|
|
||||||
|
|
||||||
Eventually, I came up with a cool domain name (DoneTh.at) and at that moment I decided to ditch the CalDAV sync idea and implement DoneTh.at instead.
|
|
||||||
|
|
||||||
|
|
||||||
## Future plans
|
|
||||||
|
|
||||||
### Storing dates for the accomplishements and day-start-hour customisation
|
|
||||||
First, I need to refactor the code to use dates without time, because time has timezones and I do not want to handle this.
|
|
||||||
|
|
||||||
The only point where actual time will be handled is when creating an accomplishement and then I'd like it to be as simple as possible:
|
|
||||||
|
|
||||||
* Get the time in the user's configured timezone.
|
|
||||||
* Get just the date from that timestamp, without hours.
|
|
||||||
* Check what hour the user considers "start-of-day".
|
|
||||||
* If the time is before, set the day to the day before.
|
|
||||||
* Otherwise, set it to the day from the timestamp.
|
|
||||||
|
|
||||||
Once the timezone and start-of-day hour is considered, the resulting day is saved in the database and I don't have to worry about the user changing the timezone or the hour later, as it won't affect historical data.
|
|
||||||
|
|
||||||
This also solves a problem where I didn't know what timestamp to associate with accomplishements created from the edit view, for previous days. I do not want to ask the user for the exact time, as they might not know it, and I want the UX to be uncluttered.
|
|
||||||
|
|
||||||
Allowing customising the hour that is considered the beginning of a new day would be useful for me and I'm sure for many others who also often do stuff in the night and go to sleep at 3 or 4 AM. The credit for the idea goes to the authors/contributors of GTimeLog which I got the idea from.
|
|
||||||
|
|
||||||
[GTimeLog - a very nice open-source time tracker.](https://gtimelog.org)
|
|
||||||
|
|
||||||
### Quests
|
|
||||||
Quests are kind of like TODOs - they are accomplishements, with associated difficulty, which you haven't done yet. You can add quests when you know you need to do something, and then when you eventually do it, just mark it as done and it is saved as an accomplishement.
|
|
||||||
|
|
||||||
I plan of adding two types of quests - one-off and recurring. One-off quests are ordinary TODOs, recurring quests are for stuff like "Practice Dutch" which you need to do every day.
|
|
||||||
|
|
||||||
I need to figure out how to add it without sacrificing the simplicity DoneTh.at currently has.
|
|
||||||
|
|
||||||
### Daily goal
|
|
||||||
Allow to set a daily goal, and then the app would track your streak and show you how much you need to do to reach the goal.
|
|
||||||
|
|
||||||
### Activity graph
|
|
||||||
Github style activity graph, but based on how much of the daily goal you did.
|
|
||||||
|
|
||||||
(The daily target would be, I guess, around 50% color value, as ideally you would reach it every day, and having the graph clipped at that value would result in a kinda boring graph.)
|
|
||||||
|
|
||||||
### Categories and advanced input parsing
|
|
||||||
Categories based on #hashtags in the accomplishement text. I also want to support changing the difficulty by writting stuff like "+30" in the input field.
|
|
||||||
|
|
||||||
|
|
||||||
### API
|
|
||||||
For apps and stuff.
|
|
||||||
|
|
||||||
Currently DoneTh.at is 100% server-side rendered and works without JavaScript (it even mostly works with Lynx, except that it doesn't refresh after submitting forms, I'll need to fix that), and I think I want to keep it that way, but I'll see if I can extend it easily to support bearer token auth and JSON in requests and responses.
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
---
|
|
||||||
title: "Small update to DoneTh.at."
|
|
||||||
date: 2021-12-04T15:06:35+01:00
|
|
||||||
draft: false
|
|
||||||
project: donethat
|
|
||||||
---
|
|
||||||
I've finally started working on [DoneTh.at](https://doneth.at) again!
|
|
||||||
|
|
||||||
As part of my therapy I'm trying to write down the good stuff that's happening in my life, and a part of that is actually doing productive stuff. This reminded me that DoneTh.at existed, and is a perfect tool for that. So, with the newfound motivation, I've deployed two small updates and I'm working on something bigger.
|
|
||||||
|
|
||||||
### Bugfix: you can now set midnight as the start of day.
|
|
||||||
|
|
||||||
I've implemented a feature in DoneTh.at, where you can set when a day "begins". So - if you set it to 2 AM, tasks you've submitted before 2 AM on a Tuesday get added to Monday. Due to incorrectly set validation, it was not possible to make this setting 0 - midnight. That's fixed now.
|
|
||||||
|
|
||||||
### Graph now shows average.
|
|
||||||
|
|
||||||
The 7-day graph now shows a line representing the 7-day average. I might change it to not include the current day until it's finished, so that you can use it to motivate yourself to match the previous days.
|
|
||||||
|
|
||||||
## API!
|
|
||||||
|
|
||||||
I am working on creating an API for integrating DoneTh.at with other services!
|
|
||||||
|
|
||||||
I am hoping to then make plugins for various productivity tools for managing tasks, with stuff like Duolingo, etc.
|
|
||||||
|
|
||||||
A Telegram bot is also in plans :)
|
|
||||||
|
|
@ -11,12 +11,6 @@ SSH_ARGS="-o StrictHostKeyChecking=no"
|
||||||
SSH_ARGS="$SSH_ARGS -l $SSH_USER"
|
SSH_ARGS="$SSH_ARGS -l $SSH_USER"
|
||||||
}
|
}
|
||||||
|
|
||||||
compile() {
|
rsync -e "ssh $SSH_ARGS" -avz --delete public/ zlomek.irth.pl:/srv/http/homepage/
|
||||||
if [[ $JUST_DEPLOY != "yes" ]]; then
|
|
||||||
hugo
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
compile && rsync -e "ssh $SSH_ARGS" -avz --delete public/ zlomek.irth.pl:/srv/http/homepage/
|
|
||||||
|
|
||||||
[[ -n "$SSH_KEY_FILE" ]] && rm "$SSH_KEY_FILE"
|
[[ -n "$SSH_KEY_FILE" ]] && rm "$SSH_KEY_FILE"
|
||||||
|
|
@ -0,0 +1,129 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>irth's wobsite</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||||
|
|
||||||
|
<h1>irth's wobsite</h1>
|
||||||
|
|
||||||
|
<p>I'm Wojtek (<i>he/him</i>), usually ~irth on the internet.</p>
|
||||||
|
<p>
|
||||||
|
I like to make stuff (<i>funny>useful</i>, but I'd like my projects to be
|
||||||
|
both, ideally).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've been tinkering with computers ever since I was a kid, and I love seeing an idea come into life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I test this website with Links btw.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><b>And who are you?</b></p>
|
||||||
|
I am: <br>
|
||||||
|
<input type="radio" name="viewer" id="viewer-friend" value="friend">
|
||||||
|
<label for="viewer-friend">a friend</label><br>
|
||||||
|
<input type="radio" name="viewer" id="viewer-cat" value="cat">
|
||||||
|
<label for="viewer-cat">a cat</label><br>
|
||||||
|
<input type="radio" name="viewer" id="viewer-recruiter" value="recruiter">
|
||||||
|
<label for="viewer-recruiter">a recruiter</label><br>
|
||||||
|
<input type="radio" name="viewer" id="viewer-australian" value="australian">
|
||||||
|
<label for="viewer-australian">Australian</label><br>
|
||||||
|
<input type="radio" name="viewer" id="viewer-curious" value="curious" checked>
|
||||||
|
<label for="viewer-curious">just curious</label>.<br>
|
||||||
|
|
||||||
|
<p id="nocss">
|
||||||
|
(This picker requires CSS to work, unfortunately.)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div id="for-cats"></div>
|
||||||
|
|
||||||
|
<div id="switcharoo">
|
||||||
|
<div id="links">
|
||||||
|
<h3>A bunch of links</h3>
|
||||||
|
<ul class="no-a-visited">
|
||||||
|
<li><a href="https://github.com/irth">Github</a> (@irth)</li>
|
||||||
|
<li><a href="https://hackrc.dev/@irth">Fedi</a> (@irth@hackrc.dev)</li>
|
||||||
|
<li><a href="https://twitter.com/irth7">Twitter</a> (@irth7)</li>
|
||||||
|
<li><a href="mailto:wojciech@kwolek.io">Email</a> (wojciech@kwolek.io)</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="current-projects">
|
||||||
|
<h3>Current projects</h3>
|
||||||
|
<ul class="no-a-visited">
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/irth/opencanvas-go">OpenCanvas</a>
|
||||||
|
- a HTML renderer for
|
||||||
|
<a href="https://obsidian.md">Obsidian</a>'s <a href="https://jsoncanvas.org">JSON Canvas</a>
|
||||||
|
files.<br>
|
||||||
|
Very much work in progress.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="past-projects">
|
||||||
|
<h3>Past projects</h3>
|
||||||
|
<ul class="no-a-visited">
|
||||||
|
<li><a href="https://doneth.at">DoneTh.at</a> – a Flask app for tracking your productivity by giving you
|
||||||
|
points for doing stuff. (<a href="https://github.com/irth/doneth.at">repo</a>)</li>
|
||||||
|
<li><a href="https://github.com/irth/blag">Blag</a> – a static site generator written in Go.</li>
|
||||||
|
<li><a href="https://github.com/irth/gophernews">GopherNews</a> – a proxy that allows you to browse
|
||||||
|
Hacker
|
||||||
|
News using your favourite Gopher client, written in Go.</li>
|
||||||
|
<li><a href="https://github.com/irth/together">Together for Spotify</a> – a web app that allows two Spotify
|
||||||
|
users to log in and find the cross section of their music libraries.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="shitposts">
|
||||||
|
<h3>Shitposts</h3>
|
||||||
|
<ul class="no-a-visited">
|
||||||
|
<li><a href="https://catsp.in">catsp.in</a></li>
|
||||||
|
<li><a href="https://worldrecord.irth.pl">worldrecord.irth.pl</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="friends">
|
||||||
|
<h3>Friends</h3>
|
||||||
|
<ul class="no-a-visited">
|
||||||
|
<li id="onlyfriends"><b>you!</b></li>
|
||||||
|
<li><a href="https://krafal.eu">BluRaf</a></li>
|
||||||
|
<li><a href="https://grzesiekkkkk.eu">grzesiekkkkk</a></li>
|
||||||
|
<li><a href="https://tarnowski.io">Juliusz</a></li>
|
||||||
|
<li><a href="https://millie.systems">milliectl</a></li>
|
||||||
|
<li><a href="https://naruciakk.eu">Robert von Oliva</a> (naruciakk)</li>
|
||||||
|
<li><a href="https://sdomi.pl">sdomi</a></li>
|
||||||
|
<li><a href="https://hardcoded.info">Szymon</a></li>
|
||||||
|
<li><a href="https://tadeustad.psifactor.pl">TadeusTaD</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="experience">
|
||||||
|
<h3>Work experience</h3>
|
||||||
|
<p>I have almost 5 years commercial experience in IT (DevOps, Software Engineering).</p>
|
||||||
|
<p>Some of the stuff I used at work:</p>
|
||||||
|
<ul>
|
||||||
|
<li><b>Golang</b>, <b>Python</b>, <b>Rust</b>, <b>Bash</b></li>
|
||||||
|
<li>HTML/CSS/JS, Vue/React</li>
|
||||||
|
<li><b>Docker</b></li>
|
||||||
|
<li><b>Git/GitLab</b>, <b>GitLab CI</b>/Jenkins</li>
|
||||||
|
<li>
|
||||||
|
Cloud stuff (AWS):
|
||||||
|
<ul>
|
||||||
|
<li>Lambda, API Gateway, EventBridge</li>
|
||||||
|
<li>S3, CloudFront</li>
|
||||||
|
<li>DynamoDB</li>
|
||||||
|
<li>Security Hub, Config, Inspector</li>
|
||||||
|
<li>IAM, Cognito</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>And more. Usually I can figure out the missing parts as I go.</p>
|
||||||
|
<p>
|
||||||
|
Feel free to
|
||||||
|
<a
|
||||||
|
href="mailto:wojciech@kwolek.io?subject=hi%20can%20u%20work%20for%20me%20pls&body=Hiiii%20:3%0A%0Ado%20u%20want%20to%20work%20for%20me%3F%0A%0Asalary%20range:%20%0Acontract%20type:%0Ajob%20description:%0A">hire
|
||||||
|
me.</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
html {
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
padding-bottom: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: system-ui, sans-serif;
|
||||||
|
line-height: 1.5;
|
||||||
|
max-width: 40em;
|
||||||
|
padding: 0 2%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-input {
|
||||||
|
width: 96%;
|
||||||
|
display: block;
|
||||||
|
padding: 0.5em 1%;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
height: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.important {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.centered {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.nope {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: purple;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-a-visited a:visited,
|
||||||
|
.cleanlinks a:visited {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-top: 1.7em;
|
||||||
|
margin-bottom: 0.3em;
|
||||||
|
}
|
||||||
|
h3 + ul {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-cat:checked ~ #for-cats::after {
|
||||||
|
display: block;
|
||||||
|
margin-top: 1em;
|
||||||
|
content: "meow nya mrrp :3 pspsps";
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-friend:not(:checked) ~ #switcharoo #onlyfriends {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo > div {
|
||||||
|
order: 9999;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo > #links {
|
||||||
|
order: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo > #experience {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo > #current-projects {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-recruiter:checked ~ #switcharoo > #past-projects {
|
||||||
|
order: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewer-australian:checked ~ #switcharoo {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nocss {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
=uHZs
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2021 YOUR_NAME_HERE
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
|
||||||
the Software without restriction, including without limitation the rights to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
+++
|
|
||||||
+++
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
{{- partial "head.html" . -}}
|
|
||||||
<body>
|
|
||||||
{{- partial "header.html" . -}}
|
|
||||||
<div id="content">
|
|
||||||
{{- block "main" . }}{{- end }}
|
|
||||||
</div>
|
|
||||||
{{- partial "footer.html" . -}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{{ define "main" }}
|
|
||||||
<h2 class="listTitle">{{ .Title }}</h2>
|
|
||||||
{{ range .Paginator.Pages }}
|
|
||||||
<h3 class="listItem"><a href="{{ .Permalink }}">{{ .Title }}</a></h3>
|
|
||||||
<div class="content">{{ .Summary }}</div>
|
|
||||||
<div>
|
|
||||||
<a href="{{ .Permalink }}">See more...</a>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{ template "_internal/pagination.html" . }}
|
|
||||||
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{{ define "main" }}
|
|
||||||
<h2 class="postTitle">{{ .Title }}</h2>
|
|
||||||
<div class="content">
|
|
||||||
{{ .Content | safeHTML }}
|
|
||||||
</div>
|
|
||||||
{{ if not (eq .Section "projects") }}
|
|
||||||
<div class="meta">
|
|
||||||
{{ .Date }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if (isset .Params "projectname") }}
|
|
||||||
<ul class="projectUpdateList postList">
|
|
||||||
<h4>Updates:</h4>
|
|
||||||
{{ range (first 10 (where .Site.RegularPages "Params.project" .Params.projectName)) }}
|
|
||||||
<li>
|
|
||||||
<div class="timestamp">
|
|
||||||
{{ time.Format "2006-01-02" .Date }}
|
|
||||||
</div>
|
|
||||||
<div class="link">
|
|
||||||
<a href="{{ .Permalink }}">
|
|
||||||
{{ .LinkTitle }}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
{{ define "main" }}
|
|
||||||
<section id="about_me">
|
|
||||||
{{ if (where .Site.RegularPages "Section" "top") }}
|
|
||||||
{{ range where .Site.RegularPages "Section" "top" }}
|
|
||||||
<h2>{{ .Title }}</h2>
|
|
||||||
<div class="content">
|
|
||||||
{{ .Content }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</section>
|
|
||||||
<div id="homepage">
|
|
||||||
<section id="recent_posts">
|
|
||||||
<h2><a href="/posts">Recent posts</a></h2>
|
|
||||||
<ul class="postList">
|
|
||||||
{{ range (first 10 (where .Site.RegularPages "Section" "posts")) }}
|
|
||||||
<li>
|
|
||||||
<div class="timestamp">
|
|
||||||
{{ time.Format "2006-01-02" .Date }}
|
|
||||||
</div>
|
|
||||||
<div class="link">
|
|
||||||
<a href="{{ .Permalink }}">
|
|
||||||
{{ .LinkTitle }}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
<div class="seeAll"><a href="/posts">See all...</a></div>
|
|
||||||
</section>
|
|
||||||
{{ if (where .Site.RegularPages "Section" "updates") }}
|
|
||||||
<section id="project_updates">
|
|
||||||
<h2><a href="/updates">Project updates</a></h2>
|
|
||||||
<ul class="postList">
|
|
||||||
{{ range (first 10 (where .Site.RegularPages "Section" "updates")) }}
|
|
||||||
<li>
|
|
||||||
<div class="timestamp">
|
|
||||||
{{ time.Format "2006-01-02" .Date }}
|
|
||||||
</div>
|
|
||||||
<div class="link">
|
|
||||||
<a href="{{ .Permalink }}">
|
|
||||||
{{ .LinkTitle }}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
<div class="seeAll"><a href="/updates">See all...</a></div>
|
|
||||||
</section>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ if (where .Site.RegularPages "Section" "projects") }}
|
|
||||||
<section id="projects">
|
|
||||||
<h2><a href="/projects">Projects</a></h2>
|
|
||||||
{{ range where .Site.RegularPages "Section" "projects" }}
|
|
||||||
<div class="project">
|
|
||||||
<h3><a href="{{ .Permalink }}">{{ .Title }}</a></h3>
|
|
||||||
<div class="content">
|
|
||||||
{{ .Summary }}
|
|
||||||
</div>
|
|
||||||
<p><a href="{{ .Permalink }}">See more...</a></p>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</section>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
|
||||||
{{ $title := print .Site.Title " | " .Title }}
|
|
||||||
{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}
|
|
||||||
<title>{{ $title }}</title>
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://kwolek.io/posts/index.xml">
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
|
|
||||||
</head>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<header>
|
|
||||||
<h1><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h1>
|
|
||||||
<div class="icons">
|
|
||||||
<a href="https://github.com/irth"><i class="bi-github"></i></a>
|
|
||||||
<a href="mailto:wojciech@kwolek.io"><i class="bi-envelope-fill"></i></a>
|
|
||||||
<a href="https://hackrc.dev/@irth"><i class="bi-mastodon"></i></a>
|
|
||||||
<a href="https://kwolek.io/public-key.gpg"><i class="bi-key-fill"></i></a>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
// ==UserScript==
|
|
||||||
// @name Duolingo mistake helper
|
|
||||||
// @description Requires an additional enter click to move to the next exercise when you have made a mistake.
|
|
||||||
//
|
|
||||||
// @run-at document-start
|
|
||||||
// @include https://www.duolingo.com/*
|
|
||||||
// @grant none
|
|
||||||
// ==/UserScript==
|
|
||||||
|
|
||||||
var checking = 0;
|
|
||||||
|
|
||||||
function advance() {
|
|
||||||
document.querySelector("button[data-test=player-next]").click()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
(window.opera ? document.body : document).addEventListener('keydown', function(e) {
|
|
||||||
if (e.keyCode == 13) {
|
|
||||||
e.cancelBubble = true;
|
|
||||||
e.stopImmediatePropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
if(checking === 0) {
|
|
||||||
checking = 1;
|
|
||||||
advance()
|
|
||||||
} else if(checking === 1) {
|
|
||||||
var correct = document.querySelector("[data-test*=blame-incorrect]") == null
|
|
||||||
if(correct) advance();
|
|
||||||
else {
|
|
||||||
checking = 2;
|
|
||||||
}
|
|
||||||
} else if(checking === 2) {
|
|
||||||
checking = 0;
|
|
||||||
advance()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}, !window.opera);
|
|
||||||
|
|
@ -1,237 +0,0 @@
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;400;500&display=swap');
|
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@200;500&display=swap');
|
|
||||||
|
|
||||||
body {
|
|
||||||
max-width: 768px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 2em;
|
|
||||||
color: #fdf6ff;
|
|
||||||
background-color: #27273c;
|
|
||||||
margin-bottom: 5em;
|
|
||||||
font-family: 'Montserrat', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 > a, h3 > a, h4 > a, h5 > a,
|
|
||||||
h2,h3,h4,h5 {
|
|
||||||
color: #bcadff;
|
|
||||||
font-weight: 500;
|
|
||||||
border-bottom: solid 2px #343850;
|
|
||||||
padding-bottom: .2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
header a {
|
|
||||||
color: #fdf6ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
header .icons a:hover {
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
header > h1 {
|
|
||||||
font-size: 4em;
|
|
||||||
font-weight: 200;
|
|
||||||
margin-bottom: 1.7rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
header > .icons > a {
|
|
||||||
margin: 0 .5em;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#content {
|
|
||||||
margin-top: 3em;
|
|
||||||
line-height: 1.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#homepage {
|
|
||||||
display: flex;
|
|
||||||
align-content: stretch;
|
|
||||||
}
|
|
||||||
|
|
||||||
#recent_posts, #project_updates {
|
|
||||||
flex-basis: 0px;
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #00e3ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
margin-bottom: 0.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
margin-bottom: 0.4em;;
|
|
||||||
margin-top: 1.0em;
|
|
||||||
font-size: 1.7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.postList {
|
|
||||||
list-style: none;
|
|
||||||
padding-left: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 0.2em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
.meta {
|
|
||||||
font-size: .8em;
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
#recent_posts {
|
|
||||||
margin-right: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#project_updates {
|
|
||||||
margin-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
#homepage {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#recent_posts {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
#project_updates {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ul.pagination {
|
|
||||||
border-left: none;
|
|
||||||
border-top: solid 2px #343850;
|
|
||||||
padding-top: 0.5em;
|
|
||||||
font-size: 1.2em;
|
|
||||||
margin: 0 auto;
|
|
||||||
max-width: 20em;
|
|
||||||
margin-top: 3em;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination li {
|
|
||||||
margin: 0 .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination .active {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination a {
|
|
||||||
color: #fdf6ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination .active a {
|
|
||||||
color: #bcadff;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination .disabled a {
|
|
||||||
color: #343850;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.pagination .disabled a:hover {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2.listTitle {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 2.5em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3.listItem {
|
|
||||||
font-size: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2.postTitle {
|
|
||||||
font-size: 2em;
|
|
||||||
margin-bottom: .7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.projectUpdateList {
|
|
||||||
margin-top: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.twitter-tweet {
|
|
||||||
padding-top: 0.2em;
|
|
||||||
padding-bottom: 0.6em;
|
|
||||||
padding-left: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.postList li {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.postList .timestamp {
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: .5em;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.postList .timestamp {
|
|
||||||
font-family: 'Source Code Pro', monospace;
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight {
|
|
||||||
overflow-x: auto;
|
|
||||||
background-color: #272822;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
box-sizing: bounding-box;
|
|
||||||
line-height: 1.2;
|
|
||||||
font-size: 1.2em;
|
|
||||||
margin: 1em;
|
|
||||||
}
|
|
||||||
.seeAll {
|
|
||||||
text-align: right;
|
|
||||||
padding-right: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project h3 {
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol > li {
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# theme.toml template for a Hugo theme
|
|
||||||
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
|
||||||
|
|
||||||
name = "Kwolek"
|
|
||||||
license = "MIT"
|
|
||||||
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
|
|
||||||
description = ""
|
|
||||||
homepage = "http://example.com/"
|
|
||||||
tags = []
|
|
||||||
features = []
|
|
||||||
min_version = "0.41.0"
|
|
||||||
|
|
||||||
[author]
|
|
||||||
name = ""
|
|
||||||
homepage = ""
|
|
||||||
|
|
||||||
# If porting an existing theme
|
|
||||||
[original]
|
|
||||||
name = ""
|
|
||||||
homepage = ""
|
|
||||||
repo = ""
|
|
||||||
Loading…
Reference in New Issue