Sorry

This feed does not validate.

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: https://waterpigs.co.uk/services/microformats-to-atom/?url=https%3A//waterpigs.co.uk/

  1. <?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
  2. <title>Barnaby Walters</title>
  3. <link href="https://waterpigs.co.uk/" rel="alternate" title="Barnaby Walters" type="text/html"/>
  4. <link href="https://waterpigs.co.uk/services/microformats-to-atom/?url=https%3A//waterpigs.co.uk/" rel="self"/>
  5. <id>https://waterpigs.co.uk/services/microformats-to-atom/?url=https%3A//waterpigs.co.uk/</id>
  6. <author>
  7. <name>Barnaby Walters</name>
  8. <uri>https://waterpigs.co.uk</uri>
  9. </author>
  10.  
  11. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  12. <id>https://waterpigs.co.uk/notes/5cVMNm/</id>
  13. <title></title>
  14. <published>2025-06-10T21:22:46+00:00</published>
  15. <updated>2025-06-10T21:22:46+00:00</updated>
  16. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5cVMNm/" />
  17. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>New corollary to the 2010s classic snarky programmer adage “the cloud is someone else’s computer”:</p>
  18.  
  19. <p><strong>“AI is someone else’s GPU”</strong></p>
  20.  
  21. <p>from which it follows that</p>
  22.  
  23. <p>“I’m starting a new company with <del>AI</del> someone else’s GPU”</p>
  24.  
  25. <p>“I spent hours talking to <del>AI</del> someone else’s GPU about my life and <del>the AI</del> someone else’s GPU told me to break up with my boyfriend”</p>
  26.  
  27. <p>“I’m worried that my job is in danger of being replaced by <del>AI</del> someone else’s GPU“</p>
  28.  
  29. <p>“It’s crazy what convincing images <del>AI</del> someone else’s GPU can generate these days!” (okay, that one doesn’t sound so far-fetched)</p>
  30.  
  31. <p>“Users expect our product to have advanced features and integration with <del>AI</del> someone else’s GPU”</p>
  32.  
  33. <p>“<del>AI</del> someone else’s GPU is the defining technology of the decade, if not the century”</p>
  34.  
  35.  
  36. <a href="https://brid.gy/publish/twitter"></a></div></content>
  37. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  38. </entry>
  39. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  40. <id>https://waterpigs.co.uk/notes/5ayFR2/</id>
  41. <title></title>
  42. <published>2025-03-11T15:25:02+00:00</published>
  43. <updated>2025-03-11T15:25:02+00:00</updated>
  44. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5ayFR2/" />
  45. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>When switching to Inkscape, make sure to budget 10-30 minutes per work session for filing bugs</p>
  46.  
  47.  
  48. <a href="https://brid.gy/publish/twitter"></a></div></content>
  49. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  50. </entry>
  51. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  52. <id>https://waterpigs.co.uk/notes/5ZRLZR/</id>
  53. <title></title>
  54. <published>2024-10-09T20:33:25+00:00</published>
  55. <updated>2024-10-09T20:33:25+00:00</updated>
  56. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5ZRLZR/" />
  57. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Here’s a KDE Plasma service menu (dolphin context menu action) for creating a valid <a href="https://bford.info/cachedir/">CACHEDIR.TAG</a> file in the selected folder. Useful for excluding things from being backed up! (e.g. via <a href="https://forum.restic.net/t/exclude-caches/1229">restic with the <code>--exclude-caches</code></a> option)</p>
  58.  
  59. <pre><code>[Desktop Entry]
  60. Type=Service
  61. MimeType=inode/directory
  62. Actions=create_cachedir_tag
  63.  
  64. [Desktop Action create_cachedir_tag]
  65. Name=Create CACHEDIR.TAG
  66. Icon=breeze/actions/22/document-edit-encrypt
  67. Exec=echo "Signature: 8a477f597d28d172789f06886806bc55" &gt; %u/CACHEDIR.TAG
  68. </code></pre>
  69.  
  70. <p>Put it somewhere like <code>.local/share/kio/servicemenus/cachedir-tag.desktop</code>, make it executable and it should show up in your context menu.</p></div></content>
  71. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  72. </entry>
  73. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  74. <id>https://waterpigs.co.uk/notes/5XVDJt/</id>
  75. <title></title>
  76. <published>2024-06-15T13:18:53+00:00</published>
  77. <updated>2024-06-15T13:18:53+00:00</updated>
  78. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5XVDJt/" />
  79. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>At the time of writing, due to a packaging mess-up, the builds of <a href="https://github.com/AlexandreRouma/SDRPlusPlus">SDR++</a> (and many other SDR tools by the looks of it) have <a href="https://github.com/AlexandreRouma/SDRPlusPlus/issues/1403">suddenly and unintentionally dropped support</a> for the popular <a href="https://www.rtl-sdr.com/">RTL-SDR</a> software defined radio dongle. Until this is fixed, users will have to build these applications themselves. The instructions are a little lacking in details, so here’s exactly how to do that, working on Kubuntu:</p>
  80.  
  81. <p><code></code></p><pre><code>
  82. # To install:
  83. sudo aptitude install cmake libfftw3-dev libglfw3-dev libvolk-dev zstd libairspy-dev librtlsdr-dev
  84. git clone https://github.com/AlexandreRouma/SDRPlusPlus.git
  85. cd SDRPlusPlus
  86. mkdir build
  87. cd build
  88. cmake ..
  89. make -j5 # 5 is the number of threads to use for building. adjust to your preference
  90. sh ../create_root.sh
  91. sudo make install
  92.  
  93. # To run:
  94. sdrpp
  95. </code></pre><code>
  96. </code>
  97. </div></content>
  98. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  99. </entry>
  100. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  101. <id>https://waterpigs.co.uk/notes/5WzFBg/</id>
  102. <title></title>
  103. <published>2024-05-16T15:11:41+00:00</published>
  104. <updated>2024-05-16T15:11:41+00:00</updated>
  105. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5WzFBg/" />
  106. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Reddit recently underwent another new, unpopular redesign, meaning that there are now three different UIs for accessing the website. Out of habit I would look at new-new reddit before remembering to switch to old-new reddit, and quickly noticed that looking at new-new reddit causes my laptop’s fans instantly start spinning.</p>
  107.  
  108. <p>Here’s a firefox performance profile for 20-30s of each iteration of the reddit homepage. I simply loaded the page and did absolutely nothing.</p>
  109.  
  110. <p><a class="auto-link" href="http://old.reddit.com">old.reddit.com</a>: constant ~5% CPU usage with occasional spikes up to ~90%</p>
  111.  
  112. <p><img class="u-photo" src="https://waterpigs.co.uk/img/screenshot-20240516-170319.png" alt="" /></p>
  113.  
  114. <p><a class="auto-link" href="http://new.reddit.com">new.reddit.com</a>: usually 0% CPU usage with occasional bursts up to ~50%</p>
  115.  
  116. <p><img class="u-photo" src="https://waterpigs.co.uk/img/screenshot-20240516-170340.png" alt="" /></p>
  117.  
  118. <p><a class="auto-link" href="http://reddit.com">reddit.com</a> (new-new reddit): constant 30% CPU usage with occasional spikes even higher</p>
  119.  
  120. <p><img class="u-photo" src="https://waterpigs.co.uk/img/screenshot-20240516-170358.png" alt="" /></p>
  121.  
  122. <p>I don’t have the time or knowledge required to dig into the performance profiler but I would be fascinated to know how old-new reddit ended up more efficient than old-old reddit, and exactly what new-new reddit is doing with 30% of my CPU??</p>
  123.  
  124.  
  125. <a href="https://brid.gy/publish/twitter"></a></div></content>
  126. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  127. </entry>
  128. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  129. <id>https://waterpigs.co.uk/notes/5WUDm8/</id>
  130. <title></title>
  131. <published>2024-04-15T13:46:08+00:00</published>
  132. <updated>2024-04-15T13:46:08+00:00</updated>
  133. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5WUDm8/" />
  134. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>When importing photos into DigiKam, I want them to be renamed based on the ISO8601 datetime they were taken, ideally to millisecond precision to avoid conflicts when multiple images were taken in a single second. This has the nice side-effect that photos from multiple camera sources are guaranteed to be displayed in the correct order when browsing files, which is important and practical for me.</p>
  135.  
  136. <p>I started out using this custom file renaming template on import:</p>
  137.  
  138. <pre><code>[date:"yyyy-MM-ddTHHMMss"]-[file]
  139. </code></pre>
  140.  
  141. <p>as DigiKam’s <code>[date]</code> placeholder didn’t have an option for milliseconds, and I couldn‘t find a counter option which could handle my desired “append <code>-#</code> per-collision if this renaming scheme results in collisions”, so ended up just adding the entire camera-generated filename to the end.</p>
  142.  
  143. <p>Unfortunately, this led to my files all being in the wrong order, even from the same camera. I haven’t quite figured out why, but it seems that there are several different internal datetime values stored in the image files: file creation date (which is completely wrong), the values used in DigiKam’s <code>[date]</code> templates (which are mostly wrong), and the <code>DateTimeOriginal</code> values stored in Exif data, which are not only correct but provide sub-second resolution too!</p>
  144.  
  145. <p>So here’s the DigiKam import naming template which I will be using going forward:</p>
  146.  
  147. <pre><code>[meta:Exif.Photo.DateTimeOriginal]{range:1,10}{replace:":","-"}T[meta:Exif.Photo.DateTimeOriginal]{range:12,}{replace:":",""}s[meta:Exif.Photo.SubSecTimeOriginal]
  148. </code></pre>
  149.  
  150. <p>which produces ISO8601-ish filenames like this:</p>
  151.  
  152. <pre><code>2023-06-16T143139s922.JPG
  153. </code></pre>
  154.  
  155. <p>Broken down,</p>
  156.  
  157. <pre><code>[meta:Exif.Photo.DateTimeOriginal]
  158. </code></pre>
  159.  
  160. <p>evalulates to a string like</p>
  161.  
  162. <pre><code>2023:06:16 14:31:39
  163. </code></pre>
  164.  
  165. <p>but I don’t want colons in filenames for portability, so I take only the date part with <code>{range:1,10}</code>, replace the colons with hyphens <code>{replace:":","-"}</code>, add a literal T separator to avoid spaces in filenames, take the time part of the datetime and remove the colons completely, add a literal s separator to delimit seconds and milliseconds as I wanted to keep them separate but not use the typical . delimiter.</p>
  166.  
  167.  
  168. <a href="https://brid.gy/publish/twitter"></a></div></content>
  169. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  170. </entry>
  171. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  172. <id>https://waterpigs.co.uk/notes/5WNPdC/</id>
  173. <title></title>
  174. <published>2024-04-09T23:38:12+00:00</published>
  175. <updated>2024-04-09T23:38:12+00:00</updated>
  176. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5WNPdC/" />
  177. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Ended up getting frustrated with the old version of DigiKam available on Kubuntu, so tried installing an AppImage. The state of AppImage integration with Kubuntu is <em>abysmal</em>, and I open DigiKam fairly regularly, so I finally tried installing <a href="https://github.com/TheAssassin/AppImageLauncher">AppImageLauncher</a>, which is recommended by DigiKam and is supposed to be a good tool for integrating AppImages with the desktop environment (something which Plasma should surely do itself, if AppImages are really going to be part of the future of linux app packaging).</p>
  178.  
  179. <p>Unfortunately, installing AppImageLauncher completely broke my desktop environment, causing it to hang and preventing me from logging in. Looked it up and it was clearly related to whatever <a href="https://forum.manjaro.org/t/cannot-log-in-to-plasma-desktop-after-crash-startplasma-x11-takes-all-the-ram/153622">this issue</a> is about, as moving <code>.local/share/mime</code> fixed it. Removing AppImageLauncher and the mime cache got things working again, and, lo, before it broke my system, AppImageLauncher had kindly made <code>.desktop</code> files for all my AppImages!</p>
  180.  
  181. <p>At this point I decided to take a more manual approach to integrating AppImages I cared about with my DE, so I added a link from <code>~/Applications</code> (where I store AppImages and other applications not installed via the package manager) to <code>~/.local/share/applications</code>, where <code>.desktop</code> files are kept. Having quick access to this location makes manually managing <code>.desktop</code> files much more bearable, and I went about improving the ones AppImageLauncher had made (e.g. adding version numbers to the names – I find it very useful to know what version of an app I’m launching).</p>
  182.  
  183. <p>So, back to DigiKam: at this point I had a DigiKam 8.3 AppImage installed and openable via launchers thanks to the <code>.desktop</code> file. It had to re-download the facial recognition files, but other than that picked up everything from before. However, in the main photo list view, the maximum size of the thumbnails was tiny.</p>
  184.  
  185. <p>I spent some time poking around in settings and tweaking the QT scaling factor via the .desktop file, but I’ll spare you the details. tl;dr: if you want the DigiKam 8.3 AppImage to let you see large thumbnails on a high-DPI screen, you need to check the following boxes:</p>
  186.  
  187. <ul>
  188. <li>Miscellaneous → System → Use high DPI scaling from the screen factor</li>
  189. <li>Vews → Icons → Use large thumbnail size for high screen resolution</li>
  190. </ul>
  191.  
  192. <p>Restart DigiKam, and it should let you make thumbnails large enough to be useful. This is especially necessary seeing as how DigiKam’s photo list view has a horribly wasteful layout, with almost as much whitespace as photo surface area.</p>
  193.  
  194.  
  195. <a href="https://brid.gy/publish/twitter"></a></div></content>
  196. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  197. </entry>
  198. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  199. <id>https://waterpigs.co.uk/notes/5V0M8n/</id>
  200. <title></title>
  201. <published>2024-01-18T21:08:47+00:00</published>
  202. <updated>2024-01-18T21:08:47+00:00</updated>
  203. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5V0M8n/" />
  204. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>If you run into weird “file corrupt or unwritable” errors when trying to tag/rename tracks with Picard on (k)ubuntu, check whether the files are read-only. When using Dolphin to rip and encode CDs (an excellent feature – Dolphin continues to surprise me) it <a href="https://bugs.kde.org/show_bug.cgi?id=480018">retains their read-only permissions when copying them to your disk</a>, rather than setting it to something sensible.</p>
  205.  
  206.  
  207. <a href="https://brid.gy/publish/twitter"></a></div></content>
  208. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  209. </entry>
  210. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  211. <id>https://waterpigs.co.uk/notes/5UrMgn/</id>
  212. <title></title>
  213. <published>2024-01-09T21:41:47+00:00</published>
  214. <updated>2024-01-09T21:41:47+00:00</updated>
  215. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5UrMgn/" />
  216. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Drew <a href="https://rustacean.net/">ferris</a> with a soldering iron as I couldn‘t find much <a href="https://rust-embedded.org/">embedded rust</a> art</p>
  217.  
  218. <img class="u-photo" src="https://waterpigs.co.uk/img/embedded-ferris-soldering.png" alt="Ferris the rustacean (a cute red cartoon crab), holding a soldering iron and solder while working on a circuit board" />
  219.  
  220. <p><a href="https://waterpigs.co.uk/img/screenshot-20231228-014439-embedded-ferris.png">(version with solid white background)</a></p></div></content>
  221. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  222. </entry>
  223. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  224. <id>https://waterpigs.co.uk/notes/5UGNmh/</id>
  225. <title></title>
  226. <published>2023-12-05T22:46:42+00:00</published>
  227. <updated>2023-12-05T22:46:42+00:00</updated>
  228. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5UGNmh/" />
  229. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Some tips for using Teensy on linux:</p>
  230.  
  231. <p>The teensy board support package is only supported in the Arduino applications downloaded directly from the arduino site, NOT on versions distributed by package managers. I used the AppImage and it worked fine. If you try to install the teensy board package on an unsupported version of Arduino you might see errors like “archive not supported”.</p>
  232.  
  233. <p>Even when you have a supported version of Arduino installed, installing the Teensy board package isn’t totally reliable. The first time I downloaded it, compiling would fail with the following error:</p>
  234.  
  235. <pre><code>fork/exec /home/barnaby/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/arm-none-eabi-g++: no such file or directory
  236.  
  237. Compilation error: fork/exec /home/barnaby/.arduino15/packages/teensy/tools/teensy-compile/11.3.1/arm/bin/arm-none-eabi-g++: no such file or directory
  238. </code></pre>
  239.  
  240. <p>The 11.3.1 folder existed, but was empty. Down- then upgrading the board package didn‘t fix it. Removing the board package and reinstalling it did work.</p>
  241.  
  242.  
  243. <a href="https://brid.gy/publish/twitter"></a></div></content>
  244. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  245. </entry>
  246. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  247. <id>https://waterpigs.co.uk/notes/5TpNhs/</id>
  248. <title></title>
  249. <published>2023-11-08T22:42:52+00:00</published>
  250. <updated>2023-11-08T22:42:52+00:00</updated>
  251. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5TpNhs/" />
  252. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>If you’re getting the following error in Inkscape on (k)ubuntu when trying to open the Extension Manager:</p>
  253.  
  254. <pre><code>[long traceback snipped]
  255. ModuleNotFoundError: No module named 'appdirs'
  256. </code></pre>
  257.  
  258. <p>the best way to deal with it seems to be <code>sudo apt install python3-appdirs</code>, as trying to install the <code>appdirs</code> module with <code>pip</code> or <code>pip3</code> might not put it in the right place for the system python3 which inkscape is using, especially if you use something like conda or pyenv.</p>
  259.  
  260.  
  261. <a href="https://brid.gy/publish/twitter"></a></div></content>
  262. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  263. </entry>
  264. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  265. <id>https://waterpigs.co.uk/notes/5TfDAy/</id>
  266. <title></title>
  267. <published>2023-10-30T13:10:58+00:00</published>
  268. <updated>2023-10-30T13:10:58+00:00</updated>
  269. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5TfDAy/" />
  270. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In a world where <a href="https://cseducators.stackexchange.com/questions/3535/introducing-file-systems-to-students-who-really-dont-understand">even “digital-natives”</a> increasingly <a href="https://www.theverge.com/22684730/students-file-folder-directory-structure-education-gen-z">don’t understand basic file management</a>, and where it’s more and more common for user data to be siloed per-app even on desktops, I propose a corollary to <a href="https://www.laws-of-software.com/laws/zawinski/">Zawinski’s Law</a>: “All apps which don’t store data transparently in the file system are doomed to implement their own limited and fragile filesystem equivalent”</p></div></content>
  271. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  272. </entry>
  273. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  274. <id>https://waterpigs.co.uk/notes/5TJye/</id>
  275. <title></title>
  276. <published>2023-10-08T00:58:39+00:00</published>
  277. <updated>2023-10-08T00:58:39+00:00</updated>
  278. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5TJye/" />
  279. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>If you’re in the unfortunate position of needing to use MuseScore4 on linux for some reason (for example to use its excellent MIDI to notation conversion) and are having issues with the Flatpak version having an unreadably tiny UI on high-DPI screens, here’s how to fix it.</p>
  280.  
  281. <p>Open the .desktop file for MuseScore 4 – mine was in <code>/var/lib/flatpak/app/org.musescore.MuseScore/current/active/export/share/applications/org.musescore.MuseScore.desktop</code></p>
  282.  
  283. <p>Find the <code>Exec</code> key, and change the command to include <code>--env=QT_SCALE_FACTOR=2</code>. Mine ended up looking like this:</p>
  284.  
  285. <pre><code>Exec=/usr/bin/flatpak run --env=QT_SCALE_FACTOR=2 --branch=stable --arch=x86_64 --command=mscore --file-forwarding org.musescore.MuseScore @@ %F @@
  286. </code></pre>
  287.  
  288. <p>Save (you’ll need to enter your password, or to have launched the editor with <code>sudo</code>).</p>
  289.  
  290. <p>Try launching MuseScore again. If you’re lucky, it’ll have a readable UI. If not, try restarting and launching it again — I haven’t found a way of successfully getting KDE to force-update all its .desktop files. Presumably there’s a cache somewhere? If anyone knows how to reliably do this, please let me know!</p>
  291.  
  292.  
  293. <p>This should work for any Flatpak which uses QT, on any desktop environment which uses .desktop files. I really hope “UI Scale” becomes a standard per-application setting in the near future.</p>
  294.  
  295. <p><ins>EDIT: thanks to carmanaught on the KDE forums for <a href="https://discuss.kde.org/t/is-there-a-cache-of-desktop-files-and-can-it-be-easily-cleared/6350/7?u=barnaby">this additional suggestion</a> to copy the .desktop file to <code>~/.local/share/applications</code> rather than editing it in-place, and for details about how to set up a service to watch this folder and clear the desktop file cache whenever it’s edited.</ins></p></div></content>
  296. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  297. </entry>
  298. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  299. <id>https://waterpigs.co.uk/notes/5SpPfR/</id>
  300. <title>Macbook -&amp;gt; Kubuntu Slimbook update 2:
  301. After a brief …</title>
  302. <published>2023-09-09T23:40:25+00:00</published>
  303. <updated>2023-09-09T23:40:25+00:00</updated>
  304. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5SpPfR/" />
  305. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Macbook -&gt; Kubuntu Slimbook update 2:</p>
  306.  
  307. <p>After a brief dalliance with <a href="https://pop.system76.com/">PopOS</a> (which I liked well enough, but convinced me that I much prefer Plasma over Gnome), thanks to <a href="https://www.reddit.com/r/Kubuntu/comments/15vsrgi/laptop_screen_blank_for_20s_but_cursor_and/">advice from someone on r/Kubuntu</a> I discovered that most of my Kubuntu issues had been due to Slimbook delivering laptops with an old version of Kubuntu and the linux kernel on, which isn’t really compatible with their laptops (and I had foolishly assumed that the system software update would also update the kernel — not so) tl;dr: if you buy a Slimbook laptop and want to run Kubuntu on it, install it yourself!</p>
  308.  
  309. <h3>Desktop Environment</h3>
  310.  
  311. <p>After trying out Plasma on both X11 and Wayland, I decided to opt for sticking with Wayland, despite <a href="https://community.kde.org/Plasma/Wayland_Showstoppers">a few “showstoppers” and other minor annoyances</a>. It has excellent support for a lot of quite slick features, such as fractional per-monitor UI scaling and multitouch gestures for switching virtual desktops (currently not yet configurable, hopefully this will change in the future).</p>
  312.  
  313. <p>The current stable release of GIMP uses an old version of GTK which doesn’t scale well under Wayland, but fortunately the development release (2.99.16) has GTK3 support and the UI scales just fine.</p>
  314.  
  315. <p>VLC also looks very weird under Plasma. I kept it around as it’s so useful, but also installed Celluloid 0.25.1 from <a href="https://launchpad.net/~xuzhen666/+archive/ubuntu/gnome-mpv">their PPA</a> as a potential Plasma-friendly replacement.</p>
  316.  
  317. <h3>Keyboards</h3>
  318.  
  319. <p>I type almost exclusively in ABC-Extended on my macbook, which gives me quick access to all the international characters I need access to, as well as some nice punctuation like en+em dashes, ellipses and curly quotes.</p>
  320.  
  321. <p>I tried several keyboard layouts on my slimbook, and eventually settled for the English (Macintosh) one, which is almost the same with a few small differences. I will probably end up making my own keyboard layout which shifts some things around and replaces unused things with useful characters.</p>
  322.  
  323. <p>For quick reference and learning different keyboard layouts, I recommend assigning this command to a global shortcut (I used ctrl+alt+shift+k), which brings up a keyboard preview, scaled to look good on my monitor. I haven’t found a good way of dismissing it other than using the trackpad (ideally I’d like it to only be displayed while I hold the shortcut), but it’s still very convenient.</p>
  324.  
  325. <pre><code>tastenbrett -qwindowgeometry 2500x850
  326. </code></pre>
  327.  
  328. <p>For some reason, my F2 button’s special feature is “toggle whether the super key is locked, without indicating the current status to the user at all”. Apparently this is a common feature, but some cursory research did not reveal why this would ever be useful, or what the intended use is. I also didn’t find many other people asking about it. What am I missing here? Why does anyone need an entire button dedicated to disabling another, unrelated button? Why can’t I make it do something useful?</p>
  329.  
  330. <h3>Mail</h3>
  331.  
  332. <p>For the moment I decided for Thunderbird for mail, contacts and calendars (more about those later), and it was easy enough to set up for mail. I’d much prefer something which looks and works like mac os Mail, but installing the Conversation extension went a long way to making it usable (despite not always finding all messages in a thread for some reason).</p>
  333.  
  334. <h3>Music</h3>
  335.  
  336. <p>For the moment I chose Quod Libet as a basic iTunes replacement. It successfully scanned the contents of <code>Music/iTunes/iTunes Media/Music</code> with no complaints, and even played the AAC m4a files after I installed kubuntu-restricted-extras. Unfortuantely Quod Libet (and every other media player I tried) seems to be unable to inhibit sleep under Wayland — hopefully this will be remedied soon, as the “create a NoSleep activity and switch to it whenever you want to play music” ““workaround”” is not particularly appealing. I’d also settle for a status bar widget which let me switch power profiles quickly.</p>
  337.  
  338. <h3>Photos</h3>
  339.  
  340. <p>Moving my photo library took a little more effort, but not much, thanks to <a href="https://github.com/RhetTbull/osxphotos">osxphotos</a>. Additionally installing exiftools and then running one command created a structured export of my entire library, with all the metadata I care about stored safely in EXIF fields:</p>
  341.  
  342. <pre><code>osxphotos export /Volumes/migration/photos --directory "{created.year}/{<a class="auto-link" href="http://created.mm">created.mm</a>}" --filename "{created}T{created.hour}{created.min}{created.sec}{title?_,}{title,}" --skip-original-if-edited --jpeg-ext jpeg --exiftool
  343. </code></pre>
  344.  
  345. <p>This command takes the edited version of each file (falling back to the original), and stores them in a <code>/YYYY/MM/YYYY-MM-DDTHHMMSS[_title].jpeg</code> folder structure, which is my preferred way of organising photos on disk.</p>
  346.  
  347. <p>I then imported this library into DigiKam, which quickly read all the metadata and made everything searchable. To get newly imported photos to fit into the same structure, I had to go into the Import Settings (plug in a camera or card, go “Import from device” and then open the sidebar on the right — unfortunately these settings don’t seem to be exposed anywhere else) and set the default filename to be the datetime, and the default “Album” to be <code>YYYY/mm</code>.</p>
  348.  
  349. <p>I’m not a huge fan of DigiKam, as it’s cluttered, unstable and requires some very akward workflows (editing images opens them in a separate window? adding a tag requires opening the “tag manager”?? “hierarchical tags”??? I think the developers did not understand what a tag is and what makes them useful) but will do for now. To ensure longevity (and ease migrating to a different management application if I find something better suited to my workflow) I opted to store all metadata in EXIF fields in the files themselves. This way, DigiKam’s external database works as an ephemeral index and cache, which I can throw away or rebuild at any time without losing anything.</p>
  350.  
  351. <p>A useful tip I learned along the way (thanks to ChatGPT): <code>exiftool -a -u -g1 &lt;file_name&gt;</code> will list all EXIF data found in a given file.</p>
  352.  
  353. <h3>Calendars and Contacts</h3>
  354.  
  355. <p>I set up a Nextcloud instance on my web host to see how much of my (already limited) iCloud usage it could replace. Despite learning that Hostinger <a href="https://indieweb.org/.well-known#Issues">doesn’t allow access to the .well-known directory required for zero-config carddav and caldav setup</a>, I successfully managed to get my calendar and contacts migrated there. Thunderbird was able to sync with both without any issues, and mac os Calendar did eventually read my calendars from Nextcloud. No such luck with mac os Contacts unfortunately, but that’s much lower priority than calendar anyway.</p>
  356.  
  357. <h3>Pages and Numbers documents</h3>
  358.  
  359. <p>I had hoped that there would be a way of easily and mostly-losslessly batch converting all my Pages and Numbers documents into their microsoft XML equivalents, before then converting them to Libreoffice documents later on. Alas, that is only partially true. I ended up modifying a script provided by Viking OSX, which finds all Pages documents in a given folder and exports them as word docs to a separate folder. My changes instead export them in-place, and additionally export a PDF version so that I have a lossless read-only copy of each document exactly as it was:</p>
  360.  
  361. <pre><code>#!/bin/zsh
  362.  
  363. : &lt;&lt;"COMMENT"
  364. Do a recursive descent on a folder hierarchy gathering Pages document. Export these
  365. documents from Pages as Word .docx and .pdf documents in the same location.
  366. Tested: Ventura 13.0.1
  367. VikingOSX, 2022-12-06, Apple Support Communities, No implicit warranty or support.
  368. Adapted by Barnaby Walters 2023-09-08
  369. COMMENT
  370.  
  371. typeset -gi pagesCnt=0 docxCnt=0
  372.  
  373. STARTDIR=$1
  374.  
  375. function pages_export () {
  376.  
  377.    /usr/bin/osascript &lt;&lt;-AS
  378.    use scripting additions
  379.  
  380.    tell application "Pages"
  381.        activate
  382.        try
  383.            set infile to POSIX file "${1}"
  384.            set outfile to POSIX file "${2}"
  385.            set outfile_pdf to POSIX file "${3}"
  386.  
  387.            set thisDoc to open infile as alias
  388.  
  389.            with timeout of 1200 seconds
  390.                export thisDoc to file outfile as Microsoft Word
  391.            end timeout
  392.            with timeout of 1200 seconds
  393.                export thisDoc to file outfile_pdf as PDF
  394.            end timeout
  395.            close thisDoc saving no
  396.        on error errmsg number errNo
  397.            display dialog "[ " &amp; errNo &amp; " ]: " &amp; errmsg
  398.        end try
  399.    end tell
  400.    -- unhide the exported filename extensions
  401.    tell application "Finder"
  402.        if exists (item outfile as alias) then
  403.            set extension hidden of (item outfile as alias) to false
  404.        end if
  405.    end tell
  406.    return
  407. AS
  408. }
  409.  
  410. function completion () {
  411.    /usr/bin/osascript &lt;&lt;-AS
  412.    use scripting additions
  413.  
  414.    set DialogIcon to "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/MultipleItemsIcon.icns"
  415.  
  416.    display dialog "Pages documents found: " &amp; "${1}" &amp; return &amp; ¬
  417.        "Pages documents exported to Word and PDF docx: " &amp; "${2}" with title "Processing Complete" with icon POSIX file DialogIcon
  418.    return
  419. AS
  420. }
  421.  
  422. # do a case-insensitive recursion finding Pages documents and sorting by name
  423. setopt nocaseglob
  424. for f in ${STARTDIR}/**/*.pages(.Non);
  425. do
  426.    (( ++pagesCnt ))
  427.    # if there is no Word folder at this file location, then make one
  428.  
  429.    # construct the full path to the word docx document to be exported
  430.    wordfile="${f:a:h:r}/${f:r:t}.docx"
  431.    pdffile="${f:a:h:r}/${f:r:t}.pdf"
  432.  
  433.    pages_export "${f}" "${wordfile}" "${pdffile}"
  434.  
  435.    # do we have an exported docx that is non-zero in size?
  436.    [[ -s $wordfile ]] &amp;&amp; (( ++docxCnt ))
  437. done
  438.  
  439. # give the user statistics
  440. completion $pagesCnt $docxCnt
  441. </code></pre>
  442.  
  443. <p>(aside: I initially tried to get ChatGPT to generate the necessary applescript to do this entire task for me, as I’d heard that it was good at that, and applescript is a notoriously unintuitive and badly documented language. It seemd to get fairly close but I was unable to debug the (incomprehensible) errors in its scripts. The approach taken by VikingOSX is much more efficient: use applescript only for the things it’s absolutely necessary for, and do the rest in bash or python)</p>
  444.  
  445. <p>I did the same thing for Numbers documents, the necessary script changes for that are left as an exercise for the reader.</p>
  446.  
  447. <p>Unfortunately, these exports (and/or their subsequent imports into Libreoffice) were not very successful except for the simplest of documents. I only actively use a total of maybe 5 documents, which I will simply reconstruct from scratch in Libreoffice, and for the rest a combination of lossless read-only PDF and potentially-broken Office XML files should be sufficient.</p>
  448.  
  449. <h3>Prusa Slicer, AppImages and KDE Plasma LC_ALL issues</h3>
  450.  
  451. <p>The official way of installing Prusa Slicer on linux is using an AppImage, a format which I’ve had mixed experiences with. This was no different, as opening it in Dolphin had no result. Opening it in a console revealed some sort of locale error, and suggested some commands to fix it, but they also had no effect.</p>
  452.  
  453. <p>After doing some digging, it turns out that it’s KDE Plasma’s fault. Plasma splits your localization settings up into various categories (language, time format, currency etc.) — an excellent feature by itself. Unfortunately, if you pick different locales for any of these categories, it leave the LC_ALL environment variable empty.</p>
  454.  
  455. <p>The Prusa Slicer AppImage (and who knows what other software) was expecting an LC_ALL environment variable, and refused to run without it. tl;dr, editing <code>/etc/defaults/locale</code> to set LC_ALL and LANG to en_GB.utf-8 allowed PS to run, without having caused any other issues (yet…?).</p>
  456.  
  457. <p>Once it managed to run, Prusa Slicer somehow told the system about itself in a way which lets me launch it from the application launcher (not something every AppImage does), and worked absolutely fine. Importing my settings as a config bundle worked perfectly.</p>
  458.  
  459. <h3>Documents and file syncing</h3>
  460.  
  461. <p>For the moment I decided against trying to set up two-way sync of my ~50GB documents folder between os x and Kubuntu. Nextcloud on my cheap web host is out of the question, and <a href="https://syncthing.net/">Syncthing</a> look promising but I’d want to test its limitations and performance on something smaller first. For the moment, I decided to just use rsync for a one-way migration, and can repeat it in the future as I convert more proprietary files to linux-compatible formats.</p>
  462.  
  463. <pre><code>rsync -avzu --exclude venv --exclude .DS_Store --exclude .h5 Documents/ slimbook:Documents
  464. </code></pre>
  465.  
  466. <p>venv and .h5 files are excluded to avoid transferring another ~30GB of unnecessary data. <del>For syncronization after the first one, I need to make sure that rsync isn’t going to delete or replace newer files, but I will figure that out when I get to it.</del> <ins>-u makes sure that files which are newer (i.e. made or changed) on the kubuntu side are not overwritten on subsequent syncs</ins></p>
  467.  
  468. <h3>Pain points and next steps</h3>
  469.  
  470. <ul>
  471. <li>DigiKam seems powerful but its UI kinda sucks</li>
  472. <li>Plasma is great but has some drawbacks which will hopefully be fixed Soon™</li>
  473. <li>Notes — I’m a heavy mac os Notes user, and have fairly high standards for its replacement. Nextcloud notes looks promising, but the iOS app has two editor modes: one which is fast but sucks, and another which is good but takes ~7s to load each note.</li>
  474. <li>Converting proprietary file formats to their linux equivalents. I have some old Sketch documents and a LOT of Eazydraw documents, all of which need converting losslessly and perfectly to well-structured SVGs for use with inkscape, before I can switch completely to Kubuntu for work tasks. I had hoped to use a similar Applescript trick, but haven’t been able to figure it out yet as Eazydraw lacks an applescript interface. Using System Events to manually manipulate the menus could work, but seems fiddly</li>
  475. <li>…</li>
  476. </ul></div></content>
  477. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  478. </entry>
  479. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  480. <id>https://waterpigs.co.uk/notes/5STFYt/</id>
  481. <title></title>
  482. <published>2023-08-18T15:32:53+00:00</published>
  483. <updated>2023-08-18T15:32:53+00:00</updated>
  484. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5STFYt/" />
  485. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Notes from the first day using a Slimbook Executive running Kubuntu (probably applies to anyone moving from macos to Kubuntu on similar hardware)</p>
  486.  
  487. <p><img class="u-photo" src="https://waterpigs.co.uk/img/img-7432-slimbook-executive.jpeg" alt="" /></p>
  488.  
  489. <p>Generally, very good first impressions. The hardware is nice, the connectivity is perfect for me, it boots fast, the screen looks amazing. The keyboard and trackpad are fine, except for the surfboard trackpad button design. Came with a bunch of stupid marketing stickers on (what year is this, 2005?), most of which were easily removed.</p>
  490.  
  491. <p>Here are the first settings I tweaked to make things more familiar:</p>
  492.  
  493. <h3>UI Scaling</h3>
  494.  
  495. <p>Settings -&gt; Display and Monitor -&gt; Global Scale = 200% for a readable UI while still remaining beautifully crisp.</p>
  496.  
  497. <p>Settings -&gt; Appearance -&gt; Cursors -&gt; Size: 48</p>
  498.  
  499. <p>Settings -&gt; Startup and Shutdown -&gt; Login Screen -&gt; Apply Plasma Settings so that your login screen is a sensible size.</p>
  500.  
  501. <p>Right click status bar, enter edit mode, Panel height: 100</p>
  502.  
  503. <h3>Sleep</h3>
  504.  
  505. <p>Default sleep mode seems to be a hibernation which takes 10-20s to wake up from, including whenever you close the lid.</p>
  506.  
  507. <p>Fix this by: In settings -&gt; Power Management, in AC Powered tab set lid close to just turn off screen (or lock if desired). This will just turn off the screen when closed on AC power, but actually put the laptop to sleep when the lid is closed on battery power, to reduce power consumption.</p>
  508.  
  509. <p>Then, <code>sudo nano /etc/systemd/sleep.conf</code> and uncomment <code>AllowSuspendThenHibernate=yes</code>, and reboot. This changes the behaviour of sleep to initially just suspend the system, keeping data in RAM and allowing immediate wake-ups. When the battery goes under 5%, it’ll instead hibernate, which takes 10-20s to wake up from but stores the contents of RAM on the SSD.</p>
  510.  
  511. <p><ins>EDIT: On further testing, this sadly doesn’t fix the issue completely (or at all? It’s hard to tell). Putting the computer to sleep using the meta menu works absolutely fine, but using F1 or the laptop lid (which I assume are handled the same way internally) leads to this blank screen with a cursor and hidden password entry field for 20s on wake up issue. I have no idea what’s causing it, and IMO it’s a big reason not to use KDE Plasma on these laptops — sadly, as it’s easily my favourite of the linux desktop environments I’ve tried so far.</ins></p>
  512.  
  513. <p><ins>FURTHER EDIT: turns out this was all due to the laptop coming with an outdated linux kernel installed, which didn’t support the hardware. A fresh install of the latest Kubuntu works perfectly.</ins></p>
  514.  
  515. <h3>Firefox</h3>
  516.  
  517. <p>By default, Firefox treats scroll events from the trackpad as scroll wheel inputs, causing jerky scrolling. To fix: <code>echo MOZ_USE_XINPUT2=1 | sudo tee -a /etc/environment</code></p>
  518.  
  519. <h3>Touchpad</h3>
  520.  
  521. <p>Settings -&gt; Input Devices -&gt; Touchpad<br />
  522. Pointer acceleration: 0.6<br />
  523. Tap-to-click, tap-and-drag enabled<br />
  524. Two-finger tap: right click<br />
  525. Scrolling: two fingers, invert scroll direction<br />
  526. Right click: press anywhere with two fingers</p>
  527.  
  528. <h3>Function Buttons</h3>
  529.  
  530. <p>Boot holding F2 to open BIOS settings, dig around to find and enable “Fn lock” to make the function keys perform their alternative functions by default (with numbered function inputs available by holding Fn, as on a MacBook)</p>
  531.  
  532. <hr />
  533.  
  534. <p>Next pain points which I didn’t find a solution to yet:</p>
  535.  
  536. <ul>
  537. <li>Occasional trackpad issues where the cursor freezes and only starts moving again after a two finger tap (right click). At the beginning this happened all the time, now it seems much better. Need to keep an eye on it.</li>
  538. <li>File browser not having a column view. Apparently this is an ongoing struggle for years in Kubuntu, which seems hard to believe. I tried to install the ElementaryOS file viewer but it didn’t seem to work.</li>
  539. <li>Setting up the keyboard for international typing. I got extremely used to typing special characters, diacritics and fancy punctuation on my macbook keyboard and am reluctant to have to re-learn all of that. Ideally I’d like to get a least a large subset of the key combinations working again.</li>
  540. </ul></div></content>
  541. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  542. </entry>
  543. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  544. <id>https://waterpigs.co.uk/notes/5RTPaU/</id>
  545. <title></title>
  546. <published>2023-06-19T23:35:28+00:00</published>
  547. <updated>2023-06-19T23:35:28+00:00</updated>
  548. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5RTPaU/" />
  549. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Is this some sort of cruel joke</p>
  550.  
  551. <p><img class="u-photo" src="https://waterpigs.co.uk/img/img-7308.jpeg" alt="two near-identical triangular lego pieces with a minor difference in their outline" /></p>
  552.  
  553.  
  554. <a href="https://brid.gy/publish/twitter"></a></div></content>
  555. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  556. </entry>
  557. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  558. <id>https://waterpigs.co.uk/articles/citynaturechallenge-2023-wien-notable-observations/</id>
  559. <title>CityNatureChallenge 2023 Wien Notable Observations</title>
  560. <published>2023-05-03T23:18:45+00:00</published>
  561. <updated>2023-05-03T23:18:45+00:00</updated>
  562. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/articles/citynaturechallenge-2023-wien-notable-observations/" />
  563. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Vienna’s 2023 City Nature Challenge had more observers, observations and species than last year, and many observations still need final IDs. Here’s some of the more notable ones.</div></content>
  564. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  565. </entry>
  566. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  567. <id>https://waterpigs.co.uk/notes/5QDEPE/</id>
  568. <title></title>
  569. <published>2023-04-06T14:23:14+00:00</published>
  570. <updated>2023-04-06T14:23:14+00:00</updated>
  571. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5QDEPE/" />
  572. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’m a couple of weeks into 3D printing with a <a href="https://www.creality.com/products/creality-ender-3-s1-pro-fdm-3d-printer">Creality Ender 3 S1 Pro</a>. My initial impressions are: tl;dr: mechanically good, firmware bad. Either install <a href="https://github.com/synman/Ender-3-S1-Pro-Firmware">synman’s pro firmware</a> (requires a screen downgrade) or <a href="https://www.klipper3d.org/">klipper</a> (drops the screen and requires a raspberry pi — I went with MainsailOS) and you’ll have a very good printer for the price.</p>
  573.  
  574. <p>Here’s my best 3D Benchy so far, printed in 55 minutes in PETG using Klipper
  575. <img class="u-photo" src="https://waterpigs.co.uk/img/e3s1pro-klipper-speed-benchy-55m.jpeg" alt="" /></p>
  576.  
  577. <p>Pros:</p>
  578.  
  579. <ul>
  580. <li>Mechanically solid and well built, comes very well packed, does not feel like the stereotypical “cheap chinese” product at all</li>
  581. <li>Quick and easy to assemble (I recommend using loctite on all screws to prevent them coming loose from vibrations)</li>
  582. <li>Some replacement parts available</li>
  583. <li>Well supported with (mostly quite good) profiles available for various pieces of software</li>
  584. <li>Touchscreen interface is fast and convenient to use if you’re satisfied with the stock firmware</li>
  585. <li>Main board is not locked-down so it’s easy to install different firmware, and just as easy to revert to stock in the unlikely event that you want to</li>
  586. </ul>
  587.  
  588. <p>Cons:</p>
  589.  
  590. <ul>
  591. <li>The stock firmware is very limited and has various problems.
  592.  
  593. <ul>
  594. <li>Most notably, <a href="https://www.reddit.com/r/Ender3S1/comments/1273zdo/e3_s1_pro_oozing_filament_while_pausing_for_15s/">the “print on resume” feature causes uncontrollable pauses between layers</a>, during which the nozzle will leak filament, causing huge blobs and stringing. Not possible to turn off in the UI, requires a <code>M413 S0</code> command added to the start g-code in your slicer (or changing to a different firmware, which you should do anyway). Here’s a comparison of the exact same part with and without “resume on power loss” enabled, both printed back when I was using the stock firmware: <img class="u-photo" src="https://waterpigs.co.uk/img/e3s1pro-tpu-resume-on-power-loss-comparison.jpeg" alt="" /></li>
  595. <li>The auto bed leveling feels extremely unreliable and hard to trust</li>
  596. <li>You can only see the first few characters of gcode files, so it’s impossible to differentiate between two similar files with different suffixes</li>
  597. </ul></li>
  598. <li>Fiddly to perform firmware updates — screen and main board require separate files, sometimes in different folders depending on the chipset you have (which you can only check by opening the printer and looking at the hard-to-read MCU part number), always with a new filename otherwise it’ll fail silently, both will accept firmwares for different models with weird failure modes like a rotated screen</li>
  599. <li>v-wheels riding in aluminium extrusions have a limited accuracy. Definitely good enough for a lot of purposes, but can warp and wear over time, will never be as good as precision-ground linear rods or (even better,) rails</li>
  600. <li>XZ gantry arrived with loose Z nuts, causing huge amounts of Z kickback and preventing any kind of accurate movement. No indication that you have to tighten these in the instructions, and sources on the web inconsistent about what you should do about it. I ended up tightening mine up so they don’t rattle and have had no further issues.</li>
  601. <li>Flex cable XZ clip position sticker was placed slightly wrong and awkward to adjust once in, and the flex cable end at the extruder requires better stress relief IMO. I added ~6cm of heatshrink tubing around it which works great</li>
  602. <li>The provided slicer is horrible, I only tried it out to see if it’d fix my z blobbing problems. Fortunately Prusa Slicer works great with these printers</li>
  603. </ul>
  604.  
  605. <p>I tuned mine up with the <a href="https://ellis3dp.com/Print-Tuning-Guide/">usual</a> <a href="https://teachingtechyt.github.io/calibration.html">tools</a> until I was satisfied with the prints using the stock firmware. Then I installed klipper and set up pressure advance and input shaping, vastly improving performance and usability.</p>
  606.  
  607. <p>20mm calibration cubes printed 1) on the stock firmware, 2) Klipper with a speed profile, and 3) Klipper with a detail profile (i.e. slower outer perimeters):</p>
  608.  
  609. <p><img class="u-photo" src="https://waterpigs.co.uk/img/e3s1pro-cubes-stock-klipperspeed-klipperdetail.jpeg" alt="" /></p>
  610.  
  611. <p>Here’s my current Prusa Slicer config files for <a href="https://waterpigs.co.uk/img/creality-ender-3-s1-pro-04-mm-nozzle-klipper.bin">the printer itself (Klipper)</a> and <a href="https://waterpigs.co.uk/img/016-mm-optimal-speed-04-mm-nozzle-creality-klipper.bin">my 0.16mm layer height optimal speed</a> print profile.</p>
  612.  
  613. <p>Here’s what my Klipper <code>START_PRINT</code> and <code>END_PRINT</code> macros ended up looking like:</p>
  614.  
  615. <code></code><pre><code>
  616. [gcode_macro START_PRINT]
  617. gcode:
  618.  {% set TOTAL_LAYER_COUNT = params.TOTAL_LAYER_COUNT|int %}
  619.  {% set BED_TEMP = params.BED_TEMP|float %}
  620.  {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|float %}
  621.  
  622. SET_PRINT_STATS_INFO TOTAL_LAYER={TOTAL_LAYER_COUNT}
  623.  G90 ; use absolute coordinates
  624.  M83 ; extruder relative mode
  625.  M140 S{BED_TEMP} ; set final bed temp
  626.  M104 S{EXTRUDER_TEMP - 90} ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling
  627.  G4 S10 ; allow partial nozzle warmup
  628.  G28 ; home all axis
  629.  M190 S{BED_TEMP} ; wait for bed temp to stabilize so that the bed mesh is accurate
  630.  BED_MESH_CALIBRATE
  631.  M104 S{EXTRUDER_TEMP} ; set final nozzle temp
  632.  G1 Z50 F240
  633.  G1 X2 Y10 F3000
  634.  M109 S{EXTRUDER_TEMP} ; wait for nozzle temp to stabilize
  635.  G1 Z0.28 F240
  636.  G92 E0
  637.  G1 Y140 E10 F1500 ; prime the nozzle
  638.  G1 X2.3 F5000
  639.  G92 E0
  640.  G1 Y10 E10 F1200 ; prime the nozzle
  641.  G92 E0
  642.  
  643. [gcode_macro END_PRINT]
  644. gcode:
  645.  M140 S0 ; turn off heatbed
  646.  M104 S0 ; turn off temperature
  647.  M107 ; turn off fan
  648.  # Move nozzle away from print while retracting
  649.  G91
  650.  G1 X-2 Y-2 E-3 F300
  651.  # Raise nozzle by 10mm
  652.  G1 Z10 F3000
  653.  # Move out of the way
  654.  G90
  655.  G0 X20 Y150
  656.  # Disable steppers
  657.  M84 X Y E
  658. </code></pre><code></code></div></content>
  659. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  660. </entry>
  661. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  662. <id>https://waterpigs.co.uk/notes/5PRP5d/</id>
  663. <title></title>
  664. <published>2023-02-17T23:05:38+00:00</published>
  665. <updated>2023-02-17T23:05:38+00:00</updated>
  666. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5PRP5d/" />
  667. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>From now on I will be making all reaction rolls with this die</p>
  668.  
  669. <p><img class="u-photo" src="https://waterpigs.co.uk/img/screenshot-2023-02-18-at-000303.png" alt="Two photos showing all sides of a six-sided die. Each side has a simple representation of a face displaying a different emotion" /></p></div></content>
  670. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  671. </entry>
  672. <entry xmlns:activity="http://activitystrea.ms/spec/1.0/">
  673. <id>https://waterpigs.co.uk/notes/5PLp_/</id>
  674. <title></title>
  675. <published>2023-02-12T00:49:34+00:00</published>
  676. <updated>2023-02-12T00:49:34+00:00</updated>
  677. <link rel="alternate" type="text/html" href="https://waterpigs.co.uk/notes/5PLp_/" />
  678. <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Working on schematics for the Enterprise-HG</p>
  679.  
  680. <p><img class="u-photo" src="https://waterpigs.co.uk/img/screenshot-2023-02-12-at-013052.png" alt="Technical drawings for a variety of hurdy gurdy building parts, arranged to fit inside a rectangle in an arrangement which looks vaguely like a plan view of a star trek enterprise-class ship." /></p>
  681.  
  682.  
  683. <a href="https://brid.gy/publish/twitter"></a></div></content>
  684. <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
  685. </entry>
  686. </feed>
  687.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda