From fafa5ee954c55d469cc16e866f108f97ed964ae3 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 12 May 2025 12:26:21 +0100 Subject: [PATCH 1/3] [2025-05-12] Add Geist Black font and RSS icon to header --- _includes/header.html | 10 ++++++++-- assets/css/default.css | 11 +++++++++++ assets/fonts/Geist-Black.otf | Bin 0 -> 134468 bytes assets/images/icons/rss.svg | 7 +++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 assets/fonts/Geist-Black.otf create mode 100644 assets/images/icons/rss.svg diff --git a/_includes/header.html b/_includes/header.html index 6fbcc83..b9eb77b 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,4 +1,10 @@ -andrewconl.in is CSSing
-blog til projects meta feed [archive] +andrewconl.in is CSSing
+ + blog + til + projects + meta + feed + [archive]

diff --git a/assets/css/default.css b/assets/css/default.css index 9e8e69a..b82bb1c 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -5,6 +5,13 @@ font-style: normal; } +@font-face { + font-family: 'Geist Black'; + src: url('/assets/fonts/Geist-Black.otf') format('opentype'); + font-weight: normal; + font-style: normal; +} + @font-face { font-family: 'Geist Mono'; src: url('/assets/fonts/GeistMonoNerdFont-Regular.otf') format('opentype'); @@ -98,6 +105,10 @@ a:hover { text-decoration: none; border-bottom: 2px solid #FABD2F; border-radius: 1px; + + img { + filter: brightness(0) saturate(100%); + } } img { diff --git a/assets/fonts/Geist-Black.otf b/assets/fonts/Geist-Black.otf new file mode 100644 index 0000000000000000000000000000000000000000..c1489de26bd9140e992098aafb30e743e8b5687d GIT binary patch literal 134468 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

-Tz4^1yW1_NYHUet}_9o=EFJ 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ΠsGa|hS~P5OV)?dyrOSIE4t*MA#hA#v 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 literal 0 HcmV?d00001 diff --git a/assets/images/icons/rss.svg b/assets/images/icons/rss.svg new file mode 100644 index 0000000..54759f9 --- /dev/null +++ b/assets/images/icons/rss.svg @@ -0,0 +1,7 @@ + + + + + + rss [#1028] Created with Sketch. + \ No newline at end of file From 9f630196edfa3867e23ac066e893c4b6e8b4bfc7 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 12 May 2025 12:26:47 +0100 Subject: [PATCH 2/3] [2025-05-12] Syntax highlighting through CSS and markdown --- .../2024-02-28-microzig-display-driver.md | 8 +- _posts/til/2023-03-01-nextcloud-php-errors.md | 10 +-- ...-04-19-running-python-in-cron-in-docker.md | 23 +++--- .../2024-01-10-using-rvm-with-alacritty.md | 4 +- assets/css/default.css | 2 + assets/css/gruvbox.css | 73 +++++++++++++++++++ 6 files changed, 98 insertions(+), 22 deletions(-) create mode 100644 assets/css/gruvbox.css diff --git a/_posts/blog/2024-02-28-microzig-display-driver.md b/_posts/blog/2024-02-28-microzig-display-driver.md index 40a8311..31c50da 100644 --- a/_posts/blog/2024-02-28-microzig-display-driver.md +++ b/_posts/blog/2024-02-28-microzig-display-driver.md @@ -35,7 +35,7 @@ But where is the fun in that?! Something about this project wouldn't let me just I started out by trying to just send commands to the screen. I knew the default address of the device from the datasheet (0x3C), and started firing commands over I2C to try and provoke any sort of reaction. The MicroZig driver allowed me to this super easily. Just setup the I2C device, and then send data using the `write_blocking` function. I put the sending code inside a little function to make things easier to parse: -``` +```zig const i2c0 = i2c.num(0); _ = i2c0.apply(.{ .clock_config = rp2040.clock_config, @@ -44,7 +44,7 @@ _ = i2c0.apply(.{ .baud_rate = 400000, }); ``` -``` +```zig pub fn send(bytes: []const u8) !void { const a: i2c.Address = @enumFromInt(0x3C); _ = i2c0.write_blocking(a, bytes) catch { @@ -57,7 +57,7 @@ The SSD1306, stood firm, resolutely denying me even a single pixel. There is no It was at this point that I became really impressed with Zig's compilation, and in particular the caching. As part of this process, I was messing around a lot with my code, and then building and loading onto the Pico with the following command: -``` +```bash zig build; picotool load -x zig-out/firmware/pico_i2c.uf2 ``` @@ -83,7 +83,7 @@ Surely I was almost there? Well, almost yes, but not quite. Matiasus's commands The thing that made the breakthrough for me was [this holy grail of a blog post](https://nnarain.github.io/2020/12/01/SSD1306-OLED-Display-Driver-using-I2C.html). Just exactly what I needed at exactly the right time. It calmly and thoroughly explains the process of communicating with the display, as well as the initialisation. I was mostly right in what I interpreted from the datasheet, but it is always nice to have things confirmed by someone who clearly understands this better than you. This led me to the following initialisation commands: -``` +```zig const INIT = [_]u8{ CONTROL_COMMAND, 0xAE, CONTROL_COMMAND, 0xA8, 0x1F, diff --git a/_posts/til/2023-03-01-nextcloud-php-errors.md b/_posts/til/2023-03-01-nextcloud-php-errors.md index 2461de9..a4c3a6b 100644 --- a/_posts/til/2023-03-01-nextcloud-php-errors.md +++ b/_posts/til/2023-03-01-nextcloud-php-errors.md @@ -1,7 +1,7 @@ --- title: Fixing php errors in a Nextcloud docker-compose configuration -categories: -- til +category: til +layout: post tags: - php - nextcloud @@ -15,7 +15,7 @@ I was trying to rescan the files in my Nextcloud server (running on Raspberry Pi I was trying using the following syntax to call `occ` and scan the files: -``` +```bash sudo -u www-data php /path/to/nextcloud/occ files:scan --all ``` @@ -32,7 +32,7 @@ It took me a decent amount of time to diagnose the exact issue, but eventually I Running `php -m` will print out the list of currently installed PHP modules. I noticed I was missing quite a few of the required modules, but the one that was causing my issue was the missing `pdo_mysql` module. This can be installed by running: -``` +```bash sudo apt-get install php7.4-mysql ``` **Note: This command will change based on your OS, PHP version and database type** @@ -49,7 +49,7 @@ From first glance, this looks like something wrong in the DNS name resolution. T Eventually however, after a long and perilous journey over the high seas of Nextcloud forums and StackOverflow, I found [this example](https://techoverflow.net/2020/07/17/how-to-run-nextcloud-php-occ-in-a-docker-compose-configuration/) of running `php occ` in a docker-compose configuration. This led me to running this command: -``` +```bash docker-compose exec -u www-data nextcloud-app php occ files:scan --all ``` **Note: replace nextcloud-app with the name of your Nextcloud container. Also, this command must be run from the directory of your Nextcloud docker-compose.yml** diff --git a/_posts/til/2023-04-19-running-python-in-cron-in-docker.md b/_posts/til/2023-04-19-running-python-in-cron-in-docker.md index 0e8ef95..4e25893 100644 --- a/_posts/til/2023-04-19-running-python-in-cron-in-docker.md +++ b/_posts/til/2023-04-19-running-python-in-cron-in-docker.md @@ -1,6 +1,7 @@ --- title: Running a Python script periodically in a Docker container using cron category: til +layout: post --- Recently, my partner gave a great idea for utilising my old Kindle: generate a "newspaper" each morning from a bunch of RSS feeds, and email it to the Kindle using "Send-to-Kindle" feature (a blog post about this project is in the works). @@ -10,7 +11,7 @@ I loved this idea, and thought it would be no problem to get a Python script up ## 1. Double check the user A lot of problems with `cron` come down to user privileges. Each user has their own `crontab`, and then there is the system-wide *root* `crontab`. The first issue I ran into with creating a `cron` job inside a container was that Docker created the crontab as a non-root user. This issue presented itself to me when I tried to run the following command, to list the current cronjobs in the Docker container: -``` +```bash docker-compose exec container-name crontab -l ``` This returned the following output: @@ -18,24 +19,24 @@ This returned the following output: no crontab for root ``` Now, it is not necessarily a problem to have non-root `cron` jobs, but just make absolutely certain that you are creating the jobs with the user you expect. For me, I wanted to run as `root`, so I added to following line to my docker-compose.yml: -``` +```yaml user: root ``` Now, the `root` user will be used when building your Docker image and the created `crontab` will be where you expect. ## 2. Missing dependencies When `cron` calls your Python script, you may run into issues with `ModuleNotFoundError` or `ImportError`, where Python cannot find your installed packages. This is because `cron` does not have access to your system environment variables, including the Python path. You can resolve most of these errors with imports by adding the `PYTHONPATH` environment variable to your `crontab`. This should be the path to your `site-packages` folder, something like this: -``` +```bash PYTHONPATH=/usr/bin/local/python3 ``` You may also need to add a shebang (`#!`) to your Python script to direct `cron` to the correct version. You can find the Python location with one of the following commands: -``` +```bash which python which py which python3 ``` *NOTE*: These commands must be performed in your Docker container when it is up and running. In `docker-compose` syntax this would be the following (with the name of your container instead of `container-name`): -``` +```bash docker-compose exec container-name which python3 ``` You can then add this to the top of your Python script, as follows: @@ -44,11 +45,11 @@ You can then add this to the top of your Python script, as follows: ``` ## 3. Still missing dependencies Some modules will still run into errors even when the PYTHONPATH variable has been set. In particular, I ran into problems with `reportlab` and `Pillow/PIL`: -``` +```python ImportError: cannot import name '_imaging' from 'PIL' ``` This was solved by adding the system PATH to the `crontab` as well. The system path is included in the default `crontab` that is created when you first run `crontab -e`: -``` +```bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ``` Therefore, it is a good idea to include it if you are making a new `crontab` to make sure `cron` can find everything it needs to. @@ -72,7 +73,7 @@ I was able to resolve these by adding `python3-dev`, `wheel` and `Cmake` to my ` I hope this helped you resolve some errors! I've included my Dockerfile, docker-compose.yml and crontab below if you want to set up a similar project or adjust your own files. The full repo is also available [here](https://github.com/andrwcnln/watchman). Dockerfile: -``` +```docker FROM python:3 COPY . . @@ -90,7 +91,7 @@ RUN crontab crontab CMD cron -f ``` docker-compose.yml: -``` +```yaml version: "2.4" services: @@ -105,9 +106,9 @@ services: dockerfile: Dockerfile ``` crontab: -``` +```cron PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PYTHONPATH=/usr/bin/local/python3 15 7 * * * python3 /main.py >> /var/log/cron.log 2>&1 -``` \ No newline at end of file +``` diff --git a/_posts/til/2024-01-10-using-rvm-with-alacritty.md b/_posts/til/2024-01-10-using-rvm-with-alacritty.md index ce969c0..68b743b 100644 --- a/_posts/til/2024-01-10-using-rvm-with-alacritty.md +++ b/_posts/til/2024-01-10-using-rvm-with-alacritty.md @@ -25,11 +25,11 @@ Please visit https://rvm.io/integration/gnome-terminal/ for an example. So, we need to be in a login shell. Unfortunately, Alacritty does not have a settings GUI [like gnome-terminal](https://rvm.io/integration/gnome-terminal) and similar, and after thorough investigation I couldn't find a way to set this up through Alacritty. We need a different solution. Luckily, this is possible through the shell itself. You can open a login shell by running the following command (press Ctrl+D to return to the interactive shell): -``` +```bash bash --login ``` This also works with `zsh`, or Z-shell: -``` +```bash zsh --login ``` Unfortunately for all you fishers out there, I couldn't find a way to to this with `fish`. If you know how, [send me an email!](mailto:andrew@andrewconl.in) diff --git a/assets/css/default.css b/assets/css/default.css index b82bb1c..4fdc940 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -1,3 +1,5 @@ +@import "gruvbox.css"; + @font-face { font-family: 'Geist'; src: url('/assets/fonts/Geist-Regular.otf') format('opentype'); diff --git a/assets/css/gruvbox.css b/assets/css/gruvbox.css new file mode 100644 index 0000000..c0af0cb --- /dev/null +++ b/assets/css/gruvbox.css @@ -0,0 +1,73 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #282828; color: #ebdbb2; background-color: #282828 } +.highlight .c { color: #928374; font-style: italic; background-color: #282828 } /* Comment */ +.highlight .err { color: #ebdbb2; background-color: #282828 } /* Error */ +.highlight .esc { color: #ebdbb2; background-color: #282828 } /* Escape */ +.highlight .g { color: #ebdbb2; background-color: #282828 } /* Generic */ +.highlight .k { color: #fe8019; background-color: #282828 } /* Keyword */ +.highlight .l { color: #ebdbb2; background-color: #282828 } /* Literal */ +.highlight .n { color: #ebdbb2; background-color: #282828 } /* Name */ +.highlight .o { color: #fe8019; background-color: #282828 } /* Operator */ +.highlight .x { color: #ebdbb2; background-color: #282828 } /* Other */ +.highlight .p { color: #ebdbb2; background-color: #282828 } /* Punctuation */ +.highlight .ch { color: #928374; font-style: italic; background-color: #282828 } /* Comment.Hashbang */ +.highlight .cm { color: #928374; font-style: italic; background-color: #282828 } /* Comment.Multiline */ +.highlight .cp { color: #8ec07c; background-color: #282828 } /* Comment.Preproc */ +.highlight .c1 { color: #928374; font-style: italic; background-color: #282828 } /* Comment.Single */ +.highlight .cs { color: #928374; font-style: italic; background-color: #282828 } /* Comment.Special */ +.highlight .gd { color: #282828; background-color: #fb4934 } /* Generic.Deleted */ +.highlight .ge { color: #83a598; text-decoration: underline; background-color: #282828 } /* Generic.Emph */ +.highlight .gr { color: #ebdbb2; font-weight: bold; background-color: #fb4934 } /* Generic.Error */ +.highlight .gh { color: #b8bb26; font-weight: bold; background-color: #282828 } /* Generic.Heading */ +.highlight .gi { color: #282828; background-color: #b8bb26 } /* Generic.Inserted */ +.highlight .go { color: #504945; background-color: #282828 } /* Generic.Output */ +.highlight .gp { color: #ebdbb2; background-color: #282828 } /* Generic.Prompt */ +.highlight .gs { color: #ebdbb2; background-color: #282828 } /* Generic.Strong */ +.highlight .gu { color: #b8bb26; font-weight: bold; background-color: #282828 } /* Generic.Subheading */ +.highlight .gt { color: #ebdbb2; font-weight: bold; background-color: #fb4934 } /* Generic.Traceback */ +.highlight .kc { color: #fe8019; background-color: #282828 } /* Keyword.Constant */ +.highlight .kd { color: #fe8019; background-color: #282828 } /* Keyword.Declaration */ +.highlight .kn { color: #fe8019; background-color: #282828 } /* Keyword.Namespace */ +.highlight .kp { color: #fe8019; background-color: #282828 } /* Keyword.Pseudo */ +.highlight .kr { color: #fe8019; background-color: #282828 } /* Keyword.Reserved */ +.highlight .kt { color: #fabd2f; background-color: #282828 } /* Keyword.Type */ +.highlight .ld { color: #ebdbb2; background-color: #282828 } /* Literal.Date */ +.highlight .m { color: #d3869b; background-color: #282828 } /* Literal.Number */ +.highlight .s { color: #b8bb26; background-color: #282828 } /* Literal.String */ +.highlight .na { color: #b8bb26; font-weight: bold; background-color: #282828 } /* Name.Attribute */ +.highlight .nb { color: #fabd2f; background-color: #282828 } /* Name.Builtin */ +.highlight .nc { color: #ebdbb2; background-color: #282828 } /* Name.Class */ +.highlight .no { color: #d3869b; background-color: #282828 } /* Name.Constant */ +.highlight .nd { color: #ebdbb2; background-color: #282828 } /* Name.Decorator */ +.highlight .ni { color: #fabd2f; background-color: #282828 } /* Name.Entity */ +.highlight .ne { color: #fb4934; background-color: #282828 } /* Name.Exception */ +.highlight .nf { color: #fabd2f; background-color: #282828 } /* Name.Function */ +.highlight .nl { color: #fb4934; background-color: #282828 } /* Name.Label */ +.highlight .nn { color: #ebdbb2; background-color: #282828 } /* Name.Namespace */ +.highlight .nx { color: #ebdbb2; background-color: #282828 } /* Name.Other */ +.highlight .py { color: #ebdbb2; background-color: #282828 } /* Name.Property */ +.highlight .nt { color: #fb4934; background-color: #282828 } /* Name.Tag */ +.highlight .nv { color: #ebdbb2; background-color: #282828 } /* Name.Variable */ +.highlight .ow { color: #fe8019; background-color: #282828 } /* Operator.Word */ +.highlight .w { color: #ebdbb2; background-color: #282828 } /* Text.Whitespace */ +.highlight .mb { color: #d3869b; background-color: #282828 } /* Literal.Number.Bin */ +.highlight .mf { color: #d3869b; background-color: #282828 } /* Literal.Number.Float */ +.highlight .mh { color: #d3869b; background-color: #282828 } /* Literal.Number.Hex */ +.highlight .mi { color: #d3869b; background-color: #282828 } /* Literal.Number.Integer */ +.highlight .mo { color: #d3869b; background-color: #282828 } /* Literal.Number.Oct */ +.highlight .sb { color: #b8bb26; background-color: #282828 } /* Literal.String.Backtick */ +.highlight .sc { color: #b8bb26; background-color: #282828 } /* Literal.String.Char */ +.highlight .sd { color: #b8bb26; background-color: #282828 } /* Literal.String.Doc */ +.highlight .s2 { color: #b8bb26; background-color: #282828 } /* Literal.String.Double */ +.highlight .se { color: #b8bb26; background-color: #282828 } /* Literal.String.Escape */ +.highlight .sh { color: #b8bb26; background-color: #282828 } /* Literal.String.Heredoc */ +.highlight .si { color: #b8bb26; background-color: #282828 } /* Literal.String.Interpol */ +.highlight .sx { color: #b8bb26; background-color: #282828 } /* Literal.String.Other */ +.highlight .sr { color: #b8bb26; background-color: #282828 } /* Literal.String.Regex */ +.highlight .s1 { color: #b8bb26; background-color: #282828 } /* Literal.String.Single */ +.highlight .ss { color: #83a598; background-color: #282828 } /* Literal.String.Symbol */ +.highlight .bp { color: #fabd2f; background-color: #282828 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #ebdbb2; background-color: #282828 } /* Name.Variable.Class */ +.highlight .vg { color: #ebdbb2; background-color: #282828 } /* Name.Variable.Global */ +.highlight .vi { color: #ebdbb2; background-color: #282828 } /* Name.Variable.Instance */ +.highlight .il { color: #d3869b; background-color: #282828 } /* Literal.Number.Integer.Long */ From 018c74cad3e40960984a2614742d108391a45041 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 12 May 2025 12:27:08 +0100 Subject: [PATCH 3/3] [2025-05-12] Make date and reading time float right in post header --- _layouts/post.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_layouts/post.html b/_layouts/post.html index 6ed4107..b77e537 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,9 +1,9 @@ --- layout: default --- -~ / {{page.category}} / {{page.title}}
- - {{ page.date | date: "%Y-%m-%d" }}
+~ / {{page.category}} / {{page.title}} + + {{ page.date | date: "%Y-%m-%d" }} | {{ content | reading_time | pluralize: "minute" }}