<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>iljitsch.com - tech (en)</title>
<link>http://tech.iljitsch.com/en/</link>
<language>en</language>
<description>Iljitsch van Beijnum's tech posts (en)</description>

<item>
  <title>→ Thoughts and Observations Regarding Apple Creator Studio (well, really the state of Apple software and design)</title>
  <description>John Gruber wrote a long article on the current state of Apple&apos;s software, graphical and user interface design. The most salient part, quoted from somewhere else:
&lt;p&gt;

&lt;blockquote&gt;If you put the Apple icons in reverse it looks like the portfolio of someone getting really really good at icon design.&lt;/blockquote&gt;
&lt;p&gt;

&lt;img src=&quot;https://daringfireball.net/misc/2026/01/pages-icons-benjamin-buttons.jpeg&quot; width=540 height=146&gt;
&lt;p&gt;

Sick burn.
&lt;p&gt;

I saw some of this already happening with the iWork suite &lt;a href=&quot;https://arstechnica.com/gadgets/2013/11/review-the-productivity-suite-formerly-known-as-iwork/&quot;&gt;back in 2013&lt;/a&gt;...</description>
  <link>https://daringfireball.net/2026/01/thoughts_and_observations_regarding_apple_creator_studio</link>
  <guid isPermaLink="true">https://daringfireball.net/2026/01/thoughts_and_observations_regarding_apple_creator_studio</guid>
  <pubDate>Sun, 18 Jan 2026 15:28:21 GMT</pubDate>
</item>

<item>
  <title>MySQL Unicode weirdness</title>
  <description>After looking at the SQLite Unicode behavior, it&apos;s now time to do the same for MySQL. Coincidentally, I&apos;m currently migrating some old databases that were created in the very early 2000s to a more modern environment. I think those old databases were from the MySQL 3.x days, before MySQL gained any sort of Unicode support. Those old tables are thus still in the latin1 (ISO 8859-1) character set.
&lt;p&gt;

For a long time that worked fine for me as these tables contain data in English and Dutch, and Dutch only needs a few accents, which are all present in Latin 1. However... at some point it started becoming more convenient to use UTF-8 for the text in those databases. So I did. I just never told MySQL about the switch.
&lt;p&gt;

In hindsight, that was not a terrible decision, as it avoided complexities at a time when UTF-8 support was still immature. But these days, there&apos;s really no excuse to do anything other than make an entire workflow UTF-8 clean, barring any showstoppers.
&lt;p&gt;

So I migrated an old table to the test environment for the new system. And got some really weird results: on web pages &quot;CO₂&quot; showed up as &quot;COâ‚‚&quot;, but in MySQL it showed up correct, be it that the number of characters is off (I only got 6 while I specified 8):
&lt;p&gt;

&lt;pre class=wrap&gt;
mysql&gt; select substr(article, 1587, 8) from muart where id = 753;
&lt;/pre&gt;
&lt;pre&gt;
+--------------------------+
| substr(article, 1587, 8) |
+--------------------------+
| CO₂ ui                 |
+--------------------------+
&lt;/pre&gt;
&lt;p&gt;

Further digging by looking at the raw data:
&lt;p&gt;

&lt;pre class=wrap&gt;
mysql&gt; select hex(substr(article, 1587, 8)) from muart where id = 753;
&lt;/pre&gt;
&lt;pre&gt;
+-------------------------------+
| hex(substr(article, 1587, 8)) |
+-------------------------------+
| 434FC3A2E2809AE2809A207569    |
+-------------------------------+
&lt;/pre&gt;
&lt;p&gt;

Fortunately, it&apos;s not necessary to decode this manually, there is an &lt;a href=&quot;https://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder&quot;&gt;UTF-8 Decoder&lt;/a&gt; web tool for that. The decoder shows that COâ‚‚ is correct. So why is MySQL showing me CO₂? That&apos;s a problem I hadn&apos;t heard of before, but is apparently not uncommon:
&lt;p&gt;

Double-encoded UTF-8.
&lt;p&gt;

This happens when you take UTF-8, such as &quot;CO₂&quot;, and then pretend it&apos;s another encoding (usually Latin 1) and convert that to UTF-8. So what had happened is that as I was importing my data in MySQL, the MySQL command line client would send UTF-8 to the MySQL server process, but the server would think that was Latin 1 and convert it to UTF-8. Then when I did a query, the server would convert the UTF-8 back to what it thought was Latin 1 for the convenience of the client, and the client then showed this as UTF-8 so everything &lt;em&gt;looked&lt;/em&gt; good, but was actually stored in the database incorrectly.
&lt;p&gt;

Fortunately, the two related problems were both easy enough to fix. First, make sure the client and server agree on the character encoding. Let&apos;s first check what the server&apos;s original settings are:
&lt;p&gt;

&lt;pre class=wrap&gt;
&lt;/pre&gt;
&lt;pre&gt;
mysql&gt; SHOW SESSION VARIABLES LIKE &apos;character_set%&apos;;
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
&lt;/pre&gt;
&lt;p&gt;

Wow. But fortunately we don&apos;t have to fix all of those individually. We can simply do:
&lt;p&gt;

&lt;pre class=wrap&gt;
mysql --default_character_set=utf8mb4
&lt;/pre&gt;
&lt;p&gt;

And then:
&lt;p&gt;

&lt;pre class=wrap&gt;
mysql&gt; SHOW SESSION VARIABLES LIKE &apos;character_set%&apos;;
&lt;/pre&gt;
&lt;pre&gt;
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
&lt;/pre&gt;
&lt;p&gt;

Much better.
&lt;p&gt;

And convert the double-encoded UTF-8 into something more readable:
&lt;p&gt;

&lt;pre class=wrap&gt;
mysql&gt; UPDATE muart SET title=CONVERT(CAST(CONVERT(title USING latin1) AS binary) USING utf8mb4);
&lt;/pre&gt;
&lt;p&gt;

Keen-eyed observers may have noted that MySQL has two versions of UTF-8: utf8mb3 and utf8mb4. This goes back to the early days of Unicode, where the idea was that all characters would fit into 16 bits. That results in a maximum of 3 bytes of UTF-8. But it soon became clear that 16 bits wasn&apos;t enough. So now it&apos;s 21 bits. UTF-8 can handle that just fine, but those characters that need 17 - 21 bits result in 4-byte UTF-8 sequences. So when dealing with MySQL, when you think &quot;UTF-8&quot;, type &quot;utf8mb4&quot;.
</description>
  <link>http://www.iljitsch.com/2023/09-21-mysql-unicode-weirdness.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/09-21-mysql-unicode-weirdness.html</guid>
  <pubDate>Thu, 21 Sep 2023 11:00:00 GMT</pubDate>
</item>

<item>
  <title>Looking back on 50 years of Ethernet</title>
  <description>On potaroo.net Geoff Huston wishes &lt;a href=&quot;https://www.potaroo.net/ispcol/2023-06/ethernet.html&quot;&gt;Happy 50th Birthday Ethernet&lt;/a&gt;.
&lt;p&gt;

Back in 2011 I wrote an Ars Technica feature about the history of Ethernet: &lt;a href=&quot;https://arstechnica.com/gadgets/2023/06/speed-matters-how-ethernet-went-from-3mbps-to-100gbps-and-beyond/&quot;&gt;Speed matters: How Ethernet went from 3Mbps to 100Gbps… and beyond&lt;/a&gt;.
&lt;p&gt;

Interesting to compare our different takes!
&lt;p&gt;

And of course Ethernet is still going strong. My oldest computers have the original 10 Mbps Ethernet adapters that I got almost 30 years ago, while my newest computer has 10 &lt;em&gt;giga&lt;/em&gt;bit Ethernet, 1000 x faster.</description>
  <link>http://www.iljitsch.com/2023/06-29-looking-back-on-50-years-of-ethernet.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/06-29-looking-back-on-50-years-of-ethernet.html</guid>
  <pubDate>Thu, 29 Jun 2023 12:37:00 GMT</pubDate>
</item>

<item>
  <title>Comparing digital and film resolution using MTF</title>
  <description>I fell down a rabbit hole a while ago trying to come up with the definitive answer to the often-asked question &quot;how can old movies be in HD/4K&quot;, which immediately leads to &quot;how does film and digital resolution compare&quot;.
&lt;p&gt;

The answer to the first question is of course that film as a lot more resolution than standard definition TV, so just scanning the movies at a higher resolution will give you a sharper image than that old DVD or (shudder) VHS tape.
&lt;p&gt;

(Actually a good VHS tape on a good player (my last one (at some point I had three) definitely doesn&apos;t qualify anymore) can look pretty good as long as the ridiculously low chroma resolution doesn&apos;t create problems.)
&lt;p&gt;

&lt;h2&gt;Film: super high?&lt;/h2&gt;
&lt;p&gt;

For reasons unknown, lots of people quote fairly ridiculous (to me) numbers, such as 20 megapixels for movies on 35 mm film. Between the advent of the 1.85:1 aspect ratio and that of Super35, a movie would effectively be shot at a ~ 22x12 frame size. That is not a lot of film to hold so much resolution.
&lt;p&gt;

&lt;h2&gt;Film: not so high?&lt;/h2&gt;
&lt;p&gt;

This is where I planned to show damning evidence of film having much lower resolution than 20 megapixel digital using this photo, that I took both on film and digitally:
&lt;p&gt;

&lt;div class=fulldiv&gt;
&lt;img src=&quot;https://www.iljitsch.com/2023/huisinpark3mpx.jpg&quot; class=fullimg&gt;
&lt;/div&gt;
&lt;p&gt;

Nikon F65, Ilford Delta 100 film, camera-scanned with a Nikon Z fc and a 1:2 manual focus macro lens, resulting in a 12.5 megapixel image. Here resized to 3 megapixels, &lt;a href=&quot;https://www.iljitsch.com/2023/huisinpark12mpx.jpg&quot;&gt;click here&lt;/a&gt; to see the original file.
&lt;p&gt;

This image certainly seems to make good use of those 12 megapixels. I later did a higher resolution scan of part of the image with a 1:1 reproduction ratio zoom lens, which does bring out a bit of extra detail, but only marginally so.
&lt;p&gt;

&lt;h2&gt;MTF!&lt;/h2&gt;
&lt;p&gt;

The problem with reasoning about film grain vs pixels or eyeballing images is that it&apos;s very imprecise. But we actually do have a tool that lets us compare digital vs film: &lt;a href=&quot;https://en.wikipedia.org/wiki/Optical_transfer_function&quot;&gt;the optical transfer function&lt;/a&gt;.
&lt;p&gt;

This takes the form of a graph that plots the contrast of line pairs against their frequency in line pairs per mm or cycles per mm. It&apos;s often called modulation transfer function (MTF), but it&apos;s different from the MTF graphs we often see for lenses. Also note &quot;line pairs&quot; vs &quot;lines&quot;. In TV/video the number of horizontal lines has always been an important number, but what we care about here is line pairs. So if the P is missing, you never know what people are talking about.
&lt;p&gt;

I&apos;ll use MTF in the optical transfer function-like meaning.
&lt;p&gt;

The nice thing about the MTF is that it lets us compare completely different optical pipelines, such as completely analog film, analog film digitized at some point, and start-to-finish digital images.
&lt;p&gt;

Each step, such as lens, sensor and display / print has its own MTF and you simply multiply these. (Which means that a great lens on a mediocre sensor is still better than a mediocre lens on a mediocre sensor!)
&lt;p&gt;

An easy way to compare different steps in the process is to have some MTF cutoff to get at a line pair / cycle per mm limit. I&apos;ve seen various values suggested as the cutoff: 50%, &lt;a href=&quot;https://cool.culturalheritage.org/videopreservation/library/film_grain_resolution_and_perception_v24.pdf&quot;&gt;30%&lt;/a&gt;, &lt;a href=&quot;https://www.image-engineering.de/library/image-quality/factors/1055-resolution&quot;&gt;10%&lt;/a&gt; and &lt;a href=&quot;https://www.dft-film.com/downloads/white-papers/DFT-SCANITY-white-paper.pdf
&quot;&gt;6%&lt;/a&gt;.
&lt;p&gt;

Norman Koren has an overview &lt;a href=&quot;http://www.normankoren.com/Tutorials/MTF1A.html&quot;&gt;Film MTFs&lt;/a&gt; vary of course, with 50% at 40 lp/mm being a &lt;a href=&quot;https://www.kodak.com/content/products-brochures/Film/VISION-50D-Sellsheet_US-180929-SP_EN.pdf&quot;&gt;reasonable guess&lt;/a&gt; for film that doesn&apos;t compromise sharpness. Obviously at ISO 3200 all bets are off. So I&apos;m going to assume film with MTF50 at 40 lp/mm for the rest of this discussion.
&lt;p&gt;

Koren states MTF curves behave as a Lorentzian function, which means that we should be able to  convert between MTF line pair / contrast values easily. Rounded slightly:
&lt;p&gt;

&lt;ul&gt;
&lt;li&gt;MTF30 = 1.5 x MTF50
&lt;li&gt;MTF20 = 2 x MTF50
&lt;li&gt;MTF10 = 3 x MTF50
&lt;li&gt;MTF06 = 4 x MTF50
&lt;/ul&gt;
&lt;p&gt;

The MTF for 80 lp/mm is 20% contrast. This means that with a lens at MTF50 or MTF30 we&apos;ll reach the lower limits for film image detail at MTF10 or MTF06. Even if we&apos;re generous and go to 120 lp/mm, most 35 mm movie formats top out soon after 4K. And that&apos;s only when scanning the original camera negatives. Scanning later copies &lt;a href=&quot;https://www.dft-film.com/downloads/white-papers/DFT-SCANITY-white-paper.pdf
&quot;&gt;easily halves your resolution&lt;/a&gt;.
&lt;p&gt;

Digital (pixel) encoding and display, it &lt;a href=&quot;https://upcommons.upc.edu/bitstream/handle/2099.1/23081/MScPhotonics_FinalThesis_BeaMartinez.pdf&quot;&gt;looks like&lt;/a&gt; the contrast in the MTF stays well above 50% until you closely approach the Nyquist frequency = 2 pixels per line pair.
&lt;p&gt;

Use the slider to see what digital resolution you&apos;d need to fully capture different film sizes at a given number of line pairs per mm:
&lt;p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;th colspan=2&gt;Type / aspect ratio&lt;/th&gt;&lt;th&gt;Size (mm)&lt;/th&gt;&lt;th&gt;Pixels wide&lt;/th&gt;&lt;th&gt;Megapixels&lt;/th&gt;&lt;/th&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;Academy 1930s&lt;/td&gt;&lt;td id=acp&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;22.0 x 16.0&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=acw&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=acmpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;Second half 1900s&lt;/td&gt;&lt;td id=flp&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;22.0 x 12.0&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=flw&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=flmpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Negative_pulldown&quot;&gt;35 mm anamorphic&lt;/a&gt;&lt;/td&gt;&lt;td id=anp&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;22.0 x 18.6&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=anw&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=anmpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Super_35&quot;&gt;Super35&lt;/a&gt; 3-perf&lt;/td&gt;&lt;td id=s3p&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;24.9 x 13.9&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=s3w&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=s3mpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;Super35 2-perf&lt;/td&gt;&lt;td id=s2p&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;24.9 x &amp;numsp;9.5&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=s2w&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=s2mpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/70_mm_film&quot;&gt;65/70 mm&lt;/a&gt;&lt;/td&gt;&lt;td id=70p&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;48.5 x 22.1&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=70w&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=70mpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/IMAX#Film_cameras&quot;&gt;IMAX 70 mm 15-perf&lt;/a&gt;&lt;/td&gt;&lt;td id=imaxp&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;69.6 x 48.5&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=imaxw&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=imaxmpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;p&gt;

&lt;tr&gt;&lt;td&gt;35 mm photos&lt;/td&gt;&lt;td id=35p&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;36.0 x 24.0&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=35w&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center&quot; id=35mpx&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;

&lt;datalist id=&quot;lpmmlist&quot;&gt;
  &lt;option value=&quot;40&quot;&gt;&lt;/option&gt;
  &lt;option value=&quot;80&quot;&gt;&lt;/option&gt;
  &lt;option value=&quot;120&quot;&gt;&lt;/option&gt;
  &lt;option value=&quot;160&quot;&gt;&lt;/option&gt;
  &lt;option value=&quot;200&quot;&gt;&lt;/option&gt;
  &lt;option value=&quot;240&quot;&gt;&lt;/option&gt;
&lt;/datalist&gt;
&lt;p&gt;

&lt;script&gt;
  document.getElementById(&quot;acp&quot;).innerHTML = (22 / 16).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;flp&quot;).innerHTML = (21.95 / 12).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;anp&quot;).innerHTML = (21.95 / 18.6 * 2).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;s3p&quot;).innerHTML = (24.89 / 13.9).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;s2p&quot;).innerHTML = (24.89 / 9.5).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;70p&quot;).innerHTML = (48.5 /22.1).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;imaxp&quot;).innerHTML = (69.6 / 48.5).toFixed(2) + &quot;:1&quot;;
  document.getElementById(&quot;35p&quot;).innerHTML = (36 / 24).toFixed(2) + &quot;:1&quot;;
function inputslider()
{
  val = document.getElementById(&quot;lpmmslider&quot;).value;
  document.getElementById(&quot;lpmmnum&quot;).innerHTML = val;
  val = val * 2 / 1000;
  document.getElementById(&quot;acw&quot;).innerHTML = (22 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;acmpx&quot;).innerHTML = (22 * 16 * val * val).toFixed(1);
  document.getElementById(&quot;flw&quot;).innerHTML = (22 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;flmpx&quot;).innerHTML = (22 * 12 * val * val).toFixed(1);
  document.getElementById(&quot;anw&quot;).innerHTML = (22 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;anmpx&quot;).innerHTML = (22 * 18.6 * val * val).toFixed(1);
  document.getElementById(&quot;s3w&quot;).innerHTML = (24.9 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;s3mpx&quot;).innerHTML = (24.9 * 13.9 * val * val).toFixed(1);
  document.getElementById(&quot;s2w&quot;).innerHTML = (24.9 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;s2mpx&quot;).innerHTML = (24.9 * 9.5 * val * val).toFixed(1);
  document.getElementById(&quot;70w&quot;).innerHTML = (48.5 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;70mpx&quot;).innerHTML = (48.5 * 22.1 * val * val).toFixed(1);
  document.getElementById(&quot;imaxw&quot;).innerHTML = (69.6 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;imaxmpx&quot;).innerHTML = (69.6 * 48.5 * val * val).toFixed(1);
  document.getElementById(&quot;35w&quot;).innerHTML = (36 * val).toFixed(1) + &quot;k&quot;;
  document.getElementById(&quot;35mpx&quot;).innerHTML = (36 * 24 * val * val).toFixed(1);
}
function mtfconvert(factor)
{
  val = document.getElementById(&quot;lpmmslider&quot;).value;
  document.getElementById(&quot;lpmmslider&quot;).value = val * factor;
  inputslider();
}
&lt;/script&gt;
&lt;p&gt;

&lt;p style=&quot;-webkit-user-select: none;&quot;&gt;
Line pairs per millimeter: &lt;span id=lpmmnum&gt;80&lt;/span&gt;&lt;br&gt;
&lt;input type=&quot;range&quot; min=&quot;10&quot; max=&quot;300&quot; value=&quot;80&quot; id=&quot;lpmmslider&quot; style=&quot;width: 100%;&quot; oninput=&quot;inputslider();&quot; list=lpmmlist&gt;&lt;br&gt;
Convert: &lt;a onclick=&quot;mtfconvert(1.5)&quot;&gt;MTF50 &amp;#x2192; MTF30&lt;/a&gt; / &lt;a onclick=&quot;mtfconvert(3)&quot;&gt;MTF50 &amp;#x2192; MTF10&lt;/a&gt; / &lt;a onclick=&quot;mtfconvert(4)&quot;&gt;MTF50 &amp;#x2192; MTF06&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;

&lt;script&gt;
inputslider();
&lt;/script&gt;
&lt;noscript&gt;&lt;p&gt;&lt;b&gt;Please note that Javascript must be enabled to calculate the results.&lt;/b&gt;&lt;/p&gt;&lt;/noscript&gt;
&lt;p&gt;

Conclusions: even 70 mm movies don&apos;t materially benefit from higher megapixel scans than about 30. For 35 mm photos, it&apos;s a struggle for film to hold up beyond12 MPX. (Which phone cameras have reached the better part of a decade ago.)
&lt;p&gt;

So it looks like 4k is a very good fit for 35 mm movies, except perhaps ones shot with high quality black and white film. 8k only possibly makes sense for 65/70 mm. But those tend to be old so I doubt there would be much of a difference in practice. And 8k is completely impractical because you need to sit very close to a very big screen to be able to see the extra sharpness anyway.
&lt;p&gt;

This post is based on a &lt;a href=&quot;https://www.dpreview.com/forums/thread/4696571&quot;&gt;discussion thread&lt;/a&gt; on the soon to disappear DPReview forums, but &lt;a href=&quot;https://web.archive.org/web/20230331114153/https://www.dpreview.com/forums/thread/4696571&quot;&gt;saved on archive.org&lt;/a&gt;.</description>
  <link>http://www.iljitsch.com/2023/03-29-comparing-digital-and-film-resolution-using-mtf.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/03-29-comparing-digital-and-film-resolution-using-mtf.html</guid>
  <pubDate>Wed, 29 Mar 2023 10:44:35 GMT</pubDate>
</item>

<item>
  <title>Review: Sigma BC 16.16 STS CAD cycling computer</title>
  <description>As I wrote earlier: recently, I lost another bike computer so I needed a new one. I decided to get a more recent version of the Sigma BC line that I&apos;ve been using for the past decade: the Sigma BC 16.16 STS CAD. These seem to be on the way out now, being sold out almost everywhere. But no obvious replacement that isn&apos;t more expensive and more complex, so I&apos;m glad I got to get one of the last ones.
&lt;p&gt;

&lt;center&gt;&lt;img src=&quot;https://www.iljitsch.com/2023/sigmabc1616sts-h.jpg&quot; srcset=&quot;https://www.iljitsch.com/2023/sigmabc1616sts-h.jpg 432w, //www.iljitsch.com/2023/sigmabc1616sts.jpg 864w&quot; width=432 height=432&gt;&lt;/center&gt;
&lt;p&gt;

The first 16 (roughly) indicates the number of functions. The second 16 is, as far as I can tell, the platform year: 2016. STS is the digital wireless communication system that allows the &quot;computer&quot; to talk to two different bike speed sensor as well as a cadence sensor. The speed sensor sits on the bike&apos;s front fork where a magnet on a wheel spoke tells the sensors how fast the wheel is turning. The cadence sensor does the same for your pedals. I got the package that includes a speed sensor and a cadence (CAD) sensor. You can also get just the speed sensor. Or get an extra speed sensor for a second bike.
&lt;p&gt;

&lt;h2&gt;How it works&lt;/h2&gt;
&lt;p&gt;

I actually did use my previous Sigma BC with two different bikes, and that worked very well. You need to tell one of the sensors to be on the second channel. You then get to set different wheel diameters for the first and second bikes. This is important, as the computer needs to know that wheel diameter / circumference to determine how fast you&apos;re going and how much distance you&apos;re covering. (In my case it was always 28&quot; / 2200 mm.)
&lt;p&gt;

The Sigma sits in a little holder. You twist it to release it so you can take it indoors if you leave your bike outside, that way it won&apos;t get stolen. My previous Sigma BC 9.16 STS wouldn&apos;t necessarily sit very secure in its holder, hence me losing it. For the 16.16 this seems less of a problem: you really have to put in some effort to make it click into place. It&apos;s also not compatible with most earlier cradles. The default way to secure the holder is with a rubber band. But with a couple of tie wraps the holder is locked down more tightly. I reused my previous speed sensor and an older cadence sensor that I still had lying around.
&lt;p&gt;

So what do you get out of the BC 16.16 when cycling?
&lt;p&gt;

First of all, the current speed is displayed at all times. The whole kilometer per hour numbers are displayed prominently, with fractions of a km/h shown with a much smaller single digit. This part of the display, which also has some status icons, such as connectivity and first/second speed sensor, use a segmented LCD. However, the lower part of the relatively tall display is a pixel LCD. This shows all kinds of information, such as:
&lt;p&gt;

&lt;ul&gt;
&lt;li&gt;Trip distance
&lt;li&gt;Average cadence
&lt;li&gt;Cadence
&lt;li&gt;Ride time
&lt;li&gt;Fuel save
&lt;li&gt;ETA distance / time / clock
&lt;/ul&gt;
&lt;p&gt;

Some of these are not so interesting, but you can&apos;t turn them off.
&lt;p&gt;

The device maintains both statistics and totals. Statistics are numbers of kilometers and hours of activity during the current month and past eleven months. Totals are just the totals of the same for as long as you care to keep them running. On my previous BC I kept a running total of the number of kilometers I rode during the year. So I had to reset that number to zero at the beginning of the year. The monthly statistics are updated whenever you reset a trip distance, and roll over at the start of the next month automatically.
&lt;p&gt;

The backlight is pretty clever: if you turn it on, you tell the BC a start and end time. Between those times, whenever you push either of the buttons, this will turn on the green backlight for a few seconds. A second press will let you control the device as normal. Outside the configured dark hours, first presses are handled as normal and the backlight doesn&apos;t come on.
&lt;p&gt;

Not sure what impact all of this will have on battery life. With the old one, I had to replace the CR2032s in the &quot;computer&quot; and the sensors about once a year. You may or many not lose your statistics and/or settings when changing batteries.
&lt;p&gt;

&lt;h2&gt;ETA counter&lt;/h2&gt;
&lt;p&gt;

One nice new feature over my previous Sigma BC is that this one supports an ETA (estimated time of arrival) counter. You set a distance, start the count down and the BC 16.16 will show you the distance to your goal and either the time to reach it or the clock time when you will reach it. You have to choose between the latter two options. I find the clock time when you are expected to reach your goal more useful. The time estimation seems to work quite well, not immediately jumping all over the place when you&apos;ve stopped at a traffic light.
&lt;p&gt;

&lt;h2&gt;NFC&lt;/h2&gt;
&lt;p&gt;

With an Android phone you can use NFC to read data from the BC 16.16 using Sigma&apos;s app. Unfortunately, this doesn&apos;t work with the iPhone. To some degree this makes sense due to Apple&apos;s limitations. But a simple read action to collect some data is still possible. With an NFC reading app I get a URL from the BC 16.16. Obviously that wouldn&apos;t be enough to completely sync all data, but it would/should work for reading cycling trip data from the last few days in the form of a URL or other simple data format. But no, iPhone users get nothing here.
&lt;p&gt;

&lt;h2&gt;Conclusions&lt;/h2&gt;
&lt;p&gt;

I really like how Sigma Sport keeps improving these simple bicycle computers. The ETA feature seems like a good addition, and the most important information is displayed nice and clear. The automatic monthly statistics are a good way to keep track of any goals you&apos;ve set for yourself. So if you find yourself wondering how fast you&apos;re going or how far you&apos;ve cycled fairly regularly, but you don&apos;t want to mess with smartphone apps or complex/expensive GPS-based bike computers, one of these BCs is highly recommended.</description>
  <link>http://www.iljitsch.com/2023/01-01-review-sigma-bc-16-16-sts-cad-cycling-computer.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/01-01-review-sigma-bc-16-16-sts-cad-cycling-computer.html</guid>
  <pubDate>Sun, 01 Jan 2023 14:51:27 GMT</pubDate>
</item>

</channel>
</rss>
