<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>optional.is/required</title>
	<atom:link href="https://optional.is/required/feed/" rel="self" type="application/rss+xml" />
	<link>https://optional.is/required</link>
	<description>optional is required</description>
	<lastBuildDate>Fri, 09 Oct 2026 12:59:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://optional.is/required/feed/"/>
	<item>
		<title>More Prototype Cameras</title>
		<link>https://optional.is/required/2026/10/09/more-prototype-cameras/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 09 Oct 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[color spash]]></category>
		<category><![CDATA[hue]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[tilt shift]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10515</guid>

					<description><![CDATA[We continue to experiment with cameras. Two new ones we've been testing out these last few weeks and gathering feedback and changes.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We like making camera apps. Each year new phones are released and even though tech companies like to wow you with all their new features, it feels like we plateaued a long time ago with functionality (for most people). The device you had 5 years ago is just as capable of surfing the web, playing podcasts and videos as the top-of-the-line device today. There is one thing that has noticeably improved and that&#8217;s the camera. Maybe not between years, but certainly the sensor quality between an iPhone 4, 7, 12 and 17 are remarkably different!</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/10/iphone-lego-pirate-compare.jpg" alt="Three photos taken on the iPhone 7, 12, 17 of a LEGO Redbeard pirate. You can see the improving quality with each photo slice" /></div>



<p class="wp-block-paragraph">We like taking pictures and we like experimenting. Recently, we had a few photographic itches to scratch, so we created a few more cameras for us to test internally. They&#8217;re not public (yet), but if you want to try them, let us know.</p>



<p class="wp-block-paragraph">At this point, we have a solid, shared code base for accessing the iPhone&#8217;s camera lenses and permissions. There is a massive amount of overlap to simply get a camera or video feed and save that back to the camera roll. Now that we&#8217;ve setup this &#8216;common camera&#8217; code any bugs we find are also immediately applied to all our camera apps. It also means that the last step in the camera app&#8217;s life-cycle is where we can focus, the actual taking of the photo. Usually as we capture frames off the camera&#8217;s feed we apply the desired filter and then again when the camera image is saved.</p>



<p class="wp-block-paragraph">We can quickly create a new camera app and focus on just making something interesting happen on that live feed. Since everything is already nicely abstracted, it is easy to experiment.</p>



<p class="wp-block-paragraph">It should be noted that many similar apps are available on the App Store. The ones we&#8217;ve tried either didn&#8217;t work, were clunky and not really updated or weren&#8217;t what we wanted. You&#8217;re milage may vary. We&#8217;re lucky enough to be able to make our own in the style we like, which we also made available to download.</p>



<h2 class="wp-block-heading">Color Splash</h2>



<p class="wp-block-paragraph">We saw a few tutorials about how to make your black and white images &#8220;pop&#8221; by selecting just one color and making the rest black and white. The process is pretty straight forward in any image editting software. Duplicate the image onto another later and make it completely black and white. On the top later mask or erase all the other colors. We wanted to replicate this in camera.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/10/color-splash.jpg" alt="A collage of photos that are black and white with the exception of one color. Two images of a yellow light out, an image of orange trees and another of an orange life preserver on a pier." /></div>



<p class="wp-block-paragraph">Sure you can also do this in post-production, but sometimes seeing the final output helps you compose the shot better. Then there are folks who just want to take the photo and share it rather than fiddle with it too much afterwards.</p>



<p class="wp-block-paragraph">The output is still rough around the edges because many organic things don&#8217;t nicely stop and start at a given color. Faces and edges sometimes are problematic, but we have plans to help with this by allowing you to mask areas to also make black and white no matter what the color actually is in camera.</p>



<h2 class="wp-block-heading">Tilt Shift</h2>



<p class="wp-block-paragraph">Tilt-Shift photography is something that is done with an offset lens. When composed well, it makes the scene look like a tiny model. Coupled with some sharpening, dropping of frames and speeding up the video you get a sort of tiny world stop motion effect.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/10/tilt-shift-1.jpg" alt="A collage of images attempting to show a blurred top and bottom to make it feel smaller like a tiny train model." /></div>



<p class="wp-block-paragraph">We wanted to mimic this in camera and handle the features we wanted. While testing this, we quickly realized that to make it &#8216;feel small&#8217; there is also a lot of specific compositions rather than camera technical issues. Getting too much of a close-up doesn&#8217;t let you feel the scale. Having foreground and background images in focus also feels strange. Composing from above as opposed to from below also helps the effect. If we&#8217;re making things feel smaller, why are you even smaller looking up or at the same level?</p>



<p class="wp-block-paragraph">All these are not technical issues with the camera, but more stylistic choices which we&#8217;d never know about unless we got out there and took photos. There are some bugs and blur transitions we&#8217;d like to fix, but there&#8217;s a seed of progress and something fun for sure.</p>



<h2 class="wp-block-heading">Next Steps</h2>



<p class="wp-block-paragraph">Right now, both camera apps &#8216;work&#8217; but they feel like they&#8217;re 95% complete. They correctly demonstrate the desired effect, but they&#8217;re not at a point yet to put out into the real world. Firstly, we&#8217;ll fix a few issues that bug us when snapping then open up to the public for feedback and download. If you want to beta test, let us know.</p>



<h2 class="wp-block-heading">Our Other Camera Apps</h2>



<p class="wp-block-paragraph">We have six other camera apps available on the Apple App Store for $1.99 each: </p>



<ul class="wp-block-list">
<li><a href="https://apps.apple.com/us/app/blocks-camera/id6751630500?ls=1&amp;mt=8">Blocks Cam</a>: Convert any photo into pixel art with several different color filters</li>



<li><a href="https://apps.apple.com/us/app/lut-photo/id6749096589?ls=1&amp;mt=8">CameLUT</a>: Load custom LUT Cubes. It&#8217;s a bring your own filter camera</li>



<li><a href="https://apps.apple.com/us/app/dejaview/id1598005975?ls=1&amp;mt=8">DejaView</a>: Takes four photos that reach back into the past</li>



<li><a href="https://apps.apple.com/us/app/ornithoto/id1665382610?ls=1&amp;mt=8">Ornithoto</a>: Continually merging frames to make action trails</li>



<li><a href="https://apps.apple.com/us/app/sf-camera/id6767219686?ls=1&amp;mt=8">SF Camera</a>: Split Fount gradient overlays of your images.</li>



<li><a href="https://apps.apple.com/us/app/trichromacy/id6761666059?ls=1&amp;mt=8">Trichromacy</a>: Each of the RGB layers is on a slight delay.</li>
</ul>



<div class="optional_app_list">
<a href="https://apps.apple.com/us/app/blocks-camera/id6751630500?ls=1&amp;mt=8"><img decoding="async" style="border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/5e/9d/9d/5e9d9df5-fed7-78c5-65a4-50ab3738f60b/Placeholder.mill/400x400bb-75.webp" alt="Download Blocks Cam on the App Store"/></a>
<a href="https://apps.apple.com/us/app/lut-photo/id6749096589?ls=1&amp;mt=8"><img decoding="async" style="border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/ae/8c/1c/ae8c1cfe-9524-c224-dc35-292a630bce0e/Placeholder.mill/400x400bb-75.webp" alt="Download Camelut on the App Store"/></a>
<a href="https://apps.apple.com/us/app/dejaview/id1598005975?ls=1&amp;mt=8"><img decoding="async" style=" border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/1a/38/03/1a3803d7-061a-e28a-49df-12212e161fb4/Placeholder.mill/400x400bb-75.webp" alt="Download DejaView on the App Store"/></a>
<a href="https://apps.apple.com/us/app/ornithoto/id1665382610?ls=1&amp;mt=8"><img loading="lazy" decoding="async" style="border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/89/9c/19/899c196e-0a3d-5274-4558-2302f9a2938f/Placeholder.mill/360x360bb.png" alt="Download Ornithoto on the App Store"/></a>
<a href="https://apps.apple.com/us/app/sf-camera/id6767219686?ls=1&amp;mt=8"><img loading="lazy" decoding="async" style="border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/65/cd/2e/65cd2ecd-7412-7210-b351-6d45490f9f7c/Placeholder.mill/400x400bb-75.webp" alt="Download SF Camera on the App Store"/></a>
<a href="https://apps.apple.com/us/app/trichromacy/id6761666059?ls=1&amp;mt=8"><img loading="lazy" decoding="async" style="clip-path: url(#squircle); border-radius: 0; box-shadow: none;  padding: 0; margin: 0.5em .25em; border: none; vertical-align: middle;" height="55" width="55" valign="middle" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/f4/ea/f1/f4eaf15a-31d8-c10e-2192-0097fe580250/Placeholder.mill/400x400bb-75.webp" alt="Download Trichromacy on the App Store"/></a>
</div>



<p class="wp-block-paragraph"><a href="https://itunes.apple.com/us/app-bundle/id1896480015?mt=8">Our collection of 6 iOS camera apps all bundled-up for a single price of $3.99</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #815 &#038; #816</title>
		<link>https://optional.is/required/2026/10/02/week-815-816/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 02 Oct 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[A1]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[calendars]]></category>
		<category><![CDATA[printing]]></category>
		<category><![CDATA[surveys]]></category>
		<category><![CDATA[VR]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10329</guid>

					<description><![CDATA[A double weeknote to start Q4.

Surveys, printing, VR and more!]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #815</h2>



<p class="wp-block-paragraph">This week we continued work on a few older projects.</p>



<p class="wp-block-paragraph">The old health survey we&#8217;re trying to extract ourselves from continues to keep adding little things. We do them and charge an hourly rate, but next week they will be taking it back out in public, probably the first time since COVID 6+ years ago. That feels like things are &#8220;done&#8221; enough that we can pass this project off to their other development team. On Friday, we meet-up with the client and went over a bunch of small tasks as we start the transition.</p>



<p class="wp-block-paragraph">Overall, the project is fine, but times have changed and we are not dealing with sensitive health data on any other projects. This is becoming a bigger liability than we&#8217;re willing to periodically take on. Giving this to another team that works closer with the organization is best for everyone.</p>



<p class="wp-block-paragraph">The camera project we were only supposed to swap the API for last Christmas is also in a good spot. We debugged a few issues this week with the GPS tracking. Otherwise things are pretty quiet and they will meet some potential investors next week. If they manage to get some funding, they will hire a team and we&#8217;ll pass-off this project to them as well.</p>



<p class="wp-block-paragraph">Another project from last Christmas is also coming back. This one&#8217;s been on some pretty big ups and downs (shame we can&#8217;t talk about it yet). But we worked with them again this week to create yet another quick demo app skinned to look like the company we&#8217;re pitching to. As of Thursday night, it seems like plans are changing for the good and now we need to consider pitching this to atleast two companies now!</p>



<p class="wp-block-paragraph">On the school survey front, October is a big month. We have the most schools taking part in the 6-10th grade surveys and we also conduct a one-off 1-5th grade survey. Before those start, we&#8217;re adding Arabic to both of those surveys. It isn&#8217;t a huge process, we have a nice way to export all the translations keys and we send that off to translation with either an English or Icelandic base. We get back the Arabic which we put back into the system. Then we generate mp4 files for each of these strings so we have a cached text-to-speech option for anyone who has trouble reading.</p>



<p class="wp-block-paragraph">There is a potential VR/AR project waiting for us in the wings. Another part of the team has been working on a web-based Unity app for a customer and it&#8217;s coming time to eventually port this to VR/AR. (Again, another project we&#8217;d love to talk about, but can&#8217;t yet)</p>



<p class="wp-block-paragraph">In the time between projects, we continue to tick off a few issues on our iPad/Mac/LED project. Overall, we&#8217;re in a great shape and ahead of other parties working on this project.</p>



<h2 class="wp-block-heading">Week #816</h2>



<p class="wp-block-paragraph">We continue to wrap-up the Health Survey as we finish off the last tweaks before we hand it over. The goal is to make that transition before the end of the month, but that&#8217;s dependent on the incoming team and the lawyers reviewing all the compliance documentation.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://optional.is/required/wp-content/uploads/2026/09/02027-Calendar-1024x472.jpg" alt="" class="wp-image-10511" srcset="https://optional.is/required/wp-content/uploads/2026/09/02027-Calendar-1024x472.jpg 1024w, https://optional.is/required/wp-content/uploads/2026/09/02027-Calendar-300x138.jpg 300w, https://optional.is/required/wp-content/uploads/2026/09/02027-Calendar-768x354.jpg 768w, https://optional.is/required/wp-content/uploads/2026/09/02027-Calendar.jpg 1312w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">On Tuesday, we collected our A1 poster prints. We use a local company called <a href="https://pixel.is">pixel.is</a> to do the printing on their A1 architectural printer. It costs around $3 per sheet. This year we printed a bunch of <a href="https://github.com/optional-is/calendaring/blob/master/A0-Yearly/02027-Misseristal-A0.pdf">02027 calendars, which you can download the PDF and print yourself</a> along with two test art posters and a map poster which we intend to annotate.</p>



<p class="wp-block-paragraph">On the &#8216;keep things running&#8217; front, we have a few lambda function on AWS that we babysit. Annoyingly, they are getting old and AWS complains we need to change our Python runtime. Todo this, we need to upgrade some libraries, which are no longer supported. We bit the bullet, and made the changes, replaced the old libraries and got it working. Hopefully it will be a few more years now before we need to touch it again.</p>



<p class="wp-block-paragraph">It is also the end of the month, so it&#8217;s time to get all the bills sorted and logged for the accountants. A stitch in time saved nine. While all the bookkeeping is annoying, small monthly doses make the end of the year much easier to swallow!</p>



<p class="wp-block-paragraph">We have a game prototype that&#8217;s built and pretty far along. It&#8217;s waiting to be shopped around to a few organizations and get some blessings on the intellectual property we&#8217;ve used. While we wait, we&#8217;re double-dipping and duplicating all the code to make a similar, but differently themed version. That&#8217;s been ongoing, but this week we really turned the corner. There is a working HTML wireframe that is powered by the content database. This allows us to do two things at once; improve the content and find out which screens and states are missing.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cable Identification</title>
		<link>https://optional.is/required/2026/09/24/cable-identification/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 24 Sep 2026 12:21:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[You're doing it wrong]]></category>
		<category><![CDATA[cables]]></category>
		<category><![CDATA[hama]]></category>
		<category><![CDATA[id]]></category>
		<category><![CDATA[perler]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10403</guid>

					<description><![CDATA[A quick pro tip to keep your cables organized both for yourself and others.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We wrote a toot on an old mastodon server that&#8217;s gone and can&#8217;t find any online reference to it. We&#8217;re re-posting it here and expanding on it. (Do you have a backup/data dump of your social media?)</p>



<p class="wp-block-paragraph">We were recently traveling and when we pulled out our cables, people asked about the tags. </p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/09/53b78b77913b8285.jpeg" alt="The knife slices the plastic bead long-ways and another is wrapped it around the cable." /></figure>



<p class="wp-block-paragraph">Here’s how we organize our cables.</p>



<ol class="wp-block-list">
<li>Get a knife and some plastic melting beads used for kids’ art projects.</li>



<li>Using the knife, cut the bead length-wise to create a break and wrap it around the cable.</li>



<li>Use different colors, shades or color combinations to identify types and lengths of cables.</li>
</ol>



<p class="wp-block-paragraph">When everyone has their <a href="https://en.wikipedia.org/wiki/Rat_king">Rat king</a> of cables, you know which are yours.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Over the last few years we&#8217;ve been transitioning away from USB-A, lightening and other non-USB-C cables. Somewhere along the line we set yellow-ish colors to demarcate lightening cables and blue-ish colors for USB-C.</p>



<p class="wp-block-paragraph">Adding colored markers to both ends of a cable, we know what-is-what when pulling them out of a bundle. Is this a game-changing-life-saver? Probably not, but it helps us stay organized and at a glance we can tell if we&#8217;re missing a cable.</p>



<p class="wp-block-paragraph">This also helps our desktop setup. As cables on top of the desk disappear underneath and to the back of a computer, because they are color labeled we know which to safely remove when needed.</p>



<p class="wp-block-paragraph">We originally had the idea to use a few colors for the connector type and another color on each end to let you know if it was A-to-A or A-to-C or C-to-C or something else to A or C. That wasn&#8217;t really practical for us in the end, so we stuck with one color applied at both ends of the cable.</p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/09/cable-ids.jpg" alt="Photo of several cables with bead labels and two bags full of extra beads sorted by warm and cool colors."/></figure>



<p class="wp-block-paragraph">There are a lot of shades of Yellow and Blue that we could pull from. That turns out to be pretty handy because we do bring several USB-C cables on trips. They charge phones, tablets, watches, batteries, computers and more.</p>



<p class="wp-block-paragraph">Feel free to create your own system. 1, 2 or 3 colors for what ever you want format or designation you need: Data only, 60W, 100W, 240W cables, USB-A-to-C, micro-USB, Qi, etc.</p>



<p class="wp-block-paragraph">The original idea for the color coding comes from electronic resisters. They are color-coded and if you know how to read it, you can figure out the impedance.</p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/09/ResistorColorCodeGuide.jpg" alt="A photo of a business card with 3 turnable wheels. These wheels adjusted the color of the resister band through a small cutout on the card." /><figcaption>RMA resistor color code guide, ca. 01945–01950</figcaption></figure>



<p class="wp-block-paragraph">The color-codes in electronics are very specific and tolerance demanding. Our color system is much less important. If you picked-up the wrong cable, it was probably fine if the plug fits, maybe it wasn&#8217;t optimal, but it wouldn&#8217;t short-out the electrons.</p>



<p class="wp-block-paragraph">When traveling, as part of our kit, we have a small bag of these beads pre-sliced. Not for, all our cables are marked, but to share with others.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #813 &#038; #814</title>
		<link>https://optional.is/required/2026/09/18/week-813-814/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 12:21:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[LEDs]]></category>
		<category><![CDATA[nintendo]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10388</guid>

					<description><![CDATA[A Double weeknote: Some wins and losses, but after 14 days we're net positive.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #813</h2>



<p class="wp-block-paragraph">Monday was a public holiday in the US. That gives us a day to catch-up on internal tasks and personal projects.</p>



<p class="wp-block-paragraph">We&#8217;ve been deep in C++ for the ESP32 microprocessor to control the LED lights. After constantly hitting walls, back tracking and trying another approach, we&#8217;re finally in a good spot. Every light combination we need is programmed into the system and the firmware is firing on all cylinders!</p>



<p class="wp-block-paragraph">Wednesday we had both a Nintendo event. Which we are keeping closer eyes on and the bug annual Apple event. This year we got the expected barage of new iPhones and Watches. This year we got the new iPhone DUO. Time will tell how that all shakes our and how it impacts developers. For years people designed for a specific height and width and argued about “above the fold” and with every new device we get a new size ratio.</p>



<p class="wp-block-paragraph">To us, there were a few items in the presentation that felt strange or awkward. A while ago we wrote about the <a href="https://optional.is/required/2025/06/20/blind-men-and-the-elephant/">Blind Men and the Elephant</a>. I fully believe we say some things in their presentation which are meant not for today, but for some future hardware.</p>



<p class="wp-block-paragraph">On Thursday, we published a bit more about <a href="https://optional.is/required/2026/09/10/backups-3-1-pg_dump/">our backup scheme</a>, specifically how we&#8217;re handling some backups of database backups. We identified a potential issue and plugged the hole to prevent accidents.</p>



<p class="wp-block-paragraph">With the publication of the iOS/macOS/Xcode 27 Release Candidates, we updated everything and got a chance to experiment with some Gaussian Splats. These are now first-class file types and we have libraries to natively load and view the output.</p>



<p class="wp-block-paragraph">There is the concept of Quiet or Ghost Quitting, where someone no longer responds or shows-up. We&#8217;re a bit on the opposite end and have a Ghost Firing. We&#8217;re on a project, but can&#8217;t get any meetings booked and the weekly sync has been cancelled. We&#8217;re here and ready, but the customer seems to have second thoughts, but doesn&#8217;t want to pull the plug (yet). We&#8217;ll see what the next weeks hold.</p>



<h2 class="wp-block-heading">Week #814</h2>



<p class="wp-block-paragraph">This week we started off with a remote visit for the LED project. We uploaded our new software to the microcontroller and it worked flawlessly! Of course the model makers had changed the LED count, so we had to change the software. Somewhere along the way the ESP32 died. We had a backup and flashed that one and did a quick test and it worked, but now we need to unsolder a bunch of connects on the old board to the new one and split the LED strip into two universes. On Thursday, we went back and confirmed all the updates with the architect. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f37e.png" alt="🍾" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">We continue with updates to an old survey. We&#8217;re trying our best to extract ourselves from this project. We&#8217;re no longer dealing with any other projects around health data and our school surveys are getting more focused. We told the customer this a few years ago, but the transition is a slow one. We are JUST ABOUT at the finish line. We&#8217;ve updated the code libraries and login method, now we&#8217;re making the last of the question and text tweaks. Then we really want to hand this over to their new tech team.</p>



<p class="wp-block-paragraph">On Tuesday, we had a meeting for another project. We met with the architects and design teams to go over the software, workflow and other image rendering requirements. Off the back of that we had to make a few tweaks to our software to fix some bugs and new ideas that came up in the meeting.</p>



<p class="wp-block-paragraph">We also managed to have an online meeting with an old friend in Lisbon to hear what he&#8217;s up to.</p>



<p class="wp-block-paragraph">Overall, these last two weeks we touched eight or nine different projects over ten (realistically nine) work days.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Backups 3.1 pg_dump</title>
		<link>https://optional.is/required/2026/09/10/backups-3-1-pg_dump/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[postgres]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10361</guid>

					<description><![CDATA[As we continue our series about how we are backing things up, we constantly strive to improve as we find holes.

We found a potential disaster we're now mitigating.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This is a small update in our series about our backup setup and schedule. You can read the previous three here:</p>



<ul class="wp-block-list">
<li><a href="https://optional.is/required/2022/05/31/backups/">Backups</a></li>



<li><a href="https://optional.is/required/2024/03/19/backup-2-0-das-edition/">Backups 2.0 DAS Edition</a></li>



<li><a href="https://optional.is/required/2026/02/26/backups-3-0-remote/">Backups 3.0 Remote</a></li>
</ul>



<p class="wp-block-paragraph">Most recently we did some database maintenance on Heroku. This is pretty straightforward as Heroku handles a lot of the heavy work for you. Periodically, we need to upgrade the database version or migrate to a larger database as needed.</p>



<p class="wp-block-paragraph">As part of their database package, you can set up both manual and automatic backups. These are saved to an S3 bucket associated with your database instance. Every time we need to make a change, we make a manual backing-up. There is also an automatic, nightly back-up when the server is quiet.</p>



<p class="wp-block-paragraph">During one maintenance phase, we were working to upgrade the database, but accidentally pressed the delete button. Luckily Heroku has a nice double confirmation so you can&#8217;t delete something that you&#8217;re not supposed to by accident. This got us worried, because had we actually deleted that database, all of the corresponding backups would have also disappeared. This is a very bad single point of failure. Having both the database and the backups so easily destroyable was something we needed to guard against. </p>



<p class="wp-block-paragraph">This also doesn&#8217;t need to be malicious. Accidentally deleting a database is possible, so is forgetting to pay the credit card bill or update it when it expires. Heroku might quietly terminate all of our services and along with that we would lose all of our backups!</p>



<p class="wp-block-paragraph">We set out to at least get a copy of those databases somewhere not inside Heroku&#8217;s control. Luckily the Heroku command line gives us a few tools to do this. We can get the most recent Postgres S3 backup URL and we can get the Postgres URL directly.</p>



<p class="wp-block-paragraph">Our goal was to build a script which could save the database offsite in case something catastrophic happens. Rather than use the existing S3 backup URL we decided to fetch the Postgres database dump directly. (To make use of the Heroku CLI tools, you need to be logged in and that wasn&#8217;t going to be possible, so we saved the direct Postgres URL instead. This does periodically change, so we need to be aware of the fragility.)</p>



<p class="wp-block-paragraph">For now, we setup a few different CSV files with the service names and the Postgres URLs. A bash script was created to run <code>pg_dump</code> looping through the corresponding csv file. Each row creates a database dump with the service name. We can direct that output to our DAS system. Once it is put onto a drive, that flows into our existing system of an additional nightly local copy and remote copy.</p>



<p class="wp-block-paragraph">Using the same script, we can pass-in different target folders so we can separate the dumps by company, project or service. This also allows us to create a series of cron tasks that run at different intervals. For instance, some surveys only run for 1 month, so there is no need to be backing these up nightly the other 11 months of the year! The same is true of our reports server, we publish reports usually at the start of the month for the previous month&#8217;s results. Having that pull a remote backup once a month in the middle of the month is probably the most sensible. Especially since the DB size is pushing 3 GB.</p>



<p class="wp-block-paragraph">Also, since these commands are all listed in the <code>crontab</code>, we can manually run the same command if we can&#8217;t wait for the next backup cycle to occur.</p>



<p class="wp-block-paragraph">For some customers and internal projects we use our own 3-2-1 backups system. For others who are concerned about GDPR and sensitive data, we can save the database dumps to their network drives and let them handle the data.</p>



<p class="wp-block-paragraph">It is a flexible system, which does require us to save the login strings, which periodically change. We&#8217;ll see how much of an issue this becomes as we implement the system.</p>



<p class="wp-block-paragraph">We are constantly finding loop-holes, like these Heroku backups, but close them each time. We continue to iterate and improve on our backup setup and with each step, improve our piece of mind.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #811 &#038; #812</title>
		<link>https://optional.is/required/2026/09/04/week-811-812/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 04 Sep 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[credit cards]]></category>
		<category><![CDATA[depth map]]></category>
		<category><![CDATA[fraud]]></category>
		<category><![CDATA[LEDs]]></category>
		<category><![CDATA[magic eye]]></category>
		<category><![CDATA[names]]></category>
		<category><![CDATA[petals]]></category>
		<category><![CDATA[public house]]></category>
		<category><![CDATA[pubs]]></category>
		<category><![CDATA[stereogram]]></category>
		<category><![CDATA[UK]]></category>
		<category><![CDATA[webrtc]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10323</guid>

					<description><![CDATA[Another double weeknote where we're pulled in 3-4 different directions.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #811</h2>



<p class="wp-block-paragraph">This week summer seemed to have abruptly ended and fall/winter has arrived. We&#8217;ve moved back into work mode and started to run.</p>



<p class="wp-block-paragraph">This week we continued to debug some of the WebRTC issue reported. The client was complaining things were moving slowly, so we offered to have more frequent, shorter check-in meetings. Everyone agreed, and then it hasn&#8217;t happened for 2-3 weeks. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f937-1f3fb-200d-2642-fe0f.png" alt="🤷🏻‍♂️" class="wp-smiley" style="height: 1em; max-height: 1em;" /> When we get bug reports, we try to fix them quickly and ask for a meeting so we can iterate, but no reply.</p>



<p class="wp-block-paragraph">On the LED front, we&#8217;re continuing to debug, iterate and fix minor issues with both the microcontroller software, but also the iPad app that sends the commands for which LEDs to light-up. We&#8217;re very close and the deadline is looming. Some of the team in NYC goes over to the model maker&#8217;s office and we have marathon video calls to work through and debug any issues in real time. As they continue to wire and re-wire, we seem to take a few steps backwards. Hopefully by next week, we wrap-up everything.</p>



<p class="wp-block-paragraph">On Thursday, we published our article about <a href="https://optional.is/required/2026/08/27/uk-public-house-names/">UK Public House names</a>. This was a side-quest that was spurred on by a throw-a-way comment on a podcast we were listening too.</p>



<p class="wp-block-paragraph">(You can tell we&#8217;re avoiding real work) We also sat down and re-created a test stereogram (those magic eye posters from the 90s). The images in those posters were always dolphins, cubes, landscapes, etc. We wondered how to construct our own and if it was easier 30 years later? It turns out, it is pretty easy, but the subject matter and composition are key.</p>



<p class="wp-block-paragraph">There are plenty of websites to help you make stereograms. Usually you just need a depth map of the image. It then uses a noise pattern and that depth map to make some offsets in the final output. Previously, to make those depth maps you needed to make some 3D objects in software and then position a camera. It wasn&#8217;t trivial and you needed to recreate everything you wanted in your picture. Fast-forward to the 2020s and you have smart phones with LIDAR that produce depth maps with your portrait photos! It is pretty easy to extract those black and white depth maps, so we did.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="333" src="https://optional.is/required/wp-content/uploads/2026/08/stereogram.jpg" alt="" class="wp-image-10327" srcset="https://optional.is/required/wp-content/uploads/2026/08/stereogram.jpg 1000w, https://optional.is/required/wp-content/uploads/2026/08/stereogram-300x100.jpg 300w, https://optional.is/required/wp-content/uploads/2026/08/stereogram-768x256.jpg 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">Friday we continued to do some digital house-cleaning. We also had a meeting about the WebRTC project and we continue to find small bugs, but have shifted gears a bit back to using Apple Continuity Camera rather than our own home grown WebRTC version (for now).</p>



<p class="wp-block-paragraph">On the PETALS project, we added Lemon Squeezy as our checkout/payment system to take subscriptions. There is a free trial when you sign-up so your credit card only gets billed after 7 days. Low-and-behold, that&#8217;s a boon to credit card fraudsters. We&#8217;ve got endless fake sign-ups over the weekend. They obviously have a list of stolen card numbers and need to test to see if they are still active or not. If they do that on a large retailer like Amazon and the card is already blocked or marked as fraud that&#8217;s problematic. So they first find a service that has a free trial &#8211; like PETALS and run the card to see if it is valid. If it is, it hasn&#8217;t been charged and thrown-up any flags (yet), so they know they can use that valid, working card at other retailers immediately. We&#8217;ve been playing whack-a-mole with them all weekend, but the way lemon squeezy was originally setup by us, that makes it very difficult along with invalidating all these fake purchases to now ruin our charge-back reputation. Good times.</p>



<h2 class="wp-block-heading">Week #812</h2>



<p class="wp-block-paragraph">This week we properly started a bunch of new surveys and are gearing up for more in October and November. As part of that process we continue to improve our backups. We found some weak spots and fixed it with redundancy L-O-C-K-S-S (Lot of Copies Keeps Stuff Safe). We have a draft article outline all this in more detail.</p>



<p class="wp-block-paragraph">We continue debugging some of the WebRTC code and also the LED code. Things are in a good place, but (as always) it is hard for us to debug in real-world situations. The WebRTC echo is partly due to geography and network latency, VPNs can help, but real testing is always best. On Tuesday, we were told by the client to stop working on it. They are getting cold feet, so we feel this project has run its course. Our normal Friday meeting was even canceled.</p>



<p class="wp-block-paragraph">The LEDs are a similar story, we have a roll of 300 LEDs to help us test, but the final product has 15x so we test in parts where we can and then try to integrate everything and work with the New York team to test.</p>



<p class="wp-block-paragraph">For the old Spellstruck project, we were originally call upon to help with the analytics, but idle hands are the devils work. While we waited for everything to get instrumented, we helped with the push notifications. That meant dealing with certificates, AWS lambda functions and simple queues. Which now is partly our responsibility to update the certs annually and keep the code versions up-to-date. This week we had to migrate the Heroku Postgres database from version 15 to 18. We ran the tests, add the follower, let it all sync for a day, then put things into maintenance mode and did the swap. It&#8217;s not difficult, but can be stressful if something goes wrong.</p>



<p class="wp-block-paragraph">Using cloud services is great, but they periodically end support for software versions you are using, so you need to go back to things that work just fine, upgrade them and potentially introduce errors.</p>



<p class="wp-block-paragraph">For yet another project, we are getting into the HubSpot API. We have various forms to collect information at the top of a sales funnel. To start with, we just want to capture that data and organize it into various models in HubSpot. Once the data is correctly flowing in, we can start to do some smart stuff with it.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>UK Public House Names</title>
		<link>https://optional.is/required/2026/08/27/uk-public-house-names/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 27 Aug 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Paper]]></category>
		<category><![CDATA[animals]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[names]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[plants]]></category>
		<category><![CDATA[pubs]]></category>
		<category><![CDATA[UK]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10306</guid>

					<description><![CDATA[A strange thought came into our heads, which eventually we found the data and made an artifact.

If you like niche lists, we got you covered.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We were listening to a podcast about <a href="https://www.bbc.co.uk/programmes/m002z5nz">Anne Bonny and Mary Read: real-life pirates of the Caribbean</a>. Mary Read and her husband opened a pub called <em>The Three Horseshoes</em> and the presenters commented about how it was a nice name. That set us off on a quest.</p>



<p class="wp-block-paragraph">We&#8217;ve heard the trope that all the pubs in the UK have either an animal, plant or body part in their name: <em>The Red Lion, The Pear Tree, The Athletic Arms</em>. <em>The Three Horseshoes</em> fit the template. But how true was it?</p>



<h2 class="wp-block-heading">Step 1: Find the Data</h2>



<p class="wp-block-paragraph">We needed to find a decent list of UK pubs and it turns out that you can download a CSV of 50,000 registered public houses. This is a list from 02024, so your favorite place may or may not have made the cut. Also, what a company trades as and what&#8217;s on the door are not guaranteed to be the same either.</p>



<p class="wp-block-paragraph">Using: <a href="https://www.getthedata.com/open-pubs">https://www.getthedata.com/open-pubs</a> we downloaded the list of pub names. The CSV contains a list of names, addresses, post codes, cities, and additional columns. All we were concerned with was a list of distinct names and their frequency.</p>



<p class="wp-block-paragraph">That was pretty easy to do, but we quickly spotted some problems. Was <em>The Fox and Hound</em> the same as <em>The Fox &amp; Hound</em> or even <em>Fox and Hound</em>?</p>



<h2 class="wp-block-heading">Step 2: Data Cleansing</h2>



<p class="wp-block-paragraph">Now that we had the list, we needed to normalize it and collapse similar names. Ignoring the capitalization <em>Fox and Hound</em> versus <em>Fox and hound</em> we quickly did some find and replacing on punctuation, spelling and removed (at the &#8230;) and (Bar Only), Ltd. and a few other common strings. Since we knew this was going to be an alphabetically sorted list, we also moved any &#8220;The XYZ&#8230;&#8221; to &#8220;XYZ&#8230;, The&#8221;. The final output is much easier to search and browse manually.</p>



<p class="wp-block-paragraph">This collapsed the list from around 50,000 pubs to around 27,500 distinct names and their corresponding frequency.</p>



<p class="wp-block-paragraph">But that&#8217;s all the pub names in the UK, we are only interested in those with animal, plant or body parts. We made a big list of words and went through each of the 27,500 and tested to see if they contained anything in our list. That got us down to about 10,000 rows or 1 in 5 pubs in the UK contain the trope. When we counted those names by frequency we had 3,000 rows of distinct pub names and their frequency count.</p>



<h2 class="wp-block-heading">Step 3: Curation</h2>



<p class="wp-block-paragraph">Now that we had only 3,000 rows to review, it made things easier to go over manually and curate. Our goal wasn&#8217;t a comprehensive list or any exact numbers. At this point we just wanted a list of real pub names you might find when you needed to make-up a quick name for a pub in the UK. <em>The Quill and Porcupine,</em> <em>The Dragon&#8217;s Arms</em>, <em>The Bear and Boar</em>.</p>



<p class="wp-block-paragraph">Sorting the list alphabetically and browsing through we found some false positives: <em>John Bull Inn</em>, that&#8217;s a surname not directly an animal reference. So we remove those. We also found lots of <em>White Stag at the X</em>YZ usually the city name. We further collapsed those into just <em>White Stag</em>, similar for some chains: <em>Slug and Lettuce / X / Y / Z</em> was very common where they seemed to be paired with other restaurants, again we just collapsed those down to <em>Slug and Lettuce</em>.</p>



<p class="wp-block-paragraph">After reviewing that list a few times, we were happy with what we managed to curate. The next step was to put it into some chapters and columns with some nice headers and engraving images to make a nice book from this work and research.</p>



<h2 class="wp-block-heading">Step 4: Stats</h2>



<p class="wp-block-paragraph">When we sorted by frequency we got the top 50 common UK pub names with an animal, plant or body part in the name.</p>



<ol class="wp-block-list">
<li>Red Lion, The</li>



<li>Royal Oak, The</li>



<li>White Hart, The</li>



<li>Swan, The</li>



<li>White Horse, The</li>



<li>Rose and Crown</li>



<li>Wheatsheaf, The</li>



<li>Black Horse, The</li>



<li>Greyhound, The</li>



<li>White Lion, The</li>



<li>Coach &amp; Horses</li>



<li>Three Horseshoes, The</li>



<li>Fox and Hounds</li>



<li>George &amp; Dragon</li>



<li>Black Bull, The</li>



<li>Bull, The</li>



<li>Bulls Head, The</li>



<li>White Swan, The</li>



<li>Fox Inn, The</li>



<li>Golden Lion, The</li>



<li>Nags Head</li>



<li>Lamb Inn, The</li>



<li>Horseshoe, The</li>



<li>Black Swan, The</li>



<li>Cock Inn, The</li>



<li>Bay Horse, The</li>



<li>Beehive, The</li>



<li>Eagle, The</li>



<li>Horse &amp; Jockey</li>



<li>Barley Mow, The</li>



<li>Grapes, The</li>



<li>Griffin, The</li>



<li>Horse and Groom</li>



<li>Dolphin, The</li>



<li>Green Dragon, The</li>



<li>Vine, The</li>



<li>Black Lion, The</li>



<li>Woolpack, The</li>



<li>Shoulder of Mutton</li>



<li>Slug &amp; Lettuce</li>



<li>Stag, The</li>



<li>Lion, The</li>



<li>Talbot, The</li>



<li>Bear, The</li>



<li>Bird in Hand</li>



<li>Pheasant Inn, The</li>



<li>Cherry Tree, The</li>



<li>Peacock, The</li>



<li>Falcon, The</li>



<li>Phoenix, The</li>
</ol>



<p class="wp-block-paragraph">First place was <em>The Red Lion</em> with ~450 pubs using that name. In second was <em>The Royal Oak</em> with ~350. Third was <em>The White Hart</em> with ~230 and continuing to drop to a long tale of names.</p>



<p class="wp-block-paragraph">In 12th place <em>The Three Horseshoes</em>! It turns out to be a pretty common name for a UK pub.</p>



<p class="wp-block-paragraph">If we break it down by what terms the pubs fell into (and they could be in multiple) we can see that Animals are by far the most popular in names.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Category</th><th>Distinct names</th><th>Pubs</th><th>Share</th><th>Leaders</th></tr></thead><tbody><tr><td>Animal</td><td>1,894</td><td>6,401</td><td>12.8%</td><td>lion 808, horse 728, swan 446, fox 321, bull 290</td></tr><tr><td>Plant</td><td>906</td><td>2,294</td><td>4.6%</td><td>oak 495, tree 307, rose 287, wheatsheaf 170</td></tr><tr><td>Body part</td><td>321</td><td>1,138</td><td>2.3%</td><td>head 815, hand 75, feathers 53, shoulder 41</td></tr><tr><td><em>Mythical beasts</em></td><td><em>81</em></td><td><em>347</em></td><td><em>0.7%</em></td><td><em>dragon 177, griffin 58, phoenix 55, unicorn 43</em></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Since public houses in the UK date back centuries, their names are often hold-overs from another era. Many of their early patrons were illiterate, so using commonly recognizable symbols were more important than how the pub name was spelt.</p>



<h2 class="wp-block-heading">Step 5: Publication</h2>



<p class="wp-block-paragraph">Now that we have the curated short list of names, some interesting stats we decided to do something more than just this article. We created several printable publications for anyone to use as an interesting reference.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/08/A4-spread.png" alt="Screenshot of the dictionary page layout"/></div>



<p class="wp-block-paragraph">First we copy and pasted the full comma separated text from the most frequent name to the least into a document. It was noisy, cluttered and un-organized. It made no sense to look-up words or find anything. We sorted the words alphabetically, broke them into logical chapters based on their first letter (where we also moved &#8220;The&#8221; to the end of the names), and put one name per line and made each page two columns.</p>



<p class="wp-block-paragraph">This was much easier to read, but it still felt very utilitarian &#8211; like an ancient pub phone directory. To solve this, we added some illustrations to try and match some of the animals and plants references. This broke-up the text and filled in some blank space. Luckily, there is no shortage of public domain engravings! After an afternoon of figuring out some layout we found plenty of images to fill the gaps.</p>



<p class="wp-block-paragraph">We made a few different A5 PDFs that you can download and print at home.</p>



<ul class="wp-block-list">
<li><a href="https://optional.is/required/wp-content/uploads/2026/08/pub_names_A5_booklet.pdf">pub_names_A5_booklet.pdf</a> A5 (9.5 MB)</li>



<li><a href="https://optional.is/required/wp-content/uploads/2026/08/pub_names_A4_spreads.pdf">pub_names_A5_booklet_spread.pdf</a> A4 (10.6 MB)</li>
</ul>



<p class="wp-block-paragraph">You can also purchase a 42 page book on Amazon&#8217;s using their print on demand service.</p>



<ul class="wp-block-list">
<li><a href="https://www.amazon.com/dp/B0HGCB856W">Dictionary of Pub Names Amazon US ($8)</a></li>



<li><a href="https://www.amazon.co.uk/dp/B0HGCB856W">Dictionary of Pub Names Amazon UK (£6)</a></li>



<li><a href="https://www.amazon.ie/dp/B0HGCB856W">Dictionary of Pub Names Amazon IE (€7)</a></li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">It&#8217;s funny how some small, one off-comment in a podcast can lead down a path of data scraping to publishing a small book.</p>



<p class="wp-block-paragraph">We hope you enjoy a look into our process, inspiration, thought process and publication.</p>



<p class="wp-block-paragraph"><em>Cheers, Iechyd da, Slàinte Mhath!</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #809 &#038; #810</title>
		<link>https://optional.is/required/2026/08/21/week-809-810/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 21 Aug 2026 14:41:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[badges]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[solar eclipse]]></category>
		<category><![CDATA[virtual boy]]></category>
		<category><![CDATA[VR]]></category>
		<category><![CDATA[webrtc]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10282</guid>

					<description><![CDATA[Another double weeknote. Lots of activity, a once in a lifetime solar eclipse, the good and bad of projects and more.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #809</h2>



<p class="wp-block-paragraph">Let&#8217;s VR like it&#8217;s 01995! We picked-up the <a href="https://en.wikipedia.org/wiki/Virtual_Boy">Nintendo Virtual Boy</a> faux-headset. This is really a box with some lenses that takes a Switch running the Virtual Boy emulation software to make a left and right channel for each eye to create a stereoscopic, 3D view.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="582" src="https://optional.is/required/wp-content/uploads/2026/08/virtual-boy.jpg" alt="" class="wp-image-10297" srcset="https://optional.is/required/wp-content/uploads/2026/08/virtual-boy.jpg 1000w, https://optional.is/required/wp-content/uploads/2026/08/virtual-boy-300x175.jpg 300w, https://optional.is/required/wp-content/uploads/2026/08/virtual-boy-768x447.jpg 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">The results are exactly what you&#8217;d expect, it feels like 30 year old VR technology. There are only 16 games out of the 22 ever released and they certainly feel their age. It is a great, fun experience and some interesting early experiments.</p>



<p class="wp-block-paragraph">For some Australian projects their CFO reached out and asked for a data dump. They are reviewing the last 3 years worth of jobs, costs and invoices to see where they made money and were they lost as a general review of the company. Most of this data was easy to export from both our database and Xero. The slightly trickier part was merging the two. Sometimes an invoice was connected to a few small projects in our system, or a different enough name that we couldn&#8217;t with confidence match it. Now it&#8217;s up to them to do the harder business logic and find the good, the bad and the ugly.</p>



<p class="wp-block-paragraph">Our WebRTC project is coming back.</p>



<p class="wp-block-paragraph">Wednesday was the Solar Eclipse here in Reykjavik. Not much got done that whole afternoon. It was quite overcast and raining, but it did get dark for a few minutes as we passed through the moon&#8217;s shadow.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="750" src="https://optional.is/required/wp-content/uploads/2026/08/solar-eclipse.jpg" alt="" class="wp-image-10292" srcset="https://optional.is/required/wp-content/uploads/2026/08/solar-eclipse.jpg 1000w, https://optional.is/required/wp-content/uploads/2026/08/solar-eclipse-300x225.jpg 300w, https://optional.is/required/wp-content/uploads/2026/08/solar-eclipse-768x576.jpg 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">On Friday we published an article about our <a href="https://optional.is/required/2026/08/14/newsletter-badges/">Newsletter Badges</a>. We are experimenting with custom, dynamically generating SVG/PNG images for our newsletter subscribers. If you already subscribe, expect a little something extra next quarter.</p>



<h2 class="wp-block-heading">Week #810</h2>



<p class="wp-block-paragraph">Surveys are now back in full-swing! We started a &#8220;one-off&#8221; survey project as part of some research at the University of Iceland. We did something similar a few years ago which resulted in an academic paper (<a href="https://ejournals.is/index.php/netla/article/view/4327/2900">You can read it online in Icelandic</a>) It focused on the deteriorating reading levels in young Icelandic students and how home-reading was the proposed solution. The paper looks at the efficacy of the intervention. Now, we&#8217;re back looking to Peer-Assisted Learning Strategies (PALS). We have a long survey which teachers take before, during and at the end of the intervention. Then a much shorter survey which is answered weekly about the type and amount of PALS that week.</p>



<p class="wp-block-paragraph">Our WebRTC project gave us a kick in the gut this week. It always worked when we tested in the office, but when trying to connect to a remote participant it failed. At first we thought it was our code, but it turned out to be an issue with the STUN/TURN servers. Once we switched the info and made it dynamic and not hard-coded in the app, we could move forward again. The regularly scheduled Friday meeting was cancelled &#8211; which is annoying. The client feels things are taking too long and behind schedule. They do take a long time for several reasons; we only work on this 1 day a week, it&#8217;s been summer, we got stuck on an echo issue, and meetings always get cancelled so it&#8217;s then 2-3 weeks between reviews. We offered to have them more frequently, but it doesn&#8217;t fit their schedule.</p>



<p class="wp-block-paragraph">We met with the our contact to test our LEDs and it was a bit of a disaster, but we learnt a lot and quickly adapted. As it turns out, we&#8217;ve very rusty when it comes to soldering! On Thursday we did a bunch of software and hardware tests and on Friday it&#8217;s back to our contact to try it all again.</p>



<p class="wp-block-paragraph">Our todo list is long and grows longer by the day. What tends to accumulate are ideas for things, big and small, that we&#8217;d like to try and prototype. Those get pushed down the list when deadlines are looming. We&#8217;re really hoping to get through a few tasks in August and in September, free-up some time to explore.</p>



<p class="wp-block-paragraph">During the week we were listening to a podcast and a throw-away comment about the name of a British pub sent us down a rabbit hole. Pretty quickly we found the data we wanted, created a prototype of our idea and made a physical printout. Time to review and refine.</p>



<h2 class="wp-block-heading">Bric-à-brac</h2>



<p class="wp-block-paragraph">This week we learnt about <a href="https://en.wikipedia.org/wiki/Ming_(clam)">Hafrún (Ming Clam)</a> a clam that was dredged-up around Iceland that turned out to be 507 years old, oldest individual (non-clonal) animal ever discovered whose age could be precisely determined.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Newsletter Badges</title>
		<link>https://optional.is/required/2026/08/14/newsletter-badges/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 14:41:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[badges]]></category>
		<category><![CDATA[heraldy]]></category>
		<category><![CDATA[iceland]]></category>
		<category><![CDATA[newsletter]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10192</guid>

					<description><![CDATA[We're creating an ever evolving badge for newsletter subscribers. The design is based on years subscribed and other achievements.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Back in <a href="https://optional.is/newsletter/02024Q3/">02024Q3</a> we planned on releasing custom badges for our newsletter subscribers. These were to be dynamic images that changed over time based on subscription length and other special inventory items.</p>



<p class="wp-block-paragraph">Did we mention we have a newsletter? You can subscribe here: <a href="https://optional.is/newsletter/subscribe">https://optional.is/newsletter/subscribe</a></p>



<p class="wp-block-paragraph">If you want your own personalized badge you need to be a subscriber!</p>



<p class="wp-block-paragraph">The badge needed to grow over time to include more and more items the longer you were a subscriber. We wanted it to both be Icelandic but also heraldic.</p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/badges.jpg" alt="Early drafts of potential badges" /><figcaption>Early drafts of potential badges</figcaption></figure>



<p class="wp-block-paragraph">As part of the mock-ups and design, we had the banner which in heraldry holds some sort of motto. We repurposed it as the year you subscribed. Later we changed that to be a sort of mini-inventory of special achievements.</p>



<p class="wp-block-paragraph">Currently, we have two achievements: <a href="https://material.is/archive/">Material Conference</a> supporter and Alumni/Co-Worker.</p>



<p class="wp-block-paragraph">Back in 02016 we planned to have our first Material Conference. We tried to kickstart it, but the campaign didn&#8217;t get enough backers. We subsequently had an event in 02017, 02018 and we planned for 02020 but it was cancelled. If you attended, backed, or spoke at any of these four events you get an M on your badge. We have everyone&#8217;s email, but matching them to subscribers in the database is hit-or-miss, so if you think you should have this achievement, but don&#8217;t, let us know.</p>



<p class="wp-block-paragraph">The other is a small star for alumni/co-worker. We&#8217;re taking a very broad definition of alumni/co-worker. Obviously, we worked at the same company or you paid us or we paid you, it&#8217;s pretty clean-cut. Other situations include volunteer projects, open source projects or one-off special events. We considered those (as we remember them) in this definition too. If you think you should have a star, remind us why and we&#8217;ll add it.</p>



<p class="wp-block-paragraph">Over time we&#8217;ll add more achievements as we can think of them or justify their existence. They shouldn&#8217;t be impossible, but also shouldn&#8217;t be simple either. The achievement designs are unlikely to evolve over time or be affected by your subscription date.</p>



<p class="wp-block-paragraph">To keep the badges changing everything without re-inventing the entire design, we settled on a five-year cycle. Every fifth year, you get some upgrade. In year one, you start with a basalt column. For the next four years, one start is added. On your 6th year, you get the banner and the stars reset. The four following years are stars again, then on the 11th year you get the supporters. We reset the stars every 5 years and then count-up again. On the 16th year the supporters change color, on the 21st year the basalt column changes colors. Luckily, no one has been subscribed for more than 16 years. So we have 10 more years to figure-out what happens next and if this is worth continuing.</p>



<p class="wp-block-paragraph">You can visit the <a href="https://optional.is/newsletter/badge/">newsletter badge website</a> now to check what each year looks like as well as paste-in your email address to see your current badge, or sign-up to start. The link to your custom badge is pretty simple. It is a dynamic SVG that take your email address as a query parameter. We&#8217;ll use this in the footer of future email newsletter templates. Even if you revisit older saved newsletters, the image will be reloaded and show you the most current design. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #807 &#038; #808</title>
		<link>https://optional.is/required/2026/08/07/week-807-808/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 14:41:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[eps32]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[LEDs]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[webrtc]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10249</guid>

					<description><![CDATA[Another double weeknote where we explored two more iOS apps, continue to work with the LED project and winding down two more.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #807</h2>



<p class="wp-block-paragraph">Our WebRTC project has somewhat stalled. We meet normally on Fridays, and the consensus is that it&#8217;s moving too slowly between bug reports and fixes. We proposed to meet on Wednesdays for a short time, then Fridays to organize priorities. This week, they cancelled the Wednesday meeting (not sure why), then last minute cancelled the Friday meeting. Which is annoying because we spent some time over the previous weekend and Tuesday night to fix the immediate issues for review. Now we&#8217;re another week to two weeks behind.</p>



<p class="wp-block-paragraph">This week we&#8217;ve flashed the firmware on more devices, more times than we&#8217;ve done in the last few years combined. Two projects needed to update hardware. One being some security cameras, the other is an ESP32 to control some LEDs.</p>



<p class="wp-block-paragraph">The LED project continues, we&#8217;re trying to get any sort of feedback from the model builder about how they have installed the LEDs and what we can expect. We need some sort of ballpark on how many LEDs are installed, which impacts the power consumption and how many lines/universes were created, which affects the software an the pin connections to the ESP32.</p>



<p class="wp-block-paragraph">As part of the survey research company our current CEO is taking a leave of absences for health reasons. The rest of the team will setup and we&#8217;ll shuffle some responsibilities around, but it does mean both some extra work for us and also no new developments for the next school year.</p>



<p style="text-align: center"><a href="https://apps.apple.com/us/app/rest-music/id6759518339"><img decoding="async" src="https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/ad/da/a2/addaa231-8ab2-870d-7c08-df3a5b3ca7ae/Placeholder.mill/400x400bb-75.webp" style="height: 128px"/></a></p>



<p class="wp-block-paragraph">On Thursday we published an article about another internal app <a href="https://optional.is/required/2026/07/30/rest-music-player/">Rest Music</a>. We&#8217;ve made it public, it is our music app for the rest of our collection.</p>



<p class="wp-block-paragraph">As another late-night side project, we attempted to make a new camera app. We have a really good framework for experimenting with camera apps for the iPhone. In photography there is a concept of &#8220;Color Splash&#8221; where only 1 part of the image is in color and the rest is in black and white. It is completely possible todo this in post-production, but we really like the idea of producing these effects in camera so you can better frame your shot.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/08/spash-cam.jpg" alt="Splash Camera screenshots and samples"/></div>



<p class="wp-block-paragraph">Color Splash Camera was born. You can select a color hue range and in real-time, remove the saturation from all the pixels not in that range. It isn&#8217;t perfect, but as a first pass it works incredibly well.</p>



<h2 class="wp-block-heading">Week #808</h2>



<p class="wp-block-paragraph">Monday was a public holiday in Iceland. </p>



<p class="wp-block-paragraph">On Tuesday, we had a few meetings and started more planning. One project is now &#8220;un-officially&#8221; wrapped-up. The fixed we&#8217;re doing on the front-end are very minor.</p>



<p class="wp-block-paragraph">We also got an update on our LED project. We&#8217;ve spec&#8217;ed out some hardware and software with our 300 LED test. Today we got an updated on roughly the number of LEDs to expect and it is 1.4-1.5 orders of magnitude more. It&#8217;s not unconceivable we can handle that on the software side, but we need to go back to the drawing board on how we&#8217;re going to power and connect all these lines/universes. On Friday morning, the LED count was back down to only 1 order of magnitude more. Still no idea how many lines, but we&#8217;ll get those answers soon.</p>



<p class="wp-block-paragraph">It is August now and we&#8217;re oiling the machine and starting to turn the cranks to get the school survey system back up and running. Over the summer we added a few new features, updated the libraries and conducted general maintenance. Now it is time to deploy these changes and start to lockdown the releases before customers start using it.</p>



<p class="wp-block-paragraph">Along with our regular bank of surveys, we have an extra one we&#8217;re adding for a customer. This is very basic, but unique in that instead of test months, they need test weeks. It will be highly compressed schedule for the whole school year.</p>



<p class="wp-block-paragraph">On Friday we had a meeting about another project we&#8217;re trying to wrap-up. The client is hung-up on one tiny aspect, it is an important part of the product, but it is solvable in the long term. We convinced them to table that issue so we can work through all the rest in the meantime. That seemed to work and we&#8217;ll continue testing.</p>



<h2 class="wp-block-heading">Bric-à-brac</h2>



<p class="wp-block-paragraph">We were outside the office in downtown Reykjavik this week. We&#8217;re right under the flight path for the downtown airport. We got buzzed by the <a href="https://www.flyingbulls.at/en/">Red Bull Flying Bulls</a> P-38!</p>



<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/NEcBx_H_RV8?si=Ec8KJ8W5BS0OtLeg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">The P-38 is a very rare WWII plane worth millions of dollars. There are exhibitions to Greenland to try to dig out the ones that crash landed. No matter what the cost of the salvage it&#8217;s worth it.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
