<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/pretty-feed-v3.xsl" type="text/xsl"?>
<rss version="2.0" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:webfeeds="http://webfeeds.org/rss/1.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content">

  <channel>
    <title>liamjbennett</title>
    <link>https://www.liamjbennett.me/</link>
    <description>Recent content by liamjbennett</description>
    <language>en-gb</language>
    <lastBuildDate>Sat, 16 May 2026 00:00:00 +0000</lastBuildDate>

    <image>
      <title>liamjbennett</title>
      <url>https://www.liamjbennett.me//img/main/profile.jpg</url>
      <link>https://www.liamjbennett.me/</link>
    </image>
    
    <webfeeds:cover image="https://www.liamjbennett.me//img/main/profile.jpg" />
    <webfeeds:icon image="https://www.liamjbennett.me//img/main/profile.jpg" />
    <webfeeds:accentColor>DBEAFE</webfeeds:accentColor>
    <webfeeds:related layout="card" target="browser"/>

    <atom:link href="https://www.liamjbennett.me/" rel="self" type="application/octet-stream" />
    <item>
      <title>DevLog 02</title>
      <link>https://www.liamjbennett.me/devlog/2025-06-06-devlog-02/</link>
      <pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://www.liamjbennett.me/devlog/2025-06-06-devlog-02/</guid>
      <description>
        &lt;![CDATA[&lt;img src=&#34;/img/main/profile.jpg&#34;/&gt; ]]/&gt;
        Using Shortcuts to cross-post - Part 1
      </description>
      <content:encoded><![CDATA[<p>One of the elements of me enhancing this blog as a place I spend more of my time, is to start looking at a <a href="https://indieweb.org/POSSE" class="external-link">POSSE<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a> implementation to cross-post my social media posts. Although with a static site that&rsquo;s pretty difficult, so the implementation I&rsquo;ve gone for is more posting to all at the same time, using iOS Shortcuts. You&rsquo;ll start to see some of these already at <a href="/snippets" class="internal-link">/snippets</a>.</p>
<p>So here is the logic:</p>
<ol>
<li>Select which social social media sites to post to;</li>
<li>Ask for post text</li>
<li>If images shared from share sheet then upload to Dropbox</li>
<li>Post to social media sites (seperate shortcuts)</li>
<li>Get links for each social media post</li>
<li>Construct markdown file for snippet (using links to socials in metadata)</li>
<li>Use <a href="https://workingcopy.app/" class="external-link">WorkingCopy<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a> to post to site.</li>
</ol>
<p>I also made heavy use of <a href="https://datajar.app/" class="external-link">datajar<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a></p>
<p>Here are my shortcuts:</p>
<p><a href="https://www.icloud.com/shortcuts/158b7f8ec54845f8a5e0dcb817d87cd4" class="external-link"><img alt="post to socials" loading="lazy" src="/img/2025/shortcut_01.png"><span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a>
<a href="https://www.icloud.com/shortcuts/40981e635e914d629dbbddf01455f606" class="external-link"><img alt="post to mastodon" loading="lazy" src="/img/2025/shortcut_02.png"><span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a>
<a href="https://www.icloud.com/shortcuts/4c6c4cebb595440f865583532af3d8a1" class="external-link"><img alt="post to bluesky" loading="lazy" src="/img/2025/shortcut_03.png"><span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a></p>
]]></content:encoded>
    </item>
    <item>
      <title>DevLog 01</title>
      <link>https://www.liamjbennett.me/devlog/2024-07-27-devlog-01/</link>
      <pubDate>Sat, 27 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://www.liamjbennett.me/devlog/2024-07-27-devlog-01/</guid>
      <description>
        &lt;![CDATA[&lt;img src=&#34;/img/main/profile.jpg&#34;/&gt; ]]/&gt;
        Python script to replace video in Teams
      </description>
      <content:encoded><![CDATA[<p>First devlog should start with something small. This time it&rsquo;s a bit of a follow on to the blog post I made about my <a href="http://localhost:1313/posts/2024-05-31-walking-treadmill/" class="external-link">walking treadmill<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a>. In that post, I mentioned that I use a video background in Microsoft Teams that moves to make it look like I&rsquo;m walking along. There is a <a href="https://walkolution.com/pages/animated-motion-video-backgrounds-for-video-meetings" class="external-link">series of videos<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a> I&rsquo;ve downloaded that provide different scenes - stops me getting bored.</p>
<p>Well, Microsoft Teams doesn&rsquo;t support importing custom videos and will only allow you to use it&rsquo;s built-in video backgrounds. The tick to make it work, was to replace the in-built videos with the custom ones I downloaded keeping the filenames the same the as the in-built ones.</p>
<p>I did this once and it was fine but it meant I could only have 4 videos but I had downloaded 12, so I wrote a little script to randomize them and stop me getting bored.</p>
<pre tabindex="0"><code>import os
import glob
import random
import shutil

# Make sure to use the correct path on your system, and be careful with the use of the script since it involves file deletion.
TARGET_DIR = os.path.expanduser(&#39;~/Library/Containers/com.microsoft.teams2/Data/Library/Application Support/Microsoft/MSTeams/Backgrounds&#39;)

# Define the list of files to be replaced
files_to_replace = [
    &#39;feelingDreamy2Animated_v=0.1.mp4&#39;,
    &#39;feelingDreamy4Animated_v=0.1.mp4&#39;,
    &#39;feelingDreamy5Animated_v=0.2.mp4&#39;,
    &#39;feelingDreamy7Animated_v=0.1.mp4&#39;
]

# Get the list of .mp4 files in the current directory
current_directory = os.getcwd()
mp4_files = glob.glob(os.path.join(current_directory, &#39;*.mp4&#39;))

# Check if there are enough files to replace
if len(mp4_files) &lt; 4:
    print(&#34;Not enough mp4 files found to perform the replacement.&#34;)
else:
    # Select 4 random mp4 files from the list
    selected_files = random.sample(mp4_files, 4)

    # Create the target directory if it doesn&#39;t exist
    if not os.path.exists(TARGET_DIR):
        os.makedirs(TARGET_DIR)

    # Perform the file replacement
    for i, target_file in enumerate(files_to_replace):
        source_file = selected_files[i]
        target_file_path = os.path.join(TARGET_DIR, target_file)


        # Delete the target file if it exists
        if os.path.exists(target_file_path):
            os.remove(target_file_path)
        else:
            print(f&#34;Target file {target_file} does not exist. It will be created.&#34;)

        # Copy the new file to the target location
        try:
            shutil.copy2(source_file, target_file_path)
            print(f&#34;Replaced {target_file} with {source_file}.&#34;)
        except Exception as e:
            print(f&#34;Failed to replace {target_file} with {source_file}. Error: {e}&#34;)

print(&#34;Replacement complete.&#34;)
</code></pre><p>Link: <a href="https://github.com/liamjbennett/treadmill-backgrounds" class="external-link">liamjbennett/treadmill-backgrounds<span class="external-link-icon" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
  <g>
    <path d="M10.0002 5H8.2002C7.08009 5 6.51962 5 6.0918 5.21799C5.71547 5.40973 5.40973 5.71547 5.21799 6.0918C5 6.51962 5 7.08009 5 8.2002V15.8002C5 16.9203 5 17.4801 5.21799 17.9079C5.40973 18.2842 5.71547 18.5905 6.0918 18.7822C6.5192 19 7.07899 19 8.19691 19H15.8031C16.921 19 17.48 19 17.9074 18.7822C18.2837 18.5905 18.5905 18.2839 18.7822 17.9076C19 17.4802 19 16.921 19 15.8031V14M20 9V4M20 4H15M20 4L13 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  </g>
</svg></span></a></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
