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

<item xml:lang="en">
  <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 xml:lang="en">
  <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 xml:lang="en">
  <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 xml:lang="en">
  <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 xml:lang="nl">
  <title>Review: Sigma BC 16.16 STS CAD fietscomputer</title>
  <description>Zoals ik eerder schreef: ik ben weer een fietscomputer kwijtgeraakt dus ik had een nieuwe nodig. De keus viel op een meer recente versie van de Sigma BC-lijn die ik de laatste tien jaar ofzo al gebruikte: de Sigma BC 16.16. STS CAD. Deze lijken niet echt meer beschikbaar te zijn, maar zonder duidelijk alternatief dat niet aanzienlijk duurder en complexer is ben ik blij dat ik één van de laatste van deze op de kop kon tikken.
&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;

De eerste 16 geeft (ruwweg) aan hoeveel functies de fietscomputer heeft. De tweede 16, voorzover ik kan achterhalen, is een indicatie van wanneer het &quot;platform&quot; gelanceerd is. 2016 dus. STS is het digitale draadloze communicatiesysteem waarmee de &quot;computer&quot; met twee verschillende snelheidssensors kan communiceren plus een trapsnelheid-sensor. De snelheidssensor zit vast aan de voorvork met een magneetje aan één van de spaken waaraan de sensor kan zien hoe snel het wiel draait. De trapsnelheidssensor doet hetzelfde voor je pedalen. Ik heb het pakket dat ook de trapsnelheidssensor bevat aangeschaft. In alle gevallen krijg je ook een snelheidssensor. En je kan extra sensors aanschaffen voor je tweede fiets.
&lt;p&gt;

&lt;h2&gt;Hoe het werkt&lt;/h2&gt;
&lt;p&gt;

Ik gebruikte mijn vorige Sigma BC met twee verschillende fietsen (tot één ervan gestolen werd), en dat werkte heel goed. Je moet één van de twee sensors instellen om het tweede kanaal te gebruiken. Je kan dan verschillende wieldiameters/omtrekken instellen voor de twee fietsen. Dit is belangrijk omdat de computer moet weten hoeveel afstand je aflegt (en dus hoe snel je gaat) bij iedere omwenteling van het wiel. In mijn geval was dit steeds 28 inch / 2200 mm.
&lt;p&gt;

De Sigma neemt plaats in een kleine houder op je stuur. Je draait hem een gedeeltelijke slag om hem uit de houder te halen wanneer je je fiets buiten laat staan. Mijn vorige Sigma BC 9.16 STS kon nogal wankel in zijn houder zitten, vandaar dat ik &apos;m kwijtgeraakt ben. Bij de BC 16.16 lijkt dit minder problematisch te zijn: je moet aardig je best doen om &apos;m vast te laten klikken. Hij werkt dan ook niet met oudere houders. Je maakt de houder aan je fiets in principe vast met een rubberband, maar met twee tie-wraps zie-ie steviger op z&apos;n plaats. Ik kon mijn bestaande snelheidssensor en een oude trapsnelheidssensor die ik nog had liggen hergebruiken.
&lt;p&gt;

Wat heb je aan de BC 16.16 wanneer je fietst?
&lt;p&gt;

Allereerst zie je altijd je huidige snelheid. De kilometers per uur worden prominent weergegeven, met een extra cijfer achter de komma een stuk kleiner. Dit deel van het schermpje, waar zich ook een aantal ikonen voor bijvoorbeeld connectiviteit en eerste/tweede fiets bevinden, bestaat uit een gesegmenteerd LCD-scherm. Alles is dus mooi scherp. De onderste helft van het scherm gebruikt pixels en is dus flexibeler. Dit kan onder meer de volgende info laten zien:
&lt;p&gt;

&lt;ul&gt;
&lt;li&gt;Trip-afstand (niet zozeer dagelijks, zoals in het Nederlands gesuggereerd wordt)
&lt;li&gt;Gemiddelde trapsnelheid
&lt;li&gt;Trapsnelheid
&lt;li&gt;Trip-tijd
&lt;li&gt;Bespaarde benzine
&lt;li&gt;Aftellende afstand / tijd / tijd van aankomst
&lt;/ul&gt;
&lt;p&gt;

Sommigen hiervan zijn minder interessant, maar je kan ze niet uit zetten.
&lt;p&gt;

Het apparaat houdt zowel statistieken als totalen bij. Statistieken zijn het aantal kilometers en gereden uren gedurende de huidige maand en de afgelopen elf maanden. Totalen zijn de totalen van dezelfde getallen, zolang je die laat lopen. Wat ik deed/doe is deze elk jaar op nul zetten zodat ik weet hoeveel afstand ik in een jaar afleg. (2022: 3000 km.) De maandelijkse statistieken worden bijgewerkt wanneer je een trip op 0 zet en de maanden worden verder automatisch bijgehouden.
&lt;p&gt;

De verlichting is slim geregeld: als je dit aanzet dan geef je de BC een start- en eindtijd. Tussen deze tijden werken de toetsen iets anders dan normaal: de eerste keer indrukken zorgt dat het licht een paar seconden aan gaat. De tweede keer indrukken geeft dan de normale functie. Buiten de ingestelde tijden blijft het licht uit en werken de toetsen normaal.
&lt;p&gt;

Ik weet niet wat voor effect dit zal hebben op de batterij. Met de oude BC moest ik de CR2032-batterij in de &quot;computer&quot; en de sensors ongeveer één keer per jaar vervangen. Daarbij verlies je soms wel en soms niet de statistieken en/of instellingen.
&lt;p&gt;

&lt;h2&gt;ETA / aftel-teller&lt;/h2&gt;
&lt;p&gt;

Een interessante nieuwe functie van de BC 16.16 ten opzichte van de BC 9.16 is de &quot;estimated time of arrival&quot;-teller. Je stelt dan een afstand in en start het aftellen. De BC 16.16 laat je dan de resterende afstand zien en ofwel hoe lang tot je er bent ofwel hoe laat je zal arriveren. Die laatste vind ik nuttiger, en het lijkt best goed te werken zonder gelijk enorme sprongen in verwachte aankomsttijd als je even stilstaat voor een stoplicht.
&lt;p&gt;

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

Met een Android-telefoon kan je met NRF data uitlezen van de BC 16.16 met Sigma&apos;s app. Helaas werkt dit niet met de iPhone. Tot op zekere hoogte is dat te begrijpen vanwege Apple&apos;s beperkingen aan de NFC-functionaliteit. Maar simpelweg wat data uitlezen is wel mogelijk. Met een NFC-app krijg je van de BC 16.16 een URL. Dat is uiteraard niet genoeg om alle data te synchroniseren, maar het zou toch mogelijk moeten zijn om de info van de laatste paar trips uit te lezen in de vorm van een URL of een andere simpele datastructuur. Maar nee, iPhone-gebruikers krijgen helemaal niks.
&lt;p&gt;

&lt;h2&gt;Conclusies&lt;/h2&gt;
&lt;p&gt;

Het is mooi dat Sigma Sport deze simpele fietscomputers blijft verbeteren. De ETA-functie lijkt een goede toevoeging te zijn, en de belangrijkste informatie wordt duidelijk weergegeven. De automatische maandelijkse statistieken zijn een goede manier om je doelen in de gaten te houden. Dus als je regelmatig al fietsend merkt dat je wilt weten hoe hard je gaat of hoeveel afstand je afgelegd hebt, maar je wilt niet met apps of complexe/dure GPS-gebaseerde fietscomputers aan de slag, dan kan ik één van deze BCs van harte aanbevelen.
</description>
  <link>http://www.iljitsch.com/2023/01-01-review-sigma-bc-16-16-sts-cad-fietscomputer.html</link>
  <guid isPermaLink="true">http://www.iljitsch.com/2023/01-01-review-sigma-bc-16-16-sts-cad-fietscomputer.html</guid>
  <pubDate>Sun, 01 Jan 2023 14:57:15 GMT</pubDate>
</item>

</channel>
</rss>
