From 297e1774d913c33c9985e0888e88e38b8632a357 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 14 Apr 2025 17:23:37 +0100 Subject: [PATCH 1/4] [2025-04-14] Fix typos in Microzig post, SDD -> SSD --- _posts/blog/2024-02-28-microzig-display-driver.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_posts/blog/2024-02-28-microzig-display-driver.md b/_posts/blog/2024-02-28-microzig-display-driver.md index b99e412..40a8311 100644 --- a/_posts/blog/2024-02-28-microzig-display-driver.md +++ b/_posts/blog/2024-02-28-microzig-display-driver.md @@ -4,7 +4,7 @@ category: blog title: Writing an OLED display driver in MicroZig --- -**Update 2025-03-06** / There is now an SDD1306 driver available in the [official MicroZig repository](https://github.com/ZigEmbeddedGroup/microzig/blob/main/drivers/display/ssd1306.zig). +**Update 2025-03-06** / There is now an SSD1306 driver available in the [official MicroZig repository](https://github.com/ZigEmbeddedGroup/microzig/blob/main/drivers/display/ssd1306.zig). # # Beginnings Recently, I have been messing around with a Rapsberry Pi Pico. Initially, I started out with MicroPython, as this is what most of the documentation for working with the Pico uses. However, this was honestly a little boring, as I seem to end up doing every project in Python. I wanted something a little more engaging for my brain, a little *spicier*. It's Friday afternoon! @@ -17,7 +17,7 @@ This project is great. It is still in the early-ish stages, with full support on This is exactly what I needed, so I jumped right in. Following along with the [Raspberry Pi examples](https://github.com/ZigEmbeddedGroup/microzig/tree/main/examples/raspberrypi-rp2040), I quickly had some working code for flashing some LEDs. Cool! -At this point, I remembered about a small OLED screen that I had, perfect for exactly this kind of tinkering. Time to get to work on on driving this bad boy. As is always the first step with hardware, I went off on a datasheet hunt. It took me an embarassingly long time to find, but I eventually figured out that I was the proud owner of an [SDD1306 OLED screen](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf). (This is the datasheet for the 128x64 version, but I have the 128x32). +At this point, I remembered about a small OLED screen that I had, perfect for exactly this kind of tinkering. Time to get to work on on driving this bad boy. As is always the first step with hardware, I went off on a datasheet hunt. It took me an embarassingly long time to find, but I eventually figured out that I was the proud owner of an [SSD1306 OLED screen](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf). (This is the datasheet for the 128x64 version, but I have the 128x32). Now, as datasheets go, this is pretty good. We have all of the available commands, and instructions for how to write to the display RAM (for showing stuff on the screen). But how do we send these commands? This is also in the datasheet: [I2C](https://en.wikipedia.org/wiki/I%C2%B2C). There is a brief explanation in there about what the device is expecting, but I needed to do some more digging, as this is my first time dabbling directly in I2C communication. @@ -53,7 +53,7 @@ pub fn send(bytes: []const u8) !void { } ``` -The SDD1306, stood firm, resolutely denying me even a single pixel. There is no feedback for any of this, except a single flashing LED to let me know my code is running. I am shooting from the hip (and missing). +The SSD1306, stood firm, resolutely denying me even a single pixel. There is no feedback for any of this, except a single flashing LED to let me know my code is running. I am shooting from the hip (and missing). 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: From 278cd7c4fbab32efbdf9c17e0127c73558451809 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 14 Apr 2025 17:26:39 +0100 Subject: [PATCH 2/4] [2025-04-14] Add `year-progress` to projects page --- projects.html | 1 + 1 file changed, 1 insertion(+) diff --git a/projects.html b/projects.html index b7e7ee5..4e35aa3 100644 --- a/projects.html +++ b/projects.html @@ -5,5 +5,6 @@ title: projects ~ > {{page.title}}

From 5a1ce2af213b58f3de3acd4b50713a24e7d1c584 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Mon, 14 Apr 2025 17:30:10 +0100 Subject: [PATCH 3/4] [2025-04-14] Update header and bump version number --- _config.yml | 2 +- _includes/header.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 6167096..eb12193 100644 --- a/_config.yml +++ b/_config.yml @@ -11,7 +11,7 @@ baseurl: "/" url: "https://andrewconl.in" author: Andrew Conlin -version: v25.3.PU0306 +version: v25.4.U0414 defaults: # blog diff --git a/_includes/header.html b/_includes/header.html index 4b7d507..5739067 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,4 +1,4 @@ -

andrewconl.in is tinkering

+

andrewconl.in is tracking his progress

blog   til   projects   meta   feed   [archive]

From c51385f72b1c3814dcf3c89c5988099a438e06e1 Mon Sep 17 00:00:00 2001 From: Andrew Conlin Date: Fri, 25 Apr 2025 14:45:55 +0100 Subject: [PATCH 4/4] [2025-04-25] Multiple design improvements - Font size and scaling better for different displays - Added 88x31 buttons in footer - Other minor changes to CSS and layouts --- _includes/categoryList.html | 11 +++++++++ _includes/defaultFooter.html | 16 +++++++++---- _includes/header.html | 7 +++--- _includes/pageTitle.html | 1 + _layouts/post.html | 7 +++--- archive.html | 14 ++---------- assets/css/default.css | 29 ++++++++++++++++++++---- assets/images/88x31/apache-powered.gif | Bin 0 -> 2778 bytes assets/images/88x31/bestviewedcomp.gif | Bin 0 -> 9419 bytes assets/images/88x31/debian.gif | Bin 0 -> 2184 bytes assets/images/88x31/firefox3.gif | Bin 0 -> 3009 bytes assets/images/88x31/internetprivacy.gif | Bin 0 -> 7418 bytes assets/images/88x31/neovim.gif | Bin 0 -> 695 bytes blog.html | 14 ++---------- index.html | 3 +-- meta.html | 3 ++- projects.html | 5 ++-- til.html | 15 +++--------- 18 files changed, 68 insertions(+), 57 deletions(-) create mode 100644 _includes/categoryList.html create mode 100644 _includes/pageTitle.html create mode 100644 assets/images/88x31/apache-powered.gif create mode 100644 assets/images/88x31/bestviewedcomp.gif create mode 100644 assets/images/88x31/debian.gif create mode 100644 assets/images/88x31/firefox3.gif create mode 100644 assets/images/88x31/internetprivacy.gif create mode 100644 assets/images/88x31/neovim.gif diff --git a/_includes/categoryList.html b/_includes/categoryList.html new file mode 100644 index 0000000..8464c64 --- /dev/null +++ b/_includes/categoryList.html @@ -0,0 +1,11 @@ +
    + {% for post in site.posts %} + {% assign category = post.category %} + {% if category == page.title %} +
  • +

    {{ post.date | date: "%Y-%m-%d" }} / {{ post.title }}

    +
  • + {% endif %} + {% endfor %} +
+
diff --git a/_includes/defaultFooter.html b/_includes/defaultFooter.html index 4b3017b..15d3299 100644 --- a/_includes/defaultFooter.html +++ b/_includes/defaultFooter.html @@ -1,8 +1,16 @@
-
-Be nice to each other!
+
+Be nice to each other!

+ + + + + + +

+Last updated: {{ site.time }}
+{{ site.version }}
+
© {{ site.author }} 2023-2025
All rights reverse engineered
-Last updated: {{ site.time }}
-{{ site.version }}
diff --git a/_includes/header.html b/_includes/header.html index 5739067..6fbcc83 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,5 +1,4 @@ -

andrewconl.in is tracking his progress

-
-

blog   til   projects   meta   feed   [archive]

-
+andrewconl.in is CSSing
+blog til projects meta feed [archive] +

diff --git a/_includes/pageTitle.html b/_includes/pageTitle.html new file mode 100644 index 0000000..758b4c0 --- /dev/null +++ b/_includes/pageTitle.html @@ -0,0 +1 @@ +~ / {{page.title}}
diff --git a/_layouts/post.html b/_layouts/post.html index e3abba8..6ed4107 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,10 +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" }}

diff --git a/archive.html b/archive.html index 09671a5..f1399f0 100644 --- a/archive.html +++ b/archive.html @@ -3,15 +3,5 @@ layout: default title: archive --- -~ > [{{page.title}}]
-
    - {% for post in site.posts %} - {% assign category = post.category %} - {% if category == 'archive' %} -
  • -

    {{ post.date | date: "%Y-%m-%d" }} / {{ post.title }}

    -
  • - {% endif %} - {% endfor %} -
-
+{% include pageTitle.html %} +{% include categoryList.html %} diff --git a/assets/css/default.css b/assets/css/default.css index 58e1ecc..fa9a7a4 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -22,6 +22,7 @@ code { div.container { margin: 0 auto; + zoom: 1.5; } div.content { @@ -38,6 +39,10 @@ div.content { margin: 0 auto; position: relative; } + div.container { + margin: 0 auto; + zoom: 1.4 + } } @media screen and (max-width: 1080px) { @@ -47,6 +52,10 @@ div.content { margin: 0 auto; position: relative; } + div.container { + margin: 0 auto; + zoom: 1.2 + } } @media screen and (max-width: 768px) { @@ -56,6 +65,10 @@ div.content { margin: 0 auto; position: relative; } + div.container { + margin: 0 auto; + zoom: 1.0 + } } body { @@ -75,16 +88,16 @@ pre { a { color: #E7D7AD; text-decoration: none; - border-bottom: 3px solid #FABD2F; - border-radius: 2px; + border-bottom: 2px solid #FABD2F; + border-radius: 1px; } a:hover { color: #000000; background: #FABD2F; text-decoration: none; - border-bottom: 3px solid #FABD2F; - border-radius: 2px; + border-bottom: 2px solid #FABD2F; + border-radius: 1px; } img { @@ -118,3 +131,11 @@ span.growshrink { color: #FABD2F; } } + +p { + font-size: 14px +} + +h1 { + font-size: 24px +} diff --git a/assets/images/88x31/apache-powered.gif b/assets/images/88x31/apache-powered.gif new file mode 100644 index 0000000000000000000000000000000000000000..603ab4b9cba548887fb48e7b981ff544a6c2e849 GIT binary patch literal 2778 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 literal 0 HcmV?d00001 diff --git a/assets/images/88x31/bestviewedcomp.gif b/assets/images/88x31/bestviewedcomp.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b43d5a47933629de888ec688c79a3f947a9879e GIT binary patch literal 9419 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 KNG)nW0028z1onUc literal 0 HcmV?d00001 diff --git a/assets/images/88x31/firefox3.gif b/assets/images/88x31/firefox3.gif new file mode 100644 index 0000000000000000000000000000000000000000..80e7e85fa0470e9330dcc9fa2e43292292073fda GIT binary patch literal 3009 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 DV-S2^ literal 0 HcmV?d00001 diff --git a/assets/images/88x31/internetprivacy.gif b/assets/images/88x31/internetprivacy.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f371b838786cab6d72d37cec2324e30ff60d7b9 GIT binary patch literal 7418 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 TL}xf?ROQ$NOwojQ*f9JbA^a0C literal 0 HcmV?d00001 diff --git a/assets/images/88x31/neovim.gif b/assets/images/88x31/neovim.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3670e228b13da166af1da70c7dfa2e971a406aa GIT binary patch literal 695 zcmV;o0!aNwNk%w1VORhk0E8a^%*@OH00960|1&c)W@ct)nKNdY%$dw)W|?L)nKLtH znVHO)X3S=0ng3>)05h5YGnr;HW&i+Y%rlwHnVFep%$a6pnKPLHGiJ=0%>S9p%x0OH zGntt)W-|b0nJw2mEC2ui09XJY000I4pdgN9X`X1Ru522#a4gSj@Crb#?|kq7z@Tv0 zvx$hvq;d%~;(83ALm1FigI6XXyWMefPT%41BV(;pt&jWN-gt}x<3RB_3g&gy2Ilv> zZf#&)SAK(NhG9Dh3=m^t7gIlcl!$*>f_s2~Hl2T*Z#fwga|{TNJa~6`UW9#>gPn%0 znuoTVg`ofj1`vz~r#%S{aRqCZvB*uXw`^!`M>)I(2MGrY1q-PK1sBFe$gr@Rw79L$ zpwYV%69yI8cu_hI*4)R3;5T^|U01Ozm9Nhjga_s04q%IE)6c|tdKtoA*05UFIxy0kgB_RzAe1H-` zg;NLs6wt}DDHUBZXByCf2SGNS_MB=hqAO+t0}^x~K!9y*0t68fMCkF;Cl9we;O2l! z_vhTUEdj_4DO2W-vq+Z~u)4$T$GmeBE7p5Aug}MgA4^6I(JNRUWg#q8n}Ds|&v6&) z#f!IbT*s*GR#p&mDi5R!&#rxY`mSxnqiZXcTeq|os1^)hpvePp>;xU&f=-MWx82-~ zZR>_k9omx|6bx8s;A3n7%}Hs8mOj3G?&i~ > {{page.title}}
-
    - {% for post in site.posts %} - {% assign category = post.category %} - {% if category == 'blog' %} -
  • -

    {{ post.date | date: "%Y-%m-%d" }} / {{ post.title }}

    -
  • - {% endif %} - {% endfor %} -
-
+{% include pageTitle.html %} +{% include categoryList.html %} diff --git a/index.html b/index.html index 96f89c8..0e88ee4 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,6 @@ permalink: / “Man is said to be a reasoning animal. I do not know why he has not been defined as an affective or feeling animal. Perhaps that which differentiates him from other animals is feeling rather than reason. More often I have seen a cat reason than laugh or weep. Perhaps it weeps or laughs inwardly — but then perhaps, also inwardly, the crab resolves equations of the second degree.”
― Miguel de Unamuno, Tragic Sense of Life

Email: andrew@andrewconl.in
-Mastodon: andrwcnln@mastodon.scot
-GitHub: @andrwcnln
+Git forge: git.cnln.dev
RSS: /feed.xml

diff --git a/meta.html b/meta.html index e4fff4c..d974a18 100644 --- a/meta.html +++ b/meta.html @@ -3,8 +3,9 @@ layout: default title: meta --- -~ > {{page.title}}
+{% include pageTitle.html %}

Both the Sans Serif and Monospace fonts used on this site are Geist, by Vercel.

Background colour is #000000, text colour is #E7D7AD, accent colour is #FABD2F.

The site is built using Jekyll. Source is available here.

+

The 88x31 buttons in the footer were sourced from here.


diff --git a/projects.html b/projects.html index 4e35aa3..41e33f6 100644 --- a/projects.html +++ b/projects.html @@ -2,8 +2,9 @@ layout: default title: projects --- -~ > {{page.title}}
-
    + +{% include pageTitle.html %} +

      tictoc / Fast, simple and accurate Python timing. Written in Rust.

      year-progress / A fun side project which gives the progress through the year, relative to other things.

    diff --git a/til.html b/til.html index 657023f..5a41eaa 100644 --- a/til.html +++ b/til.html @@ -3,15 +3,6 @@ layout: default title: til backlink: false --- -~ > {{page.title}}
    -
      - {% for post in site.posts %} - {% assign category = post.category %} - {% if category == 'til' %} -
    • -

      {{ post.date | date: "%Y-%m-%d" }} / {{ post.title }}

      -
    • - {% endif %} - {% endfor %} -
    -
    + +{% include pageTitle.html %} +{% include categoryList.html %}