commit 56f08b487345a7e703c1e0ece8388e41b66bdb30 parent 0745f890b12b1f312875a781921b149304fd2804 Author: David Eisinger <[email protected]> Date: Fri, 2 Feb 2024 01:15:14 -0500 Dither non-thumbnailed images Diffstat:
9 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/content/elsewhere/gifts-for-your-nerd/index.md b/content/elsewhere/gifts-for-your-nerd/index.md @@ -9,7 +9,7 @@ Shopping for a nerd this holiday season? A difficult proposition, to be sure. We are, after all, complicated creatures. Fortunately, Viget Extend is here to help. Here are some gifts your nerd is sure to love. -<img src="dce_iamakey.jpg" class="inline"> [**Lacie iamaKey Flash Drive**](https://www.amazon.com/LaCie-iamaKey-Flash-Drive-130870/dp/B001V7XPSA) **($30)** +{{<dither dce_iamakey.jpg "" "inline" />}} [**Lacie iamaKey Flash Drive**](https://www.amazon.com/LaCie-iamaKey-Flash-Drive-130870/dp/B001V7XPSA) **($30)** If your nerd goes to tech conferences with any regularity, your residence is already littered with these things. USB flash drives are a @@ -17,7 +17,7 @@ dime a dozen, but this one's different: stylish and rugged, and since it's designed to be carried on a keychain, it'll always around when your nerd needs it. -<img src="dce_aeropress.jpg" class="inline"> [**AeroPress**](https://www.amazon.com/AeroPress-Coffee-and-Espresso-Maker/dp/B000GXZ2GS) **($25)** +{{<dither dce_aeropress.jpg "" "inline" />}} [**AeroPress**](https://www.amazon.com/AeroPress-Coffee-and-Espresso-Maker/dp/B000GXZ2GS) **($25)** A simple device that makes a cup of espresso better than machines costing twenty times as much. Buy this one for your nerd and wake up to @@ -26,24 +26,24 @@ gift that keeps on giving. If espresso gives your nerd the jitters, you can't go wrong with a [french press](https://www.amazon.com/Bodum-Chambord-4-Cup-Coffee-Press/dp/B00012D0R2/). -<img src="dce_charge_tee.jpg" class="inline"> [**SimpleBits Charge Tee**](http://shop.simplebits.com/product/charge-tee-tri-blend) **($22)** +{{<dither dce_charge_tee.jpg "" "inline" />}} [**SimpleBits Charge Tee**](http://shop.simplebits.com/product/charge-tee-tri-blend) **($22)** Simple, vaguely Mac-ish graphic printed on an American Apparel Tri-Blend tee, no lie the greatest and best t-shirt ever created. -<img src="dce_hard_graft.jpg" class="inline"> [**Hard Graft iPhone Case**](http://shop.hardgraft.com/product/base-phone-case) **($60)** +{{<dither dce_hard_graft.jpg "" "inline" />}} [**Hard Graft iPhone Case**](http://shop.hardgraft.com/product/base-phone-case) **($60)** Your nerd probably already has a case for her iPhone, but it's made of rubber or plastic. Class it up with this handmade leather-and-wool case. Doubles as a slim wallet if your nerd is of the minimalist mindset, and here's a hint: we all are. -<img src="dce_ignore.jpg" class="inline"> [**Ignore Everybody**](https://www.amazon.com/Ignore-Everybody-Other-Keys-Creativity/dp/159184259X) **by Hugh MacLeod ($16)** +{{<dither dce_ignore.jpg "" "inline" />}} [**Ignore Everybody**](https://www.amazon.com/Ignore-Everybody-Other-Keys-Creativity/dp/159184259X) **by Hugh MacLeod ($16)** Give your nerd the motivation to finish that web application he's been talking about for the last two years so you can retire. -<img src="dce_moleskine.jpg" class="inline"> [**Moleskine Notebook**](https://www.amazon.com/Moleskine-Squared-Notebook-Cover-Pocket/dp/8883707125) **($10)** +{{<dither dce_moleskine.jpg "" "inline" />}} [**Moleskine Notebook**](https://www.amazon.com/Moleskine-Squared-Notebook-Cover-Pocket/dp/8883707125) **($10)** What nerd doesn't love a new notebook? Just make sure it's graph paper; unlined paper was not created for mathematical formulae and drawings of @@ -52,18 +52,18 @@ Notes](http://fieldnotesbrand.com). As for pens, I highly, *highly* recommend the [Uni-ball Signo](http://www.jetpens.com/product_info.php/cPath/239_90/products_id/466). -<img src="dce_canon.jpg" class="inline"> [**Canon PowerShot S90**](https://www.amazon.com/dp/B002LITT42/) **($400)** +{{<dither dce_canon.jpg "" "inline" />}} [**Canon PowerShot S90**](https://www.amazon.com/dp/B002LITT42/) **($400)** Packs the low-light photographic abilities of your nerd's DSLR into a compact form factor that fits in his shirt pocket, right next to his slide rule. -<img src="dce_newegg.png" class="inline"> [**Newegg Gift Card**](https://secure.newegg.com/GiftCertificate/GiftCardStep1.aspx) +{{<dither dce_newegg.png "" "inline" />}} [**Newegg Gift Card**](https://secure.newegg.com/GiftCertificate/GiftCardStep1.aspx) If all else fails, a gift card from [Newegg](http://newegg.com) shows you know your nerd a little better than the usual from Amazon. -<img src="dce_moto_guzzi.jpg" class="inline"> [**Moto Guzzi V7 Classic**](http://www.autoblog.com/2009/09/30/review-moto-guzzi-v7-classic-is-an-italian-beauty-you-can-live/) **($8500)** +{{<dither dce_moto_guzzi.jpg "" "inline" />}} [**Moto Guzzi V7 Classic**](http://www.autoblog.com/2009/09/30/review-moto-guzzi-v7-classic-is-an-italian-beauty-you-can-live/) **($8500)** Actually, this one's probably just me. diff --git a/content/elsewhere/html-sanitization-in-rails-that-actually-works/index.md b/content/elsewhere/html-sanitization-in-rails-that-actually-works/index.md @@ -40,7 +40,7 @@ page, not to mention what a `<div>` can do. Self-closing tags are okay. With these requirements in mind, we subclassed HTML::WhiteListSanitizer and fixed it up. Introducing, then: -<img src="jason_statham.jpg" class="inline"> +{{<dither jason_statham.jpg "" "inline" />}} [**HTML::StathamSanitizer**](https://gist.github.com/241114). User-generated markup, you're on notice: this sanitizer will take its diff --git a/content/elsewhere/level-up-your-shell-game/index.md b/content/elsewhere/level-up-your-shell-game/index.md @@ -31,7 +31,7 @@ favorites: - [Invoking Remote Commands with SSH](#invoking-remote-commands-with-ssh) -Ready to get your <img src="neckbeard.png" class="inline"> on? Good. Let's go. +Ready to get your {{<dither neckbeard.png "" "inline" />}} on? Good. Let's go. ## Keyboard Shortcuts diff --git a/content/elsewhere/on-confidence-and-real-time-strategy-games/index.md b/content/elsewhere/on-confidence-and-real-time-strategy-games/index.md @@ -10,7 +10,7 @@ developer. But before I do that, I want to talk about *[Z](https://en.wikipedia.org/wiki/Z_(video_game))*, a real-time strategy game from the mid-'90s. -<img src="256px-Z_The_Bitmap_Brothers.PNG" class="inline"> +{{<dither 256px-Z_The_Bitmap_Brothers.PNG "" "inline" />}} In other popular RTSes of the time, like *Warcraft* and *Command and Conquer*, you collected `/(gold|Tiberium|Vespene gas)/` and used it to diff --git a/content/elsewhere/simple-app-stats-with-statboard/index.md b/content/elsewhere/simple-app-stats-with-statboard/index.md @@ -16,7 +16,7 @@ Engine](http://edgeapi.rubyonrails.org/classes/Rails/Engine.html) to display some basic stats. Announcing, then, [StatBoard](https://github.com/vigetlabs/stat_board): - +{{<dither screenshot.png />}} Installation is a cinch: add the gem to your Gemfile, mount the app in `routes.rb`, and set the models to query (full instructions available on diff --git a/content/elsewhere/simple-secure-file-transmission/index.md b/content/elsewhere/simple-secure-file-transmission/index.md @@ -54,7 +54,7 @@ From here, I'd move the encrypted file to my Dropbox public folder and send Chris the generated link, as well as the output of `encrypt.sh`, over IM: - +{{<dither lSEsz5z.jpg "" "inline" />}} Once he acknowledges that he's received the file, I immediately delete it. @@ -65,7 +65,7 @@ Now I need to send Chris the password. Here's what I **don't** do: send it to him over the same channel that I used to send the file itself. Instead, I pull out my phone and send it to him as a text message: - +{{<dither pQHZlkO.jpg "" "inline" />}} Now Chris has the file, instructions to decrypt it, and the passphrase, so he's good to go. An attacker, meanwhile, would need access to both diff --git a/content/elsewhere/using-microcosm-presenters-to-manage-complex-features/index.md b/content/elsewhere/using-microcosm-presenters-to-manage-complex-features/index.md @@ -32,7 +32,7 @@ potentially malicious. The logic is roughly defined as follows: Here's a flowchart that might make things clearer (did for me, in any event): - +{{<dither URfAcl9.png />}} This feature is too complex to handle with React component state, but too localized to store in application state (the main Microcosm diff --git a/content/elsewhere/viget-devs-storm-chicago/index.md b/content/elsewhere/viget-devs-storm-chicago/index.md @@ -5,7 +5,7 @@ draft: false canonical_url: https://www.viget.com/articles/viget-devs-storm-chicago/ --- -<img src="53100874_f605bd5f42_m.jpg" class="inline"> +{{<dither 53100874_f605bd5f42_m.jpg "" "inline" />}} This past weekend, Ben and I travelled to Chicago to speak at [Windy City Rails](http://windycityrails.org/). It was a great conference; diff --git a/themes/v2/layouts/shortcodes/dither.html b/themes/v2/layouts/shortcodes/dither.html @@ -1,9 +1,10 @@ {{ $file := printf "%s%s" .Page.RelPermalink (.Get 0) }} {{ $geo := .Get 1 }} {{ $img := resources.GetRemote (printf "%s%s?geo=%s" (getenv "DITHER_SERVER") $file $geo) }} +{{ $imgClass := .Get 2 }} <a href="{{ $img.RelPermalink }}"> - <img src="{{ $img.RelPermalink }}" width="{{ $img.Width }}" height="{{ $img.Height }}"> + <img src="{{ $img.RelPermalink }}" width="{{ $img.Width }}" height="{{ $img.Height }}" class="{{ $imgClass }}"> {{ with .Inner }} <figcaption> {{ . }}