<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://bejon.com/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bejon&#39;s random musings</title>
    <link>https://bejon.com/</link>
    <atom:link href="https://bejon.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>A blog about random ideas, projects, thoughts and various tinkering activities.</description>
    <language>en</language>
    <item>
      <title>Javascript - no thanks</title>
      <link>https://bejon.com/blog/2026-07-25-javascript-no-thanks/</link>
      <description>&lt;h1&gt;Javascript - no thanks&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Sat, Jul 25, 2026 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/tech&quot;&gt;tech&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;to JS or not to JS, that is the question&lt;/h2&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://bejon.com/images/blog-jslogo.webp&quot; alt=&quot;Javascript&quot; class=&quot;photo&quot; width=&quot;450&quot; height=&quot;450&quot;&gt;
  &lt;figcaption&gt;The lingua franca of the world, wide, web&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For years, I have been telling myself that I really should learn Javascript. Let&#39;s face it, it IS the language of the web after all. But every time I sit down to learn the language, syntactically it just doesn&#39;t resonate with me. I&#39;m not a fan of the form of the language itself, it isn&#39;t (for me) particularly readable, and while the browser war is largely a non-issue, historically the browsers didn&#39;t agree with how Javascript should be handled. I&#39;ll take the JSON and leave the canolli, err, Javascript.&lt;/p&gt;
&lt;p&gt;I spent a bit of time a number of years ago to get familiar with Python, and I find it very easy to read. Give me a Python script and I should be able to understand what the script is doing in short order. I also like the syntax and the formatting of the language. Python just resonates. I&#39;m also comfortable with HTML and CSS, but CSS can be a bit of a mixed bag given the fun of organizing CSS and media queries. It&#39;s nice to format for multiple screens, or at least to be able to do so, but it can be a serious pain.&lt;/p&gt;
&lt;p&gt;Side note, I can usually be found also hacking on bash, SQL, PowerShell and other scripts in and out of a coding harness.&lt;/p&gt;
&lt;h3&gt;Let&#39;s jump ahead a bit to today...&lt;/h3&gt;
&lt;p&gt;As of the time of this writing, here is how a quick Google search (yeah, that is still a thing) lists the most popular programming languages today:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;So why not JS?&lt;/h3&gt;
&lt;p&gt;In short, I don&#39;t know what that buys me today generally, and it certainly isn&#39;t a particular value add to my career or aspirations. Call me short sighted if you must, but given my general lack of enthusiasm for the language as outlined above I&#39;d much rather let AI focus on JS. And frankly, a lot of the Python as well.&lt;/p&gt;
&lt;p&gt;Don&#39;t get me wrong, I still design the app, review the code and make adjustments where I see fit. I&#39;ve often found that tools like Claude Code can not only turn out amazing code, but Claude can also produce some interesting slop during a vibe session. To combat this, I tend to focus on spec-driven development - a topic I may cover off on in a future post. But given how fast things are moving in the industry, I can&#39;t bring myself to invest the time to learn JS. I don&#39;t want to. (Imagine me crossing my arms across my chest in spite with a thick lower lip.)&lt;/p&gt;
&lt;p&gt;I know I&#39;ll continue to second guess this for years to come. I can say that I feel somewhat happy with the decision I&#39;ve come to. It will just be one of those small, nagging voices in the back of my brain questioning the decision. But worry not, looking at JS syntax will quickly put me back on my present track.&lt;/p&gt;
&lt;p&gt;And no, it is not lost on my that my SSG (&lt;a href=&quot;https://www.11ty.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;11ty&lt;/a&gt;) is Javascript to the core.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 24 Jul 2026 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2026-07-25-javascript-no-thanks/</guid>
    </item>
    <item>
      <title>A fun AI hallucination?</title>
      <link>https://bejon.com/blog/2025-03-06-al-hallucination/</link>
      <description>&lt;h1&gt;A fun AI hallucination?&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Thu, Mar 6, 2025 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/ai&quot;&gt;ai&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;ai hallucination station time&lt;/h2&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://bejon.com/images/ai-hallucination.webp&quot; alt=&quot;AI Hallucination&quot; class=&quot;photo&quot; width=&quot;450&quot; height=&quot;450&quot;&gt;
  &lt;figcaption&gt;Image generated by ChatGPT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Not all good deeds go unpunished. A cautionary tale of putting perhaps a bit too much faith into an entity that cannot think for itself, but is instead a text pattern predictor. But I&#39;m getting ahead of myself with a spoiler. Let&#39;s start from the beginning.&lt;/p&gt;
&lt;p&gt;Have you ever wondered if the information you&#39;re receiving from a model is accurate? If you haven&#39;t, well you really ought to.&lt;/p&gt;
&lt;h3&gt;The scenario&lt;/h3&gt;
&lt;p&gt;Company wants to build an agentic industry analysis and news report leveraging AI to streamline the process and help track and identify patterns while surfacing trends and insights.&lt;/p&gt;
&lt;h3&gt;The tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Perplexity.ai + Pro Reasoning Model&lt;/li&gt;
&lt;li&gt;Perplexity.ai + Deepseek R1 (run domestically)&lt;/li&gt;
&lt;li&gt;Google Gemini + Serper API&lt;/li&gt;
&lt;li&gt;ChatGPT reasoning models&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The issue&lt;/h3&gt;
&lt;p&gt;When prompted across a number of weeks, the tooling provided robust insights, valid information and useful links to articles as the sources for the findings. Then when moved into a production workload, the second iteration of the analysis report was one giant hallucination. The content was hallucinated, the provided links where hallucinated, the analysis was hallucinated, but partially based on broader trends.&lt;/p&gt;
&lt;h4&gt;Why?&lt;/h4&gt;
&lt;p&gt;When asked why the links all returned 404 pages from the various source materials cited, the tool reports it can&#39;t search the internet after &amp;quot;apologizing&amp;quot; for the mistake.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You&#39;re absolutely correct—the links in my previous response were illustrative placeholders rather than functional URLs. This occurs because I cannot actively verify live links or access real-time web content, including the specific sites listed in your requirements. My responses are generated based on patterns in publicly available information up to my knowledge cutoff in February 2025, without live internet access.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While I can&#39;t speak to why the weeks of testing worked and then this instance flew off the road, let&#39;s dig in.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Um, Perplexity? Isn&#39;t that your selling point?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But the reality is probably somewhere in the middle. Perplexity can in fact source articles from the web and assess their contents. However, I believe there is an interaction beyond the search where the AI agent can get involved with its own set of parameters. And while it has an internet search tool at its disposal, the parameters and tools might get partially lost in the shuffle. Conjecture at this point, but it seems to fit given some validation testing with other service providers. I think the manner and positioning of the prompt may come into play here as well.&lt;/p&gt;
&lt;p&gt;It turns out, even though we knew this, that LLMs are really text prediction tools, their output can be what appears to be very thoughtful and insightful based on the prompt and context of the query. The output seems authoritative, well structured and has substance and depth. But in the end, the LLM is looking at text patterns and vector similarities to predict what to &amp;quot;say&amp;quot; next. The LLM isn&#39;t actually thinking for itself. At least, not really and not today.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;https://bejon.com/images/hallucination.webp&quot; alt=&quot;AI Hallucination flow&quot; class=&quot;photo&quot; width=&quot;800&quot; height=&quot;296&quot;&gt;
  &lt;figcaption&gt;AI Hallucination flow&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;A lot of the big players in AI are hyper focused on improving accuracy, handling fact-checking and providing what are hopefully and essentially grounded responses. The LLM may not in fact actually realize you are asking it for something it can&#39;t, or maybe even shouldn&#39;t provide an answer for.&lt;/p&gt;
&lt;p&gt;So it is worth repeating, the models are &lt;em&gt;trained to predict, but not to know&lt;/em&gt;. A model is trained on a large corpus of data, the internet, through a certain point in time. And while the models are being complimented with web search capabilities and other agentic flows to improve on time gaps, the model cannot think for itself. It can only really perform some hyper complex statistical models to predict what text should come next. This is why when you prompt a LLM, its responses come word-by-word in a sort of stuttered delivery. Each word in the response is a prerequisite for the next word in a predictive manner.&lt;/p&gt;
&lt;h3&gt;The advice?&lt;/h3&gt;
&lt;p&gt;A few thoughts...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI can - and will - make mistakes, plan for it (note the disclaimers!)&lt;/li&gt;
&lt;li&gt;Always do your best to validate what the model is telling you, this isn&#39;t gospel&lt;/li&gt;
&lt;li&gt;Consider keeping a &amp;quot;human in the loop&amp;quot; before taking action - you do the thinking here&lt;/li&gt;
&lt;li&gt;Get familiar with model capabilities and limitations&lt;/li&gt;
&lt;li&gt;Learn how best to use the tools, and iterate&lt;/li&gt;
&lt;li&gt;Consider what portions of a workflow are well suited for AI while others may be better handled by standard API calls or code&lt;/li&gt;
&lt;li&gt;Don&#39;t make too many assumptions, your prompt matters&lt;/li&gt;
&lt;li&gt;Consider context limits, a LLM has a &amp;quot;working memory&amp;quot; for context (tokens, e.g. &amp;quot;Hello!&amp;quot; might be 2 tokens) which includes your prompt and its response so strike a balance between being concise yet explicit - or find long-context models if you need deeper capabilities&lt;/li&gt;
&lt;li&gt;Separation of concerns&lt;/li&gt;
&lt;li&gt;Building the perfect mouse trap is hard and you won&#39;t think of everything, did I mention iterate??? Find ways to validate even within your prompt or have a second AI tool perform validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Per ChatGPT...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hallucinations&lt;/strong&gt; in LLMs occur when models generate confident-sounding yet incorrect information. Understanding their nature, recognizing their causes, and applying proper techniques significantly reduces their impact, ensuring more accurate and trustworthy outcomes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A little food for thought&lt;/h3&gt;
&lt;p&gt;I found this interesting Github repo that is reporting on hallucination rates in models. You can review this at &lt;a href=&quot;https://github.com/vectara/hallucination-leaderboard&quot;&gt;https://github.com/vectara/hallucination-leaderboard&lt;/a&gt;. But I do think the nature of your prompt can lead a model to hallucinate when you exceed its inherent capabilities. It is unfortunate that the model would rather hallucinate than inform you of its taking creative liberties with your inquiry.&lt;/p&gt;
&lt;h3&gt;A last note&lt;/h3&gt;
&lt;p&gt;Perplexity is an amazing tool, and I have switched much of my Google-foo over to the platform. I also recommend it. If you haven&#39;t tried it, please do so! In no way was this note meant to disparage the platform. I continue to use it to this date, despite the learnings I am choosing to take from this story.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2024-06-28-AI-with-jetson/&quot;&gt;doing AI things with Jetson&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 05 Mar 2025 16:00:00 PST</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2025-03-06-al-hallucination/</guid>
    </item>
    <item>
      <title>Adding the Eleventy RSS Feed Plugin</title>
      <link>https://bejon.com/blog/2025-02-15-eleventy-feed/</link>
      <description>&lt;h1&gt;Adding the Eleventy RSS Feed Plugin&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Sat, Feb 15, 2025 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.11ty.dev/docs/plugins/rss/&quot;&gt;11ty RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;let&#39;s add some functionality to this blog thing of mine&lt;/h2&gt;
&lt;p&gt;After the immense joy (plenty of sarcasm intended) of upgrading &lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;11ty to v3.0&lt;/a&gt; yesterday, I decided it was about time that I added a RSS syndication feed to the blog. Groundbreaking for 2025, right?&lt;/p&gt;
&lt;p&gt;Fortunately for me, and in keeping with much of the spirit of the easy of which 11ty makes these sort of activities, the implementation was pretty straightforward and took less than 10 minutes. I&#39;m not sure why I didn&#39;t do this earlier, but I can&#39;t complain about the ease of the process.&lt;/p&gt;
&lt;h2&gt;the process, let&#39;s get this started&lt;/h2&gt;
&lt;p&gt;So, how did this all go down you ask? Start by reading the &lt;a href=&quot;https://www.11ty.dev/docs/plugins/rss/&quot;&gt;11ty RSS Feed Plugin documentation&lt;/a&gt;. Then, it was a simple process of carrying out the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Let&#39;s install the RSS plugin&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-bash line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; @11ty/eleventy-plugin-rss&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;I went the route of the manual template build, so I updated my &lt;code&gt;eleventy.js&lt;/code&gt; file to include the reference for the plugin.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; rssPlugin &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;@11ty/eleventy-plugin-rss&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function-variable function&quot;&gt;exports&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;eleventyConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addPlugin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;rssPlugin&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;I then added a &lt;code&gt;feed.njk&lt;/code&gt; Nunjuck template to the base of my 11ty project source. I follwed the example code from the plugin documentation, made a few tweaks for my own needs and
that was it!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I don&#39;t know if anyone will actually subscribe to this feed, and frankly it doesn&#39;t really matter. I&#39;m doing this for me, having fun with it when the mood strikes me, and that is more than enough for me. If in the meantime you are getting some form of enjoyment out of this, you can always drop me a line on my &lt;span class=&quot;highlight&quot;&gt;socials:&lt;/span&gt; &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Until the next one...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i class=&quot;ti ti-bulb&quot;&gt;&lt;/i&gt; I also threw in some pagination to the &lt;a href=&quot;https://bejon.com/blog&quot;&gt;blog&lt;/a&gt; page, just for good measure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 14 Feb 2025 16:00:00 PST</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2025-02-15-eleventy-feed/</guid>
    </item>
    <item>
      <title>Upgrade to Eleventy 3.0</title>
      <link>https://bejon.com/blog/2025-02-14-eleventy-v3/</link>
      <description>&lt;h1&gt;Upgrade to Eleventy 3.0&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Fri, Feb 14, 2025 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://windsurf.ai/&quot;&gt;Windsurf AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cursor.com&quot;&gt;Cursor AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.11ty.dev/docs/plugins/upgrade-help/&quot;&gt;11ty Upgrade Helper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;upgrade time... again&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/eleventyconfig.webp&quot; alt=&quot;eleventy config screenshot&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;p&gt;Today it was time to upgrade 11ty from version 2.1 to version 3.0. I have to say,
the process is probably the most seamless and painless upgrade that I&#39;ve really
ever had to do. The team at 11ty has made this process as clean and as easy as possible,
and while I&#39;ve thought about migrating to a SSG like Pelican due to my greater familiarity
with Python, I really can&#39;t complain about how well 11ty works.&lt;/p&gt;
&lt;p&gt;As previously mentioned in my post about using a &lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;Static Site Generator&lt;/a&gt;, and as documented in my post about &lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;upgrading to 11ty
2.0&lt;/a&gt;, I don&#39;t think I can recommend this solution enough.
With the advent of &lt;em&gt;AI-decorated&lt;/em&gt; coding platforms like &lt;a href=&quot;https://windsurf.ai/&quot;&gt;Windsurf AI&lt;/a&gt;,
(which I am using now) and &lt;a href=&quot;https://cursor.com&quot;&gt;Cursor AI&lt;/a&gt;, the lacking familiarity
I have with Javascript is something I think I can work my way around well enough.&lt;/p&gt;
&lt;p&gt;Much like before, the process was as follows, with a few minor tweaks for a version number:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use NPM to install &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy@3&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Use NPM to install &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy-upgrade-help@3&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Add the upgrade helper to my &lt;span class=&quot;highlight&quot;&gt;.eleventy.js&lt;/span&gt; file&lt;/li&gt;
&lt;li&gt;Execute a build and read through the output to look for errors (of which, there were none!)&lt;/li&gt;
&lt;li&gt;Remove the helper from my &lt;span class=&quot;highlight&quot;&gt;.eleventy.js&lt;/span&gt; file&lt;/li&gt;
&lt;li&gt;Use NPM to uninstall &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy-upgrade-help@3&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I then ran a new build, checked for any errors, removed the additions from above, and done!
My &lt;span class=&quot;highlight&quot;&gt;package.json&lt;/span&gt; file is unpdated accordingly. Easy peasy.&lt;/p&gt;
&lt;p&gt;You can find the full upgrade helper documentation &lt;a href=&quot;https://www.11ty.dev/docs/plugins/upgrade-help/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With all of the upgrades I&#39;ve performed in my IT career, which has been going for more than a minute, this remains one of the absolutely smoothest I&#39;ve ever encountered.&lt;/p&gt;
&lt;p&gt;Hats off to the team at 11ty for yet again providing a great experience.&lt;/p&gt;
&lt;p&gt;Oh, and for the record, I did try and have Windsurf AI perform a conversion from 11ty to
Pelican, and boy oh boy, that was a mess. I reverted my Git changes back to the base and
then performed the upgrade. So there may have been an alterior motive, but I&#39;m not
disappointed in the results. Maybe it was the earthquake that fired about an hour ago
that let me know the heavens were displeased... Or maybe it was the fact that I&#39;ve been
ignoring this blog for a bit more than a minute. Who am I to judge?&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 13 Feb 2025 16:00:00 PST</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2025-02-14-eleventy-v3/</guid>
    </item>
    <item>
      <title>doing AI things with Jetson</title>
      <link>https://bejon.com/blog/2024-06-28-AI-with-jetson/</link>
      <description>&lt;h1&gt;doing AI things with Jetson&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Fri, Jun 28, 2024 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/electronics&quot;&gt;electronics&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/ai&quot;&gt;ai&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/tech&quot;&gt;tech&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;Reference Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ollama.com/&quot;&gt;Ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://llama.meta.com/llama3/&quot;&gt;Llama3 model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/&quot;&gt;NVIDIA Jetson Products&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.nvidia.com/embedded/community/support-resources&quot;&gt;NVIDIA Jetson Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;unlocking AI power: a hands-on experience with ollama, llama3, and NVIDIA jetson orin nano&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/blog-ai-jetson.webp&quot; alt=&quot;NVIDIA Jetson Orin Nano&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;blockquote&gt;
&lt;p&gt;AI - meaning Artificial Intelligence and not Apple Intelligence...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As an enthusiast of AI-powered projects, I&#39;m a touch excited to share my hands-on experience with the &lt;a href=&quot;https://ollama.com/&quot;&gt;Ollama&lt;/a&gt; engine, Llama3 model, and NVIDIA Jetson Orin Nano. In this post, I&#39;ll walk you through my journey of testing the capabilities of the model, observing the performance of the Nano, and being pleasantly surprised by its overall capabilities. I wouldn&#39;t call these performance observations benchmarks, and they are hardly scientific. But they are in fact, interesting.&lt;/p&gt;
&lt;h2&gt;getting started&lt;/h2&gt;
&lt;p&gt;To get started, I picked up a NVIDIA Jetson Orin Nano, which is a powerful and small form factor computer ideal for AI development, robotics and more. For those new to the Jetson line of products, take a look at the &lt;a href=&quot;https://developer.nvidia.com/embedded/community/support-resources&quot;&gt;NVIDIA Jetson resources&lt;/a&gt; for a deeper dive.&lt;/p&gt;
&lt;h2&gt;testing the llama3 model&lt;/h2&gt;
&lt;p&gt;I decided to test the capabilities of the &lt;a href=&quot;https://llama.meta.com/llama3/&quot;&gt;Meta Llama3 model&lt;/a&gt; by running it using the Ollama engine running on the Jetson with Ubuntu Desktop (the unit ships with Ubuntu pre-installed). The Llama3 model is designed for computer vision tasks and leverages its GPU with its Cuda cores, which allows for accelerated processing. To my surprise, the performance of the Nano was impressive. The device handled the demanding AI computations seamlessly, showcasing the power of the Cuda cores. I was eager to see how well the Nano would perform compared to a more powerful machine like the M2 MacBook.&lt;/p&gt;
&lt;h2&gt;comparing performance: NVIDIA jetson orin nano vs. M2 macbook - a showdown???&lt;/h2&gt;
&lt;p&gt;To conduct a non-scientific or reproducable comparison, I ran the same Llama3 via Ollama on an M2 MacBook Pro. What I observed about the performance of the MacBook is that the model runs purely CPU-bound, and I had expected it to outperform the Nano due to its more powerful processor.&lt;/p&gt;
&lt;p&gt;However, the results were rather surprising. The Jetson Orin Nano performed remarkably well, rivaling the MacBook&#39;s performance in many instances. This was largely due to the Nano&#39;s ability to offload computational tasks to its GPU, which significantly improved processing times.&lt;/p&gt;
&lt;h2&gt;preliminary observations&lt;/h2&gt;
&lt;p&gt;My experience with the tinkering with Ollama+Llama3 humming on the NVIDIA Jetson Orin Nano has been nothing short of impressive. The device&#39;s capabilities, combined with the power of Cuda cores, make it an ideal platform for AI development. I&#39;m thrilled to have discovered that the Nano can hold its own , in it&#39;s own special ways (not all ways mind you) against more powerful machines like the M2 MacBook.&lt;/p&gt;
&lt;p&gt;If you&#39;re interested in exploring the world of AI and computer vision on the Jetson Orin Nano, hit the links provided above for more information or to pick up a Nano for yourself.&lt;/p&gt;
&lt;h2&gt;a few closing thoughts&lt;/h2&gt;
&lt;p&gt;My experience tinkering with Ollama, Llama3, and the NVIDIA Jetson Orin Nano has been nothing short of exciting. The device&#39;s capabilities, combined with its affordability and ease of use, make it an excellent choice for anyone looking to dip their toes into the world of AI development. The Jetson is a relatively affordable way to get introduced into this exciting world, running your own models on your own infrastructure decoupled from the cloud. And while it isn&#39;t performant on the order of magnitude of ChatGPT 4o, it is impressive on it&#39;s own.&lt;/p&gt;
&lt;h2&gt;what is llama3 built for?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;I asked Llama3 what the model is designed to do well, and how the model is tuned. Here are the results of my prompt. I was rather surprised by some of the intended use cases, assuming the below is accurate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Llama3 model is a pre-trained language model that has been fine-tuned on a specific task, which is text-to-image synthesis. This means it&#39;s well-suited for tasks that involve generating images from natural language descriptions.&lt;/p&gt;
&lt;p&gt;Some examples of work the Llama3 model can be used for include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Image Generation&lt;/strong&gt;: Use the Llama3 model to generate high-quality images based on text prompts. This can be useful for applications such as:
&lt;ul&gt;
&lt;li&gt;Image creation for marketing materials&lt;/li&gt;
&lt;li&gt;Generating visual content for social media platforms&lt;/li&gt;
&lt;li&gt;Creating images for blog posts or articles&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Augmentation&lt;/strong&gt;: The Llama3 model can be used to augment existing image datasets by generating new images based on text descriptions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image-to-Text Translation&lt;/strong&gt;: Use the Llama3 model to translate images into natural language text, which can be useful for applications such as:
&lt;ul&gt;
&lt;li&gt;Image captioning&lt;/li&gt;
&lt;li&gt;Automatic summarization of image content&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Style Transfer&lt;/strong&gt;: The Llama3 model can be used for style transfer tasks, where you want to generate an image that combines the content of one image with the style of another.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Llama3 model is particularly well-suited for tasks that involve generating images from text descriptions in a specific domain or niche. For example:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Food Photography&lt;/strong&gt;: Use the Llama3 model to generate high-quality food images based on text descriptions, which can be useful for food bloggers, food stylists, or restaurants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fashion Design&lt;/strong&gt;: The Llama3 model can be used to generate fashion designs based on text descriptions of clothing items, fabrics, and styles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interior Design&lt;/strong&gt;: Use the Llama3 model to generate interior design images based on text descriptions of rooms, furniture, and decor.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keep in mind that while the Llama3 model is a powerful tool, it&#39;s not a magic bullet that can solve all your image generation needs. It may require additional fine-tuning or adaptation to specific tasks or domains.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 27 Jun 2024 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2024-06-28-AI-with-jetson/</guid>
    </item>
    <item>
      <title>a wedding</title>
      <link>https://bejon.com/blog/2023-07-24-a-wedding/</link>
      <description>&lt;h1&gt;a wedding&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Mon, Jul 24, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/photo&quot;&gt;photo&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;And here I thought I was going to have a lazy, casual weekend...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;wedding bliss&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/blog-wedding202307.webp&quot; alt=&quot;Catholic Wedding Ceremony&quot; class=&quot;photo&quot; width=&quot;267&quot; height=&quot;400&quot;&gt;
&lt;p&gt;I, uh, photographed a wedding. I&#39;ve never done that before, and when I had thought on Tuesday of the week that I&#39;d have a lazy weekend and just relax a bit, I couldn&#39;t have been more off with my aim.&lt;/p&gt;
&lt;p&gt;Come Thursday morning, I get a call from a friend anxiously looking for advice and assistance regarding a proposed job. The friend has done this before, and had photographed 5 other weddings before. But it had been a minute. I told him I was there for him, and would happily assist as I have been anxious to get into a more professional photography project for some time now.&lt;/p&gt;
&lt;h2&gt;but wait, taking a project on a Thursday for a Saturday wedding?&lt;/h2&gt;
&lt;p&gt;You might be wondering what happened. So were we. Turns out the couple had their primary photographer back out at very much the last minute. And we took the job on ~48 hour notice without a lot of information about the couple, what they wanted and no opportunity to scout any of the 4 venues ahead of time. Yes, 4 venues.&lt;/p&gt;
&lt;h2&gt;so what did I need?&lt;/h2&gt;
&lt;p&gt;Well, given that I had relatively recently switched from my Nikon DSLR to a Sony Mirrorless camera, I had to take quick stock of invenetory. After thinking through the dynamics of the shoot, and reading a few blog posts and looking at some wedding images online, I was fairly confident that my Sony Zeiss 24-70mm f/4 lens would be up for the challenge coupled to the full frame mirrorless camera.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/images/blog-wedding202307-camera.webp&quot; alt=&quot;Sony A7RIII with Zeiss 24-70mm f/4 lens&quot; class=&quot;photo&quot; width=&quot;300&quot; height=&quot;400&quot;&gt;
&lt;p&gt;The lens provides for fairly wide photos at 24mm, features enough reach for not large spaces at 70mm, and will perform fairly well in low light situations.&lt;/p&gt;
&lt;p&gt;I brought along a &amp;quot;nifty 50&amp;quot; f/1.8 prime Sony lens and a Sony G Master 70-300mm f/4.5-5.6 with OSS for any long shots. I figured this would cover most situations.&lt;/p&gt;
&lt;p&gt;But what was I missing? A flash.&lt;/p&gt;
&lt;p&gt;Turns out my old Nikon flash was essentially dead. And having recently made the conversion to mirrorless, I hadn&#39;t replaced my flash head. Futher, I hadn&#39;t shot with a flash in a few years. I was seriously rusty.&lt;/p&gt;
&lt;p&gt;Amazon Prime to the rescue, I had a new flash in-hand on Friday afternoon and started practicing.&lt;/p&gt;
&lt;p&gt;Throw in a handful of SanDisk Extreme Pro 256 GB SD cards, 4 camera bats and I&#39;m ready to go.&lt;/p&gt;
&lt;h2&gt;an approach&lt;/h2&gt;
&lt;p&gt;We met Thursday night to plan out what we could without having access to the bride and groom. We pulled up images and maps of the 4 venues, and figured out how we&#39;d attack the day.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The church&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I knew I&#39;d try to find an elevated choir alcove from which to catch some wide shots of the venue from a unique perspective, and I&#39;d throw on the 70-300 for a few close ups from the elevated position. Then I&#39;d roam around the church on one wing while the primary photographer would handle the center aisle during the procession and then roam the other wing. We had partial access to the altar, and floated around capturing the envet.&lt;/p&gt;
&lt;p&gt;Lots of burst shooting here, trying to avoid the blinks while grabbing the smiles.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The bridal party photos&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We ventured to the Pasadena Courthouse following the ceremony for pictures of the bridal party. With a oh-so comfy temp of 90-95 degrees, it made for a toasty affair at mid day with really harsh lighting conditions. And while the courthouse primary building is beautiful and very mission inspired, the harsh light made for some real opportunities for blown out highlights. Some fill flash was certainly in order, and we made the most of it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The reception&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now on to the reception. Wow, we had some lighting challenges in the reception hall. Dark walls with bright windows (until sunset), and very dim lights in the venue. Time to light up the strobes, and start leveraging depth of field rules for focal lengths. Most of the night was shot at 24mm with an aperature of f/4 to allow the lens to drink in as much of the ambient light as possible coupled with the flash with a slight drop in flash compensation of one stop.&lt;/p&gt;
&lt;p&gt;The reception was a rather long affair, and by the end of the day we had been on our feet for over 12 hours and had each snapped around 1,300 exposures.&lt;/p&gt;
&lt;h2&gt;what did I learn?&lt;/h2&gt;
&lt;p&gt;My instincts weren&#39;t far off, and I had managed to anticipate a decent amount of what I&#39;d be up against based on the homework I had done in research and in discussion with the lead photographer.&lt;/p&gt;
&lt;p&gt;I was shooting in aperture priority for most of the day, with occasions drifing into full manual for some more artistic images. Most of the time I left the camera in autofocus with a flexible spot (thank you Sony), and as the night got darker locked in manual focus leveraging the aforementioned depth of field rules.&lt;/p&gt;
&lt;p&gt;I found that I primarily stuck to my Zeiss 24-70 f/4 lens as it was versatile and handled most everything I needed. I never touched my &amp;quot;nifty 50&amp;quot; prime, and it stayed in the bag all day. I had read that a 24-70 would be enough if you only had one lens with which to shoot a wedding, and the author was right.&lt;/p&gt;
&lt;p&gt;I found there to be an interesting juxtaposition between the creative elements of photography that I am used to in my typical photographic pursuits versus the ability to document and capture the moment. And while there were moments of being able to be artistic to capture things like the place settings, bridal table and various atmospheric shots, most of the time I was trying to react and document moments while trying to keep an eye on composition, backgrounds, framing, light conditions, etc.&lt;/p&gt;
&lt;p&gt;This was the most challenging thing I&#39;ve ever done photographically. And frankly, I&#39;m anxious to do this again. Maybe minus the heat. Nothing like a July wedding in Los Angeles.&lt;/p&gt;
&lt;p&gt;And after a very long and hot day, I crashed out - hard.&lt;/p&gt;
&lt;h2&gt;what&#39;s next?&lt;/h2&gt;
&lt;p&gt;Well, I think it is time for me to actually start coding the photo gallery portion of this website. Especially if I am going to do this more, I think having a small showcase is probably a good idea.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-lensbaby/&quot;&gt;lensbaby fun&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 23 Jul 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-07-24-a-wedding/</guid>
    </item>
    <item>
      <title>syntax highlights, the 11ty way</title>
      <link>https://bejon.com/blog/2023-07-10-syntax-highlighting/</link>
      <description>&lt;h1&gt;syntax highlights, the 11ty way&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Mon, Jul 10, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;What I&#39;m watching while coding: the 1982 classic, &lt;a href=&quot;https://www.imdb.com/title/tt0082198/&quot;&gt;Conan the Barbarian&lt;/a&gt;. Why? I ask why not?! It is indeed a classic Fantasy movie that feels like you are watching a DnD session play out on screen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;syntax highlights and css&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/blog-syntax-highlights.webp&quot; alt=&quot;Syntax highlights&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;p&gt;Boy oh boy, I didn&#39;t want to have to figure out how to do syntax highlighing for my blog via CSS. All of the elements to include, all of the scenarios to think through, and all of the extra markup that would have been required in a simple blog post just to format individual words separately based on typical code editor syntax highlighting rules.&lt;/p&gt;
&lt;p&gt;Ugh, no thank you.&lt;/p&gt;
&lt;h2&gt;there was an easier way&lt;/h2&gt;
&lt;p&gt;Thankfully, and that easier way was via a plugin for 11ty called (wait for it) &lt;code&gt;@11ty/eleventy-plugin-syntaxhighlight&lt;/code&gt;. How did they think of that name? The plugin uses PrismJS syntax highlighting.&lt;/p&gt;
&lt;h2&gt;getting this to work&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This post is following the instructions listed &lt;a href=&quot;https://www.11ty.dev/docs/plugins/syntaxhighlight/&quot;&gt;here&lt;/a&gt; as of the time of this writing in the 11ty documentation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At first when I read very briefly about the plugin, I figured it would be complicated to setup. I was most pleasantly surprised to find the setup very easy. And initially, I took a shortcut for CSS styling, but more on that later.&lt;/p&gt;
&lt;p&gt;I branched my site code in &lt;code&gt;Git&lt;/code&gt;, then installed the necessary plugin.&lt;/p&gt;
&lt;pre class=&quot;language-bash line-numbers&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; @11ty/eleventy-plugin-syntaxhighlight --save-dev&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;I then opened up my &lt;code&gt;11ty&lt;/code&gt; config file, and added a few lines of code.&lt;/p&gt;
&lt;pre class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; syntaxHighlight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;@11ty/eleventy-plugin-syntaxhighlight&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function-variable function&quot;&gt;exports&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;eleventyConfig&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addPlugin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;syntaxHighlight&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;And now for the shortcut, which I&#39;ll likely change in the future. I added the PrismJS stylesheet to preliminarily style my pages without having to add a bunch of CSS styling.&lt;/p&gt;
&lt;pre class=&quot;language-html line-numbers&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;link&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://unpkg.com/prismjs@1.20.0/themes/prism-okaidia.css&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token attr-name&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;stylesheet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h2&gt;so how did it go?&lt;/h2&gt;
&lt;p&gt;Well, that was really it. Simple, to the point, and pretty easy. I merged my branch back into the master branch and posted the code updates. I didn&#39;t find any issues in my preliminary testing, and am quite pleased with those preliminary results.&lt;/p&gt;
&lt;p&gt;I&#39;ll continue to test and see how this goes. But given the initial success, I think the only other things I&#39;ll want to do to further enhance this is update some styling.&lt;/p&gt;
&lt;p&gt;And as Thulsa Doom (James Earl Jones) gives his sermon before being struck down by Conan wielding the fragment of his father&#39;s sword in front of his congregation, I finish the touches on this blog post after deploying the code to production with the syntax highlighting changes applied.&lt;/p&gt;
&lt;h2&gt;a quick aside&lt;/h2&gt;
&lt;p&gt;I did have a quick moment of pause today after reading how &lt;a href=&quot;https://www.zachleat.com/web/eleventy-side-project/&quot;&gt;11ty is returning to the realm of side project / side hustle&lt;/a&gt; in the creator&#39;s blog. &lt;a href=&quot;https://www.netlify.com/&quot;&gt;Netlify&lt;/a&gt;, the company that employs the 11ty creator &lt;code&gt;Zach Leatherman&lt;/code&gt;, funded &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; development for the past year. As of today, that primary funding has ceased.&lt;/p&gt;
&lt;p&gt;I hope the open source project continues to thrive. I&#39;ve become a big fan of using &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; over the past few months, and if I can pick up my &lt;code&gt;JS&lt;/code&gt; chops a bit, maybe I can contribute to the project.&lt;/p&gt;
&lt;p&gt;I&#39;m not going to let that stop me. I have a few more plugins that I want to incorporate into this site including (and maybe not limited to) &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;Image&lt;/a&gt; and &lt;a href=&quot;https://www.11ty.dev/docs/plugins/rss/&quot;&gt;RSS&lt;/a&gt;, and I want to explore adding some &lt;a href=&quot;https://www.11ty.dev/docs/shortcodes/&quot;&gt;shortcodes&lt;/a&gt; and possibly migrating this site to Netlify and use Github actions to trigger automatic and/or scheduled deployments as I potentially incorporate &lt;a href=&quot;https://www.11ty.dev/docs/data/&quot;&gt;dynamic data&lt;/a&gt; into this static site.&lt;/p&gt;
&lt;p&gt;MORE - TO - COME! Stay tuned!&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 09 Jul 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-07-10-syntax-highlighting/</guid>
    </item>
    <item>
      <title>favorite linux packages</title>
      <link>https://bejon.com/blog/2023-06-28-favorite-linux-packages/</link>
      <description>&lt;h1&gt;favorite linux packages&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Wed, Jun 28, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/tech&quot;&gt;tech&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;packages, packages everywhere, but not a script to chmod&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/linux.webp&quot; alt=&quot;Redirect code&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;200&quot;&gt;
&lt;p&gt;There are simply some packages, you just can&#39;t live without. And when it comes to my preferred Linux setup, I have a handful of go-to packages that really make a big difference for me in terms of a good experience or a mediocre experience. Some of these are just creature comforts, while others I can&#39;t really live without. Not everything below is CLI-based. These are various packages and utilities I rely on regularly.&lt;/p&gt;
&lt;p&gt;This list is in no particular order. And if I decide to start posting these sort of things on YouTube, this list below will get chunked into groups of either 5 or 7. I believe those are the obligatory list sizes for YouTube reviews.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;python3&lt;/em&gt;: included by default, my programming language du jur&lt;/li&gt;
&lt;li&gt;&lt;em&gt;pip3&lt;/em&gt;: A Python package manager. I code in Python so can&#39;t live without pip nearby.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;npm&lt;/em&gt;: Node Package Manager. Now that this site is statically generated, NPM is a must.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;n&lt;/em&gt; (via npm): n manages my npm version, handy.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;11ty&lt;/em&gt; (via npm): my static site generator for this site&lt;/li&gt;
&lt;li&gt;&lt;em&gt;starship&lt;/em&gt;: a terminal beautifier&lt;/li&gt;
&lt;li&gt;&lt;em&gt;keepassxc&lt;/em&gt;: a secure password manager&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ctop&lt;/em&gt;: A very nicely put together CLI process monitor.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;net-tools&lt;/em&gt;: I use these regularly with work and troubleshooting home networking&lt;/li&gt;
&lt;li&gt;&lt;em&gt;tio&lt;/em&gt; (via homebrew): This one is new, and it is handy to aid in connecting to microcontrollers while coding&lt;/li&gt;
&lt;li&gt;&lt;em&gt;tldr&lt;/em&gt;: Also a newbie, but provides some easier-on-the-brain manpages&lt;/li&gt;
&lt;li&gt;&lt;em&gt;VS Code&lt;/em&gt;: my code editor of choice&lt;/li&gt;
&lt;li&gt;&lt;em&gt;lt browser&lt;/em&gt;: a browser that can render across various mobile devices for testing code&lt;/li&gt;
&lt;li&gt;&lt;em&gt;postman&lt;/em&gt;: a fantastic tool for working with and testing web-based APIs&lt;/li&gt;
&lt;li&gt;&lt;em&gt;git&lt;/em&gt;: I would hope this one requires little to no explanation.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;iotop&lt;/em&gt;: another handy troubleshooting tool&lt;/li&gt;
&lt;li&gt;&lt;em&gt;powertop&lt;/em&gt;: handy to review power draw and the power states of CPU cores&lt;/li&gt;
&lt;li&gt;&lt;em&gt;rsync&lt;/em&gt;: powerful file mover / replicator&lt;/li&gt;
&lt;li&gt;&lt;em&gt;rclone&lt;/em&gt;: rsync for cloud storage, invaluable&lt;/li&gt;
&lt;li&gt;&lt;em&gt;aws-cli&lt;/em&gt;: a CLI interface for working with AWS via API&lt;/li&gt;
&lt;li&gt;&lt;em&gt;tmux&lt;/em&gt; / &lt;em&gt;screen&lt;/em&gt;: handy terminal emulation tools&lt;/li&gt;
&lt;li&gt;&lt;em&gt;wget&lt;/em&gt;: a must for downloading packages via CLI&lt;/li&gt;
&lt;li&gt;&lt;em&gt;whois&lt;/em&gt;: handy for querying domain registrations via CLI&lt;/li&gt;
&lt;li&gt;&lt;em&gt;wavemon&lt;/em&gt;: a nifty wireless utility that can help troubleshoot connections&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ansible&lt;/em&gt; (via pip): a great configuration management tool for Linux&lt;/li&gt;
&lt;li&gt;&lt;em&gt;gparted&lt;/em&gt;: useful tool for managing disk partitions&lt;/li&gt;
&lt;li&gt;&lt;em&gt;gimp&lt;/em&gt;: A great open source image and photo manipulation tool&lt;/li&gt;
&lt;li&gt;&lt;em&gt;obs studio&lt;/em&gt;: useful for screen recordings and other clever video use cases&lt;/li&gt;
&lt;li&gt;&lt;em&gt;simplescreenrecorder&lt;/em&gt;: great for lighter-weight screen recording and screenshots&lt;/li&gt;
&lt;li&gt;&lt;em&gt;terraform&lt;/em&gt;: infrastructure as code, something I&#39;m working on learning&lt;/li&gt;
&lt;li&gt;&lt;em&gt;docker&lt;/em&gt;: containers, yes please! runs so much better on Linux than Mac/Win&lt;/li&gt;
&lt;li&gt;&lt;em&gt;docker-compose&lt;/em&gt;: a meta manager for docker and assembling containers / groups thereof&lt;/li&gt;
&lt;li&gt;&lt;em&gt;cmatrix&lt;/em&gt;: what is life without whimsy? enter the matrix from the CLI&lt;/li&gt;
&lt;li&gt;&lt;em&gt;homebrew&lt;/em&gt;: makes my work Mac act a bit more Linux-ey&lt;/li&gt;
&lt;li&gt;&lt;em&gt;neofetch&lt;/em&gt;: nice presentation of core components of the running system&lt;/li&gt;
&lt;li&gt;&lt;em&gt;dig&lt;/em&gt;: something I use all the time, helpful in DNS troubleshooting&lt;/li&gt;
&lt;li&gt;&lt;em&gt;grep&lt;/em&gt;: filtering down searches? yes please&lt;/li&gt;
&lt;li&gt;&lt;em&gt;history&lt;/em&gt;: a way to look back through your CLI command execution&lt;/li&gt;
&lt;li&gt;&lt;em&gt;brave&lt;/em&gt;: a really nice, privacy focused browser&lt;/li&gt;
&lt;li&gt;&lt;em&gt;nomachine&lt;/em&gt;: a high fidelity remote desktop management tool&lt;/li&gt;
&lt;li&gt;&lt;em&gt;obsidian&lt;/em&gt;: a powerful and feature-rich markdown-based notes / PKM system&lt;/li&gt;
&lt;li&gt;&lt;em&gt;fritzing&lt;/em&gt;: a great circuit mapping tool (learning this one)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;handbrake&lt;/em&gt;: an easy to use video conversion utility&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ffmpeg&lt;/em&gt;: someething I need to use and learn more, a CLI-based video tranformation tool&lt;/li&gt;
&lt;li&gt;&lt;em&gt;nano&lt;/em&gt;: I really should learn VIM, but until then this is a simple CLI text editor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of the other built-in go-to packages include several obvious choices. Things like lsblk, lspci, dh, fdisk, etc.&lt;/p&gt;
&lt;p&gt;Have a suggestion that isn&#39;t on this list? Please reach out and let me know!&lt;br&gt;
&lt;span class=&quot;highlight&quot;&gt;socials:&lt;/span&gt; &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/new-favorite-computer/&quot;&gt;new favorite computer - a celeron?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2024-06-28-AI-with-jetson/&quot;&gt;doing AI things with Jetson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2026-07-25-javascript-no-thanks/&quot;&gt;Javascript - no thanks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 27 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-28-favorite-linux-packages/</guid>
    </item>
    <item>
      <title>kiss redirect</title>
      <link>https://bejon.com/blog/2023-06-26-kiss-redirect/</link>
      <description>&lt;h1&gt;kiss redirect&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Mon, Jun 26, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;keeping it simple stud, redirect style&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/blog-kiss-redirect.webp&quot; alt=&quot;Redirect code&quot; class=&quot;photo&quot; width=&quot;599&quot; height=&quot;236&quot;&gt;
&lt;p&gt;I was looking up to see if there was an integrated way to handle page redirects with &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; expecting there to be some crazy &lt;em&gt;Javascript&lt;/em&gt; code that I&#39;d need to implement. I found some articles that talked about making this work when hosting &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; sites on &lt;a href=&quot;https://netlify.com&quot;&gt;Netlify&lt;/a&gt;. I&#39;m presently using a traditional web hosting provider, so that use case doesn&#39;t quite cut it for me.&lt;/p&gt;
&lt;p&gt;So after searching and reading for a while, I thought of a different technique that wasn&#39;t nearly as potentially complicated and rather simple and elegant. I built in some logic with my base &lt;a href=&quot;https://mozilla.github.io/nunjucks/templating.html&quot;&gt;Nunjuck&lt;/a&gt; template where I check for the a variable of redirecturl in the template frontmatter, and if that value is true I include a simple meta redirect in the HTML template set to the value of the frontmatter variable pointing to the correct URL.&lt;/p&gt;
&lt;pre class=&quot;language-html line-numbers&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{% if redirecturl %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;meta&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Refresh&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0; url=&#39;{{ redirecturl }}&#39;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}&lt;/code&gt;&lt;span class=&quot;line-numbers-rows&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;I really didn&#39;t expect something so simple would be so effective. But that is an itch of a desire to overengineering. Sometimes simple wins. KISS baby, KISS.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 25 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-26-kiss-redirect/</guid>
    </item>
    <item>
      <title>what can I say, I like to tinker</title>
      <link>https://bejon.com/blog/2023-06-22-tinkerer/</link>
      <description>&lt;h1&gt;what can I say, I like to tinker&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Thu, Jun 22, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/tinkering&quot;&gt;tinkering&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;img src=&quot;https://bejon.com/images/tinkerer-electronics.webp&quot; alt=&quot;Tinkering with eleectronics&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;344&quot;&gt;
&lt;h2&gt;to tinker, or not to tinker? that is NOT the question!&lt;/h2&gt;
&lt;p&gt;I once worked for a gentleman who actually figured me out. He and I didn&#39;t always see eye to eye on the best approach to move forward with a technology strategy direction or a means by which to streamline operational processes, and often times those differences could get somewhat contentious. But they were always productive and useful as the different perspectives gave us important insights.&lt;/p&gt;
&lt;p&gt;And of the various reporting relationships I&#39;ve had in my career, this particular individual would have been the last person I&#39;d have thought would understand what I was about.&lt;/p&gt;
&lt;p&gt;I was working on developing a program management approach around a cost savings initiative the company was undertaking. The teams were all heavily burdened, and we needed to figure out a lean and mean approach that simplified reporting, the sharing and selection of initiatives so as not to further burden taxed resources. And while I was working through concepts and illustrating my thought process, he just sat back and said &amp;quot;Ah, you are a tinkerer.&amp;quot;&lt;/p&gt;
&lt;p&gt;That revelation rather floored me. I&#39;ve always known that about myself, but I&#39;d never quite labeled that quality as succinctly or plainly. And it was almost comical how one word can so quickly summarize the way I work. I like to tinker with things. I like to try out an idea in different forms and shapes, see how they feel, what sort of issues come up, then refine and deliver on a rationalized approach.&lt;/p&gt;
&lt;p&gt;For me it is a form of play. But it also compliments the way I think about problems and projects.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i class=&quot;ti ti-quote&quot;&gt;&lt;/i&gt; Ah, you are a tinkerer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This website and the &lt;a href=&quot;https://bejon.com/projects/&quot;&gt;projects&lt;/a&gt; contained herein are a reflection and extension of that work style. I get to tinker. Using a &lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;SSG&lt;/a&gt;, building and teaching &lt;a href=&quot;https://bejon.com/projects/friendsinelectronics/&quot;&gt;electronics&lt;/a&gt; and Python/CircuitPython, monkeying around with a tidbit of code, standing up a cluster in my home lab, or messing around with Docker or Ansible? Baking bread and getting into the art and science of it? Photography? Tinkering. It feeds that part of the brain and scratches the curiosity itch well.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/images/cluster-sbc-celeron.webp&quot; alt=&quot;A cluster waiting to be born&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;p&gt;And yes, I&#39;m really going to be building a cluster for my home lab. More on this to come in the not so distant future. It will likely feature K3S (Kubernetes) and host a bunch of containers. &lt;em&gt;I am a geek, and wear that badge with pride.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The root of this is, I like to stay curious and want to continue to learn new things. I can get obsessive with this trait at times, and even burn myself out on topics by diving in too deep too quickly. But I&#39;m learning to temper that enthusiasm so as not to subvert it.&lt;/p&gt;
&lt;h2&gt;so what&#39;s next?&lt;/h2&gt;
&lt;p&gt;Well, in short, lots of things. I&#39;ll post updates in my &lt;a href=&quot;https://bejon.com/blog/&quot;&gt;blog&lt;/a&gt; and in the &lt;a href=&quot;https://bejon.com/projects/&quot;&gt;projects&lt;/a&gt; sections of the site, so peek around to see what I am up to. You can also reach out on my &lt;span class=&quot;highlight&quot;&gt;socials&lt;/span&gt; if you want to collaborate on something.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;highlight&quot;&gt;socials:&lt;/span&gt; &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 21 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-22-tinkerer/</guid>
    </item>
    <item>
      <title>brioche not working</title>
      <link>https://bejon.com/blog/230617-brioche/</link>
      <description>&lt;h1&gt;brioche not working&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Sat, Jun 17, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/bread&quot;&gt;bread&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;&lt;em&gt;&lt;i class=&quot;ti ti-alert-circle&quot;&gt;&lt;/i&gt; warning!&lt;/em&gt; failed bread attempt ahead&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: The 4th attempt worked. A few days later we threw together another dough, and during the 2nd rise we let the shaped dough sit for 8-10 hours. Result following the bake? A much more airy and flavorful slice of brioche!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Grrrr, it&#39;s not quite working. This is my third attempt at a brioche following a specific recipe I found in a book. The first two attempts were obvious errors. In attempt #1, the yeast was too old and I didn&#39;t get much of a rise during the second rise period following shaping and folding.&lt;/p&gt;
&lt;p&gt;The second attempt was doomed to fail as I mistakingly used active dry yeast without activating it first. So the odds of any sort of rise were doomed before I even started. That was a rather careless mistake on my part.&lt;/p&gt;
&lt;p&gt;So let&#39;s move on to attempt number three, today. I&#39;m using instant yeast, which requires no activation and it is fresh-ish (translation: not expired). The dough felt good as it came together well during the initial mix. The first 20 minute rest was fine, and following the kneading the dough continued to feel right. Smooth, consistent and appropriately pliable. Following the initial 2 hour rest, we divided and shaped. Now here we are. The recipe calls for a 2 hour rest for the second rest, and I&#39;m at 2.5 hours. Oh and by the way, the kitchen was quite a bit warmer today which should help promote the rise. During the last attempt the temps were in the 60&#39;s, today upper 70&#39;s at around 78 degrees.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/pictures/brioche-fail.webp&quot; alt=&quot;Failed brioche attempt&quot; class=&quot;photo&quot; width=&quot;300&quot; height=&quot;400&quot;&gt;
&lt;p&gt;The recipe suggests that following 2 hours of this rest phase, the dough should be light, airy and mushrooming over the top of the container. Mushrooming... I&#39;m not seeing any mushrooming. I&#39;m not really seeing any significant rise.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At the 3 hour mark, I decided to give the loaves the dash treatment. Into a warm car sitting on the dash for a good 30+ minutes to see if this further aids in a rise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After 3 hour 45 minute mark, I pulled the loaves off the dash. The loaves had nearly doubled in size, but hadn&#39;t hit the point where they experienced any sort of mushrooming or spillage over the top of the loaf pan. A quick egg wash, and into the oven at 375 they go for 30-40 minutes.&lt;/p&gt;
&lt;p&gt;At least if this doesn&#39;t quite work out, I know it will still taste good.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/pictures/brioche-fail2.webp&quot; alt=&quot;Brioche bread - picture 2&quot; class=&quot;photo&quot; width=&quot;300&quot; height=&quot;400&quot;&gt;
&lt;p&gt;The bake completed at about 35 minutes. The kitchen smells amazing. The brioche, well it still tastes good. But it did not turn out as hoped (or at this point hyped???).&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;what might be going wrong&lt;/h2&gt;
&lt;p&gt;So my preliminary thought with attempt number 3 going awry is that the recipe calls for cold milk and eggs straight from the fridge. From my reading I understand that cold temperatures tends to retard the work that yeast does when it goes to town on the sugars in the flour. So it is possible that I just need to further extend this second rise period. But after nearly doubling the second rise time, I hadn&#39;t reached the mark.&lt;/p&gt;
&lt;p&gt;It is entirely possible to overproof the dough. And given my lack of experience with brioche, and the very evdent lack of appropriate rise, I&#39;m really not sure at what point I&#39;ll hit that mark.&lt;/p&gt;
&lt;p&gt;Another possibility may be that a proofing temperature controlled proofing basket may be helpful. I&#39;ve baked a lot of bread that has turned out fine without one, so I&#39;m a bit hesitant to go that route.&lt;/p&gt;
&lt;p&gt;But I also feel it is time to try a different technique. I believe the saying is 3 strikes and you are out. So for this recipe, should this not work again (all evidence is leading that way) then this will be strike 3. Ironically, even with the first two failed attempts, the brioche did taste good. It was just a bit dry and dense rather than light and airy, as brioche typically is.&lt;/p&gt;
&lt;p&gt;I&#39;ve seen other brioche recipes call for an overnight rise in the fridge. This also aids in the formation of flavor through the dough. So a technique including an overnight rise may be in order.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 16 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/230617-brioche/</guid>
    </item>
    <item>
      <title>new favorite computer - a celeron?</title>
      <link>https://bejon.com/blog/new-favorite-computer/</link>
      <description>&lt;h1&gt;new favorite computer - a celeron?&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Fri, Jun 16, 2023 |
tagged:   |  &lt;a href=&quot;https://bejon.com/tags/tech&quot;&gt;tech&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/electronics&quot;&gt;electronics&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;a celeron??&lt;/h2&gt;
&lt;p&gt;Yeah, an Intel Celeron. A N5105 to be precise. It isn&#39;t the Zima Board (left), it is the &lt;a href=&quot;https://www.lattepanda.com/lattepanda-3-delta&quot;&gt;Lattepanda Delta 3&lt;/a&gt; (right). This lean and mean little machine features a m.2 keyed to M to support NVMe, an onboard 64 GB eMMC, 8 GB RAM and Intel UHD Graphics. Oh and it has a gigiabit NIC and more.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/pictures/celeron-sbcs.webp&quot; alt=&quot;Celeron Single Board Computers&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;p&gt;I have this running &lt;a href=&quot;https://ubuntu-mate.org/&quot;&gt;Ubuntu Mate 22.04 LTS&lt;/a&gt; and the device really performs well with a full DE. GIMP loads really quickly and I can edit graphics on this unit well. I&#39;m doing my coding work on this system along with my electronics pursuits.&lt;/p&gt;
&lt;p&gt;This unit sits alongside my daily driver, and is trying to take over that role. The daily driver? An older Intel Core i7-7700 custom build I threw together a number of years ago. And while I&#39;m not going to try and game on the Lattepanda, I really enjoy working with it. If I was on a tight budget, I&#39;d consider this for a small form factor PC to get things done. I&#39;ve populated the m.2 slot with a 1 TB Samsung EVO NVMe drive so I have performant disk.&lt;/p&gt;
&lt;p&gt;One of the added bonuses of the Lattepanda is it features an ATMEGA32U4 coprocessor and has a healthy dose of GPIO pins for hardware hackability.&lt;/p&gt;
&lt;p&gt;So while my main &lt;a href=&quot;https://bejon.com/projects/friendsinelectronics/&quot;&gt;electronics club&lt;/a&gt; effort is centered around the &lt;em&gt;Raspberry Pi Pico W&lt;/em&gt; flashed with &lt;em&gt;CircuitPython&lt;/em&gt;, I&#39;m also working on a little something on the side that right now is featuring the &lt;a href=&quot;https://store-usa.arduino.cc/products/arduino-nano-rp2040-connect?selectedStore=us&quot;&gt;Arduino Nano RP2040 Connect&lt;/a&gt; which I recently flashed with &lt;em&gt;CircuitPython&lt;/em&gt;. I wanted more &lt;em&gt;ADCs&lt;/em&gt;, and I got them on this board.&lt;/p&gt;
&lt;h2&gt;so not using the zima board?&lt;/h2&gt;
&lt;p&gt;Not yet. Many a YouTube vlogger talk of the praises of the Zima Board. I just picked it up to experiment with, but haven&#39;t powered it up just yet. But I am looking forward to building a 3-node cluster which may run &lt;em&gt;K3S&lt;/em&gt; or possibly &lt;em&gt;KVM&lt;/em&gt; virtualization with a few Lattepanda boards. I can build this up and tear it down regularly and experiment. Given the shortage of &lt;em&gt;Raspberry Pi&lt;/em&gt; devices, a full Celeron makes for a great alternative. Plus I have access to a bunch of software by running a standard x86 instruction set.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2024-06-28-AI-with-jetson/&quot;&gt;doing AI things with Jetson&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 15 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/new-favorite-computer/</guid>
    </item>
    <item>
      <title>electronics club</title>
      <link>https://bejon.com/blog/electronics-club/</link>
      <description>&lt;h1&gt;electronics club&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Wed, Jun 14, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;time to club up on this one&lt;/h2&gt;
&lt;p&gt;I seem to have stumbled onto something a bit unexpected. I was chatting with some coworkers recently, and mentioned some of the passion projects in which I&#39;ve recently been investing more time. These projects are at the intersection of &lt;span class=&quot;highlight&quot;&gt;Python&lt;/span&gt;, &lt;span class=&quot;highlight&quot;&gt;electronics&lt;/span&gt;, &lt;span class=&quot;highlight&quot;&gt;microcontrollers&lt;/span&gt; and a dash of &lt;span class=&quot;highlight&quot;&gt;robotics&lt;/span&gt;.&lt;/p&gt;
&lt;img src=&quot;https://bejon.com/images/breadboard-simple.webp&quot; alt=&quot;Simple electronics on a breadboard&quot; class=&quot;photo&quot; width=&quot;350&quot; height=&quot;263&quot;&gt;
&lt;p&gt;My coworkers were very interested in this concept, so I offered to teach them what I know and to get them off the ground with this topical area. So here we are. I&#39;m chronicling the project here on my site.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can learn more about it on the &lt;a href=&quot;https://bejon.com/projects/friendsinelectronics&quot;&gt;friends electronics club&lt;/a&gt; project home page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My goals for my own endeavors are to start building small robots using microcontrollers as the brains. I&#39;ll hopefully build in some degree of autonomy, but the intent is to learn while I work, have fun and see what comes of this.&lt;/p&gt;
&lt;p&gt;I can promise you won&#39;t see me on Battlebots anytime soon. That is &lt;code&gt;not&lt;/code&gt; the goal!&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 13 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/electronics-club/</guid>
    </item>
    <item>
      <title>lensbaby fun</title>
      <link>https://bejon.com/blog/2023-06-03-lensbaby/</link>
      <description>&lt;h1&gt;lensbaby fun&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Sat, Jun 3, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/photo&quot;&gt;photo&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;photog incoming...&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/pictures/lensbaby-flowers.webp&quot; alt=&quot;Lensbaby backyard photo&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;276&quot;&gt;
&lt;p&gt;I am reposting an image I captured a while back and shared on IG previously. I was rummaging through some of my feed and stumbled on this and wanted to share it here. I&#39;m planning on getting out for a photo walk this weekend, and using an art lens like the &lt;a href=&quot;https://lensbaby.com/&quot;&gt;Lensbaby&lt;/a&gt; sweet 35.&lt;/p&gt;
&lt;p&gt;The Lensbaby lenses certainly require practice. The typical holy trinity of light (shutter, aperture and ISO) don&#39;t quite line up the same way when working with these manual art lenses. The bottom line? Probably 4-5 attempts to get one good photo. But in the end, the result is rather dreamy and fun.&lt;/p&gt;
&lt;p&gt;This image was captured on my &lt;span class=&quot;highlight&quot;&gt;Nikon D7500&lt;/span&gt;. I&#39;ve since upgraded to a &lt;span class=&quot;highlight&quot;&gt;Sony Alpha a7R III&lt;/span&gt;, and I look forward to further play with the art lenses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-24-a-wedding/&quot;&gt;a wedding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 02 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-03-lensbaby/</guid>
    </item>
    <item>
      <title>Upgrade to Eleventy 2.0</title>
      <link>https://bejon.com/blog/2023-06-03-eleventy-v2/</link>
      <description>&lt;h1&gt;Upgrade to Eleventy 2.0&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Sat, Jun 3, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;upgrade time...&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/eleventyconfig.webp&quot; alt=&quot;eleventy config screenshot&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
&lt;p&gt;As previously mentioned in my post about using a &lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;Static Site Generator&lt;/a&gt;, I decided to upgrade 11ty to version 2.0 to take advantages of the efficiency gains and streamlined build, along with the &lt;a href=&quot;https://www.11ty.dev/blog/eleventy-v2/&quot;&gt;new features&lt;/a&gt; offered by the new version.&lt;/p&gt;
&lt;p&gt;I followed a clean article by &lt;a href=&quot;https://danabyerly.com/notes/upgrading-to-eleventy-2-0-0/&quot;&gt;Dana Byerly&lt;/a&gt; and leveraged the &lt;a href=&quot;https://github.com/11ty/eleventy-upgrade-help&quot;&gt;11ty Upgrade Helper plugin&lt;/a&gt; which made very quick work of the effort. Thanks to keeping all of my &lt;i class=&quot;ti ti-code highlight&quot;&gt;&lt;/i&gt; code in &lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt;, I could easily revert the changes if needed.&lt;/p&gt;
&lt;p&gt;The process went off without a hitch, and was completed in a few quick steps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use NPM to install &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy@2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Use NPM to install &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy-upgrade-help@2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Add the upgrade helper to my &lt;span class=&quot;highlight&quot;&gt;.eleventy.js&lt;/span&gt; file&lt;/li&gt;
&lt;li&gt;Execute a build and read through the output to look for errors (of which, there were none!)&lt;/li&gt;
&lt;li&gt;Remove the helper from my &lt;span class=&quot;highlight&quot;&gt;.eleventy.js&lt;/span&gt; file&lt;/li&gt;
&lt;li&gt;Use NPM to uninstall &lt;span class=&quot;highlight&quot;&gt;@11ty/eleventy-upgrade-help@2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;(Optional) Use NPM to remove the unneeded &lt;span class=&quot;highlight&quot;&gt;browser-sync&lt;/span&gt; module&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I then ran a new build, which updated my &lt;span class=&quot;highlight&quot;&gt;package.json&lt;/span&gt; file, checked in my &lt;i class=&quot;ti ti-code highlight&quot;&gt;&lt;/i&gt; code, and done!&lt;/p&gt;
&lt;p&gt;With all of the upgrades I&#39;ve performed in my IT career, which has been going for more than a minute, this was probably one of the smoothest I&#39;ve ever encountered.&lt;/p&gt;
&lt;p&gt;Hats off to the team at 11ty for a great experience.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-02-Static-site-generator/&quot;&gt;static site generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 02 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-03-eleventy-v2/</guid>
    </item>
    <item>
      <title>static site generator</title>
      <link>https://bejon.com/blog/2023-06-02-Static-site-generator/</link>
      <description>&lt;h1&gt;static site generator&lt;/h1&gt;
&lt;p&gt;&lt;span class=&quot;blogdate&quot;&gt;posted: Fri, Jun 2, 2023 |
tagged:   |   |  &lt;a href=&quot;https://bejon.com/tags/dev&quot;&gt;dev&lt;/a&gt;  |  &lt;a href=&quot;https://bejon.com/tags/web&quot;&gt;web&lt;/a&gt; &lt;/span&gt;
&lt;br&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt; | &lt;a href=&quot;http://www.linkedin.com/in/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;LinkedIn&quot;&gt;&lt;i class=&quot;ti ti-brand-linkedin&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;X (Twitter)&quot;&gt;&lt;i class=&quot;ti ti-brand-x&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.facebook.com/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Facebook&quot;&gt;&lt;i class=&quot;ti ti-brand-facebook&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://www.instagram.com/bejon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Instagram&quot;&gt;&lt;i class=&quot;ti ti-brand-instagram&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/tinxr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;GitHub&quot;&gt;&lt;i class=&quot;ti ti-brand-github&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.tumblr.com/blog/bejonp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Tumblr&quot;&gt;&lt;i class=&quot;ti ti-brand-tumblr&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;static electricity, err web content&lt;/h2&gt;
&lt;img src=&quot;https://bejon.com/images/11ty-ssg.webp&quot; alt=&quot;eleventy static site generator&quot; class=&quot;photo&quot; width=&quot;400&quot; height=&quot;275&quot;&gt;
&lt;p&gt;I&#39;ve recently decided to transition my website from hand coded HTML with dynamic server-side encoding (such as PHP, Python or some other interpreted language), I&#39;ve decided to migrate the manner in which this site is constructed over to a &lt;span class=&quot;highlight&quot;&gt;Static Site Generator&lt;/span&gt; (SSG).&lt;/p&gt;
&lt;p&gt;And in particular, I&#39;m using &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before you say it, yes &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; uses JavaScript. But only for the generation of the site and for configuration and extensibility purposes. Take a look at the &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; site for more information before you start the lynching.&lt;/p&gt;
&lt;h2&gt;so why 11ty?&lt;/h2&gt;
&lt;p&gt;I&#39;ve wanted to setup a blog and and a repository for hosting wiki pages for quite a while. But I frankly don&#39;t want to deal with the security implications of using a dynamic language, server theat landscapes or a database. By using a static site generator in a jamstack architecture, I essentially remove the vast majority of the threat from hosting infrastructure on the web.&lt;/p&gt;
&lt;p&gt;This also gives me a legitimate excuse to finally give in and learn &lt;span class=&quot;highlight&quot;&gt;JavaScript&lt;/span&gt; (insert obligatory grumblings here), which I&#39;ve been avoiding for quite some time. Also &lt;a href=&quot;https://11ty.dev&quot;&gt;11ty&lt;/a&gt; felt familiar to me because of my work with &lt;a href=&quot;https://www.python.org/&quot;&gt;Python&lt;/a&gt;, the Python web framework &lt;a href=&quot;https://flask.palletsprojects.com&quot;&gt;Flask&lt;/a&gt; and the templating engine &lt;a href=&quot;https://jinja.palletsprojects.com/&quot;&gt;Jinja&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those looking to get started with a SSG, I&#39;d point folks over to 11ty and this video by Stephanie Eckles (&lt;a href=&quot;https://twitter.com/5t3ph&quot;&gt;@5T3PH&lt;/a&gt; | &lt;a href=&quot;https://11ty.rocks/&quot;&gt;11ty Rocks!&lt;/a&gt;) on YouTube: &lt;a href=&quot;https://www.youtube.com/watch?v=p81J7G1qFAM&quot;&gt;Eleventy: Key Features and Getting Started&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;what is Jamstack?&lt;/h2&gt;
&lt;p&gt;A good question. It is an architectural approach for building websites in a decoupled manner to improve security, flexibility and performance, amongst other elements. The JAM in jamstack stands for JavaScript (front-end frameworks), APIs (RESTful APIs) and Markup (HTML, Markdown, etc). Read more about it here: &lt;a href=&quot;https://jamstack.org&quot;&gt;Jamstack&lt;/a&gt; - while I learn more about JavaScript on my end.&lt;/p&gt;
&lt;p&gt;One of the elegant differences of a jamstack architected site is that you can essentially eliminate the need for a web server. You can deploy your entire site to a S3 bucket with static site hosting eliminating the need for administering infrastructure nearly entirely. As of the time of this posting, this site is still traditionally hosted via a typical web server / web host architecture.&lt;/p&gt;
&lt;p&gt;That may change in time, or even short order.&lt;/p&gt;
&lt;h2&gt;why not a Python SSG?&lt;/h2&gt;
&lt;p&gt;Well, it is time that I actually broke down and learned &lt;span class=&quot;highlight&quot;&gt;JS&lt;/span&gt;. I&#39;ve put it off for long enough, and it is just time. So here I go.&lt;/p&gt;
&lt;h2&gt;a serious plus for statically generated sites&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;added on June 15, 2023&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The load times scream. I used to have my site fully coded in PHP. Now that I have stripped the site down to just &lt;code&gt;HTML&lt;/code&gt;, &lt;code&gt;CSS&lt;/code&gt; and a dash of &lt;code&gt;Javascript&lt;/code&gt; here and there, the pages load incredibly fast. Also there is nothing to compromise. All of the content is just markup language that I write in &lt;a href=&quot;https://www.markdownguide.org/&quot;&gt;Markdown&lt;/a&gt; within &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;VS Code&lt;/a&gt; within my &lt;code&gt;11ty&lt;/code&gt; project structure. I push a few commands to update my &lt;code&gt;git&lt;/code&gt; repos and to compile the site, then upload the changes.&lt;/p&gt;
&lt;p&gt;In time I may look to move to a &lt;code&gt;S3&lt;/code&gt; bucket with static web hosting or to &lt;a href=&quot;https://www.netlify.com/&quot;&gt;Netlify&lt;/a&gt; for hosting, but I&#39;m very satisfied with the results thus far.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;related posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-03-eleventy-v2/&quot;&gt;Upgrade to Eleventy 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/electronics-club/&quot;&gt;electronics club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-06-26-kiss-redirect/&quot;&gt;kiss redirect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2023-07-10-syntax-highlighting/&quot;&gt;syntax highlights, the 11ty way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-14-eleventy-v3/&quot;&gt;Upgrade to Eleventy 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bejon.com/blog/2025-02-15-eleventy-feed/&quot;&gt;Adding the Eleventy RSS Feed Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://bejon.com/blog&quot;&gt;&lt;i class=&quot;ti ti-arrow-big-left&quot;&gt;&lt;/i&gt; return to blog home&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 01 Jun 2023 17:00:00 PDT</pubDate>
      <dc:creator>Bejon</dc:creator>
      <guid>https://bejon.com/blog/2023-06-02-Static-site-generator/</guid>
    </item>
  </channel>
</rss>