<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Andy Piper</title>
    <description>The latest articles on Forem by Andy Piper (@andypiper).</description>
    <link>https://forem.com/andypiper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51883%2F933091e4-8d51-442a-b65c-b86e67589d58.jpeg</url>
      <title>Forem: Andy Piper</title>
      <link>https://forem.com/andypiper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/andypiper"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Tue, 10 Feb 2026 19:58:18 +0000</pubDate>
      <link>https://forem.com/andypiper/-jn1</link>
      <guid>https://forem.com/andypiper/-jn1</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ben/heroku-is-going-into-maintenance-mode-m3f" class="crayons-story__hidden-navigation-link"&gt;Heroku is going into maintenance mode&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ben" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Fbabb96d0-9cd2-49bc-a412-2dc4caf94c2a.png" alt="ben profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ben" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ben Halpern
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ben Halpern
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3238569" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ben" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Fbabb96d0-9cd2-49bc-a412-2dc4caf94c2a.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ben Halpern&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ben/heroku-is-going-into-maintenance-mode-m3f" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ben/heroku-is-going-into-maintenance-mode-m3f" id="article-link-3238569"&gt;
          Heroku is going into maintenance mode
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/heroku"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;heroku&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/sre"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;sre&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ben/heroku-is-going-into-maintenance-mode-m3f" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;41&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ben/heroku-is-going-into-maintenance-mode-m3f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              13&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>heroku</category>
      <category>webdev</category>
      <category>sre</category>
    </item>
    <item>
      <title>Talks and travels: FrOSCon, Germany</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Thu, 28 Aug 2025 21:45:51 +0000</pubDate>
      <link>https://forem.com/andypiper/talks-and-travels-froscon-germany-2fmd</link>
      <guid>https://forem.com/andypiper/talks-and-travels-froscon-germany-2fmd</guid>
      <description>&lt;p&gt;Two weeks ago, I had the pleasure and honour of delivering a keynote at the (milestone!) 20th edition of &lt;a href="https://froscon.org/" rel="noopener noreferrer"&gt;FrOSCon&lt;/a&gt; in Sankt Augustin, Germany.&lt;/p&gt;

&lt;p&gt;My colleague &lt;a href="https://upp2.com/@dave" rel="noopener noreferrer"&gt;David&lt;/a&gt; (one of the core developers on the Mastodon team) was one of the original founders of FrOSCon all the way back when it started, and the event is held near his home location, so it was a doubly wonderful opportunity for me to see him in person, and also to meet his family!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k6xzilhesaxlese1ucd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k6xzilhesaxlese1ucd.jpg" alt="The FrOSCon 20th anniversary artwork"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last time I was in Bonn was in 1988, back then on a school trip exploring the Rhineland, in what used to be known as West Germany.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;aside: I remember two things about that visit very distinctly – firstly, being in a group of youngsters that was closely tailed by security staff around a department store in Bonn, no doubt because shenanigans were afoot by some of my contemporaries (!); secondly, I had been given &lt;a href="https://en.wikipedia.org/wiki/Disc_film" rel="noopener noreferrer"&gt;a Kodak disc film camera&lt;/a&gt; for a recent birthday, and the film shift mechanism broke during the trip, although one of my teachers tried to help me find a shop that could get it fixed, to no avail for such a niche device!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There have been many changes as a result of German re-unification and the compensation agreement between Berlin and Bonn, &lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Berlin-Bonn_Act" rel="noopener noreferrer"&gt;Vereinbarung über die Ausgleichsmaßnahmen für die Region Bonn&lt;/a&gt;&lt;/em&gt;. The university that hosts FrOSCon – Bonn-Rhein-Sieg University of Applied Sciences – is one of the institutions to have emerged as a result. The Open Source community is very fortunate to have such a wonderful venue to convene!&lt;/p&gt;

&lt;p&gt;My talk was the keynote on the second day of the event. Due to unexpected circumstances I was only able to travel early on the Saturday and missed the opening of the event, but I arrived in time to see the huge interest in the keynote for day one: &lt;a href="https://daniel.haxx.se/" rel="noopener noreferrer"&gt;Daniel Stenberg&lt;/a&gt; of curl fame, talking about &lt;a href="https://media.ccc.de/v/froscon2025-3407-ai_slop_attacks_on_the_curl_project" rel="noopener noreferrer"&gt;AI Slop Attacks on his development process&lt;/a&gt;. That was a fantastic talk, and I felt like it was a tough act to follow!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpov30bf71fkbq2gc1dj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpov30bf71fkbq2gc1dj.jpg" alt="Daniel Stenberg at FrOSCon"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spoke about the importance of federated, decentralised systems as a way to preserve access to information and to enable digital sovereignty.&lt;/p&gt;

&lt;p&gt;I spoke about &lt;a href="https://dev.to/andypiper/the-web-made-by-humans-2fa2"&gt;the creativity of humans&lt;/a&gt;, and our remarkable ingenuity in building the world in which we live.&lt;/p&gt;

&lt;p&gt;We find ourselves in difficult places politically, economically, socially right now: but, there is room for &lt;a href="https://fediverseforfreedom.org" rel="noopener noreferrer"&gt;hope&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Of course, I also mentioned how Mastodon and the Fediverse are important parts of the digital ecosystem as we work to build an alternative, &lt;a href="https://dev.to/andypiper/building-a-better-social-web-2n55-temp-slug-5511037"&gt;better, social web&lt;/a&gt; for everyone.&lt;/p&gt;

&lt;p&gt;The excellent folks from the Chaos Computer Club video operations team did a great job at capturing all of the talks from FrOSCon – you can &lt;a href="https://media.ccc.de/v/froscon2025-3408-decentralising_freedom_open_source_for_sovereignty" rel="noopener noreferrer"&gt;watch my talk on their site&lt;/a&gt;, I’ll embed a YouTube version below here for some level of convenience for those who use that platform.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ApLjFlCuOGk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;While I’m on the subject of the Fediverse, digital sovereignty, and FrOSCon, I’ll also point out some related talks of interest: Frank Karlitschek &lt;a href="https://media.ccc.de/v/froscon2025-3260-achieving_digital_sovereignty_in_europe_through_open_source" rel="noopener noreferrer"&gt;spoke about digital sovereignty&lt;/a&gt;; my colleague, David, spoke about &lt;a href="https://media.ccc.de/v/froscon2025-3346-taking_a_fresh_look_at_the_fediverse" rel="noopener noreferrer"&gt;Taking a Fresh Look at the Fediverse&lt;/a&gt; (updates in Mastodon, and in other projects across the ecosystem); and Georg Lukas spoke about &lt;a href="https://media.ccc.de/v/froscon2025-3304-samsung_camera_to_mastodon_bridge" rel="noopener noreferrer"&gt;reverse-engineering Samsung wifi cameras to post photos to Mastodon&lt;/a&gt;, which was a fun technical talk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8a03cp7ysb1iquxy6oii.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8a03cp7ysb1iquxy6oii.jpg" alt="David talking about the Fediverse"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgit09uanbjasc1icjfe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftgit09uanbjasc1icjfe.jpg" alt="Georg hacking cameras"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am very grateful to the organisers, volunteers, hosts, and the Open Source community for the opportunity to re-visit this part of Germany after such a long time away. I was home again by 11pm on Sunday, exhausted but happy. Thank you for making my time with you so enjoyable!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeweumjux03jzj2ybh6c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeweumjux03jzj2ybh6c.jpg" alt="David’s family #Plushtodon, “Masti”, had a fun time at FrOSCon!"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>froscon</category>
      <category>fediverse</category>
      <category>mastodon</category>
    </item>
    <item>
      <title>The Web, made by Humans</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Thu, 29 Aug 2024 22:14:09 +0000</pubDate>
      <link>https://forem.com/andypiper/the-web-made-by-humans-2fa2</link>
      <guid>https://forem.com/andypiper/the-web-made-by-humans-2fa2</guid>
      <description>&lt;p&gt;During &lt;a href="https://dev.to/andypiper/writing-goals-3p2a"&gt;my recent blogging revival&lt;/a&gt; I’ve &lt;a href="https://andypiper.co.uk/2024/08/14/i-love-the-web/" rel="noopener noreferrer"&gt;already written about how I love the web&lt;/a&gt;[1]. I’ve also commented a couple of times &lt;a href="https://andypiper.co.uk/2024/08/05/ai-ngels-and-demons/" rel="noopener noreferrer"&gt;about uses of AI&lt;/a&gt; and Large Language Models and &lt;a href="https://andypiper.co.uk/2024/07/30/art-and-algorithms-vs-ai/" rel="noopener noreferrer"&gt;the kinds of confusion that can be caused&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today, I noticed &lt;a href="https://stefanbohacek.online/@stefan/113046973904790353" rel="noopener noreferrer"&gt;an exchange&lt;/a&gt; between the brilliant &lt;a href="https://front-end.social/@sarajw" rel="noopener noreferrer"&gt;Sara Joy&lt;/a&gt; and &lt;a href="https://stefanbohacek.online/@stefan" rel="noopener noreferrer"&gt;Stefan Bohacek&lt;/a&gt; on Mastodon, in which Stefan accidentally reminded me of something interesting that I hadn’t properly explored the first time around.&lt;/p&gt;

&lt;h4&gt;
  
  
  Rewind
&lt;/h4&gt;

&lt;p&gt;About 20 years ago – actually 24 years ago, according to &lt;a href="https://en.wikipedia.org/wiki/FOAF" rel="noopener noreferrer"&gt;this Wikipedia article&lt;/a&gt; – there was &lt;a href="http://xmlns.com/foaf/spec/" rel="noopener noreferrer"&gt;a thing called FOAF&lt;/a&gt;, or Friend-of-a-Friend, an early online vocabularly / ontology for describing relationships between people and things online. There was also a related concept called &lt;a href="https://github.com/ewilderj/doap/wiki" rel="noopener noreferrer"&gt;DOAP&lt;/a&gt;, Description of a Project, that I was interested in and implemented in a couple of things I worked on back then. I did some digging, but the only &lt;a href="https://andypiper.co.uk/?s=foaf" rel="noopener noreferrer"&gt;references I can find on this blog&lt;/a&gt; are some passing mentions in the early 2000s, and I’ve lost my original &lt;code&gt;foaf.rdf&lt;/code&gt; file but I might have to go hunting for that for posterity, at some stage.&lt;/p&gt;

&lt;p&gt;I’m mentioning all of this because it reminds me that I’ve always been interested in the Semantic Web space, and also in the &lt;em&gt;people&lt;/em&gt; aspects of the web, beyond just the words and the technology – &lt;em&gt;Who&lt;/em&gt; is making &lt;em&gt;What&lt;/em&gt;, and &lt;em&gt;How&lt;/em&gt; it is all connected.&lt;/p&gt;

&lt;h4&gt;
  
  
  Humans today
&lt;/h4&gt;

&lt;p&gt;Back to the ~present!&lt;/p&gt;

&lt;p&gt;About 10 years ago – actually 12 years ago, according the last updated date &lt;a href="http://humanstxt.org/humans.txt" rel="noopener noreferrer"&gt;in the original &lt;code&gt;humans.txt&lt;/code&gt; file&lt;/a&gt; – there was the quiet &lt;a href="https://humanstxt.org" rel="noopener noreferrer"&gt;proposal&lt;/a&gt; of an idea, for a &lt;code&gt;humans.txt&lt;/code&gt; file, that could live in parallel to the &lt;code&gt;robots.txt&lt;/code&gt; file on a web server.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;robots.txt&lt;/code&gt; file is intended for site owners to provide instructions to web crawlers – “robots”, or automated programs – as to how to behave in relation to the content of the site: this is &lt;a href="https://www.robotstxt.org/robotstxt.html" rel="noopener noreferrer"&gt;the agreed-upon standard way&lt;/a&gt; in which the web works, and signals to search engines how to index websites, going all the way back to the early days of 1994-7, and later fully documented by Google and others.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F113pxtpn9oz5kr2ebzlw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F113pxtpn9oz5kr2ebzlw.png" alt="the humans.txt logo" width="351" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea for the &lt;code&gt;humans.txt&lt;/code&gt; file was simply that we should have a simple way to credit the people who made a website, in a super easy to create and publish format, regardless of the technology stack used to build the site or the URL formats and layout of the site. It was briefly documented and lightly promoted on &lt;a href="https://humanstxt.org" rel="noopener noreferrer"&gt;humanstxt.org&lt;/a&gt;. I remember noticing it at the time, loving the idea, but then not really doing anything with it, and I admit that I didn’t end up using it myself.&lt;/p&gt;

&lt;p&gt;However, Stefan is using this on &lt;a href="https://stefanbohacek.com/humans.txt" rel="noopener noreferrer"&gt;his site&lt;/a&gt; (and &lt;a href="https://stefanbohacek.com/blog/humans-txt/" rel="noopener noreferrer"&gt;wrote about it 11 years ago&lt;/a&gt;, because of course he’s ahead of me again 😀) and it made me think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is &lt;em&gt;still&lt;/em&gt; A Great Idea, and Right Now Could Be Its Time

&lt;ul&gt;
&lt;li&gt;We’ve seen deliberate misinterpretations / mis-statements (from big AI players) about the value of &lt;code&gt;robots.tx&lt;/code&gt;t in relation to AI crawlers/scrapers in the past 6-12 months. Let’s re-emphasise the human aspect here.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://humanstxt.org" rel="noopener noreferrer"&gt;humanstxt.org&lt;/a&gt; could do with a bit of a refresh / re-upping and updating, maybe, but it’s on all of us to promote and adopt this idea.&lt;/li&gt;
&lt;li&gt;the &lt;a href="https://indieweb.org/IndieWeb" rel="noopener noreferrer"&gt;IndieWeb&lt;/a&gt; is thriving, and I’ve been seeing folks returning from XOXO over the past week enthusing about the greatness of the web.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;REMEMBER THE JOY THE INTERNET CAN BRING! ❤&lt;/p&gt;

&lt;p&gt;&lt;a href="https://donotreply.cards/en/do-post-what-it-felt-like-to-make-your-first-website" rel="noopener noreferrer"&gt;https://donotreply.cards/en/do-post-what-it-felt-like-to-make-your-first-website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— Dan Hon #xoxofest (&lt;a href="https://dan.mastohon.com/@danhon" rel="noopener noreferrer"&gt;@danhon&lt;/a&gt;) &lt;a href="https://dan.mastohon.com/@danhon/113018272551284688" rel="noopener noreferrer"&gt;2024-08-24T17:53:01.066Z&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Why don’t I add this to my sites? &lt;a href="https://andypiper.me/humans.txt" rel="noopener noreferrer"&gt;OK then, I will&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Hold on, is there a browser extension for this? &lt;a href="https://chromewebstore.google.com/detail/humanstxt/pocdghmbbodjiclginddlaimdaholhfk" rel="noopener noreferrer"&gt;Oh, there is&lt;/a&gt; (although with the rollout of the new Chrome updates / Manifest V3 and lack of maintenance, they may not work in the future)&lt;/li&gt;
&lt;li&gt;OK what about a WordPress plugin, for this here WordPress blog of mine? &lt;a href="https://wordpress.org/plugins/humanstxt/" rel="noopener noreferrer"&gt;Oh, there is&lt;/a&gt; (although it has not been updated lately, and continues to refer to &lt;a href="https://andypiper.co.uk/2023/07/31/goodbye-to-my-life-on-twitter-2007-2023/" rel="noopener noreferrer"&gt;legacy stuff&lt;/a&gt; like some site called Twitter; &lt;a href="https://andypiper.co.uk/humans.txt" rel="noopener noreferrer"&gt;it works, though&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;We really, really need to give credit where credit is due, in a world where things are increasingly being sucked up, mashed together by algorithms, and regurgitated in ways that diminish their creators for the enrichment of others.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I’m saying, is this – Thank You, Stefan, and Sara, and Dan Hon[2] and everyone else from XOXO and everywhere all over the internet, for reminding me that the web is great, humans are &lt;strong&gt;&lt;em&gt;incredible&lt;/em&gt;&lt;/strong&gt; , and hey, why don’t we all give this &lt;code&gt;humans.txt&lt;/code&gt; thing one more try? I’m on board with that.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;In that post, I also mentioned that the &lt;a href="https://tinyawards.net/" rel="noopener noreferrer"&gt;Tiny Awards&lt;/a&gt; 2024 winners were due to be announced – and as I’m writing now, they have been: &lt;a href="https://oneminutepark.tv/" rel="noopener noreferrer"&gt;One Minute Park&lt;/a&gt;, and &lt;a href="https://onemillioncheckboxes.com/" rel="noopener noreferrer"&gt;One Million Checkboxes&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;A new edition of &lt;a href="https://newsletter.danhon.com/" rel="noopener noreferrer"&gt;Dan’s excellent newsletter&lt;/a&gt; literally was published as I was typing this blog post. You need to subscribe to it. &lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>web</category>
    </item>
    <item>
      <title>Meeting my personal writing goals</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Wed, 28 Aug 2024 13:05:48 +0000</pubDate>
      <link>https://forem.com/andypiper/writing-goals-3p2a</link>
      <guid>https://forem.com/andypiper/writing-goals-3p2a</guid>
      <description>&lt;p&gt;A little while ago I decided to try to &lt;a href="https://andypiper.co.uk/2024/07/18/what-happened-to-blogs-again/" rel="noopener noreferrer"&gt;get back into blogging a bit more seriously&lt;/a&gt;. Once upon a time, I was a regular writer via my own personal blog - over time, that diminished as I got more involved with microblogging, or just got more and more &lt;em&gt;busy&lt;/em&gt; with other tasks. However, I realised that I had the most personal satisfaction when I was in a habit of writing and sharing online in a more thoughtful and consistent manner.&lt;/p&gt;

&lt;p&gt;So, I decided to set myself &lt;a href="https://100daystooffload.com/" rel="noopener noreferrer"&gt;the #100DaysToOffload challenge&lt;/a&gt;; and then, &lt;a href="https://andypiper.co.uk/2024/08/04/a-re-introduction-to-my-blog/" rel="noopener noreferrer"&gt;#Blaugust2024 came along&lt;/a&gt;, and I tied myself in to that series of challenges, as well. As a result, I'm on a 42 day writing streak over on my personal site. I also &lt;a href="https://andypiper.co.uk/2024/08/21/a-fresh-coat-of-paint/" rel="noopener noreferrer"&gt;gave it a bit of a "glow up"&lt;/a&gt; over there.&lt;/p&gt;

&lt;p&gt;Some things you may have missed, that could be of interest to the audience here on DEV - this is a short list out of the ~50 posts from the past 42 days...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/07/24/glitchy-love/" rel="noopener noreferrer"&gt;Glitchy love&lt;/a&gt;, in praise of Glitch.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/07/30/art-and-algorithms-vs-ai/" rel="noopener noreferrer"&gt;Art and Algorithms, vs AI&lt;/a&gt;, about the terminology used around creative coding and art.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/08/06/mnt-pocket-reform-first-impressions/" rel="noopener noreferrer"&gt;MNT Pocket Reform: first impressions&lt;/a&gt;, about a new open hardware laptop, which &lt;a href="https://news.ycombinator.com/item?id=41176817" rel="noopener noreferrer"&gt;hit #2 on Hacker News&lt;/a&gt; and was a viral moment!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/08/27/learning-about-the-atmosphere/" rel="noopener noreferrer"&gt;Learning about the ATmosphere&lt;/a&gt;, about a talk I attended on ATProto.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/08/20/return-of-the-oggcamp/" rel="noopener noreferrer"&gt;Return of the Ogg(Camp)&lt;/a&gt;, announcing a big Open Source and Open Culture event in the UK in October. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://andypiper.co.uk/2024/08/25/somewhere-in-the-m5stack/" rel="noopener noreferrer"&gt;Somewhere in the (M5)Stack&lt;/a&gt;, debugging an M5Stack Core device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the challenges for me is knowing how and when to syndicate between my blogs. I have this one on DEV which has primarily been for coding and development, and also some more posts &lt;a href="https://andypiper.medium.com/" rel="noopener noreferrer"&gt;over on Medium&lt;/a&gt; as well. In both cases I haven't usually kept copies of the same content on my personal blog.&lt;/p&gt;

&lt;p&gt;I think I'm going to try to bring my DEV and Medium content "home" to my personal site, and import older posts from here over there, and then be more thoughtful about my POSSE (Post Own Site, Syndicate Everywhere) pattern of sharing. I'm not going away from DEV, though.&lt;/p&gt;

&lt;p&gt;Header photo by &lt;a href="https://unsplash.com/@glenncarstenspeters?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Glenn Carstens-Peters&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/person-writing-bucket-list-on-book-RLw-UC03Gwc?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blogging</category>
      <category>writing</category>
      <category>content</category>
      <category>goals</category>
    </item>
    <item>
      <title>My new personal/business cards</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Tue, 19 Mar 2024 23:45:14 +0000</pubDate>
      <link>https://forem.com/andypiper/my-new-personalbusiness-cards-3g7</link>
      <guid>https://forem.com/andypiper/my-new-personalbusiness-cards-3g7</guid>
      <description>&lt;p&gt;&lt;a href="https://pixelfed.social/i/web/post/674165160771625072"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fio7zbz4l8p0it3pp2s24.jpg" alt="Three square business cards. Two show a decoration of detail from two different black and white abstract designs. The third shows the text from the reverse: Andy Piper freelance technologist consultant | speaker maker | podcaster" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve been getting to more events lately (casual meetups, small conferences, academic workshops, etc); but, I’ve been dissatisfied with my answer when I was asked the question “what do you do right now?” – because I often start to talk about a specific project.&lt;/p&gt;

&lt;p&gt;I’ve got a number of interesting but limited (in time) pieces of work right now, and I’m excited to be involved with them; but ideally, I don’t want to describe myself and my capabilities in terms of what I’m doing for any one client, since I may not be continuing with a specific role for a longer term. It also hasn’t felt ideal to hand out a card for the studio, podcast, or with one of my client “hats”, since doing so doesn’t signal availability for “other things”.&lt;/p&gt;

&lt;p&gt;So, time to refresh my (personal) business cards. I’m still using &lt;a href="https://refer.moo.com/s/andypiperuk8"&gt;MOO&lt;/a&gt; (&lt;a href="https://andypiper.co.uk/2006/09/19/flickr-mini-cards/"&gt;after all these years&lt;/a&gt;) – I’m happy with what they offer. The cards feature details from two different designs of my pen plotter artwork from &lt;a href="https://forgeandcraft.co.uk"&gt;the studio&lt;/a&gt; (original framed pieces, as well as prints, are &lt;a href="https://shop.forgeandcraft.co.uk/category/art-prints-and-plotter-art"&gt;available in the store&lt;/a&gt;). I’ve gone with the recycled cotton finish this time around.&lt;/p&gt;

&lt;p&gt;For the tagline, I’ve tried to capture a number of my skills, abilities and interests, without limiting myself to a single niche.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;freelance technologist; consultant | speaker | maker | podcaster&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I’ve been working professionally in &lt;em&gt;Developer Relations&lt;/em&gt; for ~15 years, most frequently in the Developer Advocate role, but within that I’ve also leaned in to Partner Engineering, management, and team leadership at different times; and, I’ve also worked with public policy and moderation teams, as well as on some complex technical integrations. &lt;/li&gt;
&lt;li&gt;This year, I’ve also run booths at events (including at State of Open Con 2023 for the Open Source Initiative, at tech events for OpenUK, and at FOSDEM 2024 for Mastodon); and, I’ve been speaker coordinator for a major 2-day conference (State of Open Con 2024). &lt;/li&gt;
&lt;li&gt;I love to speak at events myself, and I’m honoured to have been invited to &lt;a href="https://qconlondon.com/keynote/apr2024/where-art-history-technology"&gt;deliver the closing keynote at QCon in London&lt;/a&gt; next month. &lt;/li&gt;
&lt;li&gt;Our weekly podcast &lt;a href="https://gamesatwork.biz"&gt;Games at Work dot Biz&lt;/a&gt; is a fun ongoing element of life – it keeps me up-to-date with what is going on at a macro level in technology trends, and has always been a great opportunity to explain and educate. Find us in your favourite podcast app!&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://forgeandcraft.co.uk"&gt;Forge &amp;amp; Craft maker space and art studio&lt;/a&gt; is also a big part of my current identity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What can I do to help you? Potentially, a range of things: through running a developer program for a technology project, to providing guidance and advice around current technology trends (fractional CTO roles), to senior community leadership and management. I have 20+ years of experience in the Open Source movement, and contributing to projects at every level.&lt;/p&gt;

&lt;p&gt;I’m continuing to work on configuring my online presence, but &lt;a href="https://andypiper.omg.lol"&gt;my landing page&lt;/a&gt; is a good starting point to find out what I’m working on (plus, the omg lol domain seems to entertain people!)&lt;/p&gt;

&lt;p&gt;If you’d like to book time with me for consultation, you can &lt;a href="https://calendly.com/andypiper"&gt;find my bookable calendar here&lt;/a&gt;; you can &lt;a href="https://github.com/sponsors/andypiper"&gt;sponsor me on GitHub and book a session with me for your team here&lt;/a&gt;; or, &lt;a href="https://ko-fi.com/andypiper"&gt;buy me a coffee / fund my habit of trying out new gadgets over here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What do you think - useful set of information for me to share when I meet people, or should I take a different approach?&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>career</category>
      <category>freelance</category>
    </item>
    <item>
      <title>Six (and a bit) months on Team Mastodon</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Wed, 27 Dec 2023 14:58:44 +0000</pubDate>
      <link>https://forem.com/andypiper/six-and-a-bit-months-on-team-mastodon-5g3g</link>
      <guid>https://forem.com/andypiper/six-and-a-bit-months-on-team-mastodon-5g3g</guid>
      <description>&lt;p&gt;Back in May, Eugen &lt;a href="https://www.patreon.com/posts/may-update-82941004" rel="noopener noreferrer"&gt;announced that I’d joined the team at Mastodon gGmbH&lt;/a&gt;, to look after Developer Relations. I was helping out in different ways, and getting to know the community across different Fediverse projects, since the start of the year; it was great to be able to spend a small portion of my freelance time working on something that I personally believe in, that I’m excited about, and where I can bring relevant experience to bear in multiple areas.&lt;/p&gt;

&lt;p&gt;The initial six month arrangement technically wrapped up at the end of November, and I thought it might be nice to reflect on what I was able to achieve over that period (I’m also excited to be able to continue this work going into 2024). Some of the work was very much “behind the scenes” / “under the radar”, so it is less straightforward to document here, but here are some of the larger and more visible outcomes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I worked on a &lt;a href="https://dev.to/godspowercuche/improving-mastodon-developer-documentation-33ko-temp-slug-1722430"&gt;full update of supporting libraries and client apps for the website&lt;/a&gt;. This is now much more complete and vibrant! I’m a particular fan of the &lt;a href="https://joinmastodon.org/apps" rel="noopener noreferrer"&gt;niche “retro computing” section&lt;/a&gt; of the site, since it directly intersects with my other interests in tech.

&lt;ul&gt;
&lt;li&gt;I’d also like to use this space to again, say &lt;strong&gt;Thank You&lt;/strong&gt; to the large number of developers that spend their time building libraries, tools, and full Mastodon apps, for the platform. We appreciate you!&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;I refreshed the &lt;a href="https://github.com/mastodon" rel="noopener noreferrer"&gt;GitHub organisation&lt;/a&gt; &amp;amp; project look-and-feel, setting up an organisation-level README, and links to our Code of Conduct across all of our projects.&lt;/li&gt;

&lt;li&gt;I worked on cross-project and cross-instance collaboration channels. This is a little more difficult to document because there are a lot of channels (Mastodon, Discord, Signal, GitHub / other source control communities, face-to-face and 1:1 meetings), but I’m hopeful (and I believe) that I’ve been successful in bringing folks together in meaningful ways over the course of the year.&lt;/li&gt;

&lt;li&gt;I attended a number of workshops on behalf of the team – the Carnegie Endowment for International Peace hosted a series on challenges to moderation and safety in distributed social networks, the &lt;a href="https://dtinit.org/docs/dtp-federated-miniconference-report" rel="noopener noreferrer"&gt;Data Transfer Initiative ran an excellent conversation&lt;/a&gt;, and I’ve had several contacts with folks via &lt;a href="https://fediforum.org/" rel="noopener noreferrer"&gt;Fediforum&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;I talked about Mastodon and the Fediverse to Developer Relations-specific audiences at DevRelCon in London, and at the Dublin DevRel meetup (&lt;a href="https://dev.to/andypiper/devrel-in-the-era-of-community-everywhere-4ejh"&gt;recording here&lt;/a&gt;).&lt;/li&gt;

&lt;li&gt;I represented and spoke about Mastodon at &lt;a href="https://2023.allthingsopen.org/" rel="noopener noreferrer"&gt;All Things Open&lt;/a&gt; (alongside my personal attendance). Stickers!&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fandypiper.co.uk%2Fwp-content%2Fuploads%2F2023%2F12%2Fimg_0584-2-1-400x400.jpg%3Fresize%3D400%252C400%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fandypiper.co.uk%2Fwp-content%2Fuploads%2F2023%2F12%2Fimg_0584-2-1-400x400.jpg%3Fresize%3D400%252C400%26ssl%3D1" alt="An array of tech-related stickers on a tabletop, featuring Mastodon logos"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An array of tech-related stickers on a tabletop, featuring Mastodon logos&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I worked with the triage team that &lt;a href="https://renchap.com/blog/" rel="noopener noreferrer"&gt;Renaud&lt;/a&gt; established to significantly burn down the backlog of &lt;a href="https://github.com/mastodon/documentation" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; and &lt;a href="https://github.com/mastodon/joinmastodon" rel="noopener noreferrer"&gt;website&lt;/a&gt; issues. There was a particularly large burst of activity around this during November and December, and this was also part of &lt;a href="https://24pullrequests.com/users/andypiper" rel="noopener noreferrer"&gt;my 24 Pull Requests contribution&lt;/a&gt; this month.

&lt;ul&gt;
&lt;li&gt;there is a lot more still to do here, and contributions are welcomed. We want to rebuild the documentation website in a format that is more closely aligned with the &lt;a href="https://joinmastodon.org/" rel="noopener noreferrer"&gt;joinmastodon.org&lt;/a&gt; site, and would love to have some help with that.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;I secured a table for the project at &lt;a href="https://fosdem.org" rel="noopener noreferrer"&gt;FOSDEM&lt;/a&gt; 2024, and I will be working with Renaud and others to run that presence.&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Excited to announce that the &lt;a href="https://mastodon.social/@Mastodon" rel="noopener noreferrer"&gt;@Mastodon&lt;/a&gt; project will have a stand at &lt;a href="https://macaw.social/tags/FOSDEM2024" rel="noopener noreferrer"&gt;#FOSDEM2024&lt;/a&gt; … February this year was my first time at &lt;a href="https://macaw.social/tags/FOSDEM" rel="noopener noreferrer"&gt;#FOSDEM&lt;/a&gt;, and this time I'll be there with a project I support! Looking forward to it. &lt;a href="https://fosdem.org/2024/news/2023-11-20-accepted-stands-fosdem-2024/" rel="noopener noreferrer"&gt;https://fosdem.org/2024/news/2023-11-20-accepted-stands-fosdem-2024/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— Andy Piper (&lt;a href="https://macaw.social/@andypiper" rel="noopener noreferrer"&gt;@andypiper&lt;/a&gt;)&lt;a href="https://macaw.social/@andypiper/111450306983226781" rel="noopener noreferrer"&gt;2023-11-21T19:58:45.211Z&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;With the aim to maintain a range of different relationships and channels of conversation, I’ve also been actively having discussions with organisations and supporting groups such as &lt;a href="https://about.iftas.org/" rel="noopener noreferrer"&gt;IFTAS&lt;/a&gt;, &lt;a href="https://www.fastly.com/lp/fediverse/" rel="noopener noreferrer"&gt;Fastly&lt;/a&gt;, Fediforum, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love to spend more time with the Mastodon team and contribute in even more ways; from the perspective of building a sustainable freelancer lifestyle, it is only a small part of my time, and &lt;a href="https://www.linkedin.com/in/andypiperuk" rel="noopener noreferrer"&gt;I’m open to other opportunities&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fandypiper.co.uk%2Fwp-content%2Fuploads%2F2023%2F12%2FIMG_1317.jpeg%3Fresize%3D739%252C591%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Fandypiper.co.uk%2Fwp-content%2Fuploads%2F2023%2F12%2FIMG_1317.jpeg%3Fresize%3D739%252C591%26ssl%3D1" alt="The author (a white man with blonde hair and glasses with dark frames) is facing the camera, holding up a small brown fluffy mammoth toy in his left hand. He is standing in front of a sea view in the north of Malta"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Mastodon in Malta!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Looking forward to 2024! FOSDEM next, and then, &lt;a href="https://dsmw.cs.princeton.edu/attendees" rel="noopener noreferrer"&gt;Princeton&lt;/a&gt;…&lt;/p&gt;

</description>
      <category>fediverse</category>
      <category>mastodon</category>
      <category>devrel</category>
    </item>
    <item>
      <title>DevRel in the era of “Community Everywhere”</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Fri, 06 Oct 2023 11:26:37 +0000</pubDate>
      <link>https://forem.com/andypiper/devrel-in-the-era-of-community-everywhere-4ejh</link>
      <guid>https://forem.com/andypiper/devrel-in-the-era-of-community-everywhere-4ejh</guid>
      <description>&lt;p&gt;Last week, I had the pleasure of talking to the &lt;a href="https://www.devrelmeetup.com/"&gt;Dublin #DevRel Meetup&lt;/a&gt;, organised by my friends at &lt;a href="https://www.voxgig.com/"&gt;Voxgig&lt;/a&gt; – all about &lt;em&gt;Developer Relations in the era of “Community Everywhere”&lt;/em&gt;. I covered a range of the current and emerging social platforms where we can connect with our communities, and later in the session I talked more specifically about what’s new in Mastodon 4.2.&lt;/p&gt;

&lt;p&gt;What is “Community Everywhere”? Well, it’s &lt;a href="https://www.feverbee.com/communityeverywhere/"&gt;something that Richard Millington wrote about not too long ago&lt;/a&gt;. As I cover in the talk, &lt;a href="https://adrianspeyer.substack.com/p/the-community-everywhere-buzzword"&gt;not everyone believes that this is something new&lt;/a&gt; – but, as &lt;a href="https://dev.to/godspowercuche/thoughts-on-dev-rel-in-the-post-twitter-era-4m46-temp-slug-9114130"&gt;I’ve written about before myself&lt;/a&gt;, a core responsibility of a Developer Relations professional is to go where the developers are, and as there are &lt;a href="https://dev.to/andypiper/when-social-networks-are-like-pokemon-5615-temp-slug-8256090"&gt;a number of new platforms&lt;/a&gt; around at the moment, it’s an opportunity to learn, explore, and get comfortable with some different tools and ways of communicating.&lt;/p&gt;

&lt;p&gt;A small hiccup meant that after about the 5th slide the presentation was no longer being shared into the online recording, but the &lt;a href="https://speakerdeck.com/andypiper/developer-relations-in-the-era-of-community-everywhere"&gt;full slide deck is here&lt;/a&gt; if you want to follow along with the talk, and I’ve also got a set of &lt;a href="https://pipr.co/devrel-ece"&gt;notes and links for the talk online&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s the video.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pl72q_ZLz_4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The organisers also invited me to talk about the &lt;a href="https://blog.joinmastodon.org/2023/09/mastodon-4.2/"&gt;new release of Mastodon, version 4.2&lt;/a&gt;. This is the first major version to have come out since I started helping the team, and it’s a pretty big deal as it introduces a few major features that folks have been looking for, notably &lt;em&gt;opt-in search&lt;/em&gt;. In the second part of my section of the meetup, I talked a bit about version 4.2, and also shared a few tools that I use regularly that give me additional features and ways to keep up with the conversations around the communities I want to connect with. The notes are again available at the same link posted above.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cXks_mt3laY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;tl;dr (aka didn’t watch / or check the notes) – there are a few third-party apps and tools that I use regularly to help me to stay up-to-date. In particular, I love (and choose to pay for) &lt;a href="https://murmel.social"&gt;Murmel&lt;/a&gt; and &lt;a href="https://fediview.com"&gt;fediview&lt;/a&gt; which email me daily summaries of links or conversations I might otherwise miss in the reverse-chronological timeline. I also use some browser extensions that add a few niceties to the experience, such as &lt;a href="https://chrome.google.com/webstore/detail/graze-for-mastodon/epocinhmkcnjfjobnglchpbncndobblj"&gt;Graze&lt;/a&gt; and &lt;a href="https://chrome.google.com/webstore/detail/streetpass-for-mastodon/fphjfedjhinpnjblomfebcjjpdpakhhn"&gt;Streetpass&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to Sinead and Richard for having me talk at the meetup, and for continuing to support the DevRel community with great content each month – there’s also a &lt;a href="https://www.voxgig.com/podcast"&gt;good podcast from Voxgig&lt;/a&gt; that you should check out.&lt;/p&gt;

</description>
      <category>community</category>
      <category>devrel</category>
      <category>mastodon</category>
    </item>
    <item>
      <title>Tech in the tent</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Mon, 25 Sep 2023 20:12:16 +0000</pubDate>
      <link>https://forem.com/andypiper/tech-in-the-tent-35lk</link>
      <guid>https://forem.com/andypiper/tech-in-the-tent-35lk</guid>
      <description>&lt;p&gt;We’re just back from a week or so camping, in the wilds of mid-Hampshire.&lt;/p&gt;

&lt;p&gt;It’s more-or-less the end of the season – the youngsters are back to school, the summer has wound down, so the sites are nice and quiet; although the weather is at risk of being more mixed than usual. As it happened, we were pretty fortunate on that front, and managed to get set up and broken down in the dry.&lt;/p&gt;

&lt;p&gt;As a maker and techie, I sometimes get a bit antsy when we’re away like this (and when it isn’t &lt;a href="https://dev.to/andypiper/what-ive-been-doing-in-2022-so-far-4o76-temp-slug-6906714"&gt;EMFCamp&lt;/a&gt;… [1]). Fortunately, this time, I had a task that needed solving using technology – in this case, an RP2040 and some MicroPython.&lt;/p&gt;

&lt;p&gt;Our tent is a very nice size, and we have space to sit and relax inside, but particularly in the evenings as the days get shorter at this time of year, the lighting situation leaves a lot to be desired. We’ve got a couple of battery-operated / rechargable camping lanterns, but wanted something more adjustable and that would cover more of the space, more evenly.&lt;/p&gt;

&lt;p&gt;Like any good maker, I went camping &lt;a href="https://macaw.social/@andypiper/111059272892732378"&gt;prepared&lt;/a&gt; – with a soldering iron, massive power supply, and a roll of LEDs…!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5qwmC7Ci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/xnapper-2023-09-25-19.28.55.png%3Fresize%3D514%252C600" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5qwmC7Ci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/xnapper-2023-09-25-19.28.55.png%3Fresize%3D514%252C600" alt='Embedded Mastodon post with the text: "Just spent a bit of time setting up lighting for the tent. Fortunately, like any prepared #maker, I happened to bring soldering iron, solder mat, trimmers, #pimoroni Plasma 2040 #rp2040, and a lot of LEDs along on the camping trip. /cc @Raspberry_Pi TODO: a nice case for the Plasma 2040; I did not bring a #3dprinter with me to this field in Hampshire!"' width="514" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First off, let’s briefly mention the power. I take a large &lt;a href="https://amzn.to/48sQeOk"&gt;Jackery Explorer 500 battery&lt;/a&gt; with us, along with &lt;a href="https://amzn.to/3PokgtK"&gt;the same brand’s solar panel&lt;/a&gt; for recharging (when it doesn’t rain…!). This trip, I also added an &lt;a href="https://amzn.to/3PxZxnl"&gt;Anker 548 Power Bank&lt;/a&gt; as an extra power source; however, the solar panel uses a different connector than the newer battery expects, so I also picked up &lt;a href="https://amzn.to/456Ejmx"&gt;an XT60 adapter&lt;/a&gt;, which allows us to use the panel with the Anker as well, when needed. Works nicely, and we got the sunshine needed to stay topped up! ☀️&lt;/p&gt;

&lt;p&gt;The lighting arrangement is simple. I cut the strip of WS2812B LEDs to length to fit the arch of the tent (this was the primary reason that I waited until we were actually on-site, to do this piece of work). The strip is inside a rubberised sleeve, which is handy for weather. At the “business end” of the LED strip, I’m running a &lt;a href="https://shop.pimoroni.com/products/plasma-2040?variant=39410354847827"&gt;Pimoroni Plasma2040 board&lt;/a&gt; – essentially, a Raspberry Pi Pico (RP2040) board specialised for driving lights, with a 4-way screw terminal, some extra push buttons, and a (as-yet-unused) StemmaQT/Qwiic connector, all with a USB-C connector. I’ve soldered the required wires to the LED strip and protected the connections with heat-shrink.&lt;/p&gt;

&lt;p&gt;Code is (of course, if you’ve followed any of my IoT/embedded interests in the past few years) in MicroPython. I flashed the board with the latest Pimoroni MicroPython build, and – for now – trivially adapted some example Neopixel code to enable us to switch between two lighting formats, and also to switch the lights off again.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# TODO:
# - improve colour/brightness (currently a "dumb" division)
# - save/reload state
# - I2C sensor / input
# - (hardware) case for board
&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;plasma&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;plasma&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;plasma2040&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pimoroni&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RGBLED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;

&lt;span class="n"&gt;NUM_LEDS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;156&lt;/span&gt;

&lt;span class="n"&gt;led&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RGBLED&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LED_R&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LED_G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LED_B&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;led&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;button_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BUTTON_A&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;button_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BUTTON_B&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;button_boot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;USER_SW&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;led_strip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;plasma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WS2812&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NUM_LEDS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plasma2040&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DAT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;led_strip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;button_a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="c1"&gt;# dim white
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NUM_LEDS&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;led_strip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;253&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;244&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;220&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;led&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;253&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;244&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;220&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;button_b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="c1"&gt;# bright white
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NUM_LEDS&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;led_strip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;253&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;244&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;220&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;led&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;253&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;244&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;220&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;button_boot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="c1"&gt;# off / black
&lt;/span&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NUM_LEDS&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;led_strip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;led&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# for i in range(NUM_LEDS):
# led_strip.set_rgb(i, round(253/3),round(244/3),round(220/3))
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h7Mkp-3P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0361.jpg%3Fresize%3D429%252C600" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7Mkp-3P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0361.jpg%3Fresize%3D429%252C600" alt="Plasma 2040 board connected to LED strip, showing the heat shrink." title="IMG\_0361.JPG" width="429" height="600"&gt;&lt;/a&gt; &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nmRuPe7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0269-2.jpg%3Fresize%3D429%252C600" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nmRuPe7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0269-2.jpg%3Fresize%3D429%252C600" alt="Plasma 2040 board attached to a white USB-C cable, with an LED indicating power, hanging inside a tent with blue and black canvas." title="IMG\_0269 2.JPG" width="429" height="600"&gt;&lt;/a&gt; &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--84FQt2Ee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0268-2.jpg%3Fresize%3D599%252C337" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--84FQt2Ee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/http://andypiper.files.wordpress.com/2023/09/img_0268-2.jpg%3Fresize%3D599%252C337" alt="LED strip arching through a blue tent, lit dimly." title="IMG\_0268 2.JPG" width="599" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before you shout at me – yes, I know that having a bare board hanging there like that is “sub-optimal”, so next steps are to wrap it in some nice 3D printed case, as well as considering how or whether to use the Qwiic port… I’m thinking a rotary control for dimming would be more flexible than button presses. As noted in the code comments, it would also be very handy to have the state saved internally when the board is disconnected from the battery.&lt;/p&gt;

&lt;p&gt;So anyway, that was a fun camping trip (with added making). Back to regular living situations, now.&lt;/p&gt;

&lt;p&gt;How about you, how’ve you been?&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;[1] I am also now convinced that I need to &lt;a href="https://hackaday.com/2023/08/19/chaos-and-camping/"&gt;get to CCC&lt;/a&gt; one year!&lt;/p&gt;

</description>
      <category>micropython</category>
      <category>travel</category>
      <category>iot</category>
    </item>
    <item>
      <title>Social bookmarks in the Fediverse</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Mon, 11 Sep 2023 23:06:25 +0000</pubDate>
      <link>https://forem.com/andypiper/social-bookmarks-in-the-fediverse-5bki</link>
      <guid>https://forem.com/andypiper/social-bookmarks-in-the-fediverse-5bki</guid>
      <description>&lt;p&gt;Last week, there was a flurry of interest in a new addition to the &lt;a href="https://en.wikipedia.org/wiki/Fediverse"&gt;#Fediverse&lt;/a&gt;: &lt;a href="https://techcrunch.com/2023/09/08/with-postmarks-social-bookmarking-is-back-but-this-time-its-built-on-the-fediverse/"&gt;Postmarks&lt;/a&gt;. It's social bookmarking (like Digg, del.icio.us, or more recently, Pinboard), now with &lt;a href="https://activitypub.rocks/"&gt;ActivityPub&lt;/a&gt; support. Neat!&lt;/p&gt;

&lt;h3&gt;
  
  
  Organising stuff, "back in the day"
&lt;/h3&gt;

&lt;p&gt;Back in the 2000s I was a huge fan of a site called del.icio.us, and the original iteration of our weekly podcast - currently called &lt;a href="https://gamesatwork.biz"&gt;Games at Work dot Biz&lt;/a&gt; - was named Dogear Nation. Back when Michael and Michael kicked off that show, there was a podcast called Digg Nation which tried to round up the interesting community links and trends from the week on Digg. IBM at the time had an internal version of a social bookmarking / folksonomical platform similar to del.icio.us called "dogear" (like, folding the page of a book to mark it), so &lt;a href="https://andypiper.co.uk/2009/01/05/co-hosting-dogear-nation-in-2009/"&gt;Dogear Nation encouraged listeners to tag links&lt;/a&gt; on del.icio.us for us to discuss each week... del.icio.us was bought by Yahoo! in 2005, and eventually, went away.&lt;/p&gt;

&lt;p&gt;Fast forward 15 years to our current podcast, and we still love it when listeners share links for us to discuss, but there's less of an organised way to do it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Join the Federation
&lt;/h3&gt;

&lt;p&gt;Unlike the centralised "Web 2.0"-based, largely corporate-owned sites that dominate the current web, the Fediverse is a set of related services that share some common protocols (ActivityPub is one, but there are others involved) and are loosely-connected. As well as each service usually having some form of "flagship" instance, it is is also very common to encourage diversity by location and interests, and often self-hosting, so it won't be possible for &lt;em&gt;an unsavoury billionaire&lt;/em&gt; to buy the things you use, or misuse and steal the data that you've put into them. Your network and your data are your own.&lt;/p&gt;

&lt;p&gt;I'm very active across a range of sites and services that are analogous to those you might be familiar with. On Mastodon, for instance, I currently do some work with &lt;a href="https://joinmastodon.org"&gt;Mastodon gGmbH&lt;/a&gt;, the non-profit behind the project and host of two of the larger service instances; and although my original account was on one of those instances, at the end of last year I moved my account (taking the related network of connections with me) to a much smaller server run by a former coworker, mostly populated by other former coworkers, but I'm still connected with users across the rest of the Fediverse.&lt;/p&gt;

&lt;p&gt;You can also find me on &lt;a href="https://pixelfed.social/@andypiper"&gt;PixelFed&lt;/a&gt; (Instagram-like photo sharing), on &lt;a href="https://lemmy.world/u/andypiper"&gt;Lemmy&lt;/a&gt; (Reddit-like groups and communities), on PeerTube (YouTube-like video channels) where &lt;a href="https://diode.zone/@andypiper"&gt;I live on the diode.zone instance&lt;/a&gt; for makers and electronics enthusiasts, on &lt;a href="https://bookrastinating.com/@andypiper"&gt;Bookwyrm&lt;/a&gt; (GoodReads-like community), and so on. Basically there are a number of "me" out there, in spaces where it makes sense. Essentially, if you're on Mastodon and you're interested in my videos, you can follow my PeerTube account from Mastodon without having to sign up for PeerTube. It's pretty cool.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I strongly believe that federated services are the best opportunity for us to maintain a free and open Web.&lt;br&gt;
    - me, 2023&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  So, Postmarks?
&lt;/h3&gt;

&lt;p&gt;Yes! Postmarks is a single-user, super small and simple server for managing your own bookmarks. When I add a bookmark &lt;a href="https://pipesmarks.glitch.me"&gt;on my own Postmarks server&lt;/a&gt;, my Postmarks account effectively publishes the new entry to the rest of the Fediverse as an activity. So, if you're interested in what I'm bookmarking and you have a Mastodon account, you can follow &lt;code&gt;@andypiper@pipesmarks.glitch.me&lt;/code&gt; and you'll see the new entries as they get added. If you're not interested, don't follow my account, and we're all good. Oh, and it supports Atom feeds for different tags (categories), too.&lt;/p&gt;

&lt;p&gt;Postmarks runs on &lt;a href="https://glitch.com"&gt;Glitch&lt;/a&gt; - or, anywhere else you can stand up a Node.js / Express app. Personally I love Glitch, and &lt;a href="https://glitch.com/@andypiper"&gt;I've been using it for many years&lt;/a&gt; now for hosting demos and trying out different projects - in fact, &lt;a href="https://andypiper.me"&gt;my main links page&lt;/a&gt; &lt;a href="https://dev.to/andypiper/a-quick-glitch-bio-break-1c6a"&gt;runs on Glitch&lt;/a&gt;. The Postmarks developer &lt;a href="https://casey.kolderup.org/"&gt;Casey Kolderup&lt;/a&gt; works there, and Casey has made it really straightforward to remix directly on Glitch, or &lt;a href="https://github.com/ckolderup/postmarks"&gt;import from GitHub&lt;/a&gt; there or to another service of your choice - it has very few dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting involved
&lt;/h3&gt;

&lt;p&gt;My usual pattern for reading and saving content is whilst mobile. There's a bookmarklet that's part of the project, but no easy way to add it to my system for links to end up on Postmarks from my phone or tablet. I turned to Apple Shortcuts to help out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnk6zruodxiyiptfps6x4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnk6zruodxiyiptfps6x4.png" alt="A screenshot of Apple Shortcuts on iPadOS 17 beta, showing the sequence of steps to send a link to Postmarks" width="800" height="1083"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A screenshot of Apple Shortcuts on iPadOS 17 beta, showing the sequence of steps to send a link to Postmarks&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This does not do too much - it takes a link from the share sheet or clipboard, and opens the add bookmark page popup in a browser tab. At the moment&lt;a href="https://github.com/ckolderup/postmarks/issues/61"&gt; there's no full API for Postmarks&lt;/a&gt;, so this is a bit of a stopgap or workaround. Annoyingly, it will also leave you with an empty browser tab you'll need to close, but it works.&lt;/p&gt;

&lt;p&gt;If you'd like to try the automation, you can &lt;a href="https://routinehub.co/shortcut/16547/"&gt;get it via RoutineHub&lt;/a&gt;, which links to the Shortcut in iCloud. You'll be prompted to add the hostname of your Postmarks instance, and you will already need to have signed in to that site in your web browser of choice.&lt;/p&gt;

&lt;p&gt;Beyond that, Glitch makes it easy to hack on features, because everything runs in the browser, including a code editor. So far I've been adding small features such as &lt;a href="https://github.com/ckolderup/postmarks/pull/84"&gt;support for the nodeinfo endpoint used by other Fediverse servers&lt;/a&gt;, and a slightly improved Atom feed. There's &lt;a href="https://github.com/ckolderup/postmarks/issues?q=is%3Aissue+author%3Aandypiper+"&gt;lots I can think of to add&lt;/a&gt;, but not so much time to play - this is giving me a chance to learn a bit more about ActivityPub internals, as well as "scratching an itch".&lt;/p&gt;

&lt;p&gt;I'm also &lt;a href="https://cerritos.glitch.me"&gt;playing with&lt;/a&gt; another single-user ActivityPub server, &lt;a href="https://shuttlecraft.net/"&gt;Shuttlecraft&lt;/a&gt;, but that's a post for another day.&lt;/p&gt;

</description>
      <category>fediverse</category>
      <category>mastodon</category>
      <category>socialmedia</category>
      <category>glitch</category>
    </item>
    <item>
      <title>Improving Mastodon developer documentation</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Mon, 12 Jun 2023 21:59:05 +0000</pubDate>
      <link>https://forem.com/andypiper/improving-mastodon-developer-documentation-12cm</link>
      <guid>https://forem.com/andypiper/improving-mastodon-developer-documentation-12cm</guid>
      <description>&lt;p&gt;Aloha! It has been a little while.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some personal news...
&lt;/h2&gt;

&lt;p&gt;Last month, &lt;a href="https://mastodon.social/@gargron" rel="noopener noreferrer"&gt;Eugen aka @Gargron&lt;/a&gt; &lt;a href="https://www.patreon.com/posts/may-update-82941004" rel="noopener noreferrer"&gt;announced&lt;/a&gt; that I'll be working on a part-time basis with Mastodon gGmbH to support efforts around developer community and resources - aka, Developer Relations. &lt;/p&gt;

&lt;p&gt;I've been a supporter of the free and open Web since it began; I've been all-in on the Fediverse for some time now; and I'm excited to be able to bring my experience in DevRel, particularly around community, APIs, and developer experience, to the &lt;a href="https://joinmastodon.org" rel="noopener noreferrer"&gt;Mastodon project&lt;/a&gt;. This is also cool, because I've previously been posting about the opportunity for developers in this space.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/andypiper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51883%2F933091e4-8d51-442a-b65c-b86e67589d58.jpeg" alt="andypiper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/andypiper/a-opportunity-for-developers-1ee4" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A 🦣 opportunity for developers&lt;/h2&gt;
      &lt;h3&gt;Andy Piper ・ Nov 22 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#mastodon&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#activitypub&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#html&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  First steps
&lt;/h2&gt;

&lt;p&gt;There are a number of things to work on, and it's important to be realistic about how swiftly we can get to them all. The very first thing that I wanted to do was to do a full review of the &lt;a href="https://docs.joinmastodon.org/client/libraries/" rel="noopener noreferrer"&gt;libraries and SDKs&lt;/a&gt; that developers have built on top of the &lt;a href="https://docs.joinmastodon.org/client/intro/" rel="noopener noreferrer"&gt;Mastodon API&lt;/a&gt;, and publish an update to the relevant page in the developer documentation.&lt;/p&gt;

&lt;p&gt;I'd like to take a moment to explain &lt;em&gt;why&lt;/em&gt; I chose this as my first task as I believe it's relevant in the context of &lt;a href="https://dev.to/t/devrel"&gt;#DevRel&lt;/a&gt; - I &lt;a href="https://macaw.social/@andypiper/110526541810741825" rel="noopener noreferrer"&gt;posted about this on Mastodon yesterday&lt;/a&gt;, too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi0t7i3f96tsbsr0lzlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi0t7i3f96tsbsr0lzlp.png" alt="Image of a Mastodon post with the text "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few years ago, when I was working on another platform, I took the time to do something similar. The platform itself had an HTTP-based, RESTful API that had been made available and mostly documented, but the organisation didn't publish any code or their own libraries or SDKs - the developer community jumped in and built their own. I spent a bunch of time back then scouring the internet, seeking out as many implementations of the API as possible, figuring out which ones were most used or most popular, which ones had become unmaintained, which ones were constantly evolving, which new coding languages had emerged since the platform's API was first released.&lt;/p&gt;

&lt;p&gt;(side note: it was also super fun to go and deliberately hunt out less well-known languages and to see whether anyone had built an implementation yet... &lt;a href="https://macaw.social/@andypiper/110525188208972656" rel="noopener noreferrer"&gt;Zig, anyone&lt;/a&gt;? No? How about &lt;a href="https://docs.joinmastodon.org/client/libraries/#nim" rel="noopener noreferrer"&gt;Nim&lt;/a&gt;!)&lt;/p&gt;

&lt;p&gt;I've been working with API platforms for a long time. In my experience, the developers that go to the effort and spend their time building idiomatic language-specific libraries around an API, provide huge support to their own communities. Most organisations and platforms simply cannot hope to provide expertise in every language or framework themselves, so these community contributions provide an oversized benefit. The developers who build those libraries and SDKs, often become experts in themselves, and can be amplifiers that generate activity around a platform.&lt;/p&gt;

&lt;p&gt;Just to pick out a couple of meaningful examples - in the update to the &lt;a href="https://docs.joinmastodon.org/client/libraries/" rel="noopener noreferrer"&gt;libraries and implementations page&lt;/a&gt; we just published, several of the new entries cover languages such as &lt;a href="https://docs.joinmastodon.org/client/libraries/#kotlin" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt; that were not previously included, as well as adding several more &lt;a href="https://docs.joinmastodon.org/client/libraries/#swift" rel="noopener noreferrer"&gt;Swift&lt;/a&gt; libraries - and in turn, those additions provide foundations for the excellent Android and iOS client apps that have emerged since the end of 2022. &lt;/p&gt;

&lt;p&gt;In all, the page has jumped from a list of 35 libraries, to more than 50 - and that includes the fact that some have been removed either due to their authors explicitly archiving them, or the impression that they were no longer maintained (which could be added back if needed); and, from 21 to 26 languages represented. That's an impressive expansion of coverage, and I believe it demonstrates the level of interest and excitement around building on the Mastodon API.&lt;/p&gt;

&lt;p&gt;A heartfelt &lt;strong&gt;Thank You&lt;/strong&gt; to the developers who have created these resources. As a developer advocate, it's a joy to see the activity around the platform, and I aim to support you and your efforts to work with us.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Mastodon API is open, free, and you are welcome to build with it.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;My next task is triaging and labelling issues and pull requests in the &lt;a href="https://github.com/mastodon/documentation/" rel="noopener noreferrer"&gt;documentation repo on GitHub&lt;/a&gt;, with an aim to bring in as many of those existing contributions as we can. I am particularly focused on the API, and I am not currently so familiar with other topics (Mastodon server installation, administration, etc), so I'll be relying on additional help! I am aware that some of the issues and PRs have been waiting for a while, but I'll do what I can to get things improved here.&lt;/p&gt;

&lt;p&gt;It's also worth sharing that we intend to apply a design update to the developer docs site (to match the main site and blog). That's a separate task to the content work that I'm looking at.&lt;/p&gt;

&lt;p&gt;Another thing that I'm actively thinking about, is how we can move towards a more formal API specification. The obvious candidate is OpenAPI, and there has been some community work to provide something in this space already. A few folks also had a &lt;a href="https://macaw.social/@trwnh@mastodon.social/110497114088773673" rel="noopener noreferrer"&gt;good conversation about it on Mastodon&lt;/a&gt; last week, and that made me aware of some of the complexities of providing this for the project. I'm open to taking on board other experiences in this area, so let me know if this is important to you. If nothing else, something like a Postman Collection which is up-to-date for the current API, seems to me like A Good Thing, to help the community test and implement things more quickly.&lt;/p&gt;

&lt;p&gt;Going beyond curating lists of libraries and poking at API docs, I want to help to connect the dots between different projects around Mastodon itself, and the broader Fediverse! I started on the latter effort a couple of months ago (see: &lt;a href="https://dev.to/andypiper/thoughts-around-fediverse-developer-communities-cb6"&gt;Supporting Fediverse developer communities&lt;/a&gt;), but for right now, I'm going to be spending time specifically on Mastodon, and helping the team with developer communications.&lt;/p&gt;

&lt;p&gt;Let me know what else you might want to see from the Mastodon project from a developer perspective, and I'll be sure to add it to my list. Or, just share any Mastodon-related project you're working on, so I can help to shout about it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://macaw.social/@andypiper" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Follow me on Mastodon&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I hope to get to chat to you via &lt;a href="https://github.com/andypiper" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, Discord, Mastodon, or another channel - keeping in mind that I've been tasked with community and API rather than individual end-user product features - the &lt;a href="https://joinmastodon.org/roadmap" rel="noopener noreferrer"&gt;roadmap&lt;/a&gt; is full and exciting, though!&lt;/p&gt;

&lt;p&gt;Finally, I continue to be interested in other opportunities and to build my skills in other areas (via &lt;a href="https://forgeandcraft.co.uk" rel="noopener noreferrer"&gt;my maker studio&lt;/a&gt;), so look out for more on this, soon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://andypiper.omg.lol" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Check out my personal site&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Header image courtesy of Midjourney&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mastodon</category>
      <category>devrel</category>
      <category>api</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Getting arty with a Pi</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Sat, 22 Apr 2023 15:32:58 +0000</pubDate>
      <link>https://forem.com/andypiper/getting-arty-with-a-pi-3dk9</link>
      <guid>https://forem.com/andypiper/getting-arty-with-a-pi-3dk9</guid>
      <description>&lt;p&gt;This week I built a BrachioGraph (as mentioned in my &lt;a href="https://dev.to/andypiper/comment/267a1"&gt;comment&lt;/a&gt; on &lt;a href="https://dev.to/devteam/what-was-your-win-this-week-4ld4"&gt;"What was your win this week?"&lt;/a&gt;). It's a simple pen plotter, driven by a Raspberry Pi - or, potentially, another single board computer - and some Python code. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zxqkapvi7ip3idwylql.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zxqkapvi7ip3idwylql.jpeg" alt="A pen plotter with a logo drawn on paper"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is absolutely not my invention! I came across it in &lt;a href="https://www.raspberrypi.com/news/braciograph-a-raspberry-pi-powered-pen-plotter/" rel="noopener noreferrer"&gt;the most recent issue of The MagPi magazine&lt;/a&gt;, and immediately wanted to build one. The &lt;a href="https://brachiograph.art" rel="noopener noreferrer"&gt;BrachioGraph&lt;/a&gt; was created and documented by &lt;strong&gt;Daniele Procida&lt;/strong&gt;, all of &lt;a href="https://github.com/evildmp/brachiograph" rel="noopener noreferrer"&gt;the code is on GitHub&lt;/a&gt;, and it has been around for a number of years, since originally being introduced at a PyCon.&lt;/p&gt;

&lt;p&gt;So... why build it? For fun; to learn; to put some hardware to use; and in preparation for a &lt;a href="https://wimbledonartfair.com" rel="noopener noreferrer"&gt;show&lt;/a&gt; that I'll be taking part in during May.&lt;/p&gt;

&lt;p&gt;The basic things required are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a single board computer. in this case I'm using a Pi Zero W v1.1 (I was able to replace the 4x Pi Zero W 1s in &lt;a href="https://dev.to/andypiper/building-a-compact-pi-cluster-1pia"&gt;my Pi cluster-in-a-box&lt;/a&gt; with Pi Zero W 2s, so I had a few spare) - I realise that these boards in general are not the easiest to get hold of right now, but in principle other SBCs with GPIO pins that support Python 3 should work as well.&lt;/li&gt;
&lt;li&gt;3 simple SG90 servos, I picked up a &lt;a href="https://amzn.to/3H6aCsE" rel="noopener noreferrer"&gt;set of 5 cheaply via Amazon UK&lt;/a&gt; (affiliate link). I might update these to something slightly more resilient later, but these work fine.&lt;/li&gt;
&lt;li&gt;some small sticks, in the US they might be popsicle sticks, here in the UK we call them ice lolly sticks, but I just got a bag of them as "craft sticks" in the local hobby store, something like 50 for £1, so I'm well-equipped to build other things later ⚒️&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is pretty much it! The website has some really great &lt;a href="https://www.brachiograph.art/tutorial/construct.html" rel="noopener noreferrer"&gt;instructions&lt;/a&gt; describing how to connect it all up, but I have a few notes of my own to throw in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It has been a while since I played with a Pi Zero, and I wanted to get it set up without having to connect it to monitor, keyboard etc. I used &lt;a href="https://ceworkbench.wordpress.com/2019/07/09/setting-up-a-pi-zero-ethernet-gadget/" rel="noopener noreferrer"&gt;the USB Ethernet Gadget method&lt;/a&gt; to install Raspberry Pi OS and then install the required packages without having to mess with any peripherals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I wanted to make this somewhat reliable / reusable for events, so I've attached it to a sheet of mounting card. I used my 3D printer (of which more, sometime soon) to quickly print a small plate for the Pi Zero to sit on. The &lt;a href="https://www.printables.com/model/115161-rasberry-pi-zero-minimalist-mount/" rel="noopener noreferrer"&gt;one I picked&lt;/a&gt; is great, as the Pi just clips in - I also used some nylon screws to anchor it down.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc11u6lvg3x2277objq1o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc11u6lvg3x2277objq1o.jpeg" alt="A Pi Zero W in a simple white mounting plate"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;for the wiring, I spliced some cables together and used heat-shrink to cover over the joins (the motors need to share the 5V and GND pins from the Pi). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3sie4phepl69d4sitfb5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3sie4phepl69d4sitfb5.jpeg" alt="A bundle of coloured wires connected to the Pi Zero GPIO pins"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I found that a ball pen or biro is not the best option for drawing, as it can take a bit of pressure to engage the ink. I'm fortunate to share a space with an crafting enthusiast with a full set of stationery, so I'm using a Micron pen at the moment (I also have the advantage of different colours and tip sizes to choose from, and these use archival ink so it is a very nice result).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although I play with a lot of gadgets, the excitement of &lt;a href="https://diode.zone/w/oTD6agqUmAbDUdbFNF5Ygp" rel="noopener noreferrer"&gt;having this all work&lt;/a&gt; (click through for video, since Forem doesn't want to let me embed from PeerTube) once I'd set everything up was still hard to ignore! 😁️&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://diode.zone/videos/embed/b95ed6f4-e552-49f4-b3a0-15d03c1880ed" rel="noopener noreferrer"&gt;
      diode.zone
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;I'll note that the instructions lead you through calibration and adjustment, which is very helpful - but it can also be a bit tedious! Doing &lt;a href="https://brachiograph.readthedocs.io/en/latest/tutorial/sophisticated-calibration/" rel="noopener noreferrer"&gt;the "full sweep" adjustment&lt;/a&gt; to find the correct pulse variances for each angle took a while, and the code to drive and capture those is &lt;em&gt;unforgiving&lt;/em&gt; (i.e. it crashes and you lose everything) if you tap in an invalid value by mistake, or drive the servos past their limits - I had to start over several times... 🤦🏻️&lt;/p&gt;

&lt;p&gt;There's a site called &lt;a href="https://brachio.me/" rel="noopener noreferrer"&gt;Brachio.me&lt;/a&gt; that is super useful for converting images to the format to drive the BrachioGraph, and it also has an alternative version of a getting started tutorial. There are also useful community code examples, such as &lt;a href="https://github.com/Findus23/BrachioGraph-Utils" rel="noopener noreferrer"&gt;these utilities&lt;/a&gt; for handling SVGs and optimising plots. If you look around, you’ll probably find some other more sophisticated builds as well.&lt;/p&gt;

&lt;p&gt;What's next? I'm off to convert lots of images for our event... and also to think about some code improvements and a web UI for my own BrachioGraph!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftywoxyczpwe0ifovgarl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftywoxyczpwe0ifovgarl.jpeg" alt="Me, as a plotter-drawn image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to look at what else we've been making in our &lt;a href="https://forgeandcraft.co.uk" rel="noopener noreferrer"&gt;studio&lt;/a&gt;, via Metapixl (it's a #Fediverse service, so you can follow &lt;a href="https://metapixl.com/@forgeandcraft" rel="noopener noreferrer"&gt;@forgeandcraft@metapixl.com&lt;/a&gt; from your favourite Fediverse app or account).&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>art</category>
      <category>python</category>
      <category>maker</category>
    </item>
    <item>
      <title>Supporting Fediverse developer communities</title>
      <dc:creator>Andy Piper</dc:creator>
      <pubDate>Mon, 10 Apr 2023 22:45:53 +0000</pubDate>
      <link>https://forem.com/andypiper/thoughts-around-fediverse-developer-communities-cb6</link>
      <guid>https://forem.com/andypiper/thoughts-around-fediverse-developer-communities-cb6</guid>
      <description>&lt;p&gt;It is an exciting time to be building in the Fediverse!&lt;/p&gt;

&lt;p&gt;I've been doing a lot of thinking lately around ways in which the experience could be improved for developers looking to get started in Fediverse projects - and by extension, how to improve the space for everyone involved.&lt;/p&gt;

&lt;p&gt;There's already an active community around one of the prominent standard protocols (the &lt;a href="https://socialhub.activitypub.rocks/" rel="noopener noreferrer"&gt;SocialHub community&lt;/a&gt; for ActivityPub). I've had an account there since the beginning of last year, primarily as a reader trying to stay informed about the various activities. However, there's &lt;em&gt;more&lt;/em&gt; to developing for the Fediverse than "just" ActivityPub: many of the related projects implement some but not all elements of the ActivityPub standard; there are other important protocols to know about; and, there are new projects looking to federate, appearing over time as the interest grows.&lt;/p&gt;

&lt;p&gt;It feels like a good point to offer to help to join some of the dots here. I jotted down some of my thoughts ahead of &lt;a href="https://github.com/gabek/fedidocs/pull/5/commits/c78546a025f4a8a0e872a4054cb4366b12329eb6" rel="noopener noreferrer"&gt;a meeting&lt;/a&gt; that was setup to bring together interested parties from across different Fediverse projects, and I'm sharing the first part of these below. This is very much a starting point, which I'm posting to share and develop with others, collaboratively.&lt;/p&gt;




&lt;p&gt;There are broadly two sets of developer documentation and community in the Fediverse space, which are interrelated and overlapping:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The “core” Fediverse stack, i.e. ActivityPub and the other ~14 protocols involved (&lt;a href="https://the-federation.info/" rel="noopener noreferrer"&gt;The Federation&lt;/a&gt; has a nice description of the protocols it deems part of the core).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this is where we might also see "external" projects such as Medium / WordPress / Tumblr / Flickr participate, adding interoperability with the core protocols (Flipboard already mentioned that they are looking at better and more complete ActivityPub implementation at the heart of their system), thus becoming their own instances of... →&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Individual Fediverse projects, e.g. Friendica, PeerTube, Mastodon, PixelFed, OwnCast et al. These share one or more of the core protocols, so developers are likely to have an interest in the protocols themselves; they may also have their own specific APIs and behaviours (Mastodon is a strong example of that - client app developers talk to the &lt;a href="https://docs.joinmastodon.org/client/intro/" rel="noopener noreferrer"&gt;Mastodon API&lt;/a&gt;, rather than using ActivityPub directly).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;there’s potentially a sub-group here, related to individual instances of specific projects, e.g. a particular PeerTube or Mastodon server may have a group of interested developers who wish to add bespoke features for their own use or purpose.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I think of it conceptually as something along these lines (source graphic available &lt;a href="https://github.com/gabek/fedidocs/blob/main/static/img/fedidevs-concept.svg" rel="noopener noreferrer"&gt;here&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvr0htcjlireosr9tus2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvr0htcjlireosr9tus2.png" alt="An image showing the Fediverse core protocols and W3C group, surrounded by different colored circles, each representing different Fediverse implementations such as OwnCast and Pleroma"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the context of the core, there are already some key developer resources, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.w3.org/TR/activitypub" rel="noopener noreferrer"&gt;ActivityPub specification&lt;/a&gt; - a W3C Recommendation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://socialhub.activitypub.rocks/" rel="noopener noreferrer"&gt;ActivityPub Rocks SocialHub community&lt;/a&gt; / &lt;a href="https://redaktor.me/#home" rel="noopener noreferrer"&gt;ActivityPub conference&lt;/a&gt; 

&lt;ul&gt;
&lt;li&gt;there are some &lt;em&gt;excellent&lt;/em&gt; threads and &lt;a href="https://socialhub.activitypub.rocks/pub/guide-for-new-activitypub-implementers" rel="noopener noreferrer"&gt;posts&lt;/a&gt; in the SocialHub community for folks looking to implement ActivityPub, which are a solid foundation for broader work in this space.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://www.w3.org/community/socialcg/" rel="noopener noreferrer"&gt;W3C Social Web Incubator&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;For the individual Fediverse projects, it is most likely a good idea if each of the projects that wish to deeply collaborate and be part of the conversation, have someone who takes part in these groups and conversations - as well as taking part in the Fedidevs discussion that started over recent weeks out of the Social Web CG, &lt;a href="https://fediforum.org/" rel="noopener noreferrer"&gt;Fediforum&lt;/a&gt;, etc. That person could be seen as a sort of "ambassador" between the individual project, and other interoperable participants in the ecosystem.&lt;/p&gt;

&lt;p&gt;At the individual project level, there are efforts to build good reference documentation both across the board, and for individual projects. &lt;a href="https://fedidocs.org" rel="noopener noreferrer"&gt;Fedidocs&lt;/a&gt; has set out to do this both as a central point for the core technologies, and with links to the end projects; it currently lists FunkWhale, Mastodon and OwnCast. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There is also a third key developer educational need, related to &lt;em&gt;culture&lt;/em&gt; and &lt;em&gt;expectation&lt;/em&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In general, there are a number of core pushbacks and concerns around how the technologies are used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User privacy and/or expectation as to how their Fediverse posts are shared. We’ve seen various instance admins block apps that attempt to implement features such as universal search, for example. Tracking and other user-hostile behaviours in apps are generally deemed not OK.

&lt;ul&gt;
&lt;li&gt;→ “Rights Expression Language” (Bob Wyman)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Commercial gain / use of the platforms is often a difficult area to navigate.&lt;/li&gt;

&lt;li&gt;Finally, there’s a generally-strong feeling around negative communities that may not meet the ethos of the broader Fediverse communities (this overlaps with the moderation and admin aspects of the growth of the Fediverse space).&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If you set out as a developer without staying aware of this third space, your project is not likely to mesh successfully with the others.&lt;/p&gt;




&lt;p&gt;I'm looking to collaborate with many of the folks active in the space to help to bring these thoughts together and build better documentation and community resources to describe how to be successful in the Fediverse as a developer.&lt;/p&gt;

&lt;p&gt;Ways to get involved (as of now)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;check out the &lt;a href="https://github.com/gabek/fedidocs" rel="noopener noreferrer"&gt;Fedidocs repository&lt;/a&gt; on GitHub, and read the &lt;a href="https://github.com/gabek/fedidocs/pull/6/commits/6d1fb9138c4456e70a01b801bc7fa05597e2540f" rel="noopener noreferrer"&gt;proposed FAQ for the Fediverse Developer Network&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;[we’re in the process of moving this to &lt;a href="https://fedidevs.org" rel="noopener noreferrer"&gt;fedidevs.org&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;add &lt;code&gt;@&lt;a href="mailto:fedidevs@venera.social"&gt;fedidevs@venera.social&lt;/a&gt;&lt;/code&gt; to your main Fediverse feed, and mention that handle to boost related conversations&lt;/li&gt;

&lt;li&gt;join the new &lt;a href="https://app.element.io/#/room/#fediverse-devs:matrix.org" rel="noopener noreferrer"&gt;fediverse-devs Matrix room&lt;/a&gt;
&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;Check out my &lt;a href="https://dev.to/andypiper/series/21648"&gt;related posts&lt;/a&gt; on the opportunity for developers on Mastodon!&lt;/p&gt;

&lt;p&gt;Explore the &lt;a href="https://blog.glitch.com/post/glitch-communitys-guide-to-building-the-fediverse" rel="noopener noreferrer"&gt;Glitch Community Guide to Building for the Fediverse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;(thanks to the folks on today's initial Fedidevs call for their comments and feedback on my earlier draft)&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;(header image credit: Midjourney v5)&lt;/small&gt;&lt;/p&gt;

</description>
      <category>fediverse</category>
      <category>activitypub</category>
      <category>devrel</category>
      <category>w3c</category>
    </item>
  </channel>
</rss>
