<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Blogging on Grizzlebit</title>
  <subtitle>Ray Grasso's Blog</subtitle>
  <updated>2026-06-13T10:58:27.42696+08:00</updated>
  <id>https://www.grizzlebit.com/tags/blogging/feed.xml</id>
  <link rel="alternate" type="text/html" href="https://www.grizzlebit.com/tags/blogging/"/>
  <link rel="self" type="application/atom+xml" href="https://www.grizzlebit.com/tags/blogging/feed.xml"/>
  <rights>Copyright © 2026, Ray Grasso</rights>
  <author>
    <name>Ray Grasso</name>
  </author>
  <icon>https://www.grizzlebit.com/images/icon.png</icon>
  <logo>https://www.grizzlebit.com/images/icon.png</logo>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2025/04-23-uses-page/</id>
    <published>2025-04-23T07:30:19+08:00</published>
    <updated>2025-04-23T07:54:22+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Uses Page</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>Inspired by <a href="https://uses.tech">uses.tech</a>, I&rsquo;ve created a <a href="/uses">uses page on here</a>.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2025/04-23-uses-page/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/gear/">Gear</a>, <a href="https://www.grizzlebit.com/tags/grizzlebit/">Grizzlebit</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2025/04-23-uses-page/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2025/04-23-uses-page/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2025/03-14-a-new-domain-for-my-photos/</id>
    <published>2025-03-14T06:38:21+08:00</published>
    <updated>2025-03-14T07:03:14+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>A New Domain for My Photos</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>I moved my photography to <a href="https://rays.photos">rays.photos</a>.</p>
<p>The existing feeds and links should hopefully redirect properly.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2025/03-14-a-new-domain-for-my-photos/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/my-photos/">My Photos</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2025/03-14-a-new-domain-for-my-photos/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2025/03-14-a-new-domain-for-my-photos/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2023/07-28-added-a-now-page/</id>
    <published>2023-07-28T17:24:12+08:00</published>
    <updated>2024-11-04T09:50:52+10:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Added a Now Page</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>I like the sound of these <a href="https://nownownow.com/">&ldquo;now&rdquo; pages</a> so I added <a href="/now">one here</a>.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2023/07-28-added-a-now-page/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/grizzlebit/">Grizzlebit</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2023/07-28-added-a-now-page/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2023/07-28-added-a-now-page/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2023/07-15-the-syndicate/</id>
    <published>2023-07-15T16:42:17+08:00</published>
    <updated>2023-07-15T16:45:49+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>The Syndicate ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Jeremy Keith:</p>
<blockquote>
<p>Right now, there’s a whole bunch of social networks coming (Blewski, Freds, Mastication) and one big one going, thanks to Elongate.</p>
<p>Me? I watch all of this unfold like Doctor Manhattan on Mars. I have no great connection to any of these places. They’re all just syndication endpoints to me.</p></blockquote>
<p>Jeremy uses <a href="https://micro.blog/">Micro.blog</a> to effectively syndicate his posts elsewhere. I hadn&rsquo;t thought of using the service like that.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2023/07-15-the-syndicate/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://adactio.com/journal/20323"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2023/07-15-the-syndicate/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2023/07-15-adding-more-feeds-to-grizzlebit/</id>
    <published>2023-07-15T13:42:11+08:00</published>
    <updated>2023-07-15T14:47:50+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Adding More Feeds to Grizzlebit</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>I wrestled <a href="https://gohugo.io">Hugo</a> to the mat<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> and set up separate RSS and JSON feeds for my <a href="/posts">Posts</a> and <a href="/links">Links</a>.</p>
<p>I also got feeds set up for individual <a href="/tags">tags</a>.</p>
<p>The <a href="/feed.xml">combined feed</a> is still available as the simplest subscription option.</p>
<p>You can find all the details in <a href="/feeds">feeds</a>.</p>
<p>Viva la RSS.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Once you come to terms with its hokey templating language, Hugo is flexible and fast for building static sites.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2023/07-15-adding-more-feeds-to-grizzlebit/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/grizzlebit/">Grizzlebit</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2023/07-15-adding-more-feeds-to-grizzlebit/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2023/07-15-adding-more-feeds-to-grizzlebit/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/links/2023/06-06-some-blogging-myths/</id>
    <published>2023-06-06T20:09:11+08:00</published>
    <updated>2023-06-06T20:09:54+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Some Blogging Myths ↬</title>
    <content type="html" xml:base="https://www.grizzlebit.com/links/" xml:lang="en"><![CDATA[<div>
  <p>Julia&rsquo;s posts inspire me to write more.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/links/2023/06-06-some-blogging-myths/">↬</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://jvns.ca/blog/2023/06/05/some-blogging-myths/"></link>
    <link rel="related" href="https://www.grizzlebit.com/links/2023/06-06-some-blogging-myths/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2023/04-14-blog-rebooted/</id>
    <published>2023-04-14T08:35:22+08:00</published>
    <updated>2025-03-13T19:45:56+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Blog Rebooted</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>Welcome to my rebooted blog. 🎉</p>
<p>I had this domain hanging around and liked it better than my old <code>dance.computer.dance</code> domain.</p>
<p>I&rsquo;ve pulled the posts and links here and the old domain should be redirecting across properly.</p>
<p>I&rsquo;ve added <a href="/tags">tags</a> to track the topics of my posts and links.</p>
<p>I&rsquo;m using <a href="https://gohugo.io">Hugo</a> to build the site and <a href="https://netlify.com/">Netlify</a> for hosting it. I&rsquo;ll write a post on how I&rsquo;ve set up the assets and Hugo build.</p>
<p>So, now I&rsquo;ve revamped my blog and <a href="https://rays.photos">my photography portfolio</a> it&rsquo;s time to get shooting and writing 💪</p>
<figure class="half-wide"><img src="/images/happy-computer.png"
    alt="Happy computer"><figcaption>
      <h4>(I will miss my old blog&#39;s happy computer logo.)</h4>
    </figcaption>
</figure>


  <p>
    
    <a href="https://www.grizzlebit.com/posts/2023/04-14-blog-rebooted/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/grizzlebit/">Grizzlebit</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2023/04-14-blog-rebooted/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2023/04-14-blog-rebooted/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2020/04-18-lazily-loading-resized-images-on-a-hugo-photoblog/</id>
    <published>2020-04-18T11:36:00+08:00</published>
    <updated>2024-11-04T09:50:52+10:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Lazily Loading Resized Images on a Hugo Photoblog</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>I rebuilt <a href="https://strangemadness.com">A Strange Kind of Madness</a> using <a href="https://gohugo.io">Hugo</a> a month or so ago. As with most photoblogs, it has pages with many images on them, and I was inspired by <a href="https://github.com/maxvoltar/photo-stream/">Photo Stream</a> to load these images lazily.</p>
<h2 id="image-resizing">Image resizing</h2>
<p>If you want Hugo to resize images when it builds a site, you need to place your images alongside posts, so they are considered <a href="https://gohugo.io/content-management/page-resources/">page resources</a>. So, I put each post in a folder with its associated image and reference it in a field called, shockingly, <code>image</code> in the post front matter.</p>
<pre tabindex="0"><code>$ ls content/posts/2020-03-31-my-post
20200331-4491.jpg
index.md

$ cat content/posts/2020-03-31-my-post/index.md
+++
title = My Post
date = 2020-03-31T10:42:00+08:00
image = 20200331-4491.jpg
+++
</code></pre><h2 id="adding-lazyload">Adding Lazyload</h2>
<p>Roll-up pages have many thumbnails and benefit most from lazy loading.</p>
<p>First up, add the <a href="https://github.com/verlok/lazyload">lazyload</a> javascript library to your site build.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">Lazyload</span> <span class="nx">from</span> <span class="s2">&#34;lazyload&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Fire up our lazyloading (just initialising it does the job)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">_lazyload</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Lazyload</span><span class="p">();</span>
</span></span></code></pre></div><p>The library&rsquo;s default configuration targets images with the <code>lazyload</code> class and loads the image stored in the <code>data-src</code> attribute. If you place an image on the standard <code>src</code> attribute, it will be treated as a placeholder.</p>
<h2 id="placeholder-images">Placeholder images</h2>
<p>I wanted something more interesting than a sea of grey rectangles for placeholder images. I had a look at using <a href="https://blurha.sh/">BlurHash</a>, but that was going to involve rendering canvas elements for placeholders <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<p>I want the front end to be as simple as possible <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>, so I abandoned that approach and instead created a single-pixel resize of the source image which provides a simplistic average colour placeholder for each image. It does the trick.</p>
<figure><img src="/images/placeholder-images.png"
    alt="Placeholder images">
</figure>

<h2 id="the-markup">The markup</h2>
<p>All of the necessary resizing code and markup is in a <a href="https://gohugo.io/templates/partials/">Hugo partial</a> that renders a thumbnail for each post. Be sure that your image tags include <code>width</code> and <code>height</code> attributes so the browser lays them out correctly such that lazy loading is effective.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">{{- with .Resources.GetMatch (.Params.image) -}} {{/* Resize to a single pixel
</span></span><span class="line"><span class="cl">for a placeholder image */}} {{- $placeholder := .Resize &#34;1x1&#34; -}} {{/* Resize
</span></span><span class="line"><span class="cl">to 800 pixels wide for a thumbnail image */}} {{- $thumbnail := .Resize &#34;800x&#34;
</span></span><span class="line"><span class="cl">-}}
</span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">img</span>
</span></span><span class="line"><span class="cl">  <span class="na">src</span><span class="o">=</span><span class="s">&#34;{{ $placeholder.RelPermalink }}&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="na">data-src</span><span class="o">=</span><span class="s">&#34;{{ $thumbnail.RelPermalink }}&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="na">width</span><span class="o">=</span><span class="s">&#34;{{ $thumbnail.Width }}&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="na">height</span><span class="o">=</span><span class="s">&#34;{{ $thumbnail.Height }}&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="na">class</span><span class="o">=</span><span class="s">&#34;lazyload&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl">{{- end -}}
</span></span></code></pre></div><p>The main downside to this is that two resizes for each image adds a bunch of time to the site&rsquo;s build process but that&rsquo;s a trade off I&rsquo;m willing to make.</p>
<p>Go forth, and embrace laziness.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Or integrating <a href="https://github.com/woltapp/react-blurhash">React components that handle this for you</a>.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>The only Javascript it uses is for this lazy loading.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2020/04-18-lazily-loading-resized-images-on-a-hugo-photoblog/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/programming/">Programming</a>, <a href="https://www.grizzlebit.com/tags/tools/">Tools</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2020/04-18-lazily-loading-resized-images-on-a-hugo-photoblog/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2020/04-18-lazily-loading-resized-images-on-a-hugo-photoblog/"></link>
    
  </entry>
  
  <entry>
    <id>https://www.grizzlebit.com/posts/2019/01-18-using-netlify-for-hosting/</id>
    <published>2019-01-18T09:56:00+08:00</published>
    <updated>2023-04-13T20:33:32+08:00</updated>
    <author><name>Ray Grasso</name></author>
    
    <title>Using Netlify for Hosting</title>
    <content type="html" xml:base="https://www.grizzlebit.com/posts/" xml:lang="en"><![CDATA[<div>
  <p>I recently moved the hosting of my various blogs and websites off my own server to <a href="https://www.netlify.com/">Netlify</a>.</p>
<p>I was originally going to set up an S3 bucket and Cloudfront distribution for each of my sites but Netlify provides me the CDN and hosting features I need all bundled up already. You can upload files directly for serving or hook your site up to run a static site generator when you push to a branch of a Github repository.</p>
<p>In short, I&rsquo;m not longer paying hosting costs and they handle all of the SSL certificate renewal from <a href="https://letsencrypt.org/">Let&rsquo;s Encrypt</a> for me.</p>
<p>Next up I plan to clean up the tooling I use for some of my sites and tweak things on here so I have more variety in my posts.</p>
<p><a href="https://www.manton.org/2019/01/17/basecamp-leaves-medium.html">2019 is the year of the blog baby</a>.</p>

  <p>
    
    <a href="https://www.grizzlebit.com/posts/2019/01-18-using-netlify-for-hosting/">🔗</a>
     ∙ Tagged in <a href="https://www.grizzlebit.com/tags/blogging/">Blogging</a>, <a href="https://www.grizzlebit.com/tags/tools/">Tools</a>.</p>
</div>
]]></content>
    <link rel="alternate" href="https://www.grizzlebit.com/posts/2019/01-18-using-netlify-for-hosting/"></link>
    <link rel="related" href="https://www.grizzlebit.com/posts/2019/01-18-using-netlify-for-hosting/"></link>
    
  </entry>
  
</feed>
