my php website :D https://j0.lol
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 642 lines 26 kB view raw
1<p> 2 I think — at least for me — that blogging is a form of journaling. I feel 3 like if I was journaling physically<a ref="physicalnotetaking"></a> I would 4 love to take care of a physical <em>tome</em> containing my thoughts. 5 Decorate it, take care of it, et cetera. Following this logic, I take great 6 joy in taking care of my website. Polishing the CSS, adding nice features, 7 making a nice favicon<a ref="favicon"></a>, and other stuff (sorry I have 8 been working on it a lot recently.) So, uh, I think I want to just gush 9 about all the changes I have made recently to my site, and maybe circle back 10 to some deeper point about self-love. 11</p> 12 13<figure> 14 <img 15 loading="lazy" 16 width="1302" 17 height="1310" 18 src="https://vps.j0.lol/website-assets/lotsofcommits.png" 19 /> 20 <figcaption>Lots of commits.</figcaption> 21</figure> 22 23<h2>Favicons are weird</h2> 24 25<p>I have many questions about favicons.</p> 26<ul> 27 <li> 28 Why are they called favicons?<a ref="whyfavicon"></a> Favorite icons? 29 Shouldn't they be called like bookmark<a ref="bookmarksaside"></a> icons 30 or something? Did they make this up in like Netscape Navigator or 31 Internet Explorer or something?<a ref="ie"></a> 32 </li> 33 <li> 34 Why are they so small? It's really hard to represent anything in a 35 16&times;16 square. At least we can now use 32&times;32, and people who 36 know their way around a vector design program can use an SVG. 37 </li> 38 <li> 39 How have we not come up with a better way of linking an icon to your 40 website than stuffing a bunch of 41 <code>&lt;link&gt;</code> tags in your <code>&lt;head&gt;</code 42 ><a ref="googwebmanifest"></a>?? 43 </li> 44</ul> 45 46<p> 47 Um. Sorry about all the footnotes. When I started working on my current 48 iteration of my site, which I arbitrarily named V4, I was getting into 49 drawing at the same time. I wasn't sure what to fit in that thing, so I just 50 put the drawing I had in there. It uh. It looked bad. Here's a recreation: 51 <img 52 loading="lazy" 53 class="raw" 54 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAADHbxzxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACs0lEQVQ4EaWTXW8bRRSGn5nd9cf6Mx/YaWMcYzdpSgMSVXvRilvEBT8B/h//AVVcVOICVUXqh8BpWkibOFBqU3d3vbbX3h3OOAqEa87srvbMzPvOOzPvUd3ObcP/CPcyVkmileaCMTMZSppW6j99lzH/ENiJqQCCdIK2MGEra5+lWRKm8xUR8i05+ct4VgQX4Eouz43yDot0yXKpeBYe0fDW2at2MU4CRvHi/Yks4KxIjOjSFmyZI95Ry1q8eeVz/JuL79S4vfExV0rrRBPFr4ce7/+osuZsMidmYdKVKrWzc8s4OqXjfkqrHbLfe0s8c3jwk8/irCWLGm7eiuh9dEqaNHn4JMePv7/kw0qFs9kQ18qupW163YQv7ymm6YwNGdxvO4zeBeAEbNYXK5Wb1ZjWVsTrbxtcKa5T89bQe9U9zKTEzd0Yz/Fp1DPORiF/TU4Zxs9EwRlaj4RkxuvhgOnM46u7dU4HKQkT3EF8Qj7XIY426Q/6hLEjk7WQyTYeF/j8wDCdG34+VmxUS1QKOd78WWScO2IUj9BH0YDEH3D/hyVatrLdiCjmFPcfKb75wtDdhuHYodUMKOVrPDqc8Ph5wP4HTaKFHKR14l5ll+fhIT3uoKpDvjt5CgLKN1zmsjrjGfdudClkG3x//Ire9oTrpQN+Cfu4qVxH2StTcauc8JDPcnf5eneL0fwtwTzC1ZrmtSYFXeYo6NO+OqbrH1D0isyzBepq+xPTK3VoFrdEUkSSJoSLEN/zBVSU0zcEi4BlllLP1ym6BTGSph8cyo1NUb3OHTPN5rhSAwVdYJbNxL7pytYp2cpxnnJXdrN1UlB5xmlISchd5eBaO/oCzKQlWYKnPHLyWncqWxASRmrE5laNULPmVsiMRZrzWrBgO+wI43m3JPJnn3/jPLHybdFdxN8uVB7pghou7AAAAABJRU5ErkJggg==" 55 width="16" 56 height="16" 57 style="vertical-align: top" 58 /> 59 . Ew, right? So a few months ago I made this new drawing, the dialog box 60 deer that you have definitely seen on this site already. And I realised that 61 I can adapt it into a favicon: 62 <img 63 loading="lazy" 64 class="raw" 65 src="/static/favicon.ico" 66 width="32" 67 height="32" 68 style="width: 16px; height: 16px; vertical-align: top" 69 />. Much clearer, right? Just bicubic scaling the image down makes it quite 70 readable, which I was honestly shocked at. 71</p> 72 73<h2 id="fonts">Changing fonts</h2> 74 75<figure> 76 <img 77 loading="lazy" 78 width="1448" 79 height="288" 80 src="https://vps.j0.lol/website-assets/lovingyourwebsite/oldfont.png" 81 alt="Screenshot of my blog, with an old rounded monospace heading font." 82 /> 83 <figcaption>My old heading font</figcaption> 84</figure> 85 86<figure> 87 <img 88 loading="lazy" 89 width="1452" 90 height="192" 91 src="https://vps.j0.lol/website-assets/lovingyourwebsite/newfont.png" 92 alt="Screenshot of my blog, with an new rounded serif heading font." 93 /> 94 <figcaption>My new heading font</figcaption> 95</figure> 96 97<p> 98 I'm a programmer first, not a writer. So when I was making my website, it 99 just made sense to add a touch of monospace to it. I imported my terminal 100 font <em style="font-family: var(--font-mono)">(Maple Mono)</em> into my 101 project and set it as a heading font, italicized with cursive symbols. 102 Though I was getting kind of tired of it. I don't think monospace fonts look 103 that good when at such a large size. So I found this new font on Google 104 Fonts (where else?) called 105 <em style="font-family: var(--font-serif)">Hepta Slab</em> and fell in love 106 with it immediately. It's still very round, which captures the sort of look 107 the rest of my fonts have (the sans-serif font is <em>DM Sans</em>) while 108 feeling way more in place than a monospaced font. 109</p> 110 111<p> 112 I think people all have complex relationship with fonts. Though maybe that's 113 just my autism speaking. People hate 114 <em style="font-family: &quot;Comic Sans MS&quot;">Comic Sans</em>. People 115 love to write Word documents with 116 <em style="font-family: Arial, Helvetica, sans-serif">Arial</em>. Web 117 developers love <em style="font-family: Inter, sans-serif">Inter</em>. 118 Everyone sort of has their own font, in their 119 <span class="shantell">handwriting</span><a ref="shantell"></a>. You might 120 feel comforted by a <span class="monospace">monospace</span> font. 121 <span class="cursive">Cursive</span> 122 might remind you of rigid school structures. 123</p> 124 125<?php speech_start(SpeechCharacter::Deer, SpeechEmotion::Happy); ?> 126<p>In other words, fonts are highly personal.</p> 127<?php speech_end(); ?> <?php speech_start(SpeechCharacter::Deer, 128SpeechEmotion::Shocked); ?> 129<p> 130 Where did I get the idea to use 131 <span style="font-family: var(--font-serif)">serif</span> for headings? 132 Honestly I'm not sure. I've seen it in a few places, like 133 <a href="https://highlysuspect.agency/">Quat's blog</a> and 134 <a href="https://zed.dev/docs/">the Zed website</a>. 135 <a 136 href="https://www.smashingmagazine.com/2010/11/best-practices-of-combining-typefaces/" 137 >Smashing Magazine</a 138 > 139 has writing on this from 2010(!) so it's clearly not a new practice. 140</p> 141<?php speech_end(); ?> 142 143<h2>Physicality</h2> 144 145<div class="hstack"> 146 <figure style="background: #1c1829"> 147 <img 148 loading="lazy" 149 width="1064" 150 height="1298" 151 src="https://vps.j0.lol/website-assets/lovingyourwebsite/nophysicality.png" 152 alt="Screenshot of my website's home page. The 'page' is very bare." 153 /> 154 <figcaption>The home page is floating on a background.</figcaption> 155 </figure> 156 157 <figure style="background: #1c1829; justify-content: space-between"> 158 <img 159 loading="lazy" 160 width="1064" 161 height="1110" 162 src="https://vps.j0.lol/website-assets/lovingyourwebsite/yesphysicality.png" 163 alt="Screenshot of my website's home page. The 'page' feels a lot more grounded, with borders and a shadow." 164 /> 165 <figcaption>The page has a nice border and a shadow now.</figcaption> 166 </figure> 167</div> 168 169<p> 170 As someone with autism, I have a divine fixation with tactile things. Shapes 171 feel nice. During this redesign, I've been trying to add physicality 172 wherever possible. This isn't <em>just</em> because of Apple's 173 <em>Liquid Glass</em> design language, but I think flat design is boring 174 generally. I think many people do?? 175</p> 176 177<p> 178 I've been adding physicality wherever possible. The figures now have a 179 shadow and border. Well, I haven't really been able to add it anywhere else, 180 due to some rigid CSS limitations. I'll figure it out eventually. I hope 181 this looks good! 182</p> 183 184<h2>Cute little icons</h2> 185 186<div class="hstack"> 187 <figure style="background: #08070f"> 188 <img 189 loading="lazy" 190 width="770" 191 height="244" 192 src="https://vps.j0.lol/website-assets/lovingyourwebsite/oldindex.png" 193 alt="Screenshot of old post index. Arrows are used for date." 194 /> 195 <figcaption>Old arrow icons.</figcaption> 196 </figure> 197 198 <figure style="background: #08070f"> 199 <img 200 loading="lazy" 201 width="744" 202 height="226" 203 src="https://vps.j0.lol/website-assets/lovingyourwebsite/newindex.png" 204 alt="Screenshot of old post index. Clock icons are used for date." 205 /> 206 <figcaption>New, nice clock icons.</figcaption> 207 </figure> 208</div> 209 210<div class="hstack"> 211 <figure style="background: #08070f; justify-content: space-between"> 212 <img 213 loading="lazy" 214 width="1386" 215 height="966" 216 src="https://vps.j0.lol/website-assets/lovingyourwebsite/oldbsky.png" 217 alt="Screenshot of old comment section" 218 /> 219 <figcaption> 220 Old comment section. Uses text for reply and like labels. 221 </figcaption> 222 </figure> 223 224 <figure style="background: #08070f"> 225 <img 226 loading="lazy" 227 width="1412" 228 height="988" 229 src="https://vps.j0.lol/website-assets/lovingyourwebsite/newbsky.png" 230 alt="Screenshot of new comment section" 231 /> 232 <figcaption> 233 New comment section. Lots of icons, and a <em>LOT</em> of tweaking 234 to get things feeling better.* 235 </figcaption> 236 </figure> 237</div> 238<span 239 ><small 240 >* Note that the comment lines are very thin, and you might have to 241 zoom in to see them.</small 242 ></span 243> 244<p> 245 I found a new icon library: <a href="https://css.gg">CSS.gg</a>. They serve 246 very simple SVG icons you can just throw in your source. These have been 247 sprinkled around where necessary. 248</p> 249 250<h2>Code Blocks and Highlighting</h2> 251 252<pre><code class="language-rust"> 253fn main() { 254 println!("Here's a code block!"); 255 256 // Explode 257 unsafe { unreachable_unchecked!() } 258} 259</code></pre> 260 261<p> 262 I'm currently using <a href="https://prismjs.com/">Prism.js</a> for code 263 highlighting. It's widely supported, has good theming, and a heck of a lot 264 of language support. Um. The only issue is that it doesn't really make sense 265 in <samp>$CURRENT_YEAR</samp>. Since the advent of 266 <a href="https://tree-sitter.github.io/tree-sitter/">tree-sitter</a>, code 267 highlighting is done via syntax trees instead of regex parsing. It's faster, 268 and makes more sense. However: tree-sitter is written in a compiled 269 language. This makes it a pain to run in the browser 270 <a ref="highlightssr"></a>... There's web bindings via wasm 271 <a href="https://www.npmjs.com/package/web-tree-sitter">on npm</a>, but it 272 would need a bit of work to use to highlight. Plus, I'm sort of worried 273 about the size of WASM blobs. Each language requires its own blob, so I 274 could be pulling in several wasm blobs on every site. Prism.js is (at time 275 of writing, on this site) 276 <math> 277 <mrow> 278 <mn>74.4</mn> 279 <mi>kB</mi> 280 </mrow> 281 <mtext><sub>JS</sub></mtext> 282 <mo>+</mo> 283 <mrow> 284 <mn>1.4</mn> 285 <mi>kB</mi> 286 </mrow> 287 <mtext><sub>CSS</sub></mtext> 288 </math> 289 big. As a test, I pulled in tree-sitter JS, WASM and the Javascript WASM 290 blob. That alone (without any highlighting code or anything!) is 291 <math> 292 <mrow> 293 <mn>152</mn> 294 <mi>kB</mi> 295 </mrow> 296 <mtext><sub>JS</sub></mtext> 297 <mo>+</mo> 298 <mrow> 299 <mn>206</mn> 300 <mi>kB</mi> 301 </mrow> 302 <mtext><sub>WASM</sub></mtext> 303 <mo>+</mo> 304 <mrow> 305 <mn>359</mn> 306 <mi>kB</mi> 307 </mrow> 308 <mtext><sub>WASM js grammar</sub></mtext> </math 309 >. Yipes! 310</p> 311 312<p> 313 So this is why I'm using Prism. There are other regex-based highlighters, 314 but this one works fine. One thing I added recently is the little language 315 tag, which makes it more obvious which language is in the code block. I 316 added it for my blog post where I talk about Swift in comparison to Rust. 317</p> 318 319<h2>About footnotes</h2> 320 321<p> 322 Umm. I like tangents. You might notice the large footnotes section on this 323 article. This was pretty fun to implement! If you've used markdown, and not 324 really thought about writing in HTML, you might assume that footnotes are a 325 HTML primitive. Nah! My current implementation looks like this: 326</p> 327 328<pre><code class="language-html"><!-- 329<p> 330 This is a paragraph <a ref="umm_actually"></a>. 331</p> 332 333<footer> 334 <h2 id="notes_heading">Footnotes</h2> 335 <ol> 336 <li id="note_umm_actually"> 337 Well, there's not really much text there. Its a sentence. 338 Should it really even be put in a p tag? 339 It's kind of semantically wrong. 340 </li> 341 </ol> 342</footer> 343--></code></pre> 344 345<p> 346 A <a href="/static/js/footnotes.js">script</a> comes along and fills out 347 everything to be <em>semantically correct</em> HTML. It's based on this 348 <a href="https://www.niquette.ca/articles/accessible-footnotes/" 349 >great article about making footnotes accessible</a 350 >, but I tweaked it a bit to remove markup boilerplate. Note that the 351 <code>&lt;a&gt;</code> tag uses <code>ref</code>, not <code>href</code>. Not 352 sure if this attribute is used in other places, but I thought it would be 353 fine to use here. (It gets stripped by the script and replaced with a 354 <code>href</code>.) 355</p> 356 357<p> 358 One fun issue I found is that the "return" ↩ symbol looks different 359 depending on browser. Mobile browsers (at least mine) will make it an emoji, 360 while desktop browsers will use a normal font. You can choose this behaviour 361 by suffixing a unicode character: 362</p> 363 364<style> 365 table { 366 margin: 0 auto; 367 border-collapse: collapse; 368 border: 1px solid var(--border); 369 } 370 371 th, 372 td { 373 padding: 0.2rem; 374 border: 1px solid var(--border); 375 } 376</style> 377 378<figure> 379 <table> 380 <tr> 381 <th>Default</th> 382 <td></td> 383 <td></td> 384 </tr> 385 <tr> 386 <th>Variation Selector 15 <code>&amp;#xfe0e;</code></th> 387 <td>&#xfe0e;</td> 388 <td>&#xfe0e;</td> 389 </tr> 390 391 <tr> 392 <th>Variation Selector 16 <code>&amp;#xfe0f;</code></th> 393 394 <td>&#xfe0f;</td> 395 <td>&#xfe0f;</td> 396 </tr> 397 </table> 398 <figcaption> 399 Weirdly, on Chrome macOS it always picks the snowman emoji. 400 </figcaption> 401</figure> 402 403<h2>Aside on writing in HTML</h2> 404 405<p> 406 I think HTML might be the most expressive way to write. You can express 407 almost anything (see the <a href="#fonts">fonts section</a> :p) and it 408 doesn't have the same issues that other markup formats have with wordiness 409 (if you think HTML is bad, see 410 <math> 411 <mrow> 412 <mtext>L</mtext> 413 <mrow style="margin-left: -0.35em"></mrow> 414 <mpadded voffset="0.2em" style="padding: 0.2em 0 0 0"> 415 <mstyle scriptlevel="0" displaystyle="false"> 416 <mstyle scriptlevel="1" displaystyle="false"> 417 <mtext>A</mtext> 418 </mstyle> 419 </mstyle> 420 </mpadded> 421 <mrow style="margin-left: -0.15em"></mrow> 422 <mtext>T</mtext> 423 <mrow style="margin-left: -0.1667em"></mrow> 424 <mpadded voffset="-0.2155em" style="padding: 0 0 0.2155em 0"> 425 <mstyle scriptlevel="0" displaystyle="false"> 426 <mtext>E</mtext> 427 </mstyle> 428 </mpadded> 429 <mrow style="margin-left: -0.125em"></mrow> 430 <mtext>X</mtext> 431 </mrow> </math 432 >.) I see most bloggers using markdown and I wonder: why? It makes 433 everything harder. If you want to have a "component", you basically have to 434 <a href="https://mdxjs.com/">extend markdown</a>, then have a framework or 435 preprocessor to convert into HTML. You can put HTML in markdown (sometimes), 436 but the syntax is very odd. Either way, it's gross. 437</p> 438 439<p> 440 I think people are scared of HTML. It's not that hard to write, and you can 441 use <a href="https://emmet.io/">Emmet</a> to write a lot of HTML from very 442 understandable abbreviations if you have worked with CSS. 443 <code>footer>h2#notes_heading+ol>li*3</code> produces an entire footnotes 444 section from earlier, and it lets you use tab to jump between text fields to 445 fill. 446</p> 447 448<p> 449 You also lose a lot of 450 <a href="https://developer.mozilla.org/en-US/docs/Glossary/Semantics" 451 >semantic information</a 452 > 453 with markdown. You could represent a 454 <code>figure>img+figcaption</code> 455 like this: 456</p> 457<pre><code class="language-md"> 458 ![alt text](/static/foo.png) 459 This is an image. 460</code></pre> 461 462<p> 463 But what happens when you want to style a figure? If you want to center the 464 caption, frame the image, add a <code>::before</code> pseudo-element with a 465 counter, etc. What will a screen reader do when it comes across your figure? 466 Not what you want it to do! 467</p> 468 469<p> 470 So it's either restrictive, ugly, or heavy. Um, maybe that was convincing. I 471 think using HTML thoughtfully like this makes you better at using HTML 472 thoughtfully elsewhere. When writing in HTML, go to 473 <a 474 href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements" 475 >MDN</a 476 > 477 and think: "Is there an element for this?" By doing this, you'll learn about 478 new tags like <code>&lt;samp&gt;</code> for quoting output from a program, 479 <code>&lt;abbr&gt;</code> for acronyms or abbreviations, all of MathML, 480 <code>&lt;ruby&gt;</code> for displaying 481 <ruby 482 >pronounciation<rp>(</rp> 483 <rt>pro-noun-si-a-tion</rt> 484 <rp>)</rp> </ruby 485 >. It's fun :&rpar; 486</p> 487 488<h2>Trying to conclude this post</h2> 489 490<p> 491 I've had a lot of fun writing this post, as well as working on my website. 492 HTML+CSS is one of the most expressive technologies we have in software 493 development. Working on your personal website is, I think, a form of self 494 love. It's a construct built for the express purpose of self-expression. 495 Express yourself! 496</p> 497 498<?php speech_start(SpeechCharacter::Deer, SpeechEmotion::Happy); ?> 499<p> 500 I see you've made it to the end. Thanks for sticking with me here, this is 501 probably the longest blog post I have made yet. If you want to see more of 502 my posts when they come out, <a href="/feed">subscribe to my RSS feed</a>! 503 Due to how RSS is designed, I have literally no idea how many people are 504 subscribed. But that's kind of fun! 505</p> 506<?php speech_end(); ?> 507 508<!-- end --> 509<footer> 510 <h2 id="notes_heading">Footnotes</h2> 511 <ol> 512 <li id="note_physicalnotetaking"> 513 I've tried journaling physically before. I just really struggle with 514 it. I think my hands aren't up to the task? They are very weak. I've 515 always struggled with it. I'm left handed and I don't think I was 516 ever raised to write properly? Maybe it's some deeper problem 517 though. Oh well. 518 </li> 519 <li id="note_favicon"> 520 Did you know that Safari is really <em>really</em> annoying about 521 favicon caching? Details are 522 <a 523 href="https://www.leereamsnyder.com/favicons-in-2021#clearing-the-icon-cache-in-macos-safari-is-deeply-unpleasant" 524 >here</a 525 >, but it really sucks. If you're trying to work on your favicon, 526 see 527 <a 528 href="https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs" 529 >this great article</a 530 > 531 about it, highlighted to me by one of my most favorite websites: 532 <a href="https://css-tricks.com/how-to-favicon-in-2021/" 533 >CSS-Tricks</a 534 >. 535 </li> 536 <li id="note_whyfavicon"> 537 Because they helped differentiate URLS in your... favorites. They 538 are called favorites instead of bookmarks because Microsoft said so. 539 </li> 540 541 <li id="note_bookmarksaside"> 542 Aside: I really don't use bookmarks. Maybe this really dates me as a 543 member of Generation Z, but it's almost always a lot easier to just 544 let the powerful browser autofill <samp>b</samp> into 545 <samp>bsky.app</samp> for me. And the bookmarks toolbar is such a 546 waste of space! If I don't have the URL saved in the browser for 547 whatever reason, searching into Kagi will almost always give me what 548 I want. 549 </li> 550 <li id="note_ie"> 551 They were introduced in IE5. Makes sense why they use the very 552 Windows <samp>.ico</samp> format then. 553 </li> 554 555 <li id="note_googwebmanifest"> 556 Google actually tried. When they introduced Progressive Web Apps, 557 they made a new Web Manifest that you can stuff (Android) icons into 558 instead of the head. Here's what that looks like: 559 <pre><code class="language-json"> 560 { 561 "icons": [ 562 { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, 563 { "src": "/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }, 564 { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" } 565 ] 566 }</code></pre> 567 568 It would be nice if we could standardise on this for favicons or 569 whatever. But everything has been set in stone, I guess. 570 </li> 571 572 <li id="note_shantell" class="shantell"> 573 Shantell Sans has a really lovely story. You can 574 <a href="https://shantellsans.com/process">read it here</a>. 575 </li> 576 577 <li id="note_highlightssr"> 578 You may be asking: Why don't you just render it serverside? A few 579 reasons: 580 <ul style="margin-block-end: 0.5rem"> 581 <li> 582 My website is in PHP, not a compiled language like Rust. 583 </li> 584 <li> 585 I did this <a href="/blog/php-site">before</a>, and made an 586 impossible-to-maintain PHP extension that sucks. 587 </li> 588 <li> 589 Even if I did this, I'm moving the highlighting computation 590 time onto the "load bearing" HTML step instead of loading 591 after the rest of the page is loaded. 592 </li> 593 <li> 594 Like, I'm not caching my pages (because PHP) so every page 595 gets rendered on every request. If I was making a static 596 site generator this would make a lot more sense. But I'm not 597 really interested in re-architecting my entire website for 598 this purpose (yet...) 599 </li> 600 </ul> 601 So, I'm choosing to stick with client-side highlighting. 602 </li> 603 </ol> 604</footer> 605 606<style> 607 @import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Playwrite+GB+S+Guides:ital@0;1&family=Shantell+Sans:ital,wght@0,300..800;1,300..800&display=swap"); 608 609 .monospace { 610 font-family: "Courier New", Courier, monospace; 611 } 612 613 .cursive { 614 font-family: "Playwrite GB S Guides", cursive; 615 font-weight: 400; 616 font-style: normal; 617 } 618 619 .shantell { 620 font-family: "Shantell Sans", cursive; 621 font-optical-sizing: auto; 622 font-weight: 400; 623 font-style: normal; 624 font-variation-settings: 625 "BNCE" 0, 626 "INFM" 0, 627 "SPAC" 0; 628 } 629 630 .hstack { 631 display: flex; 632 flex-direction: row; 633 width: 100%; 634 gap: 0.5rem; 635 justify-content: center; 636 637 > * { 638 margin-left: 0; 639 margin-right: 0; 640 } 641 } 642</style>