<?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>Sat, 08 Aug 2026 12:17:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.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>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 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>
		<item>
		<title>Rest: Music Player</title>
		<link>https://optional.is/required/2026/07/30/rest-music-player/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 30 Jul 2026 12:21:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Music and Audiology]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[streaming]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=9671</guid>

					<description><![CDATA[We got tired of not finding tracks on streaming services, so we took it upon our selves to build an mp3 player app we can use to listen to the rest of our music collection.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For the last few years, we&#8217;ve been using Apple Music for streaming. It&#8217;s great to have access to a gigantic catalog of songs, but it come with its downsides. <a href="https://www.youtube.com/watch?v=grKn_xzu-5M">Kevin Kelly is a big proponent of Access over Ownership</a>. We tend to agree that access to transportation, access to healthcare, access to education and access to entertainment is cheaper and offers more options than trying to build or own it yourself.</p>



<p class="wp-block-paragraph">The major downsides of &#8216;renting&#8217; your music is that the current payout for artists is pretty bad and if you like something you need to pay for it. The current situation isn&#8217;t sustainable. The second issue is censorship/curation. Maybe your favorite track doesn&#8217;t exist on any streaming service, or it is a crazy DJ mashup or live recording? Thirdly, you are relying on streaming gatekeepers for your access &#8211; if for some EULA reason they decide to cut you off, you loose access to everything and then ownership becomes more important.</p>



<p class="wp-block-paragraph">We used to have loads of CDs and MP3s that we listened too that aren&#8217;t on any streaming service. (We have BBC radio episodes converted from RealAudio Streams!) To enjoy our old music library we needed a new music player that could play songs locally not streamed. If you search for &#8220;Offline music player&#8221; on the App Store you get plenty of results. Some are free, some are ad driven, some have in app purchases, others cost to download. Some look good, some less so.</p>



<p class="wp-block-paragraph">As a programmer, we decided to make our own Offline music player that suited our needs and looked and worked as we wanted. (Sure it probably would have been cheaper to pay for several apps than spend a single hour of our billable time on it, but then you&#8217;d never learn anything). Besides, the world already has enough love songs, but musicians keep writing them!</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1000" height="411" src="https://optional.is/required/wp-content/uploads/2026/07/rest-screenshots-1.jpg" alt="" class="wp-image-10242" srcset="https://optional.is/required/wp-content/uploads/2026/07/rest-screenshots-1.jpg 1000w, https://optional.is/required/wp-content/uploads/2026/07/rest-screenshots-1-300x123.jpg 300w, https://optional.is/required/wp-content/uploads/2026/07/rest-screenshots-1-768x316.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">To build the offline music player, we first made all the dummy screens we wanted with placeholder content. Next, we started to wire-up the connections to import, save and extract mp3 metadata. That replaced our placeholder text with real text. Then we actually got the music to play. Rinse, wash, repeat.</p>



<p class="wp-block-paragraph">We&#8217;re happy with the app and how it is performing. Occasionally we find edge-cases and fix those bugs.</p>



<p class="wp-block-paragraph">We called the app &#8220;Rest&#8221; since it is both the opposite of &#8220;Play&#8221; and a pun on &#8220;the rest of your music collection&#8221;. The songs that aren&#8217;t on streaming.</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"><a href="https://apps.apple.com/us/app/rest-music/id6759518339">Rest Music App is a free download for iOS</a>, so if you find it useful or find any bugs, drop us a line.</p>



<h2 class="wp-block-heading">Offline Mode</h2>



<p class="wp-block-paragraph">When you talk about having all your music downloaded outside of the streaming service you think about offline mode scenarios like long flights where Internet isn&#8217;t available.</p>



<p class="wp-block-paragraph">While that&#8217;s true, we find that Rest isn&#8217;t our offline music app, since you can take streaming songs offline too, it really is the &#8220;rest&#8221; of our music library that&#8217;s not available on streaming. That is more valuable than just being available offline.</p>



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



<p class="wp-block-paragraph">To get better feeling for what a Music app should have, we aped the built-in Music app from Apple as our template. Much like Hunter S. Thompson typing out a few pages of <em>The Great Gatsby</em> to get the feel and rhythm, we needed to know the workings of a Music app before we start to go all free-form Jazz. Now that we have the &#8216;table-stakes&#8217; in our working we can make it unique.</p>



<p class="wp-block-paragraph">The playback queue could use some love. When you toggle shuffle it does a good job of randomizing, but when you toggle it again it doesn&#8217;t really know how to go back to the original order.</p>



<p class="wp-block-paragraph">The Album artwork is only used as a display in playback. We can be more creative with what we have. Also our Playlist names and defaults when no artwork is available is simple some random gradient meshes. We should allow you to edit them if needed.</p>



<p class="wp-block-paragraph">These are all points we&#8217;ll address over time with more feedback, but we&#8217;re happy with the app and are using it on a frequent basis. Now that more people are aware of it, download it and use it, we&#8217;ll incorporate their feedback as well.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #805 &#038; #806</title>
		<link>https://optional.is/required/2026/07/24/week-805-806/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 24 Jul 2026 14:41:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[hubspot]]></category>
		<category><![CDATA[LED]]></category>
		<category><![CDATA[LEDs]]></category>
		<category><![CDATA[misseristal]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10194</guid>

					<description><![CDATA[A double weeknote of a pile of different small things all needing to be dealt with.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #805</h2>



<p class="wp-block-paragraph">We wrote about the Old Icelandic Month (kinda) of <em>Aukanætur</em>. This is a short 4 to 10 day week (depending if it is a leap week year) to keep the 12 months of 30 days each starting on the same weekday.</p>



<p class="wp-block-paragraph">It was a busy week, we touched on 9 different projects, sometimes all on the same day. It can be very exhausting, especially when we assumed a few of these were finishing. We&#8217;re really hoping that it is a transition period where some will be ending, others ramping-up, because we can&#8217;t have them overlap for too long!</p>



<p class="wp-block-paragraph">On the PETALS project, we found a bug that&#8217;s been plaguing us for a while. It was not code related, but DNS. To setup the CNAMEs on Heroku we use Cloudflare, but somewhere deep in their settings we also had something checked that would drop our x-headers when referring http to https causing some infinite redirects. For the longest time we had that auto-forwarding turned off. It works on the dev server and we were chasing ghosts for a long time on production. This week we finally pushed some Single Sign-On code for Google and Microsoft. Those required https and it worked on dev. When we pushed to production, it failed over and over. For days we reset API keys for the services, but it was never a code problem. Once we finally stumbled on the x-headers being striped, that lead us to Cloudflare. One checkbox later it was all working again as intended!</p>



<p class="wp-block-paragraph">For other projects this week we had to create a Hubspot syncing script, flash some custom camera firmware to get GPS working, looked into Gaussian splats, had another secret meeting to discuss JSON and rendering that output in XR, fixing bugs in a WebRTC client &#8211; which will probably come down to noise cancelling, and cleaned-up some SPSS and CSV exports to better match real survey data instead of database columns.</p>



<p class="wp-block-paragraph">In between all that, we managed to watch some of the World Cup games. </p>



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



<p class="wp-block-paragraph">This week we managed to only spread ourselves over 7 projects, down two from last week.</p>



<p class="wp-block-paragraph">We&#8217;re really trying to wrap-up two projects. With one, we need to debug some WebRTC echos. The issue is that we use the phone as your camera and mic and the TV as the playback speakers. Of course we always tested with headphones, but now without we&#8217;re getting some echoing feedback. That needs to get fixed before the customer will test it all. Then we can get the last round of bugs, fix them, then re-evaluate our roll in the project. </p>



<p class="wp-block-paragraph">The other we&#8217;re just trying to get some basic API stuff working with some hardware cameras. Somehow we got in the middle between the manufacturer and the team building the backend portal. We&#8217;re trying to get ourselves out, but first we need this API working to add one last small GPS map position to the app. Then we need to re-evaluate our roll in that project.</p>



<p class="wp-block-paragraph">Internally, we managed to get a few things done. We continue to work on our Newsletter badges (more on that later), we created a script to create a random forest of trees based on the <a href="https://www.isny.de/otlaicher/isny-and-aicher?lang=en">Isny designs by Oti Aicher</a> and continued to update our suite of <a href="https://optional.is/apps/cameras/">camera apps</a> in preparation for iOS27. We added the ability to make them shortcuts on the Lock Screen. We&#8217;re still tweaking some icons, but expect an update soon.</p>



<p class="wp-block-paragraph">We also continued with our LED experiments for a client project (more on that later). Our end is going well, but we&#8217;re coördinating with another company and it is hard to get a straight answer out of them! The only responses we get are things like &#8220;When it&#8217;s all wired-up, we&#8217;ll know how many LEDs and lines we used&#8221;. Which makes it hard to plan for the power supply or software!</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Misseristal: Aukanætur</title>
		<link>https://optional.is/required/2026/07/17/misseristal-aukanaetur/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 17 Jul 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Temporality]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[misseristal]]></category>
		<category><![CDATA[summer]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=5240</guid>

					<description><![CDATA[The Old Icelandic calendar needed to be converted to the Gregorian calendar, but the two systems were not exactly compatible. Sumarauki (or extra summer) is there to help rectify those pesky extra days and leap years.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><img decoding="async" style="width: 150px; float: right; padding-left: 15px" src="https://optional.is/required/wp-content/uploads/2021/07/misseristal-1.png" alt="M for Misseristal"/>The Old Icelandic Calendar, called <em>Misseristal</em> (translated as semester count), was started in the 10th century, continued until the 01700s, but its shadow lives on today.</p>



<p class="wp-block-paragraph">The calendar was designed to have exactly 12 months of 30 days. That&#8217;s 5.25 days short of a solar year.</p>



<p class="wp-block-paragraph">The other unique aspect of the Old Icelandic calendar is that the months always start on the same day of the week. <em>Sólmanuður</em> always starts on a Monday, <em>Heyannir</em> always starts on Sunday. To keep the months starting on the same day of the week, a 4 day month called <em>Aukanætur</em> (Extra Nights) is added in the middle of the 6 months of summer.</p>



<p class="wp-block-paragraph">That gets us to 364 days, which is divisible by 7 without a remainder. Now the drift each year is only 1.25 days from the Gregorian calendar. To make-up for this, every few years and additional seven days called <em>Sumarauki</em> are added to <em>Aukanætur</em>. This keeps the months consistently starting on the same day and rectifies the drift from the Gregorian calendar.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/calendar_grid.png" alt="Old Icelandic Calendar" /></div>



<p class="wp-block-paragraph">Next week is the start of <em>Aukanætur</em>. It is only 4 days long and there is no <em>Sumarauki</em> this year. This month also means we&#8217;re half-way through the six-month summer season. The days are still long, but they are getting shorter as we head towards the autumn equinox.</p>



<p class="wp-block-paragraph">While the Old Icelandic calendar is no longer used directly, there is still shadow of that old calendar in use in Iceland. For instance, <em>Sumardagurinn fyrsti</em> (The First Day of Summer) is a bank holiday and is always on a Thursday because it is connected to the Old Calendar format. The first day of <em>Gormánuður</em>, the start of the winter season, is becoming an event in Reykjavik, but rather than remind people of winter, it&#8217;s rebranded as <em>Kjötsúpudagurinn</em> (Meat-Soup Day). That is always on a Saturday. <em>Bóndadagur</em> (Men&#8217;s Day) and <em>Konudagur</em> (Women&#8217;s Day) holidays are both the first days of the Old Icelandic winter months of <em>Þorri</em> and <em>Góa</em>. Icelanders still celebrate <em>Þorri</em> with Þorramatur, a smorgasbord of pickled animal parts you&#8217;d never normally eat!</p>



<p class="wp-block-paragraph">Even though Iceland doesn&#8217;t use the Old Calendar on a daily basis, it is still used in many other ways.</p>



<p class="wp-block-paragraph">You can read more about <a href="https://optional.is/misseristal/">Misseristal and Download an ics calendar file</a> to add the Old Icelandic Calendar to your digital calendar.</p>



<p class="wp-block-paragraph">Each year we publish an <a href="https://github.com/optional-is/calendaring/tree/master/A0-Yearly">annual A0 wall calendar</a> and include the Old Icelandic Months along side the Gregorian ones. You can download the PDF and take it to any print shop to get your own A0 or A1 calendar poster.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #803 &#038; #804</title>
		<link>https://optional.is/required/2026/07/10/week-803-804/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 10 Jul 2026 20:02:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[LEDs]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[summer]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10177</guid>

					<description><![CDATA[Another double weeknote covering the summer tasks, meetings and lots of internal planning.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #803</h2>



<p class="wp-block-paragraph">On Tuesday, we got pulled into a cryptic meeting. No explanation, no obvious meeting invite title. We were told not everyone needed to be on the call and since it was the last day of the month, it felt like it could be trouble! It turns out, a new start-up needs our help. It is a crazy project, with a crazy deadline, but the end-customer is pretty interesting. Obviously, we can&#8217;t really talk about it, but maybe after September once it is in the clients hands, we can mention it?</p>



<p class="wp-block-paragraph">A few months ago, we took over the direct communications with the Australian projects. Our contact has gotten out of the way as the middle man and we&#8217;ve been working direct. We sent off an invoice a month or more ago and they set the pay date as the last possible day in our invoice. (That was our mistake being nice using a standard 30 net payment). As expected, when it came time for them to pay, because it was an international transfer, they had no idea what todo. It&#8217;s been 2 weeks now and we&#8217;re still trying to figure it all out. On their Friday, they sort of gave-up and wired us some money via Western Union. After a bunch of back and forth with the local post-office about what to bring and how to get the money, we finally went to collect it and they won&#8217;t release it to a company bank account. The Australians need to cancel the transaction and go back to sorting out via the bank. Luckily, this only happens the first time, then subsequent invoice should be much smoother.</p>



<p class="wp-block-paragraph">The office is finally getting a re-organization. As part of that we&#8217;ve purchased a new couch. There was a massive sale, 40% off, but it came with a bunch of gotchas! That deal was only on the showroom floor demo model, which is fine, and those don&#8217;t include home delivery. So we had to hire a delivery guy. Still saving plenty of money. When the couch arrived, it BARELY fit through the stair and hallway, but it&#8217;s in now and a much needed upgrade.</p>



<p class="wp-block-paragraph">On Thursday we published <a href="https://optional.is/required/2026/07/02/hunter-gatherers-and-agriculturalists/">Hunter Gatherers and Agriculturalists</a>. It is a look at some stats and assumptions about how many people in Iceland (and probably elsewhere) are freelancers working project-to-project rather than salaried team members.</p>



<p class="wp-block-paragraph">On Friday, we meet-up about our an LED wiring project. We worked on prototype hardware, ordered some parts and plan to fab a case. We have a demo box with some basic software running on the ESP32 firmware for us to start to test getting an iPad to send UDP commands to this box to control the LED strip. This will be a small project for the next few weeks.</p>



<p class="wp-block-paragraph">In our free time we also manage to clean-up a bit of code and soft released our <a href="https://apps.apple.com/us/app/rest-music/id6759518339">Rest Music</a> app. It is a free offline mp3 player for your iPhone or iPad. We&#8217;ll have a longer write-up soon, but we realized that we haven&#8217;t been listening to some older artists and songs because they are not on any streaming service. We own the mp3 files, so scratched an itch to be able to play them on our devices when we want. Hence the play on the name &#8220;Rest&#8221; of your music.</p>



<p class="wp-block-paragraph">On Saturday was the USA&#8217;s 250th Birthday.</p>



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



<p class="wp-block-paragraph">In preparations for the fall, we&#8217;ve fixing lots of little small things for our school surveys. No one is in school or taking surveys so this is the perfect opportunity to do all our maintenance. Upgrading libraries, servers, databases and code are all on the list to be ready for a September start.</p>



<p class="wp-block-paragraph">Our top secret project is taking shape. We didn&#8217;t have any tasks this week but some things are coming for sure. We also fix a bunch of UI/UX issues on another project.</p>



<p class="wp-block-paragraph">Several months ago, we pushed for one of our smaller ideas to be picked-up by the team. It was as a &#8216;B&#8217; project. That&#8217;s been going well and we check-in on the progress. Now it has grown past just our idea and prototype and is truly owned by the larger team. We still get to contribute in other ways. This week we offered up a few different difficult algorithms that we implemented on the backend and have been testing as a team. </p>



<p class="wp-block-paragraph">On Thursday we sent our <a href="https://optional.is/newsletter/02026Q3/">02026 Q3 Quarternotes newsletter</a>. You can read the archives online.</p>



<p class="wp-block-paragraph">Friday we had a meeting about yet another project. This one is in the final stages. We have a few bugs to fix, but generally the client is bringing another person onboard to help push this over the line and figure out exactly what&#8217;s the next steps for this project.</p>



<p class="wp-block-paragraph">The project we started 7-8 months back in <a href="https://optional.is/required/2025/09/05/week-759-760/">Week #759</a> to just re-wire an API. It is still ongoing and was a total re-engineering task. Luckily that was not on us. This project too is also in its last phase for us. They are having meeting and planning some fundraising which would start to build a team and we&#8217;d extricate ourselves from the project. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hunter Gatherers and Agriculturalists</title>
		<link>https://optional.is/required/2026/07/02/hunter-gatherers-and-agriculturalists/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[agriculturalist]]></category>
		<category><![CDATA[freelancer]]></category>
		<category><![CDATA[hunter gatherer]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[projects]]></category>
		<guid isPermaLink="false">http://optional.is/required/?p=3183</guid>

					<description><![CDATA[There was a seismic shift in humanity when we changed from Hunter Gathers to Agriculturalists. Today we still have plenty of hunter gatherers tracking out the next project rather than meal.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During the Neolithic Era, around 12,000 years ago, humans started to switch from hunting and  gathering to agriculture and farming. As time passed and we moved into the Industrial Revolution through to the Anthropocene, we sort of assumed that hunter gatherer way of life is long gone. While for most people, we&#8217;re not actively hunting or gathering food, many of us are still in that mindset when it comes to work!</p>



<p class="wp-block-paragraph">Are you a Hunter Gatherer or an Agriculturalist? Maybe neither, but you work for one?</p>



<p class="wp-block-paragraph">Hunter Gatherers are always on the move to try and find their next meal. Sometimes it is big project, sometimes small. Projects come in waves and seasons, and they need to hunt and much as they can all the time, because they know there will be feast and famine times. When is the question. Being a Hunter Gatherer can be very rewarding, you spend time on your own and can pick and choose your projects at will.</p>



<p class="wp-block-paragraph">Agriculturalists have a more steady stream of work. They spent the time and effort to build their own products and reap the benefits. Having your own farm producing for you can lessen the feast and famine that Hunter Gatherers experience, but by no means are you safe. Other Agriculturalists could create bigger or better farms or sell their goods for cheaper. Not to mention you might be growing something that no one wants, which means it is hard to sell to make a living. Agriculturalists have the ability to scale-up their team and product much better than a Hunter Gatherer, but they are a commodity and that is always taken into consideration when selling.</p>



<p class="wp-block-paragraph">Maybe you are neither a Hunter Gatherer nor own a farm, but you will either be part of a Hunter Gathering team or work for an Agriculturalist. Both have their benefits. When you are an employee it isn&#8217;t your decision about what to hunt or grow, you just turn up to help and are doled out a portion for your effort. You don&#8217;t get to call the shots, but you tend to get a meal ticket with less stress.</p>



<p class="wp-block-paragraph">Working on a farm can be easy or hard. You put in your time and if what you sell is in demand, then times are good. Job security is solid and the farm becomes a cash cow. The downside is that you are just another farmhand clocking-in and working for someone else&#8217;s vision.</p>



<p class="wp-block-paragraph">Being part of a Hunter Gatherer team means that every day could be a different project, a different location and maybe different collaboration with team members. This little tribe can become infamous for their work and make very good money in a short amount of time, but the risks are high. As a team member you will get your cut of the reward, but only if there is a reward. If you go hungry for enough time, the Hunter Gatherer tribe will disband. You could loose out big, not having any rewards for a while.</p>



<p class="wp-block-paragraph">Neither of these situations are ideal, but over time the entropy of Hunter Gatherers tends to be less nomadic and chaotic and eventually settled down to Agriculturalists. With consolidation there are less and less farm owners or chieftains and more and more employees working for large scale farms or tribes.</p>



<p class="wp-block-paragraph">In Iceland, Hagstofa Íslands has an online tool statice.is to get lots of data about the country. We pulled out the data set <strong>Active enterprises broken down by NACE classification and persons employed size classes 2003-2020</strong>.</p>



<p class="wp-block-paragraph">From that we created a series of charts to show how many &#8216;small&#8217; companies, most likely Hunter Gatherers versus larger companies, Agriculturalists.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/companies_by_employee_size.png" alt="A bar chart showing the number of companies with various employee sizes" /></div>



<p class="wp-block-paragraph"> We can see that there are 14,806 companies (on average each year between 02003-02020) with only 1 employee, 4603 with 2-4 employees, 1637 with 5-9 employees and 1682 with 10+ employees. That looks a lot like a power law distribution! With the small exception of slightly more 10+ employee companies.</p>



<p class="wp-block-paragraph">How big are the 10+ companies on average? We charted the data to see how many employees there actually are per company.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/avg_employees_by_company_size.png" alt="A bar chart that shows the average number of employees in each size cluster" /></div>



<p class="wp-block-paragraph">It turns out they are big! With an average of 48 employees. That&#8217;s also probably skewed since some organizations like schools, enterprise tech companies, telcos, government organizations, fisheries, and tourism companies probably employ hundreds of people, but there are few of them.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/employees_by_company_size-1.png" alt="A bar chart showing the number of people employed in each company size bucket"/></div>



<p class="wp-block-paragraph">We can chart the actual number of people employed in each bucket to better see that the 10+ companies (who have roughly the same number as 5-9 person companies), account for nearly 8x the people.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/07/employees_by_company_large_small.png" alt="A stacked bar chart and pie chart both representing the number of large companies versus small" /></div>



<p class="wp-block-paragraph">When we compare small companies (0-9 employees) versus large companies (10+ employees) we can see that it is about a 1/3 to 2/3 split. Those large companies are certainly not Hunter Gatherers in our sense of employment. You might describe the whole fishing industry as exactly hunting and gathering, but the workers are paid salary (or shares) from the mother company, they are not looking for the next project independently they have a singular common goal.</p>



<p class="wp-block-paragraph">That leaves us with the 1/3 of companies that are less than 10 people. Many of those will be small business; shops, restaurants, etc. Those are not project-based. Also, there are a lot of 0 person companies. These are inactive or holding companies for &#8220;tax reasons&#8221;. 22.8% of people work in a company 4 people or smaller (but there could be some overlap if you own/work for multiple small companies).</p>



<p class="wp-block-paragraph">If we had to estimate, we&#8217;d probably say 5-10% employees are actual project Hunter Gatherers. These are the folks who are single or super small teams whose paycheck directly depends on how much work they bring in. The other 90-95% of people are Agriculturalists who are paid salary from a company for their work. (These numbers seem very distorted since we know lots of artists, musicians and independent contractors, but that might be perception bias? We&#8217;re not having lunch with a 600 person construction company)</p>



<p class="wp-block-paragraph">Even in companies that are not Hunter Gatherers, there are still people in that company whose job it is to find projects, win bids, write grants and close sales. They act as Hunter Gatherers but they have a guaranteed safety net of a fixed salary (or maybe percentage of sales). A true Hunter Gatherer is reliant on only their ability to keep the bank account fat enough to make it through leaner times.</p>



<p class="wp-block-paragraph">(optional.is) is small, we are very much a Hunter Gatherer type of company, but we are always testing and looking for Agricultural style revenue streams. Having a good blend of passive revenue; book sales, subscriptions, etc., monthly retainers, plus the exciting big, infrequent, well-paid projects is a nice mix we like.</p>



<p class="wp-block-paragraph">There are certainly advantages and disadvantages to both rolls. Neither one is better or worse than the other. There are many factors in your personality, time in life, personal situations and more that dictate if one roll is more suited to you than another.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #801 &#038; #802</title>
		<link>https://optional.is/required/2026/06/26/week-801-802/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 26 Jun 2026 15:51:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[PoD]]></category>
		<category><![CDATA[print on demand]]></category>
		<category><![CDATA[time tracking]]></category>
		<category><![CDATA[unoffice hours]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10011</guid>

					<description><![CDATA[A double weekenote, but the second week we were mostly "officially" closed. We continue to almost, wrap-up some projects and starting to plan and invest in others.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #801</h2>



<p class="wp-block-paragraph">We offer <a href="https://unofficehours.com">UnOffice Hours</a>. It&#8217;s a 30 minute slot for anyone to book and chat with us about anything. On Monday, we had a lovely chat. It&#8217;s been awhile since a random person reached out, and it was great to meet some new folks and hear what they&#8217;re up too and offer any advice we can.</p>



<p class="wp-block-paragraph">One of the by-products of a lot of experiments, investigations and tests is that we have a bunch of un-used ideas and artwork. This week we looked into Print On Demand services. Maybe we can breathe a little life into some old designs without any commitments. We are in the early stages of just running some of the numbers to make sure we aren&#8217;t loosing any money in listing/seller fees, processing fees and taxes. </p>



<p class="wp-block-paragraph">(I think) We shipped one prototype project this week! Looking back at our week notes, we first mention this in <a href="https://optional.is/required/2025/12/12/week-773-774/">Week #773</a> in early December 02025. Eight months later, we have &#8216;finished&#8217; our part of the development, now it is up to them to work on the slide deck, find investors and raise money, build a team and productize the idea. Our portion was just the iOS app, there is a whole other backend image detection system that we didn&#8217;t touch. We wish them luck and will continue to help in the transition, but we don&#8217;t foresee any further development.</p>



<p class="wp-block-paragraph">Wednesday was Icelandic National Day (<em>Þjóðhátíðardagurinn</em>). The office was mostly closed, but we still had to answer a few messages here and there from our international projects.</p>



<p class="wp-block-paragraph">We managed to meet-up with one team using our Time Tracking software and got some feedback about a few things that were broken and could use some improvements. We were able to cover most everything easily and deployed the updates.</p>



<p class="wp-block-paragraph">The WebRTC project meeting turned into just an asynchronous meeting with a few bugs and improvements. We&#8217;re also getting a new project manager on their side to take-over pushing this project over the finish line as we get more people onboarded to test.</p>



<p class="wp-block-paragraph">On Friday, we finished-up a few tasks in the morning and then closed the office for Week #802.</p>



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



<p class="wp-block-paragraph">Office was closed this week for some much needed travel and research.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Worldmapper VR</title>
		<link>https://optional.is/required/2026/06/19/worldmapper-vr/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 19 Jun 2026 11:11:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Cartography]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[AVP]]></category>
		<category><![CDATA[Háskóli Íslands]]></category>
		<category><![CDATA[HÍ]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[vision pro]]></category>
		<category><![CDATA[worldmapper]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=9922</guid>

					<description><![CDATA[The Worldmapper app is now available for the Vision Pro.]]></description>
										<content:encoded><![CDATA[
<div class="banner"><a href="https://apps.apple.com/us/app/worldmapper/id6754181237"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/06/avp-worldmapper.jpg" alt="Worldmapper in the Apple Vision Pro"/></a></div>



<p class="wp-block-paragraph">We&#8217;ve cleaned up the Worldmapper app and have released it for anyone to download. <a href="https://apps.apple.com/us/app/worldmapper/id6754181237">Download Worldmapper for the Vision Pro</a>.</p>



<p class="wp-block-paragraph">Previously, we wrote about <a href="https://optional.is/required/2026/02/12/wylds-great-vr-globe/">Wyld&#8217;s Great Globe</a> and how we adapted that concept into an Apple Vision Pro app with the help of team from <a href="http://worldmapper.org">Worldmapper.org</a></p>



<p class="wp-block-paragraph">Just because the app is published doesn&#8217;t mean it is done. We will continue to evolve the app over time with new maps will be added and old ones updated. </p>



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



<p class="wp-block-paragraph">The goal of the project is to be part of the larger outreach program at the University of Iceland (<em>Háskóli Íslands</em>). Working with the Worldmapper team, we took some of their equirectilinear projection maps and worked to display them in a sphere. This produces maps with no distortion &#8211; the bane of any 2D map projection.</p>



<p class="wp-block-paragraph">For the Meta Quests, we created a 5K looping video of the <a href="https://worldmapper.org/natures-heartbeat/">Nature&#8217;s Heartbeat</a>. The video loads in various spherical video players as if you were in the center of the Earth. It is the same benefits as Wyld&#8217;s Great Globe, it removes all the distortion from a regular 2D map projection and puts you front and center.</p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/06/worldmapper-heartbeat.jpg" alt="Frames from the Worldmapper Nature's Heartbeat video" /><figcaption><a href="https://worldmapper.org/natures-heartbeat/">Worldmapper.org | Nature&#8217;s Heartbeat</a></figcaption></figure>



<p class="wp-block-paragraph">For their outreach events they have nice gradient of interactivity based on your skill and knowledge. It starts with paper craft. They have 2D maps that you can cut out, fold and glue into cubes and other 3D shapes. Next, the traditional screens you can view, which quickly moves to larger, touch screens so you can explore the data yourself. Now they have moved into Virtual Reality with a basic looping spherical video. This takes no effort to put on a Meta Quest headset, watch a few seconds of a looping video, enjoy and move on.</p>



<p class="wp-block-paragraph">The most recent step at the top of gradient of interactivity is the Vision Pro and that&#8217;s where we come in. Our experience with Virtual Reality and the Vision Pro joined with Worldmapper&#8217;s depth of content and digital experimentation were a great fit.</p>



<p class="wp-block-paragraph">We decided that the Apple Vision Pro would be the premium experience. There is a hefty initial setup for anyone trying the device. You have to calibrate your eyes and hands for the system to work with gestures. Due to the time it takes to setup and the UI/interaction learning curve, we weren&#8217;t just going to show a 1-minute looping video. It needed to be a place to explore and take it the experience at your own pace.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/06/cartogram-menu.jpg" alt="Screenshot of the menu inside the Apple Vision Pro"/></div>



<p class="wp-block-paragraph">To start with, Worldmapper pulled out 30 cartograms in a series of categories that we put into the menu. When you are in the app you are completely surrounded by the Black Marble photo from NASA. This allows you to get your bearings of where everything is located. Since technically it is inverted if you were really at the center of the earth you&#8217;d see the inside of the Earth&#8217;s Crust, but we keep the map more recognizable. As the next jumping off point, we convert the photo to an illustration of country boundaries, then allow you to select a topic, like number of horses, and distort the landmasses according to a different variable than square kilometers.</p>



<p class="wp-block-paragraph">To keep things simple, all the maps are embedded in the app, which makes it larger. In the future, we&#8217;d like to create an admin tool that allows the Worldmapper team to swap maps without needed to re-submit the app for approval. The downside of this, is we need to cache-up all the images incase the destination where the outreach is happening doesn&#8217;t have a reliable internet connection.</p>



<p class="wp-block-paragraph">We look forward to collaborating more with Worldmapper and the University of Iceland on these outreach projects.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Week #799 &#038; #800</title>
		<link>https://optional.is/required/2026/06/12/week-799-800/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 12:21:00 +0000</pubDate>
				<category><![CDATA[Briefs]]></category>
		<category><![CDATA[Weeknotes]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[TIL]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=10004</guid>

					<description><![CDATA[A double weeknote where we are wrapping-up and consolidating projects.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Week #799</h2>



<p class="wp-block-paragraph">This week we got the green light on a project we&#8217;ve been hovering around for a while. We went down to Miami a few weeks ago to demo the prototype, but this week they finally decided to sign the contract with us to productize the software. We&#8217;re on the hook now for two years of support and production, but in reality we have a short deadline and then the long-tail of bug fixes, optimizations and more.</p>



<p class="wp-block-paragraph">As part of this project, we&#8217;ve move all the code for the app and website into GitHub. From there we&#8217;ve hooked-up auto-building Xcode cloud and Heroku deploys. Now we can use the Issue tracker, from which we can create PRs, merge the fixes and deploy automatically. This means any small text change can be done via the GitHub web interface and be live in minutes.</p>



<p class="wp-block-paragraph">We continue to support a new game idea with a few meetings a week. Usually a Monday kickoff planning with the Engineering team and/or maybe the whole team. Then a Friday show-and-tell. On Friday, we also met with the stakeholders to figure out both the IP licensing and potential markets for the game. For these game projects, we&#8217;re trying to run an A-team and B-team. (We need new names) The idea wasn&#8217;t A-quality and B-quality, it was more large scope and small scope. Running a B-project allowed for junior developers/designers to cut their team on professional projects with a smaller, more manageable scope. This project is a shorter B-project between A-projects, which we need to be careful doesn&#8217;t grow too much in scope into an A-project!</p>



<p class="wp-block-paragraph">On Thursday, we also published an article about our <a href="https://optional.is/required/2026/06/04/til-db/">TIL DB</a> (Today I Learnt DataBase).</p>



<p class="wp-block-paragraph">We also added the &#8220;Fluxcapacitor&#8221; section to the footer. This look at past published articles and tries to resurface other articles written around the current time in the past.</p>



<p class="wp-block-paragraph">Two other projects we have in the background we&#8217;re reaching a logical conclusion. For the older project, we&#8217;ve fixed all the bugs, completed all the tasks and now it&#8217;s moving over to the friends and family tester phase. We&#8217;ll get some feedback from that and move over to UI/UX clean-up, any missing functionality or changes, and see what the next steps will be. Maybe they will go raise some money and build-up a team of their own.</p>



<p class="wp-block-paragraph">The newer project, which we were only suppose to come-in and swap and API, ended-up sucking us in for month with a whole new iOS app(s) connected to a completely new backend. We are pretty much done, now the backend needs to be stable and work for them to pitch this to investors and build-up their own team.</p>



<p class="wp-block-paragraph">See a pattern here? We like to come in, build-up the prototype and help them raise money and build a team. We&#8217;ve done this successfully 2-3 other times now with these two additional ones in the pipeline.</p>



<p class="wp-block-paragraph">About a year ago, we were approached about a project, but the investors turned it down. After mulling on it for a year, we wanted to revisit it. The time to prototype and level of risk are much less. Turns out they went and built it anyway without us and it flopped.</p>



<p class="wp-block-paragraph">Maybe we dodged a headache, maybe we could have done better, maybe we should listen to the investors. Tech feels like 99% of the way to solve the problem, but sometimes it’s less than 50%.</p>



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



<p class="wp-block-paragraph">It is our 800th week since the company was founded&#8230; or was it? On such an occasion we went to look back and our history. The original Optional SLF company had a kennitala of 470211-1130 which is DD-MM-YYYY and a checksum. But since people use 1-31, companies always started with a 4, 5 or 6 (you subtract 3 to get the real date). We&#8217;ve been celebrating and counting since the 7th of February 02011. That gets us to week #800 this week. But we then went to <a href="https://www.skatturinn.is/fyrirtaekjaskra/leit/kennitala/4702111130">Fyrirtækiskrá</a> and looked-up the original company and we sent in the paperwork on the 14th of December 02010. It took nearly 2 months to process! (We probably were missing some paperwork or forgot to sign something)</p>



<p class="wp-block-paragraph">The current incarnation of the company (switching from full-liability too a limited liability company) had to restart our company id and that was registered on the 4th of May 2021.</p>



<p class="wp-block-paragraph">If we conduct our own &#8220;Julian to Gregorian&#8221; calendar adjustment this is actually week #806!</p>



<p class="wp-block-paragraph">Over the weekend, between Week #799 &amp; #800, was the Icelandic holiday Sjómannadagurinn (Fisherman&#8217;s day). We took full advantage of the good weather and went down to the harbor.</p>



<figure class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/06/sjomannadagurinn.jpg" alt="Collage of images from fisherman's day" /><figcaption>We&#8217;re gonna need a bigger boat.</figcaption></figure>



<p class="wp-block-paragraph">This week was designed to get into a meeting groove as summer approaches. We met about our game project idea a few times this week.</p>



<p class="wp-block-paragraph">We also now have weekly meetings about the larger software project. Partly to get feedback from the team and users, but also to make sure we&#8217;re on course to hit the deadlines. (Strangely after last week&#8217;s kickoff meeting, they haven&#8217;t found a time when everyone can meet.)</p>



<p class="wp-block-paragraph">Then we had a meeting about the Icelandic SSO tool that was deprecated a few years ago. We&#8217;ve been working with another company who is implementing the replacement. Something we&#8217;ve been told will just take a few hours of work, somehow has been put off for years! We are keen to close this project, but want to hand it off in a working state.</p>



<p class="wp-block-paragraph">This week felt like shouting into the abyss. We sent a bunch of emails, messages and meeting requests only to be ignored. Sure, people are busy, but at the same time they asked us to do some work and it&#8217;s hard when we don&#8217;t get a response.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TIL DB</title>
		<link>https://optional.is/required/2026/06/04/til-db/</link>
		
		<dc:creator><![CDATA[optional Bot]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 13:31:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[Temporality]]></category>
		<category><![CDATA[Visualizations]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[dirk]]></category>
		<category><![CDATA[headlines]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[TIL]]></category>
		<category><![CDATA[visualisations]]></category>
		<guid isPermaLink="false">https://optional.is/required/?p=9748</guid>

					<description><![CDATA[The Today I Learned lists have now been moved into a database to make it easier to query, pivot and explore.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Introducing the <em>Today I Learnt Database</em>.</p>



<p class="wp-block-paragraph">Over the last few years, each day we&#8217;ve been collecting a few &#8216;interesting&#8217; headlines. We dropped them into a text file and at the end of the year went through everything, converted it to HTML and added some tags. It was an interest, but long process. We always had the intentions of doing something with these headlines!</p>



<p class="wp-block-paragraph">We were fortunate enough to attend NewsFoo a few times. At one event, we met Ben Huh who was starting a new way to consume News called &#8220;<a href="https://www.theguardian.com/media/organgrinder/2011/jun/06/cheesburger-ben-huh-newspapers-open-source">The Moby Dick Project</a>&#8220;. You can <a href="https://web.archive.org/web/20111108132147/http://www.benhuh.com/2011/05/23/why-are-we-still-consuming-the-news-like-its-1899/">read more about it on Archive.org</a> since the original post is gone. This eventually spun out to become Circa, which closed and then re-opened under new management.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/05/moby-dick-project-sketches.gif" alt="Wireframes of the Moby Dick Project, a multicolumn interface for news stories" /></div>



<p class="wp-block-paragraph">The original concept was a sort of three column view with each column changing in speed and curation. The first might be the news story, the second related events and the third comments. We remember it being described as consuming your Vegetables and Sweets! </p>



<p class="wp-block-paragraph">What struck a cord with us was that there are plenty of stories that you say to yourself &#8220;Hey remember when that happened, did they ever find out why?&#8221;. Traditional news websites seem to be setup to show you articles and are not great at stringing things together. Wikipedia isn&#8217;t bad, but the content keeps getting written over and it is objective as opposed to user-generated comments.</p>



<aside><p>Back in 02009 (around the time we heard about Project Moby Dick), the Air France Flight 447 had unexplainably crashed in the Atlantic flying from Rio de Janeiro, Brazil, to Paris. It was only recently in 02026 that Airbus was found at fault.</p><p>That story took 17 years to develop and still might not be over.</p></aside>



<p class="wp-block-paragraph">When we started to collect our headlines, we wanted a way to track long story arcs. If we saw a headline in January, then again maybe 4 to 6 weeks later with something more or even a resolution, we want a way to thread them together. In our world of headline click-bait, we rarely get to see longer trends. That is one of the goals we wanted to achieve with our TIL headlines project.</p>



<p class="wp-block-paragraph">Todo all this, we needed to move it out of these text articles into something more dynamic and clickable. Something that could continue to evolve and have old headlines become richer with the addition of new.</p>



<p class="wp-block-paragraph">In our spare time, we converted the old HTML and tags into SQL statements and loaded everything up in to a relational database. That allowed us to make dynamic connections. We can browse by year, month, day or tag. You can search and filter and we can get frequency counts over time to show the number of mentions of a specific topic.</p>



<p class="wp-block-paragraph"><strong>You can browse the TIL DB at <a href="https://til.optional.is">https://til.optional.is</a></strong></p>



<p class="wp-block-paragraph">What we&#8217;ve done so far are &#8220;table stakes&#8221;. It&#8217;s what you would expect from linked data: the ability to browse, pivot between topics and dates.</p>



<p class="wp-block-paragraph">Our goal was to take it one step further. Back in 01998, Matt Webb created <em>DIRK: The fundamental connectedness of all things</em>. It was an RDF store of assertions in the form of &#8220;Subject Predicate Object&#8221;.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/05/archive-org-dirk-2002.png" alt="Screenshot of DIRK from 02002" /></div>



<p class="wp-block-paragraph">For instance: <em>Reykjavik</em> <span style="text-decoration: underline;">is in</span> <em>Iceland</em>. <em>Iceland</em> <span style="text-decoration: underline;">is in</span> <em>Europe</em>. Therefore, we can conclude <em>Reykjavik</em> <span style="text-decoration: underline;">is in</span> <em>Europe</em>. If you string enough of these assertions together you can get to some interesting connected places. To make our TIL DB more interesting, we start to write some of our own assertions based on the existing tags we put on the headlines. This adds more value to the tags and focuses our attention on what tags to use.</p>



<p class="wp-block-paragraph">For instance: <em>Betty White, beloved and trailblazing actress, dies at 99</em> was tagged <strong>obituary, tv, &nbsp;Betty White</strong>. We can use that to make a few assertions:  <strong>Betty White</strong>&nbsp;is connected to&nbsp;<strong>obituary</strong>&nbsp;because&nbsp;<em>she died at the age 99.</em> <strong>Betty White</strong>&nbsp;is connected to&nbsp;<strong>tv</strong>&nbsp;because&nbsp;<em>she stared in the Golden Girls.</em></p>



<p class="wp-block-paragraph">This allows us to see how <strong>Betty White</strong> is connected to other tags through <strong>tv</strong> or <strong>obituary</strong> and why. Much like DIRK, we can click through various assertions, but we are trying to tie ours to facts in headlines.</p>



<p class="wp-block-paragraph">We built a web form to connect any two tags in our system so you can see the steps between them. It is a slow process which will grow worse over time with more and more content. The fun is seeing how two random terms are related and how few steps it takes!</p>



<h2 class="wp-block-heading">Just use AI</h2>



<p class="wp-block-paragraph">Artificial Intelligence is certainly the buzzword <em>soup de jour</em> these days. So let&#8217;s look at how and where AI could be useful.</p>



<p class="wp-block-paragraph">We are curating our headlines that we save based on lots of factors: importance, likelihood of a longer arc, non-reoccurring events and frequency. Every fall we get a new iPhone, every winter it snows; those are not headlines worth collecting for longer arcs. The Ukrainian-Russian war is still on going, and we&#8217;re not saving headlines of daily attacks &#8211; that&#8217;s (sadly) now background noise. The curation will stick with us for now.</p>



<p class="wp-block-paragraph">Tagging is a tedious task that we&#8217;ve asked AI to help with. We have a giant json dump of headlines and tags with their corresponding database ids. The AI can ingest that easily and try to make some recommendations. That works for most things, it has some false-positives, but also feels a bit like it hits a local maximum. It heavily recommends existing tags and isn&#8217;t great at making new ones. It doesn&#8217;t &#8220;know&#8221; (it&#8217;s just a statistical machine) what new tags are useful or important.</p>



<p class="wp-block-paragraph">We tried to get AI to write short assertions and it completely fell apart. The headlines are so short and there is extra, external knowledge that the AI doesn&#8217;t have. Their suggestions were longer than the headline and often just wrong. That&#8217;s a lost cause.</p>



<p class="wp-block-paragraph">The two key insights people have told us about AI is that: </p>



<ol class="wp-block-list">
<li>It doesn&#8217;t know anything current. It is not a web crawler so don&#8217;t ask it about current events (like today&#8217;s headlines!)</li>



<li>Rather than ask it to do something, ask it to write a script to do that. Then it is repeatable and deterministic outside of their AI ecosystem.</li>
</ol>



<p class="wp-block-paragraph">We do use script to convert our text file to sql statements and scripts to export/dump the database into json formats. AI could help write these scripts, but that&#8217;s just fancy auto-complete/spell-check. There is no &#8220;AI&#8221; in the product.</p>



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



<p class="wp-block-paragraph">Everyday we continue to collect headlines and each month we try to import them into the database with tags. We are very far behind on the assertions. We need to make ourselves a small tool that just shows us a few un-asserted tags each day and we take smaller nibbles to add more metadata.</p>



<p class="wp-block-paragraph">We&#8217;ve also considered away to make it more wiki-like and allow anyone to edit (or suggest) changes to tags and assertions. We&#8217;re not sure if the effort to build it compared to the audience actually contributing  is worth it right now.</p>



<div class="banner"><img decoding="async" src="https://optional.is/required/wp-content/uploads/2026/05/til-db-nyc-tag.png" alt="Screenshot of the frequency of the tag NYC over time and related tags" /></div>



<p class="wp-block-paragraph">There are probably some smaller statistical tasks which we can add. Right now we chart tag frequency by month and you get a really good overview of trending topics. There are certainly more statical functions we can add like standard deviation, time between headlines, etc. Our advanced search allows for selecting a few tags and only showing headlines with ALL those tags (an AND search). We could try to do more frequency analysis on these 2 and 3 tag combinations.</p>



<p class="wp-block-paragraph">The bare minimum is for us to continue to collect headlines. Once we have the data we can always add more metadata at a later date.</p>



<p class="wp-block-paragraph"><strong>Go and explore the TIL DB at <a href="https://til.optional.is">https://til.optional.is</a></strong> see what&#8217;s missing and let us know what can be improved.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
