tag:blogger.com,1999:blog-157072882024-03-04T12:25:06.314+01:00Dr. Lex' BlogThe Blog accompanying the <a href="https://www.dr-lex.be/">Dr. Lex Site</a> / <i lang="nl">De Blog bij de <a href="https://www.dr-lex.be/">Dr. Lex Site</a></i>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-15707288.post-51181060524775198042024-02-24T19:12:00.004+01:002024-03-04T12:24:32.418+01:00The Music app in Mac OS 14 Sonoma causes pauses in the whole rest of the system<p><span style="color: #274e13;">TL;DR: if you encounter hiccups in the UI while playing music, close the Music app window. And please report this through <a href="https://www.apple.com/feedback/macos.html">Apple feedback</a>.</span></p>
<p><span style="color: #274e13;">My MacBook Pro “upgraded” itself to Mac OS Sonoma during a routine reboot, without my consent. This wouldn't be that bad if this new release of the OS would not be riddled with bugs. One apparent bug was that when the Music app starts playing the next track, and the display is sleeping, there would only be an empty notification temporarily waking the screen, with nothing else in it than the Music icon and the word “Music”. In previous releases this would show full song information as expected. Eventually I figured out that this is a ‘feature’: one needs to give the Music app explicit permission to show information on a “locked” screen, even though the screen is not actually locked in my case. Why it is then still allowed to show a pointless empty notification, beats me. Apple is starting to adopt Microsoft style logic.</span></p>
<p><span style="color: #274e13;">Anyhow, on to the <strong>true bug</strong> that is the main topic of this post, and it is a bad one. It is quite simple:</span></p>
<ul style="color: #274e13;">
<li style="color: #274e13;">Playing local M4A or MP3 files will cause <strong>the whole system UI to freeze</strong> during about 1 second, approximately every 7 seconds. EXCEPT the Music app itself, which somehow remains immune against theze hiccups. Otherwise you will notice this by things momentarily hanging while scrolling, typing, or doing anything else that requires smooth updating of the screen (even video playback will stutter).</li>
<li style="color: #274e13;">Playing an internet radio stream will cause same UI freezes, but only when the metadata in the stream causes <em>the status display in the Music app to change.</em> For instance, if the stream contains artist and title information, you can expect everything to choke at the start of every new song. Somehow I have a knack for finding these weird correlations, I don't know why, but it only took about 4 occurrences to figure this out, then I confirmed it by doing some explicit tests.</li>
<li style="color: #274e13;">These nuisances <strong>only occur if the Music app window is open.</strong> Close it and the hiccups no longer occur. Of course I mean closing only the window, not quitting the whole app (which would obviously fix any problems caused by the app running).</li>
</ul>
<p><span style="color: #274e13;">I don't even know what could cause this. The days when playing an MP3 file required almost all CPU resources of a machine, are way behind us (I still remember one of my friends boasting about this with his 4/86). This seems like some kind of real-time priorities problem, or some UI rendering bug. The 14.3 update mentioned something about a performance problem with UI rendering, but alas, it definitely did not fix this bug because I still encounter it in Sonoma 14.3.1.<br>
I bet it has something to do with all the unwanted security and privacy junk that is being poured into the OS, I wish there was just a big master toggle switch in the control panel “I am not an idiot, don't lock down my computer” to disable all this stuff.</span></p>
<p><span style="color: #274e13;">How this kind of bug can have slipped through QA, is beyond me. I guess they don't really test playing local files anymore, assuming everyone will be happy to move to stupid streaming services that produce a steady revenue and that can be manipulated at leisure. However, I find reports in many places of Sonoma being sluggish and unresponsive, and I suspect that the Music app is not the only one causing this. It must be some deeper-level problem of which this is only one manifestation.</span></p>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com08HGX22M4+2M40.0325344 59.006720138.354354345511453 56.809454475 41.710714454488553 61.203985725tag:blogger.com,1999:blog-15707288.post-22906820503535162002022-07-15T01:09:00.034+02:002022-08-14T16:12:08.983+02:00HDR photos with a smartphone, built-in versus my own method<p><span style="color: #274e13;">On this blog, I have published some examples of <b>HDR photos</b> before, which I created manually by relying on auto-bracketing features in digital cameras and combining the multiple exposure photos using <i><a href="http://qtpfsgui.sourceforge.net/">Luminance HDR.</a></i> One could argue that this is obsolete because pretty much every smartphone camera app nowadays has a HDR feature built-in. As I will show below however, this often leaves much to be desired and it still makes a lot of sense to produce HDR photos the manual way, be it with the smartphone camera or a ‘real’ camera.</span></p><p><span style="color: #274e13;">My most recent smartphone is a OnePlus Nord, but its built-in HDR is a general nuisance. It only engages when it believes there to be a need for it according to some vague heuristic. Even when it claims to be enabled, sometimes the result shows no HDR at all, probably because it failed to find matches between the images. The latter usually happens when HDR is most needed, when taking photos of sunsets that result in high contrast.</span></p><p><span style="color: #274e13;">This made me look for an alternative camera app that offers exposure bracketing, such that not only could I make HDR photos when I want to, I can also make them the way I want instead of having to rely on the half-baked algorithm built into the native camera app. I found <a href="https://play.google.com/store/apps/details?id=net.sourceforge.opencamera">Open Camera</a>, which proved a great solution.</span></p><p><span style="color: #274e13;">In this blog post I will compare some HDR photos taken with both the OnePlus camera app (and one with Open Camera's HDR), and HDR photos of the same scene produced with my own workflow, <a href="https://www.dr-lex.be/info-stuff/luminancehdr.html">as explained in the article on my website which I recently updated</a>.</span></p>
<p><span style="color: #274e13;"><b>Example 1:</b> OnePlus' HDR versus mine. As usual with the built-in HDR tonemapping in smartphones, it tries hard to show details everywhere by pretty much steamrollering the intensities into one flat dull result. The overall image is too bright, lacks saturation, and does not represent the scene how I experienced it. My HDR image might look a bit dark in comparison, but it much better represents the sensation of the actual scene when viewed in its own on a big screen.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRYEIk53L6foQfy1cCutNH76_M9qBlwmHvLVyrT-tj6RoQb8mm0JMNRsKWc_CyilAi5Y1di6oa0t0OOJ9Mzo-y9w5Owja50w4co2a8biTykWv_hlHKYojJ6A9pU7Wf5kzLp9eKXCfE1roN_1P1SefSYkMR_ZmfOpT1ry_ln16omebyafDr5i0/s1280/Example01-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRYEIk53L6foQfy1cCutNH76_M9qBlwmHvLVyrT-tj6RoQb8mm0JMNRsKWc_CyilAi5Y1di6oa0t0OOJ9Mzo-y9w5Owja50w4co2a8biTykWv_hlHKYojJ6A9pU7Wf5kzLp9eKXCfE1roN_1P1SefSYkMR_ZmfOpT1ry_ln16omebyafDr5i0/s320/Example01-OnePlus.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUDvTN767fvUEnrqdOprc6ztW3ozUjVv2W5yA4PHDkyH3enQemmx_KtIsevRLTXZ1LEf3Ik31jEKjRBGDOgb8dQSexb3Ya3i7ocX1ITfdakRUldDB93wSyp-_crIKefl4RzEDig8P45CW6-z28h5hDy00AwNkXl1S3P9d2V3VGRUvcSgglmMY/s1280/Example01-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUDvTN767fvUEnrqdOprc6ztW3ozUjVv2W5yA4PHDkyH3enQemmx_KtIsevRLTXZ1LEf3Ik31jEKjRBGDOgb8dQSexb3Ya3i7ocX1ITfdakRUldDB93wSyp-_crIKefl4RzEDig8P45CW6-z28h5hDy00AwNkXl1S3P9d2V3VGRUvcSgglmMY/s320/Example01-Lex.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span>
<p><span style="color: #274e13;"><b>Example 2:</b> again, the OnePlus HDR makes things too bright and it looks more like a daytime shot with some colour filter than a shot taken at sunset.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBoImVjnpP5oXYMVqE4-W1zO5ozuR1B9w7rgt_QGgCRK5WxIgNT1dh-D07U9vy-4FQVU-Nvog07oED0FQfsAZ34vWjjHxWh9xVffDS9u7rwUxM18gGAtxGt53YolWUxFGq9cw4LyIrYaCzbJEO_IDm1X4wnYQoU0tYqrSkUJ0s46qEmjOXS5k/s1280/Example02-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBoImVjnpP5oXYMVqE4-W1zO5ozuR1B9w7rgt_QGgCRK5WxIgNT1dh-D07U9vy-4FQVU-Nvog07oED0FQfsAZ34vWjjHxWh9xVffDS9u7rwUxM18gGAtxGt53YolWUxFGq9cw4LyIrYaCzbJEO_IDm1X4wnYQoU0tYqrSkUJ0s46qEmjOXS5k/s320/Example02-OnePlus.jpg" width="320" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="color: #274e13;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKeSCNHEbBAPjXdgRShZ9IjYby2BJFnAjUP_S4ZEZBEbQ5Grgc6y2h3ZV5ud6xBgXChkM_IBw00yYwW6AJUgPdI2xKm_2DYdQs30A-BfA3Gg5eQkKjf52tmkISP88GqP6j6eAklqv7KMn-Y9wuZQqHdGSK_0v8AmrZ7pZr9y0JTytCqIyQyc/s1280/Example02-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKeSCNHEbBAPjXdgRShZ9IjYby2BJFnAjUP_S4ZEZBEbQ5Grgc6y2h3ZV5ud6xBgXChkM_IBw00yYwW6AJUgPdI2xKm_2DYdQs30A-BfA3Gg5eQkKjf52tmkISP88GqP6j6eAklqv7KMn-Y9wuZQqHdGSK_0v8AmrZ7pZr9y0JTytCqIyQyc/s320/Example02-Lex.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span>
<p><span style="color: #274e13;"><b>Example 3:</b> same remarks as above.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1M-_lhBuNGEMww4JDoa72K4ZhNjVevwZfiQAZAsh1c4f5bb0yJ47ukFzFlqBQdJO-rMVBn_bELI5lT4XAwvolt2y8z3Orh-TmnUb_8amvuV8nFBo8vMMpiaexCqFgz6-acdPfk_FBl7ceET0GKbSEYUIsrdl2vhxYngS2-qqx8c7QkAjH4oo/s1280/Example03-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1M-_lhBuNGEMww4JDoa72K4ZhNjVevwZfiQAZAsh1c4f5bb0yJ47ukFzFlqBQdJO-rMVBn_bELI5lT4XAwvolt2y8z3Orh-TmnUb_8amvuV8nFBo8vMMpiaexCqFgz6-acdPfk_FBl7ceET0GKbSEYUIsrdl2vhxYngS2-qqx8c7QkAjH4oo/s320/Example03-OnePlus.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeu2f83lruKmxZBOq1R1Wwi6XSQoy2EH6UPUmOv2bG6mpn4s6P9hDvqNWTYm8iEI7gM5NcF8GCDC5vg5Zpw0scQKzldVkfuoszxaGb85BVDF4TEOk0LCDpz6HGObFd85hUlzBp6Whn6Ma2iuxAWlZGTGZHVCfLL575LFVhlxY_NdpHvINMmuo/s1280/Example03-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeu2f83lruKmxZBOq1R1Wwi6XSQoy2EH6UPUmOv2bG6mpn4s6P9hDvqNWTYm8iEI7gM5NcF8GCDC5vg5Zpw0scQKzldVkfuoszxaGb85BVDF4TEOk0LCDpz6HGObFd85hUlzBp6Whn6Ma2iuxAWlZGTGZHVCfLL575LFVhlxY_NdpHvINMmuo/s320/Example03-Lex.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span>
<p><span style="color: #274e13;"><b>Example 4:</b> again, the OnePlus HDR makes the sky a dull mess, while all the interesting things are happening there.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimHXW3qtK3gzH0sC7AeF2F9IK9pn-_jx3ZaDLDUBSe7FJ-CufMkdVffUHxGedQ1vPn8dCye3ei3itWJ7WnS-fJoo2G514hMwlZp8yW0MJNEOS0v7R-7fWGahx3DaR3V3qEIWl0rehStayauCVJZcYLjAy1jNI5N9ZJY3Wo25bsCvD4T66_oH4/s1280/Example04-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimHXW3qtK3gzH0sC7AeF2F9IK9pn-_jx3ZaDLDUBSe7FJ-CufMkdVffUHxGedQ1vPn8dCye3ei3itWJ7WnS-fJoo2G514hMwlZp8yW0MJNEOS0v7R-7fWGahx3DaR3V3qEIWl0rehStayauCVJZcYLjAy1jNI5N9ZJY3Wo25bsCvD4T66_oH4/s320/Example04-OnePlus.jpg" width="320" /></span></a></div><div><span style="color: #274e13;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Y_ojJoGGhafJGSL6PCXOQITZlzDwLKTtNBKFg8mJjCu_cYzCzsseeqrlZzz8h5D1SjKY3PjBAEpB8QN22AFaow5iqua1yV07UvcUT0Qrr8CGdTzcHeHg0L9Zg9QmSTxbE7RXjB3cGVozVMQJVSBRVLWXvPxTLZZN3rqnrl1uzsFyGh_8A20/s1280/Example04-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Y_ojJoGGhafJGSL6PCXOQITZlzDwLKTtNBKFg8mJjCu_cYzCzsseeqrlZzz8h5D1SjKY3PjBAEpB8QN22AFaow5iqua1yV07UvcUT0Qrr8CGdTzcHeHg0L9Zg9QmSTxbE7RXjB3cGVozVMQJVSBRVLWXvPxTLZZN3rqnrl1uzsFyGh_8A20/s320/Example04-Lex.jpg" width="320" /></span></a></div><div><span style="color: #274e13;"><br /></span></div>
<p><span style="color: #274e13;"><b>Example 5:</b> this time, the OnePlus HDR has roughly the same overall brightness as mine, but local details are lacking, especially in the darker areas where everything is just clipped to black.<br /></span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0uLaYjJ-nHQzOz4TE5S7uxi1Fk7MwrF1nhDLYwVQNdmhOh3WwocdDUk0XXpERFUllG0sIPtmDhkD24LFuvoxyBS3esoyz3CBEZPO-EVrJVsFDGJ8qyaaXyodQChThOVi7XWrGw7aPL_mX0PuINiJWg-kQV6bkW2hRaRTP5FWwzOTU7gwu1rI/s1280/Example05-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0uLaYjJ-nHQzOz4TE5S7uxi1Fk7MwrF1nhDLYwVQNdmhOh3WwocdDUk0XXpERFUllG0sIPtmDhkD24LFuvoxyBS3esoyz3CBEZPO-EVrJVsFDGJ8qyaaXyodQChThOVi7XWrGw7aPL_mX0PuINiJWg-kQV6bkW2hRaRTP5FWwzOTU7gwu1rI/s320/Example05-OnePlus.jpg" width="320" /></span></a></div><div><span style="color: #274e13;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcZ1HXeFn1AIl5107mn0r28efouNHsL4FK3XZ7uKjO8qVZx9Lxy1t8LUS57aBslsgIGydxYk52ywZT_hkkirKEUhOjrhkvM9QO1fLwz5cxSoIUnmwjBMFYdR6NvAb5CfTVL0_coSJtJDEWT92LzrN1d_QV7Xi3R4ohQALD1nL2K1y-S6wvWkE/s1280/Example05-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcZ1HXeFn1AIl5107mn0r28efouNHsL4FK3XZ7uKjO8qVZx9Lxy1t8LUS57aBslsgIGydxYk52ywZT_hkkirKEUhOjrhkvM9QO1fLwz5cxSoIUnmwjBMFYdR6NvAb5CfTVL0_coSJtJDEWT92LzrN1d_QV7Xi3R4ohQALD1nL2K1y-S6wvWkE/s320/Example05-Lex.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span>
<p><span style="color: #274e13;"><b>Example 6:</b> here I first show the result from the OnePlus camera app, then the built-in HDR of the Open Camera app, and finally my own HDR. The first 2 are similar although the Open Camera result has some artefacts that I sometimes also experience with Luminance HDR when I didn't use a sufficiently large range of exposures to capture all intensities in the scene. But again, the automated HDRs are too bright and have a yellowish tint that does not correspond with how I experienced the scene.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcJa9JijHpdjvl0WWTv08_U7lambzHIavdTlo991x5aDkKewl50FZ1Bd0uUSjO-COTzZnbIxqSLq0wakqSAIp-wGS2t9m_0cgXWSL-28iCkCDEjMZ3tdq7sT5JjmuGoyZO-vlYeqU0DmaqcIMIbl3ceIoFbSPsXTm0Jw4IsczJoSgEPZ_k-mA/s1280/Example06-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcJa9JijHpdjvl0WWTv08_U7lambzHIavdTlo991x5aDkKewl50FZ1Bd0uUSjO-COTzZnbIxqSLq0wakqSAIp-wGS2t9m_0cgXWSL-28iCkCDEjMZ3tdq7sT5JjmuGoyZO-vlYeqU0DmaqcIMIbl3ceIoFbSPsXTm0Jw4IsczJoSgEPZ_k-mA/s320/Example06-OnePlus.jpg" width="320" /></span></a></div><div><span style="color: #274e13;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhilMTlzuUwkQm4V0nIzAHYG2is9NFHyRsWXN9AIJilCOyWswfGyu1t4TdcaAeud0d_62MJPGK40eiD1feVltiS7FzAmw-FAT1riRna3HBQO4pG7_GTTAO40iGUSUkvZMlfizWjGzZM_pHYj6Ehm28Vps_KpQhoGiAfDHZ4gEn8HsN6LWNKoiI/s1280/Example06-OpenCamera.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhilMTlzuUwkQm4V0nIzAHYG2is9NFHyRsWXN9AIJilCOyWswfGyu1t4TdcaAeud0d_62MJPGK40eiD1feVltiS7FzAmw-FAT1riRna3HBQO4pG7_GTTAO40iGUSUkvZMlfizWjGzZM_pHYj6Ehm28Vps_KpQhoGiAfDHZ4gEn8HsN6LWNKoiI/s320/Example06-OpenCamera.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiim5t5TnmlygjwL-WMXKmYZnWjbKdyp3pcWXx6uHpVr5Kb2Og9qbS5kL0d3jrns5HxSwzEg_BYA44AzWMiScJ2m08PvRj89Yr7Tpn2x5_IcNNcCEyA_ig4sxTvylbUVtPRI90JSFUEQIlqRHxWaQT_4eFKHtNjVKLhg7xvusvD_oT5rQerhR8/s1280/Example06-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiim5t5TnmlygjwL-WMXKmYZnWjbKdyp3pcWXx6uHpVr5Kb2Og9qbS5kL0d3jrns5HxSwzEg_BYA44AzWMiScJ2m08PvRj89Yr7Tpn2x5_IcNNcCEyA_ig4sxTvylbUVtPRI90JSFUEQIlqRHxWaQT_4eFKHtNjVKLhg7xvusvD_oT5rQerhR8/s320/Example06-Lex.jpg" width="320" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="color: #274e13;"><br /></span></div>
<p><span style="color: #274e13;"><b>Example 7:</b> again OnePlus versus mine, and again the colours in the OnePlus image are washed out and despite its overall higher brightness, details in the darker areas are lacking compared to my image.</span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGiJPhYGMybf5aPHUPrsXyNBpx8MhN0jeOHURHIxmRuUSuWTvaulgj5dREI95tIzudFFs7AJ-sFeqK8fmld1E98MJAEO0XYMwKIPcfEiZJP61_eVjII4j-GWHNevZ04jMRPnzUCTg7bSheUCg4luclrBUP4uv71l9DeQKOeVHaHA92PrhlEY/s1280/Example07-OnePlus.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGiJPhYGMybf5aPHUPrsXyNBpx8MhN0jeOHURHIxmRuUSuWTvaulgj5dREI95tIzudFFs7AJ-sFeqK8fmld1E98MJAEO0XYMwKIPcfEiZJP61_eVjII4j-GWHNevZ04jMRPnzUCTg7bSheUCg4luclrBUP4uv71l9DeQKOeVHaHA92PrhlEY/s320/Example07-OnePlus.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgow7aT7tNtglZXhqhTLeY1HAH1tBYRw6WwXiM-NmIN4UlBGOyIOzkqGMKvqe_S0rcYgqd3xVnGiDktZBPgrWixTYDM8ZLv8c5LNlD7q__yEwNYsIfETlVSbPUmkRlkOwLvxCiniLALMJJ4jGnaxAUKkfuIT7pDLnMm1DsEsN6_3XY1XcNaxXw/s1280/Example07-Lex.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgow7aT7tNtglZXhqhTLeY1HAH1tBYRw6WwXiM-NmIN4UlBGOyIOzkqGMKvqe_S0rcYgqd3xVnGiDktZBPgrWixTYDM8ZLv8c5LNlD7q__yEwNYsIfETlVSbPUmkRlkOwLvxCiniLALMJJ4jGnaxAUKkfuIT7pDLnMm1DsEsN6_3XY1XcNaxXw/s320/Example07-Lex.jpg" width="320" /></span></a></div><span style="color: #274e13;"><br /></span>
<p><span style="color: #274e13;"><b>Example 8:</b> (added 2022/08/14) this was a particularly challenging image due to the enormous dynamic range. Obviously, the OnePlus app only takes 2 or maybe 3 photos with a rather limited exposure range, and lost the subtleties in the sky colours. The result looks harsh and overly bright. I switched OpenCamera to 5 shots with an exposure range of ±3 stops, which allowed to capture the scene as it was. I had to tweak saturaton more than usual to end up with a result that matches how I experienced this scene in the real world.</span></p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfExJJfTnT6lJdwDuSm8oplZwVgaCj1Y7R_yimT0hfJE27oBg8tuWX8pEoc_Rt9y5Uff6jBdjBnUTXFjzoARpwWhepHGmBVUvKrTNw_hrXf0genb4UXSuBHuk0VqV0kyrnB849gw33-2z6WraNUdsXkeqWTwaucC8I8hXQmUxIqjkZ3H_kHsQ/s1280/Example08-OnePlus.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="1280" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfExJJfTnT6lJdwDuSm8oplZwVgaCj1Y7R_yimT0hfJE27oBg8tuWX8pEoc_Rt9y5Uff6jBdjBnUTXFjzoARpwWhepHGmBVUvKrTNw_hrXf0genb4UXSuBHuk0VqV0kyrnB849gw33-2z6WraNUdsXkeqWTwaucC8I8hXQmUxIqjkZ3H_kHsQ/s320/Example08-OnePlus.jpg"/></a></div>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDxibXZiinfFcVneepzBHtk3gIeNgnxCDOUKLp6OPTs5YnsNhzjqv0R7aC7cHjQ1T9BqUrtVMKP_NKt2Kp1p31NdJ7QZ4znYG4o4kaBBVUCbrkGvKL79EKLEeRD-3guMM7yzirshrUR5Mvd103I1_QPs7Bwe0J45I0dgLuTpA4W1yKLGrihoo/s1280/Example08-Lex.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="1280" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDxibXZiinfFcVneepzBHtk3gIeNgnxCDOUKLp6OPTs5YnsNhzjqv0R7aC7cHjQ1T9BqUrtVMKP_NKt2Kp1p31NdJ7QZ4znYG4o4kaBBVUCbrkGvKL79EKLEeRD-3guMM7yzirshrUR5Mvd103I1_QPs7Bwe0J45I0dgLuTpA4W1yKLGrihoo/s320/Example08-Lex.jpg"/></a></div>
<h2>Conclusion</h2>
<p><span style="color: #274e13;">Again, if you want to make HDR photos the same way as I do, check out <a href="https://www.dr-lex.be/info-stuff/luminancehdr.html">the article on my website</a>. One of the things that makes it fun to process one's own HDR photos, is the fact that it brings back a bit of the magic that used to be experienced when taking photos on film, and only seeing the results later on when the film had been developed. It is not exactly the same thing, but producing the HDR image from the raw bracketed photos does have a bit of a feel of “developing” the images.</span></p>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-78283826931840860062022-07-01T14:45:00.003+02:002022-07-01T16:00:12.642+02:00Making G'MIC Qt GIMP plug-in work in the 2.10.30 Mac version<span style="color: #274e13;">If you are using the G'MIC-Qt plug-in for GIMP on Mac OS, especially <a href="https://github.com/aferrero2707/gimp-plugins-collection/releases/">the one from aferrero2707</a>, you may have encountered this error after upgrading to a recent GIMP build:</span><div><span style="color: #274e13;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimHenTw_E3bM5ndQeppEkEnmMC4lYH4-7ydtu3FWIy9rnvQMwmauX2owPt44sP1Xk4z6bhS1Bjuzp4cikbbblvIvtkkliY5ECHMQjpZHeAUhiuH0FcdMldJkpG0Cq5ffx_0yxPZp0cJ8LHIZnOoOBODe_rxuG45sllcJ_c-NO-_rYviSYEzac/s440/Gimp-gmic-kaputt.png" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="228" data-original-width="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimHenTw_E3bM5ndQeppEkEnmMC4lYH4-7ydtu3FWIy9rnvQMwmauX2owPt44sP1Xk4z6bhS1Bjuzp4cikbbblvIvtkkliY5ECHMQjpZHeAUhiuH0FcdMldJkpG0Cq5ffx_0yxPZp0cJ8LHIZnOoOBODe_rxuG45sllcJ_c-NO-_rYviSYEzac/s16000/Gimp-gmic-kaputt.png" /></span></a></div><span style="color: #274e13;"><br /></span><div><span style="color: #274e13;">GIMP says: <i>“Plug-in crashed: "gmic_gimp_qt",”</i> and warns about the dying plug-in possibly messing up GIMP's internal state.</span></div><div><span style="color: #274e13;">Running GIMP from the Terminal yields a bit more information:</span></div><blockquote><div><div><span style="color: #45818e; font-family: courier;">dyld: Library not loaded: @rpath/libintl.9.dylib</span></div><div><span style="color: #45818e; font-family: courier;"> Referenced from: /Users/username/Library/Application Support/GIMP/2.10/plug-ins/gmic_gimp_qt</span></div><div><span style="color: #45818e; font-family: courier;"> Reason: image not found</span></div></div></blockquote><p><span style="color: #274e13;">The Resynthesizer plug-in build from the same author suffers from the same problem.</span></p><p><span style="color: #274e13;">It seems that these builds of the plug-ins rely on the presence of a dynamic library file ‘libintl.9.dylib,’ most likely in the GIMP application bundle itself. But, my current build of GIMP only includes <i>libintl.8.dylib</i>. Judging from a <a href="https://gitlab.gnome.org/GNOME/gimp/-/issues/6529">related issue report on GitLab</a>, there never has been a true version 9 of this library and the number 9 was due to a mistake in the gettext library, which explains why the version number seemingly decreased.</span></p><p><span style="color: #274e13;">Until someone creates a new build of the plug-ins, there is a relatively straightforward workaround: shove a copy of the libintl file into the G'MIC and Resynthesizer plug-in library folders, and give it the expected name. This ensures the plug-ins will always find this library regardless of what is in the particular build of GIMP.</span></p><p><span style="color: #274e13;">There are 2 ways to obtain the dylib file:</span></p><p></p><ol style="text-align: left;"><li><span style="color: #274e13;"><i>[Slightly harder for those unfamiliar with low-level workings of Mac OS]</i><br />Open your GIMP application bundle (either by right-clicking the app icon, or by using the Terminal), and find the <i>libintl.8.dylib</i> file, normally in <i>Contents/Resources/lib/.<br /></i>Copy this file and rename the copy to <i>libintl.9.dylib.<br /></i>This works because there is no significant difference between the version 8 and purported version 9 of the file.</span></li><li><span style="color: #274e13;"><i>[Easier but not that safe]</i><br />Directly download it from wherever you find it on the web, and hope it is trustworthy. (<a href="https://github.com/SimulPiscator/GimpScan/blob/master/GimpScan/libgimp/lib/libintl.9.dylib" rel="nofollow">This particular one</a> works for me, it is 77584 bytes in size and has an MD5sum of 2a88ed7a2d8901fd0e75401e761b24d2.)</span></li></ol><p></p><p><span style="color: #274e13;">Place the libintl.9.dylib file inside the </span><i style="color: #274e13;">GMIC/lib</i><span style="color: #274e13;"> folder where you installed the G'MIC plug-in, most likely ~/Library/Application Support/GIMP/2.10/plug-ins/GMIC/lib/, then restart GIMP and it might work.<br />Same for </span><span style="color: #274e13;"><i>ResynthesizerPlugin/lib/.</i></span></p></div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-87863744678144790712021-05-15T22:21:00.002+02:002021-05-16T11:54:28.925+02:00Black & Decker 90515265 blade clamp can be used on the POW 1004<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCxud47E-S2T1V8FsH22Vbx6fnkY8n_V4NO8sUahPDTQ5KCZ-UZiRLytnQhX4AkBQPT4eexdxUis7DtINHHeW2d1jY_w3WQIRS9bRLjyF4OdlYuVM4K6k2CztNx76TrHjQA8HLsQ/s1280/saw-fixed.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1280" data-original-width="960" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCxud47E-S2T1V8FsH22Vbx6fnkY8n_V4NO8sUahPDTQ5KCZ-UZiRLytnQhX4AkBQPT4eexdxUis7DtINHHeW2d1jY_w3WQIRS9bRLjyF4OdlYuVM4K6k2CztNx76TrHjQA8HLsQ/s320/saw-fixed.jpg" /></a></div>
<div style="color: #274e13; text-align: justify" lang="en">
<p>In a nutshell: you can use the Black & Decker 90515265 blade clamp as a spare part for the Powerplus (Varo) POW 1004 jigsaw.</p>
<p>This blade clamp on my old POW 1004 crumbled into pieces when I tried to use the saw after it had been sitting idle for many years. The part is made from the typical cheap metal alloy that is often used for casted parts. I don't know what metal this is, but it is like the equivalent of <em>papier mâché</em> and it seems to degrade over the years.</p>
<p>I was about to toss the whole saw because it was very cheap anyway, but I did a quick search for spare parts anyhow. I didn't find any spares for it, but this 90515265 Black & Decker part kept popping up amidst the results and it looked awfully similar in shape. I took the gamble and ordered two. Lo and behold: it just fits. It has an extra protrusion that makes it a tight fit and I milled just a tiny bit off the saw's body just to be sure, but this is not actually necessary.</p>
<p>I guess the reason why this fits is because many of these cheaper saws use the same internal components from some generic Chinese manufacturer. Not sure if this poorly made clamp part is a case of planned obsolescence or just poor design, but anyhow now we know how to avoid another piece of e-waste.</p>
<p>The B&D part looks much better designed with some extra reinforcements, but I still recommend not to overdo the tightening of the saw.</p>
<p><em>(and now in Dutch…)</em></p>
</div>
<div lang="nl">
<h2>B&D 90515265 zaagklem past op de POW 1004</h2>
<div style="text-align: justify">
<p>In een notendop: u kan de Black & Decker 90515265 klem voor zaagblad gebruiken als vervangstuk voor de Powerplus (Varo) POW 1004 decoupeerzaag.</p>
<p>Deze klem op mijn oude POW 1004 verbrokkelde totaal toen ik de zaag probeerde te gebruiken nadat hij een paar jaar ongebruikt was gebleven. Dit onderdeel is gemaakt van de typische goedkope metaallegering die vaak gebruikt wordt om gegoten vormen te maken. Geen idee wat voor metaal het is, maar het lijkt het equivalent van <em>papier-maché</em> en schijnt bros te worden over de jaren.</p>
<p>Ik stond op het punt de ganse zaag weg te smijten omdat hij toch goedkoop was, maar ik besloot desalniettemin een snelle zoektocht te doen naar reserve-onderdelen. Ik vond niks voor dit model, maar dat 90515265 Black & Decker onderdeel bleef terugkeren in de resultaten en leek wel heel hard in vorm op het kapotte deel. Ik deed de gok en bestelde er twee. En kijk eens aan: het past gewoon. Er is een extra uitstulping waardoor het erg dicht bij de behuizing komt, en voor de zekerheid heb ik een klein beetje van de plastiek weggedremeld, maar dat was eigenlijk niet nodig.</p>
<p>Ik denk dat dit past omdat veel van deze goedkope toestellen dezelfde ingewanden gebruiken van een of andere generieke Chinese fabrikant. Ik kan niet zeggen of deze slechte klem een geval is van geplande veroudering, dan wel of het gewoon een slecht ontwerp is, maar nu weten we in elk geval hoe we nog een stuk e-afval kunnen vermijden.</p>
<p>Het B&D onderdeel lijkt veel beter ontworpen met extra verstevigingen, maar ik raad toch aan om het niet te hard aan te vijzen.</p>
<p><br /></p>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw75Sb4wO7oIwTOUZQmoLGGmcpfDNpGMi5tQCYc1Bue_QxRLBIjVXsZuWavwBz2bWetLmgPVdwL-Y7_7rYkhMq8j_6t383MzTigOxwx7FjoTNTNEcfWqkS3kyD2gcXbECOgnecEg/s1280/saw-blocks.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw75Sb4wO7oIwTOUZQmoLGGmcpfDNpGMi5tQCYc1Bue_QxRLBIjVXsZuWavwBz2bWetLmgPVdwL-Y7_7rYkhMq8j_6t383MzTigOxwx7FjoTNTNEcfWqkS3kyD2gcXbECOgnecEg/s320/saw-blocks.jpg" width="320" /></a></div><br />DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-991172929613232122020-10-03T12:44:00.003+02:002020-10-03T13:39:12.719+02:00Apple made system calls horribly slow in the 10.14.6 update. Thank you, Apple!<div lang="en" style="text-align: justify">
<p><span style="color: #274e13;">After installing the Mac OS 10.14.6 update from the end of September 2020, I noticed something wasn't right. A simple Perl script that scanned a directory for all files and that invoked the <code>stat</code> system command for every file, had become way slower than before. I'm not sure if the same would have happened if it had relied on Perl's own <code>stat()</code> call, but this script needed the shell command because it can offer information that Perl's own <code>stat</code> couldn't provide.</span></p>
<p><span style="color: #274e13;">Also when running a homebrew update, it seemed way slower than usual. It looks like Apple had messed something up w.r.t. system calls from within scripts, and perhaps other programs as well, although I didn't notice anything in regular apps. I knew this was likely to be reported by a gazillion developers and fixed soon, so I didn't bother. That horribly slow script of mine was annoying though, so I started seeing if it couldn't be improved.</span></p>
<p><span style="color: #274e13;">The problem here was that the Perl script did the obvious thing of invoking a new instance of <code>stat</code> through backticks, <em>for every single file it encountered.</em> That's a lot of overhead. Until now the overhead wasn't bad enough for me to be sufficiently annoyed, but Apple's “update” had now pushed this way into the zone of bad words and gnashing teeth. The solution was pretty obvious: reduce the overhead by reducing the number of system commands. Luckily this could be done: the stat command does accept multiple files as argument, and returns the results as multiple lines in the same order as the arguments.</span></p>
<p><span style="color: #274e13;">So, all I had to do was postpone the invocation of <code>`stat`</code> and build a queue of file paths, and execute the aggregated system command whenever it reached a certain size. In theory I could wait until the command line was about to exceed 262144 bytes (minus some margin to allow environment handling), which is the maximum system command length as reported by “<code>getconf ARG_MAX</code>.” In practice, I used a lower limit of 16 kBytes because above a certain threshold, the gain becomes pretty negligible anyway.</span></p>
<p><span style="color: #274e13;">The result was that for a particular run, the script went from a 120 second runtime to <em>3 seconds.</em> After Apple fixed the performance issue in a supplemental 10.14.6 update, the runtime became sub-second. So in the end I guess I should thank Apple for forcing me to refactor my script and making it way more efficient. Maybe every operating system should now and then introduce a temporary penalty on certain operations, or a limit on resources, just to force developers to be less lazy and actually improve their software instead of writing sloppy code and letting the machine just brute force it…</span></p>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-11001434544063963812020-04-30T15:01:00.000+02:002020-04-30T15:03:40.762+02:00Cosmic Frontier: Override, a remaster of Escape Velocity: Override<div lang="en" style="color: #274e13;">
<div style="text-align: justify;">
A year ago I posted how it is still possible to enter your registration code in EV Nova, <a href="https://blobblubblobblog.blogspot.com/2019/01/entering-your-ev-nova-registration-code.html">by jumping through some hoops</a>. If you want to play the previous instalment of Escape Velocity however, <i>Escape Velocity: Override,</i> maybe this will soon be possible again without any need for special magic, in a brand new reincarnation of the game.<br />
<br /></div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuhR2SYXsUGkjFTpDP_GjNjVuQYZNDKJskGsHLk1YD1cf8kZALhTlBRSvpVAGKsJr5Jg5nlNl4kJfY_WGOgf-slqnfxytCB5QUzBSOTuX2teAJm2ErHfyRvq7jb2fUV3nVIWa_pA/s1600/CFO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="127" data-original-width="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuhR2SYXsUGkjFTpDP_GjNjVuQYZNDKJskGsHLk1YD1cf8kZALhTlBRSvpVAGKsJr5Jg5nlNl4kJfY_WGOgf-slqnfxytCB5QUzBSOTuX2teAJm2ErHfyRvq7jb2fUV3nVIWa_pA/s1600/CFO.png" /></a></div>
<br /></div>
<div style="text-align: justify;">
A Kickstarter campaign has been launched to rebuild the EV: Override game engine for current operating systems. Due to legal reasons, the game will have a different name: <b><a href="https://www.kickstarter.com/projects/cosmicfrontier/cosmic-frontier-override/">Cosmic Frontier: Override</a>.</b> One of the persons on the team for this Kickstarter is <i>Peter Cartwright,</i> who was the scenario designer for the original EV Override game.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The remaster will feature the original scenario, augmented with new content like new ship types and new mission strings. Depending on your backer level, you can influence this extra content, like having your own starport bar or ship variant. At the time of this writing, the campaign is just beyond its 50% funding mark, with 19 days to go. I'd really like to see this succeed, so if you are a fan of games like Escape Velocity and you have about $10 (or more) to spare, <a href="https://www.kickstarter.com/projects/cosmicfrontier/cosmic-frontier-override/">head over to the Kickstarter page</a> and make your contribution.</div>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-55362205545140929862020-04-13T20:44:00.000+02:002020-04-18T20:33:46.373+02:00The Dreaded Butterfly Keyboard: trying to postpone the inevitable<div lang="en" style="text-align: justify; color: #274e13;">
In a nutshell:
If you have an Apple MacBook Pro or other machine with the dreaded ‘butterfly’ keyboard and it starts to exhibit problems, you options are:<br />
<br />
<ul>
<li style="color: #274e13">If you experience the problem of <b>a certain key sometimes not reacting,</b> try detaching the keycap (important: do not try this without first reading the “How to” section below for instructions). After looking—with a magnifying glass—for obvious dust, hairs, or crumbs and carefully removing any with precise tweezers, blast the mechanism with air from multiple directions, and reassemble the key.</li>
<li style="color: #274e13">If you experience the problem of <b>a key producing multiple keystrokes per press,</b> first do the above, and after reassembling the key, hit it many times as hard as you're comfortable with. Just type a piece of text like a madman, and there's a good chance that the key will behave afterwards.</li>
<li style="color: #274e13">If the above doesn't help, or problems occur too often, or you are not comfortable with taking the keys apart, and you have bought the machine less than 4 years ago, your better option is to go for the <a href="https://support.apple.com/keyboard-service-program-for-mac-notebooks">Keyboard Service Program</a>.</li>
</ul>
<h2>The full story</h2>
A few years ago I was kind of forced to buy a new MacBook Pro, because my previous one, a 2011 model, had the dreaded GPU failure—another design flaw by Apple albeit lesser known than the keyboard debacle. Given the high price and the rumours about the bad keyboard, I seriously considered buying a Thinkpad or other PC laptop, but it looks like I am still too much locked into the Apple ecosystem to take that step. I hoped that the newer design with the extra silicone ‘flaps’ built into the keyboard, would make it reliable enough that it wouldn't develop problems in the situation where the MacBook Pro would be sitting 95% of its lifetime. But that was too much wishful thinking.<br />
<br />
Even despite the fact that this laptop sits on a Griffin Elevator in a normal room with regular levels of dust, some keys did develop problems within less than one year. The down arrow key was first, it would sometimes miss a press. Then the same started happening with the Return key. I found <a href="https://www.ifixit.com/Answers/View/363530/How+to+remove+keycaps">a very useful page on iFixit Answers</a> that showed how both thes keys were assembled, and this allowed me to detach them without destroying them. I then blasted the insides of the mechanism with air like crazy, and that has effectively remedied this problem.<br />
<br />
A while later however, another problem started showing up: some keys, especially the ‘E,’ started producing double and sometimes even triple presses. The extra press would often come late enough that typing <i>‘bed’</i> could result in <i>‘bede.’</i> I again took off the ‘E’ key and inspected the internals, but all I found was a tiny hair that was only visible with a 10× magnifying glass. I gave the key the same treatment as the others, but it kept on exhibiting the multiple keystrokes problem.<br />
<br />
It seems to me that this key repeating problem is not caused by dust particles. It rather looks like the contacts become unreliable, maybe due to an oxide layer forming on them? The keyboard can become pretty hot when the machine is under heavy load during an extended period, like when running a modern game. Maybe this degrades the contact surfaces? This theory is further corroborated by the fact that I eventually did manage to make this problem go away, by simply <b>punching</b> the key much harder than usual. Percussive maintenance does work, even on delicate modern machines…<br />
<br />
The good news is, after a class-action lawsuit, Apple has started a <b>repair program</b> that allows to bring in your machine if it obviously exhibits these problems with the keyboard. They will then replace the keyboard, which usually means replacing the whole top assembly. As explained in <a href="https://www.youtube.com/watch?v=4KuVvb9DTaU">this video by Louis Rossmann</a>, theoretically it is possible to replace only the keyboard, but only with very specialised tools because the thing is actually <i>riveted</i> into the case and in many machines you need to detach the glued-in batteries without rupturing them and setting your workshop on fire.<br />
<br />
And by the way, I fully agree with Rossman that I expected a machine this expensive to at least be as reliable as a much cheaper one with similar specs, and also much more serviceable. Where are the days when Macs were modular machines that could be entirely taken apart without even needing a screwdriver?<br />
<br />
Even though the repair program is free, the downside of course is that you will have to do without your computer for a few weeks. So if you are only having mild problems with the keyboard, it may be a better option to first try to remedy it yourself, but only if you feel confident enough that you won't make things worse.<br />
<br />
<h2>
How to detach the keycaps without destroying them</h2>
If you want to have an attempt at detaching the keycaps yourself, BE VERY CAREFUL. Do not simply yank on the caps from any direction, or you will break little hooks and the cap will be forever loose. The trick is to slide a thin piece of plastic in between the cap and the butterfly mechanism (see <i>SHOVE</i> in the pictures below). Do not go too deep, try to keep the plastic as horizontal as possible to ensure it does not go under the butterfly hinges themselves. Then shift the plastic towards the clips (called <i>slide</i> in the pictures) to detach them. For most of the regular keys, the cap is attached with two clips at its top end, and two hooks at the bottom. For these keycaps, start the <i>SHOVE</i> in the middle of the left and/or right edge, as indicated with the arrows in the photo below, then <i>slide</i> upwards. Once one of the clips is detached, you can usually keep sliding across the upper zone of the cap to detach the other clip as well.<br />
<br />
A piece of cut-up blister packaging works well for this purpose, but a thin guitar pick (plectrum) should also work well. The longer keys like backspace will typically have 3 clips instead of 2.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKli6QrHVayNyXu8yUMV9C4gldmIu_D8aCsSXtZt1YKXwzhTyCju29ruTUH512A-NF7UgPvWKXvQCN3MMouJ4HG6uXGcSsfvjx_UNod-CTNDaZuz57MhdQx1RoeM18Qpd0EHBl2g/s1600/20200413-MBP-other_keycaps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1440" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKli6QrHVayNyXu8yUMV9C4gldmIu_D8aCsSXtZt1YKXwzhTyCju29ruTUH512A-NF7UgPvWKXvQCN3MMouJ4HG6uXGcSsfvjx_UNod-CTNDaZuz57MhdQx1RoeM18Qpd0EHBl2g/s400/20200413-MBP-other_keycaps.jpg" width="400" /></a></div>
<br />
For other keys, the procedure differs only in the place where you have to shove the pick and in which direction you should then slide it. For the ‘up’ arrow key, the clips are at the <i>right.</i> For the ‘down’ key, the clips are at the <i>left.</i> For the tall European style of Return key, the clips are at the <i>left,</i> and there are 3 of them. I have borrowed the photos from the <a href="https://www.ifixit.com/Answers/View/363530/How+to+remove+keycaps">iFixit page</a> to illustrate this. Note how the whole mechanism of the return key has been detached in this photo, this is <b>not</b> how it is supposed to be.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibQO8ksFudoLE_hhdb-hpa3SMvPkFDwak-_RsjIMUGvC2hRoLp8IQ4ZY245CfADs3OO3Yki900wNMGe-khKqkkh_Nv6mu9dtOu_8ynipZ1QquDGV0lV2UBhuSd9sw5FBckhlk3CQ/s1600/Shove-n-slide.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibQO8ksFudoLE_hhdb-hpa3SMvPkFDwak-_RsjIMUGvC2hRoLp8IQ4ZY245CfADs3OO3Yki900wNMGe-khKqkkh_Nv6mu9dtOu_8ynipZ1QquDGV0lV2UBhuSd9sw5FBckhlk3CQ/s400/Shove-n-slide.jpg" width="400" /></a></div>
<br />
To reassemble, slide the hooks back in their place, then re-engage the clips by pressing on the zone where they reside.<br />
<br />
The space bar is notoriously difficult. If you feel you need to take it apart, consider going for the Apple repair program instead. If you break things, you won't be able to benefit from the free repair.<br />
<br />
And of course, the usefulness of the repair program is very debatable. The replaced keyboard will suffer from the same flaws. I wish there would be a replacement program where I could exchange my inherently flawed MacBook Pro for a considerable rebate on a late 2019 MacBook Pro with its reliable scissor keyboard.<br />
<br />
<h2>A final piece of advice</h2>
If it isn't already obvious: never do anything in the vicinity of your butterfly keyboard equipped machine, that could cause any small particles to fly around. Or, cover the keyboard with a sheet of paper if there is any such risk.<br />
<br />
Recently, the backspace key started acting up. Something had obviously got inside the mechanism, but with the naked eye I couldn't see anything suspicious. Even after repeated sessions of removing the key cap and blowing air, it kept feeling strange and sometimes did not respond to presses. I then took a flashlight and magnifying glass, and finally saw that some tiny piece of something had got under the mechanism. It was a pain to remove because Apple's silicone flaps that were supposed to keep junk from getting inside, now made it hard to get the junk out. I eventually managed it with extra fine tweezers, and it proved to be a tiny piece of clipped fingernail any other keyboard wouldn't care about. So, don't clip your fingernails in the vicinity of the keyboard…<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDgSm1dougzW0jhV9frwLMcmduZTfhK00R2JTIayMnHQS3QrVxroRCR8IccY1GcV6gWqDZdRNUVrNIMmhyphenhyphenFxtAM1b4n3s4c91y6bSpcpOuFkHgUL11Eawl9zuytr7-A4-jLw_O_g/s1600/nail_of_doom.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDgSm1dougzW0jhV9frwLMcmduZTfhK00R2JTIayMnHQS3QrVxroRCR8IccY1GcV6gWqDZdRNUVrNIMmhyphenhyphenFxtAM1b4n3s4c91y6bSpcpOuFkHgUL11Eawl9zuytr7-A4-jLw_O_g/s400/nail_of_doom.jpg" width="400" height="267" data-original-width="1440" data-original-height="960" /></a></div>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-91938946269858186342020-04-10T17:20:00.000+02:002020-04-20T17:22:00.999+02:00True Tone display abruptly changing tint? Try not covering the sensor!<div style="color: #274e13; text-align: justify;" lang="en">
<p>
On various forums, one can find complaints about the True Tone display of the more recent MacBook Pro models suddenly changing tint, or the intensity of the screen flickering. Some of those forums will tell you to disable the True Tone or Night Shift feature. If you don't care about those features, it's an effective workaround, but it is kind of stupid to buy a machine with all these advanced features and then disabling them.
</p>
<p>
I have also experienced this, and found no rhyme or reason behind it—until now.<br />
I'm pretty sure there are some other causes for this problem, including hardware or software faults, but before you go bringing your MacBook Pro to a service center, you might want to check the following first.
</p>
<p>
Many people cover the camera built into laptop screens with a sticker or something else, for reasons of privacy and/or security. The problem is that the True Tone sensor is very close to the camera. If your sticker is large enough, it will partially or fully cover the sensor. Even if that's not the case, maybe you often do use the camera, and then have to park the sticker somewhere, and a convenient place is right next to the camera—possibly right on top of the sensor.
</p>
<p>
When covered, the sensor will receive much less light than it should, possibly filtered in some strange way, and this can cause the True Tone system to react wildly to tiny changes in ambient light. I still don't understand why the adaptation algorithm allows such quick changes at all, but one can't really blame the system for starting to act weirdly in a very poorly conditioned situation.
</p>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPoWlqgg-rGDjaXvxHw_-v6v0yuOmM2GxXlbwzt04oZpCJApJ2iNynd01VcmeQwYvMQln-CZ-I3r6pnV2BpJhA_vI5C4FNkrzLMR6b2YYypj7kphV_rvAtbE4eqReR3R-4UaiwUg/s1600/TrueTone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="720" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPoWlqgg-rGDjaXvxHw_-v6v0yuOmM2GxXlbwzt04oZpCJApJ2iNynd01VcmeQwYvMQln-CZ-I3r6pnV2BpJhA_vI5C4FNkrzLMR6b2YYypj7kphV_rvAtbE4eqReR3R-4UaiwUg/s400/TrueTone.jpg" width="400" /></a></div>
<p>
The sensor is very hard to see, which is why most people are unaware that it exists at all, let alone avoid covering it. On my MacBook Pro model (2018 15 inch), the sensor proves to be at 17 mm to the right of the (more visible) camera, as can be seen by shining a strong flashlight across it. You may want to verify on you particular machine where the sensor really is situated.
</p>
<p>
So the morale of this story is: if you have any thingamajig that covers the camera, make sure it stays well away from the sensor. If you then still have strange variations in the tint of the display, then you may start worrying about a deeper problem. As a matter of fact, in my case the problem still occurs occasionally. It looks like the sensor gets confused in situations where there is little light, or rather weak light coming from a direction mostly parallel with the screen surface. What usually helps in such cases, is to provide a stable source of light closer to the computer, so just turn on a lamp.
</p>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-83464780847269128982020-03-21T16:32:00.002+01:002020-11-26T01:02:45.734+01:00Calibrating a cheap digital Chinese hygrometer<div lang="en" style="color: #274e13;">
<div style="text-align: justify;">
This article describes an method that could be used to get reasonably correct read-outs on a digital hygrometer even if it has no provisions for calibration at all. This was mostly an experiment but it has proven to work for the few cases where I tried it. Don't expect miracles from this method, but it may keep the hygrometer readout pretty reliable around the point where it will normally be used.</div>
<div style="text-align: justify;">
<br /></div>
<h2>Introduction</h2>
<div style="text-align: justify;">
Very cheap combined digital thermometer and hygrometer units can be bought from the usual Chinese marketplaces. The thermometer part of these things is usually reasonably accurate, but the hygrometer part is a game of roulette. Especially if you allowed the sensor to become truly wet by placing the meter in a room with 100% humidity, the risk is high that the calibration will be way off. A proper hygrometer should have a calibration button or button combo that has to be pressed after leaving the unit in an enclosed space with a saturated salt solution, which will stabilise at 75% RH after many hours. These cheap things however rarely have such button.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDMc_fRHcRIKW2CACwcvb8xkomfHPbqVftDNxX1edly_LR_4gpCeHEKmRw7fW35PkWDGf5N_O1NWdb420rKUVfdT4oh5HcdludoGkT1lkVdbpsb20ZVRpRlEnKdqQ-1Fjm3eTRBA/s1600/humidity.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDMc_fRHcRIKW2CACwcvb8xkomfHPbqVftDNxX1edly_LR_4gpCeHEKmRw7fW35PkWDGf5N_O1NWdb420rKUVfdT4oh5HcdludoGkT1lkVdbpsb20ZVRpRlEnKdqQ-1Fjm3eTRBA/s400/humidity.jpg" width="400" /></a></div>
<br />
<br />
<div style="text-align: justify;">
In the hopes that the device shown in the above photo would have some secret button combo to reset the measurement to 75%, I have tried inserting the battery while holding down buttons in various combinations, or mashing the buttons while the unit was already on, but without any success. I doubt whether devices like this contain any EEPROM at all, the measurement tables are probably hard-coded in ROM, and it is assumed that the humidity sensor will be accurate enough.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Hence the only way to correct the read-out, is to modify the signal coming from the sensor itself. There are two possible approaches:</div>
<ol>
<li style="text-align: justify;">Add resistors to either increase or reduce the electrical impedance of the sensor. This is probably a bad idea however, because it will change the slope of the humidity response curve. The meter will only be correct around a very limited set point, and deviate increasingly when moving away from this set point. It would take some fancy op-amp circuitry to truly shift the impedance curve without altering its slope, and this is way too much effort for a cheap device like this: just buy a better unit for the money that would go into buying parts and spending time on building this circuit!</li>
<li style="text-align: justify;"><b>Physically alter the sensor itself.</b> These sensors are simple: it is a substrate sandwiched between two metal plates, or with two intertwined grids of metal ‘fingers’ at one side. The substrate contains some mildly hygroscopic material that will absorb moisture from the air, and the more humid the substrate, the better it conducts electricity and the lower the impedance. Therefore if we can alter the degree to which the substrate wants to absorb water, we can shift the impedance value. I'm not sure whether this won't also alter the slope of the impedance curve, but from my initial tests this seems pretty OK when using the right substances.</li>
</ol>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2PiuhYrHilw5xFAyM1nZhDqPPsg5102OM6URq-r6lhxq3hpBZgFPApeo2YKUV3XVW85GX3R9iNniVnh6G7fU5xkeJ8GT0w9yhW2WLIfna7YEbw4mGmTQu_I57q1Xn0kKtUizog/s1600/humidity-sensor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2PiuhYrHilw5xFAyM1nZhDqPPsg5102OM6URq-r6lhxq3hpBZgFPApeo2YKUV3XVW85GX3R9iNniVnh6G7fU5xkeJ8GT0w9yhW2WLIfna7YEbw4mGmTQu_I57q1Xn0kKtUizog/s400/humidity-sensor.jpg" width="400" /></a></div>
<br />
<div style="text-align: justify;">
<p>
I have tried approach 2 with reasonable success. While in theory you could use only a saturated salt solution to check the correctness of your adjustments at 75% RH, it is better to also rely on a true calibrated hygrometer to verify that the cheap meter gives more or less correct readings around the humidity level where you will use it the most.
</p>
</div>
<h2>The method (updated 2020/11/25)</h2>
<div style="text-align: justify;">
<p>A warning in advance: to get good results, you will need a ton of patience. This is not something you can get right in a few hours unless you are extremely lucky. This takes multiple iterations of a cycle that takes at least 2 days. If time is money, buying a good and reliable meter is much more economical.</p>
<p>
I have encountered two styles of sensors and they react somewhat differently to manipulation, but in the end the following strategy seems to work best. We'll start out by applying too much of a substance that is <em>hygroscopic,</em> in other words that likes to absorb water. Then we'll gradually wipe away some of this substance until the read-out is correct. The tricky thing is that wiping the sensor will somehow disturb it in such a way that one needs to wait several days until it stabilises.
</p>
<p>
Initially I used only <em>hand sanitiser gel</em> as the hygroscopic substance. Such gels will always contain something that attracts water, because otherwise the alcohol in the gel would dehydrate your skin. Typically it will be glycerine (glycerol) but it doesn't really matter what exactly it is. The concentration of this additive is also usually quite low in these gels, which makes it easier to apply small adjustments. The hand gel worked OK for the first type of sensor I tried to tweak. For the second type of sensor however, I had to use a calcium chloride (CaCl<sub>2</sub>) solution, mixed with a bit of the sanitiser gel to make it more sticky. I obtained the CaCl<sub>2</sub> from the typical passive humidity absorbers that use a bag or brick of CaCl<sub>2</sub>. This absorbs humidity from the air and gradually turns into a brine solution that drips down into a container. These devices are mostly useless as far as dehumidification goes, but they are a good source of CaCl<sub>2</sub>. I simply took a drop of the brine solution, mixed it with a bit of the gel, and applied it to the sensor, wiping off the excess such that it wasn't entirely soaked and gave a read-out below 99%.
</p>
<p>
Next to the hygroscopic substance, you'll also need a classic hygrometer calibration box. This consists of a watertight sealed box, with inside it a small container filled with a saturated salt solution. Take a small cup like a shot glass, fill it with salt, then add water until the salt has become a wet sludge with the water just not spontaneously flowing out of it. This kind of salt sludge has the interesting property that when placing it in a sealed box, it will make the relative humidity inside that box gradually become almost exactly 75%.
</p>
<div>
So to recap, the things you need are:
<ul>
<li style="color: #274e13;">Some hygroscopic substance that sticks to things. What seems to work best is a mix of hand sanitiser and calcium chloride brine.</li>
<li style="color: #274e13;">A sealed box with inside it a small cup of saturated salt solution,</li>
<li style="color: #274e13;">a reasonably well-calibrated hygrometer,</li>
<li style="color: #274e13;">a lot of time.</li>
</ul>
</div>
</div>
<h3>Steps</h3>
<div>
<p>
The general strategy is to start with too high a read-out and then gradually wipe the sensor to bring it closer and closer to the correct value. The most tricky thing is not to wipe too much, because then you have to start all over again. Wiping the sensor disturbs it only a little. Re-applying the hygroscopic stuff brings it totally out of whack and it takes many iterations to make it stable after that. Therefore you will want to avoid bringing the sensor to a state of too low read-out. Wipe carefully!
</p>
<ol>
<li style="color: #274e13; text-align: justify;">Start by ensuring the sensor is clean. If there is any residue on it from a previous failed experiment, remove it with water or rubbing alcohol, whatever works best.</li>
<li style="color: #274e13; text-align: justify;">Cover the sensor uniformly with the hygroscopic stuff. Most likely this will cause the read-out to jump to 99%. Wipe off the excess until it drops below 99%.</li>
<li style="color: #274e13; text-align: justify;">Now rely on the calibrated hygrometer to continue wiping the sensor until it is near the actual humidity value. Needless to say, take care not to breathe humid air towards the general direction of either meter. This is the most tricky step. In my case I had to wipe until the read-out was 5 to 10% <em>below</em> the actual value. I can't really explain why, and it is possible you may need to aim for a different offset. This is one of the things that makes this process tedious. It seems the required offset became smaller with each cycle, so you should become more careful as the error on the read-out decreases with each cycle of this procedure.</li>
<li style="color: #274e13; text-align: justify;">Now put the hygrometer in the calibration box with the salt sludge and leave it alone for at least <strong>36 hours.</strong> After that, see what value it settled at and remember this value, then take the hygrometer out of the box and let it settle again for at least 12 hours.</li>
<li style="color: #274e13; text-align: justify;">Now look at the final value and compare to the known humidity. Ideally you will want to do this at a humidity level where you want the hygrometer to be the most accurate.</li>
<li style="color: #274e13; text-align: justify;">If the read-out is very close to correct, resist the temptation to get it right to the last percent: most likely you will mess it up and will have to start all over. Just stop and be content with what you have. Remember, it is much harder to correct too low a read-out than too high.</li>
<li style="color: #274e13; text-align: justify;">Otherwise, if the value is still too high and it also was well above 75% in the box, go back to <strong>step 3</strong> and wipe, but take care to make increadingly small corrections.</li>
<li style="color: #274e13; text-align: justify;">If on the other hand the value is too low, it depends. If it is way too low and the value in the box was also well below 75%, you have over-done the wiping and you will have to go back to <strong>step 2</strong> and prepare yourself for several more days of going through the same cycle over and over. If it is just a bit too low but the read-out in the sludge box was very close to 75%, then most likely you will never get a perfect reading from this meter across the whole range. You could try to apply a different mix of hand gel and CaCl<sub>2</sub> in the hopes of getting a better overall response curve, but in the end you might just have to be content with slightly too low readings at lower humidities.</li>
</ol>
<div style="text-align: justify;">
<p>
The 75% calibration box has a double purpose. First, it offers an initial test to see if the sensor has any chance of being close to correct. Second, it speeds up the stabilising of the sensor after it has been disturbed by the wiping. Again, I cannot really explain why it behaves like this, but in the end it does provide a good result.
</p>
<p>
As you can see, this method is tedious and involves a lot of trial and error. This is what makes it mostly useless, unless you're in the middle of a virus pandemic and are looking for things to kill your time and gain some usable measurement devices during this process…
</p>
<p>
Even if you can perfectly nail the calibration to 1% accuracy, of course you still shouldn't trust these things to be reliable. Also never use these simple hygrometers in environments where relative humidity get near to 100%, because in extreme cases, a drop of water may form on the sensor and disturb the hygroscopic layer. Just buy a good hygrometer that can be calibrated if accuracy and reliability is important.
</p>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-66378190097725407792020-02-26T14:22:00.000+01:002020-02-26T14:22:18.227+01:00Get rid of the bottom toolbar in Google Chrome on Android<div style="color: #274e13;" lang="en">
<p>
In a recent update, Chrome on Android introduced a change that caused the previously experimental ‘duet’ feature to be enabled by default. This places an additional toolbar at the bottom of the screen with buttons for new tab, search, and share. This bar is supposed to disappear at the same time when the top toolbar disappears (typically when scrolling down), but on my phone this was often not the case, especially on pages that are not long enough to allow scrolling. Worse, the bottom part of such pages could then become permanently obscured by the toolbar, pretty damn annoying.
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS2qEaf2O6ibamgyFg0l-jbB8uKd8HQtdLXyTPfwK76Gzdy49MBr_IpBedHed15LC2Fzi-4ACFzwpvB98LfeNTOdRk7epN_sNZBbkwzce9bpbmWBVmZAdkMWz4RH76_aSwBYtE5Q/s1600/chrome_duet.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="540" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS2qEaf2O6ibamgyFg0l-jbB8uKd8HQtdLXyTPfwK76Gzdy49MBr_IpBedHed15LC2Fzi-4ACFzwpvB98LfeNTOdRk7epN_sNZBbkwzce9bpbmWBVmZAdkMWz4RH76_aSwBYtE5Q/s400/chrome_duet.jpg" width="225" /></span></a></div>
<p>
It does make sense to place controls at the bottom because this makes them usable with one's thumbs, but then <i>everything</i> should be put at the bottom, not both at the top and bottom! Because the latter is currently impossible in Chrome however (as far as I know), the best you can do to avoid the possible nuisances of this bottom toolbar, is to disable it.
</p>
<p>
This used to be controlled by a single setting called “Chrome Duet” in the chrome flags. Now however, there seems to be a new one called “Duet TabStrip Integration” that also enables this feature. It is unclear how these interact.
</p>
<p>
To completely disable the bar, enter “<span style="font-family: Courier New, Courier, monospace;">chrome://flags</span>” in the address bar, and then enter “<span style="font-family: Courier New, Courier, monospace;">Duet</span>” in the Search flags box. Set both “<b>Chrome Duet</b>” and “<b>Duet TabStrip Integration</b>” to “<span style="font-family: Courier New, Courier, monospace;">Disabled</span>”. Then restart Chrome. If the bar is still present, toggle the flags back to “Enabled” and then “Disabled,” and restart Chrome yet again. Keep repeating this dance and eventually it will work.
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCn79ISJYx8Ve7f_w62mjMzvcupneCXQ-oS0QOAVvZWKNZ8NdaQBotsYjIqFIYYSfECNetbpun1cQT0FDWvZ4behfCPmsEvcqlJd2k45ZpS1EPVi_k_V_QHPscxY33_7mmLC6jtQ/s1600/chrome_duet_flags.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="960" data-original-width="540" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCn79ISJYx8Ve7f_w62mjMzvcupneCXQ-oS0QOAVvZWKNZ8NdaQBotsYjIqFIYYSfECNetbpun1cQT0FDWvZ4behfCPmsEvcqlJd2k45ZpS1EPVi_k_V_QHPscxY33_7mmLC6jtQ/s400/chrome_duet_flags.jpg" width="225" /></span></a></div>
<p>
I'm inclined to try another browser but unfortunately Google managed to lock me into their ecosystem because I use Chrome on other devices and it is pretty handy to have everything synchronised, like bookmarks. If they keep annoying me with unexpected changes like these however, I may just become motivated enough to migrate all devices to another browser.
</p>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-27349434745559438702019-12-19T00:12:00.001+01:002021-07-14T16:22:23.445+02:00The State of Thingiverse, End of 2019<div style="text-align: justify;">
<span style="color: #274e13;">In June 2016, I bought a 3D printer on a whim, I only had one real concrete idea for something useful to print. But no worries, because there proved to be a website containing a few millions of free 3D models. Granted, the vast majority of models posted on it proved to be useless junk, but some were either very cool or truly useful. That site was <b><a href="https://www.thingiverse.com/">Thingiverse</a>.</b> It was, and still is, the de facto standard for 3D printable model sharing. At that time, the site worked pretty well and had a very active and mostly friendly community. Questions would most often be replied to with useful advice, and if there was a problem with the website, there would at least be an acknowledgement even if the problem was not soon fixed.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<h2 style="text-align: justify;">
<span style="color: #274e13;">The Good</span></h2>
<div style="text-align: justify;">
<span style="color: #274e13;">Thingiverse used to be one of the main things that kept feeding my interest in 3D printing. Not just because of the new models coming in every few minutes, but also because of the community, and because it was pretty easy to share my own models, many of which started out as improvements upon someone else's. I am now the co-author of the “<a href="https://www.thingiverse.com/thing:2738211">Flexi Rex with stronger links</a>,” one of the models a present-day buyer of a new 3D printer seems likely to print as one of their very first attempts. I never anticipated this, I only improved upon an existing model because it broke way too soon when my grandson was playing with it. This is what I like about this community, one can easily take an existing model and improve it, and share this improvement for everyone to enjoy.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5AhRqfpJdRIvOi-MVyuHlu9nUO-OCJaLrAONGf6NfryVx5p-hxCt1uJ7J-OQvDeWtZ4rn_L24wF8tDf3IYCZRlrIj1sqilZKPvWpZN-XGVgDpmCr6OXL8DJKZnzF0-038VU0NCA/s1600/Thingiverse-benchy-sink.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="960" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5AhRqfpJdRIvOi-MVyuHlu9nUO-OCJaLrAONGf6NfryVx5p-hxCt1uJ7J-OQvDeWtZ4rn_L24wF8tDf3IYCZRlrIj1sqilZKPvWpZN-XGVgDpmCr6OXL8DJKZnzF0-038VU0NCA/s400/Thingiverse-benchy-sink.jpg" width="400" /></a></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<h2 style="text-align: justify;">
<span style="color: #274e13;">The Bad</span></h2>
<div style="text-align: justify;">
<span style="color: #274e13;">Today however, things have changed for the worse. The turning point was somewhere in 2017, when one of the main moderators of the website, called ‘<a href="https://www.thingiverse.com/glitchpudding/about">glitchpudding</a>’, suddenly left. After this, it became much harder to get any response from whomever was responsible for maintaining the site. At the increasingly rare times that there was some kind of announcement, each time it was from a different person I had never heard of before, as if the previous one had been fired. This would not have been that bad if the website would have maintained its same quality level, but it did not. All kinds of annoying issues started popping up, like the website becoming very slow at times or throwing 500, 501, 502, … HTTP errors at random moments.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Complaining about this seemed to be of no use, because only rarely would there be a response from what might either be a Thingiverse employee or maybe just some random joker — there was no way to verify that whoever was replying on the discussion forums, was an actual Thingiverse / Makerbot employee, it was often a different username, more often without than with the “Thingiverse” badge.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Then it got worse: apparently the nearly invisible <i>Oompa-loompas</i> now running the site, were trying to make certain changes for… reasons. One can only guess when something has changed, because there is barely any communication when this happens. The most obvious sign of a change is an increase in the number of issues. Suddenly all photo previews were broken. Then suddenly they worked again, but any photo that was not in a 4:3 aspect ratio, would be shown distorted. This was not the case before: photos used to be letterboxed and/or cropped in reasonable ways. What was the point of this change? It only made the user experience worse.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Now at the end of 2019, there are finally some advance warnings or notifications that some issue is being worked on. For instance in December there was a site-wide banner telling that there would be <i>“maintenance”.</i> One would expect that this maintenance was aimed at improving the state of the website, but instead when it had ended, we had an extra HTTP error in the 500 range and random 404 errors as well, even on the main page. A website gives <i>a very bad impression</i> if its main page throws a 404 error.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Overall the website in its current state gives a strong impression of lack of professionalism, sometimes downright <i>amateurism.</i> It seems that whoever is maintaining it, does no more effort in testing their changes than trying something once and then assuming it will always work. I wonder if they have a testing environment at all. Often it feels as if they make changes to the production servers directly. The changes give an impression of lack of skill in developing a modern cloud-based website, rather it looks like trendy hipster frameworks are just being thrown on top of a rickety organically grown base without much vision. I am not saying the (obviously few) developers working on the site are amateurs, but the end result does give that kind of impression. This is likely to be merely because management does not allow the developers to spend enough time to implement things properly, so they are forced to only quickly hack things together.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">These are all ‘feelings’ and ‘impressions’ due to the total lack of communication. Only from the recent 504 error pages I could see for instance that they had either thrown ‘openresty’ into the mix, or had already been using it but had now broken something about it. There has been no announcement for this or an explanation why.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">I have created <a href="https://github.com/DrLex0/ThingiverseIssues">my own issue tracker on GitHub</a> just to make all the most obvious problems with the website more visible, in the hopes that this would help the maintainers to decide what to fix next, but it seems to be completely ignored.</span></div>
<br />
<h2>
<span style="color: #274e13;">The Ugly: my guess at what is going on here</span></h2>
<div style="text-align: justify;">
<span style="color: #274e13;">In case you didn't already know, Thingiverse is owned by <i>Makerbot</i> and since 2013, Makerbot is a subsidiary of <i>Stratasys,</i> a company that already marketed 3D printers way before the big 3D printer boom started around the year 2010. Makerbot has changed from a small company selling affordable open source printers, to a big company selling rather expensive walled-garden machines aimed at the education market. I guess most of the original enthusiastic team wanting to change the world (like glitchpudding) have either been fired and replaced by people only interested in milking profits from whatever looks vaguely promising without actually caring about it, or they have transformed into such people themselves.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Thingiverse was part of the original vision of making 3D printing affordable for the home user, a vision that does not really fit with Stratasys, the company selling industrial machines at industrial prices. I guess that at every moment since 2013 when a decision about Thingiverse had to be made, the decision has been biased towards gradually sunsetting the website. Nobody at those companies seems to understand the value of this huge playground that encourages anyone to buy, experiment with, and get familiar with 3D printers. It doesn't matter that no beginner will immediately buy a horribly expensive Makerbot or Stratasys printer: the mere fact that there is a low threshold to gain experience with 3D printers, will increase the chance that these same tinkerers will later on generate profits for those companies. That however is probably way too much thinking-ahead for the average marketeer who has been brainwashed to always take greedy short-term decisions and lodge themselves into a cozy local optimum.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<h2>
<span style="color: #274e13;">What Really Is Going On</span></h2>
<div>
<span style="color: #274e13;">Shortly after writing this article, someone notified me about this blog post: </span><span style="color: #274e13;"><a href="https://xyzdims.com/2019/11/21/misc-formnext-2019-aka-just-too-much-for-one-day/">https://xyzdims.com/2019/11/21/misc-formnext-2019-aka-just-too-much-for-one-day/</a></span></div>
<div>
<span style="color: #274e13;">It contains a part about Makerbot's presence on the Formnext 2019 exhibition. The author had the chance to talk to Jason Chan, who is responsible for Thingiverse. Many of my suspicions are confirmed: only <strong>two</strong> developers are assigned to the site (and I guess only part-time), and the company greatly underestimates the importance of Thingiverse. There seems to be some commitment to improve it, but again it looks as if the ones holding the bag of money do not share this commitment… Still no concrete indication of what will actually happen to the site.</span></div>
</div>
<span style="color: #274e13;"><br /></span>
<br />
<h2>
<span style="color: #274e13;">“But it's free!”</span></h2>
<div style="text-align: justify;">
<span style="color: #274e13;">Every time someone posts a complaint about the broken state of the website on the Thingiverse Group forums, there will be replies in the vein of: <i>“but it is free, you have no right to complain.”</i> <b>I disagree.</b> </span><span style="color: #274e13;"><i>There is no such thing as a free lunch.</i> </span><span style="color: #274e13;">Everyone who uploads content to the website, somehow </span><i style="color: #274e13;">invests</i><span style="color: #274e13;"> in it. Some more than others, depending on how much effort they put in crafting the presentation and documentation of their Things. I have invested quite a lot, with about 120 published Things, each with pictures and an extended description. What I am now getting in return, is a pile of issues that make it harder to upload and edit Things, and I have no idea where the site is heading because of the lack of communication from the part of the maintainers. This lack of communication and lack of care to properly test each change, feels very disrespectful, even though only in an indirect manner. It almost makes me feel like an idiot for having put all this effort in my uploads during the years I have been on the site.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">There are a few particular users on the Thingiverse groups who will react religiously against any complaint, one of whom has a pretty apt username given his writing style, which makes it seem as if he is drunk (he probably just is). Ignore them, because they are either trolls feeding on the anger, Makerbot employees paid to hold a denial campaign, idiots, or all of the above. None of them upload much of anything, therefore they don't even have any ground to stand on with their claims that the site works perfectly fine.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><b>The content creators are the only reason of existence for Thingiverse.</b> These creators deserve a little more respect than being ignored and being handed increasingly cumbersome tools to upload their content, without any explanation of what is being changed about the website, when, and why. There is no excuse for such poor communication in this era with so many different digital communication methods (and no, <i>Twitter</i> is not really a good communication method). I know it can be done better, because I was pretty content with how the site was maintained and how changes were communicated when I joined it in 2016. I have the feeling that the main breaking point for the website, was when the aforementioned glitchpudding left somewhere in 2017. It seems to have gone downhill ever since. I am not the one who demands infinite progress in everything, but I do expect that when something is good, people do the effort to keep it good.</span></div>
<br />
<h2>
<span style="color: #274e13;">Solutions, alternatives?</span></h2>
<div style="text-align: justify;">
<span style="color: #274e13;">Obviously any sane person witnessing such evolutions on a certain website, would start looking for an alternative. That however proves to be a big problem with Thingiverse: there is no real alternative.</span><span style="color: #274e13;"> </span><span style="color: #274e13;">I have looked at some other sites, but</span><span style="color: #274e13;"> Thingiverse's biggest trump card is its sheer library of things. No other site comes close to it, therefore it doesn't matter if Makerbot only keeps Thingiverse at a level where it is just usable enough, people will keep coming for the content.</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><a href="https://www.youmagine.com/">YouMagine</a> looks decent at a first glance: its interface is the most similar to Thingiverse's I have found so far. It is </span><span style="color: #274e13;">owned by Ultimaker, </span><span style="color: #274e13;">alhough this is not explicitly mentioned on the site's main page. </span><span style="color: #274e13;">After trying it out however, it is obvious that YouMagine suffers from the same lack of maintenance, or worse. The ‘blog’ part has not been updated in ages, the featured things remain the same for a very long time, and reporting spam is impossible because the ‘report’ link only points to a dead support e-mail address. The 3D model previews and the ‘assembled view’ feature are mostly broken. Links and bold text do not work in the description text, which is incredibly annoying (I can imagine that they disabled links due to the spam, but bold text: why?!)</span><br />
<span style="color: #274e13;">The site still runs, but it looks like a ghost ship. Maybe the only good thing about this is that if nobody changes anything about it, they also cannot break anything about it…</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">There are other sites like <a href="https://www.myminifactory.com/">MyMiniFactory</a>, against which I have grown an aversion due to the apparent shills promoting it on Thingiverse groups as the best thing since sliced bread. There is also <a href="https://cults3d.com/">Cults3D</a> but just as with MMF, I find that there is too much emphasis on hiding content behind a paywall.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">I have no concrete ideas for a solution. The best thing would be if a new website would be constructed by a community that does care about it, not tied to one particular manufacturer, and with a strategy to keep the community and website alive in the long term. Ideally, somehow the Thingiverse library would then be migrated to this site, but that is optional. I have made backups of all my uploaded models and their descriptions and photos, and I will happily re-upload them to a new website that is worth it. Maybe it would be better this way because to be honest, I estimate 80% of all Thingiverse models to be junk that would better be garbage collected. Starting from a clean slate might be better…</span></div>
<div style="text-align: justify;">
<br /></div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com1tag:blogger.com,1999:blog-15707288.post-66366782347432570802019-12-06T19:47:00.000+01:002019-12-06T21:28:02.582+01:00A ‘solar’ USB power bank with a fake solar panel, really?<div lang="en" style="color: #274e13; text-align: justify">
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHVdPnKwJ0RbnxW0FMmv2y7XDkQ97tG8EYD5zErBugxhAHAp0woG-qBUgB-6TjEkVlEeuKlcTu86lM7JjC8q8FGAV80i9ySgjQ4WoXWDcUSThOpocp_3JDM_DZy6OSalbamRKmkQ/s1600/fsolar-real.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHVdPnKwJ0RbnxW0FMmv2y7XDkQ97tG8EYD5zErBugxhAHAp0woG-qBUgB-6TjEkVlEeuKlcTu86lM7JjC8q8FGAV80i9ySgjQ4WoXWDcUSThOpocp_3JDM_DZy6OSalbamRKmkQ/s320/fsolar-real.jpg" width="213" height="320" data-original-width="264" data-original-height="396" /></a></div>
<p>
A while ago I bought a ‘solar USB power bank’ from an eBay seller, with the idea that this thing would charge itself by merely sitting on a windowsill, at least cutting down on the time to recharge it.
</p>
<p>
When I received it, I immediately got a bad feeling about it. The solar panel looked weird. However, an LED on the power bank did react to the amount of incoming light, so I assumed it was just a strange new manufacturing process for solar panels. It did however not take long before I took the whole thing apart and found out that it was actually an elaborate scam: the panel was <strong>fake,</strong> just a piece of plastic with a sensor in it.
</p>
<p>
<a href="https://www.dr-lex.be/hardware/fake-solar-panel.html">On my main website I explain in detail how this scam is designed</a>, how you can recognise it if you suspect you also have a fake solar power bank in your hands, and how I eventually converted this scam into a real working solar power bank by adding a real solar panel and the necessary components. Buyer beware!
</p>
<p>
<a href="https://www.dr-lex.be/hardware/fake-solar-panel.html">Read the full article</a>
</p>
</div>
<div lang="nl" style="text-align: justify">
<h3 lang="nl" class="post-title-nl">Een ‘solar’ USB powerbank met namaak zonnecel, echt?</h3>
<p>
Een tijdje geleden kocht ik een ‘solar USB powerbank’ van een eBay-verkoper, met de idee dat dit ding zichzelf zou opladen door louter op een vensterbank te liggen, en zo op zijn minst de tijd zou verkorten om hem helemaal op te laden.
</p>
<p>
Toen ik het ding ontvangen had, had ik meteen in de mot dat er iets niet pluis was. Het zonnepaneel zag er vreemd uit. Echter, een LED op de powerbank reageerde netjes op de hoeveelheid binnenkomend licht, dus nam ik aan dat het gewoon een vreemd nieuw fabricageproces voor zonnepanelen was. Het duurde echter niet lang eer ik het ganse ding toch uiteenhaalde, en erachter kwam dat het inderdaad een hoop vernuftig bedrog was: het paneel was <strong>namaak,</strong> gewoon een stuk plastiek met een lichtsensor erin.
</p>
<p>
<a href="https://www.dr-lex.be/hardware/fake-solar-panel.html">Op mijn website beschrijf ik in detail hoe dit bedrog ontworpen was</a>, hoe u het kan herkennen als u vermoedt dat u ook zo'n namaak powerbank op zonne-energie in handen heeft, en hoe ik uiteindelijk dit stuk bedrog omgetoverd heb tot een echte powerbank op zonne-energie, door een echt zonnepaneel en de nodige componenten toe te voegen. Caveat emptor!
</p>
<p>
<a href="https://www.dr-lex.be/hardware/fake-solar-panel.html">Lees het volledige artikel (Engels)</a>
</p>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com2tag:blogger.com,1999:blog-15707288.post-66956548097831917732019-07-17T16:10:00.000+02:002019-09-26T11:14:52.689+02:00Google Chrome ignores ‘enter’ keypresses within 3 seconds after clicking the address bar<div lang="en" style="color: #274e13;">
<p>
To reload a page in a web browser, I often click the address bar and then press the enter key, for two reasons: first, I prefer this over clicking the ‘reload’ button because it guarantees that I won't re-submit form data. It is the best way to cleanly reload a page. Second, the cursor is usually very near to this bar anyway, and my hands are much nearer to the enter key than F5, and I'm of course way too lazy to press ctrl-R or command-R.
</p>
<p>
Since several years however, Google Chrome has started to sabotage this behaviour in a very annoying way. I noticed that my first enter keypress was often totally ignored. A while later I noticed the second press was also becoming ignored. This only got worse, now usually I have to press the key 4 times before the page is reloaded. The more it annoyed me, the worse it got.
</p>
<p>Finally someone else also brought up this issue <a href="http://superuser.com/questions/1451793/why-do-i-have-to-hit-enter-multiple-times-to-reload-page-when-the-focus-is-in-th/1452267">on SuperUser.com</a>. It was still a mystery why the first presses were ignored and why there is variation in the number of presses before Chrome finally responds. The only reasonable explanation is that there must be a <strong>deliberate delay</strong> programmed in Chrome that ignores enter keypresses within a certain time period after clicking the address bar, unless something has been typed. Experiments have confirmed this, and the delay seems to be exactly 3 seconds in the current version of Chrome. This explains why the more one becomes aware of this issue, the worse it becomes: pressing Enter at a faster rate only results in more ignored keypresses. The only solution is to do absolutely nothing within 3 seconds after clicking the address bar. Of course it then becomes quicker to use one of the other reload methods, but only in a backwards kind of way because the most efficient method has been sabotaged. And if you <em>need</em> to use this method to reload a page without re-sending any POST data, then waiting the full 3 seconds is the only option.
</p>
<p>
My question is: why on earth was this implemented? What is the motivation? I cannot think of any good reason. Some developer must have spent time on implementing this and I have no clue why. The 3-second ignore period does not exist when bashing random keys immediately after clicking the bar—why would it need to exist when nothing has been typed? The only effect this has is to annoy people. Maybe it is yet another side effect of some change that caters for smartphones and tablets, because obviously laptops and desktop computers are totally identical to those devices [/sarcasm].<br/>
Please Google remove this “feature.”
</p>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com1tag:blogger.com,1999:blog-15707288.post-29003288119721755802019-02-03T01:30:00.001+01:002019-02-03T01:43:37.468+01:00Enhancing headphones or earphones with Audio Hijack 3<div lang="en">
<div style="text-align: justify;">
<span style="color: #274e13;">Long ago there was an awesome audio enhancer for Mac OS X that could improve system-wide audio in various ways. It started out as <b>‘OSS 3D’</b> by Subband Technologies, later on it was bought by Joesoft and rebranded to <b>‘Hear,’</b> and it eventually migrated to the Prosoft brand name. This program offered various effects like 3D audio, a straightforward equalizer, a virtual subwoofer, and various other things that were both useful and gimmicky. Everything was fine until the program became unable to enhance audio coming from iTunes, arguably its most important target. Prosoft was never able to fix this and eventually the program stopped working altogether with the latest major OS X updates. Rest in peace, Hear.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">I have been looking for a way to simulate at least part of Hear's functionality. I especially relied on it to obtain a more natural listening experience with <b>headphones.</b> If you have ever listened to e.g. <i>Beatles</i> songs on headphones, you will have noticed first-hand that headphones do not offer the same listening experience as loudspeakers. With loudspeakers, sound from the left speaker will not only reach your left ear but your right ear as well and vice versa, both directly and indirectly through reflections. With head- or earphones however, the left and right channels are fed strictly to the respective ear only. If the music was mixed with sound coming </span><span style="color: #274e13;">only </span><span style="color: #274e13;">from either left or right (as was often the case with the first stereo recordings like from the Beatles), this offers an unnatural experience. Even today a lot of music is mixed with loudspeakers in mind and will not sound ‘right’ when listening with headphones.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSHrChpGN1ZB6IAQvuUuge8o93OUE8PL-NNdacdXx2wxY3YP7OpajLN8M00DAgOpG6G53dh5gINPaXAYoLrrpkHKMPHqWAzd7uDfLOCQiV-n1y1SVbFKrgvN6dsnwkuiQxPDTQcg/s1600/SpeakerSetup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="663" data-original-width="800" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSHrChpGN1ZB6IAQvuUuge8o93OUE8PL-NNdacdXx2wxY3YP7OpajLN8M00DAgOpG6G53dh5gINPaXAYoLrrpkHKMPHqWAzd7uDfLOCQiV-n1y1SVbFKrgvN6dsnwkuiQxPDTQcg/s320/SpeakerSetup.png" width="320" /></a></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">A good solution is to preprocess the music before sending it to the headphones, simulating it being played on loudspeakers. The most basic way to do this is to mix a bit of the right channel into the left and vice versa. This already makes Beatles songs less awkward to listen to but it's not quite it. To add more realism, the tiny <b>delay</b> caused by the longer audio path from the left loudspeaker to the right ear and vice versa must also be taken into account. From my DSP courses I remember that a realistic delay is <b>390µs</b> (this can be derived from the geometry of a typical stereo setup and the shape of a human head). To further increase realism, there must be some <b>low-pass filtering</b> as well because higher frequencies will have a harder time reaching the opposite ear. And finally to get the sensation of listening in a real room, some <b>reverb</b> can be added.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">This idea can be implemented with <a href="https://rogueamoeba.com/audiohijack/">Audio Hijack</a> from Rogue Amoeba Software. It is not for free but is well worth its price for anyone who needs to do more with audio than merely playing some music. So let's see how we can implement our fancy headphone enhancer with Audio Hijack.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxvZM7j3NIn5xprA2deZZb4x41tuGWjT1-NnnsDPqxMRHOuDfGwaTZKRUtOS60QHXm-5kpExdqthbfSa-8cOZFD-yD_8QHyriJQex7-9G-kPdRsI93iCFVCCBmBFayB616opgJw/s1600/AudioHijack-HeadphoneEnhancer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img border="0" data-original-height="705" data-original-width="1600" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxvZM7j3NIn5xprA2deZZb4x41tuGWjT1-NnnsDPqxMRHOuDfGwaTZKRUtOS60QHXm-5kpExdqthbfSa-8cOZFD-yD_8QHyriJQex7-9G-kPdRsI93iCFVCCBmBFayB616opgJw/s400/AudioHijack-HeadphoneEnhancer.png" width="400" /></span></a></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">The above image shows the setup. The upper part is the one that simulates a room. A slight reduction in volume is applied to compensate for the fact that we will be adding a cross-mix of the channels later on. A reverb effect makes the sound less ‘dry’ by simulating it bouncing off walls, floors and ceiling. The configuration of the reverb unit is a matter of personal taste. I started out with the defaults of the Matrix Reverb and reduced the ‘large’ parameters to have a faster drop-off.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">The lower part is the most important one, it represents the cross-mix between loudspeakers and ears, the extra delay due to the longer audio path, and the attenuation of high frequencies. The 390µs delay cannot be obtained with the standard effects available in Audio Hijack, a custom plug-in is needed. I've found <a href="https://www.voxengo.com/product/sounddelay/">this free sound delay audio unit from Voxengo</a> to be adequate. You need to reboot after installing the AU plugin to make it available in Audio Hijack. Enter a value of 0.39 msec in the effect configuration. People with really fat heads might try a larger value but it should never deviate much from this.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">The exact value for the low-pass filter isn't crucial. This filter has two purposes: first, simulate the actual attenuation of higher frequencies that would occur in the situation depicted above, which is difficult to quantify anyway. Second, avoid interference between trebles in the original audio and the delayed copy. Without the low-pass filtering, there would be a comb filter effect that can make some trebles sound weird. If you still notice this, you may want to use a lower frequency than the 6 kHz I used here.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">After mixing everything together, there is another volume control and an equalizer. These are optional but unless you have extremely high-end headphones, a little extra EQ can get that bit of extra fidelity out of them. The reason why you may need to precede the EQ with a volume reduction is that if you need a considerable bass boost, you'll need to attenuate the input to avoid sending the audio into overdrive. You may add other effects to your liking, e.g. a dynamic range compressor in case you're listening in a noisy environment (although a lot of modern music has no dynamic range to begin with…)</span></div>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-33636343485286150292019-01-19T22:22:00.001+01:002022-03-28T11:12:47.525+02:00Entering your EV Nova registration code is still possible<div lang="en">
<div style="text-align: justify;">
<span style="color: #274e13;"><b>In a nutshell:</b> if you have a registration key for EV Nova and still know the moment when Ambrosia sent you this key (within an accuracy of a few days), you can still register new installs of the game if you set your computer's clock to a time just after that moment. You only need to do this for the registration, after that you can set your clock back to normal. It may be necessary to disconnect all networks to disable additional attempts of the registration app to check the time.<br />
<br />
However, given that Ambrosia is now defunct and getting the game to run properly nowadays is a hassle, a better option is to just back the <a href="https://www.kickstarter.com/projects/cosmicfrontier/cosmic-frontier-override">Cosmic Frontier Kickstarter campaign</a>, and wait for the game to be finished. I'm pretty sure there will be a way to load the EVN scenario into this new game engine.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><b>The long story:</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipfb0YHVRIrYoqpFDk6eJ7CxYuWVDKRSY4yB9DgXl_UgW1GtiIc6KNIupIDpLrGoCeCnvt3AiLR0BGfKKcZAjR_R6RcujlNLsD4qiKppLrpFd8qomBrP_561eQ0ifSJ1f8qilrAg/s1600/EVNova-ships.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;"><img border="0" data-original-height="369" data-original-width="369" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipfb0YHVRIrYoqpFDk6eJ7CxYuWVDKRSY4yB9DgXl_UgW1GtiIc6KNIupIDpLrGoCeCnvt3AiLR0BGfKKcZAjR_R6RcujlNLsD4qiKppLrpFd8qomBrP_561eQ0ifSJ1f8qilrAg/s200/EVNova-ships.png" width="200" /></a></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><i>Escape Velocity Nova,</i> or <i>EV Nova</i> in short, was one of the most iconic games from the now defunct <a href="https://en.wikipedia.org/wiki/Ambrosia_Software">Ambrosia Software</a>. Their <a href="https://www.ambrosiasw.com/">website</a> is still online at the time of this writing but buying anything would be a bad idea because their registration service is dead. Not that you would want to buy much of their catalogue because most of it is too outdated to run on modern systems.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">Recently the GPU in my early 2011 MacBook Pro had self-destructed and I decided to buy a new MacBook Pro. While waiting for it to arrive, I could still use my old MBP by <a href="https://apple.stackexchange.com/questions/166876/macbook-pro-how-to-disable-discrete-gpu-permanently-from-efi">forcibly disabling the discrete GPU</a>. Of course this meant I couldn't play any games needing the GPU, hence I started playing EV Nova again. Everything was fine until I finally got my new MacBook Pro and wanted to continue the storyline I was in. Two problems:</span></div>
<br />
<ol>
<li><span style="color: #274e13;">EV Nova simply does not work anymore in OS X Mojave. It seems some are able to run it, but for me neither copying the binary from my old MBP to the new one, nor reinstalling it and re-applying the <a href="https://github.com/RyuKojiro/novafix">RyuKorijo patch</a> helped.</span></li>
<li><span style="color: #274e13;">Entering my registration code in any newly installed copies was impossible because the code has expired and there is no way to obtain a new one, moreover Ambrosia's licensing server is dead anyway.</span></li>
</ol>
<div style="text-align: justify;">
<span style="color: #274e13;"><b>Problem 2</b> proved relatively easy to solve. The registration system will accept codes if they are not older than a certain number of days. This means you can still register the game if you turn back your computer's clock to e.g. 1 day after the buying date. Not sure how many days of margin one gets, but luckily I keep all my mails (and I really mean <i>all</i>) so I knew exactly when I had been issued my old registration code and I set the clock to 1 day after. Normally the game also does an online check of the code but that can of course be easily sabotaged by disconnecting all networks. With the Ambrosia servers offline however, even that is now unnecessary. Still, when trying it in Mac OS 9, the app seemed to somehow check the time online so I had to disconnect the network after all.</span></div>
<div style="text-align: justify;">
<span style="color: #274e13;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #274e13;">I still haven't solved <b>problem 1</b> however. Others have managed to get EVN running in OS X Mojave but for some reason it keeps failing on my system. I have opened <a href="https://github.com/RyuKojiro/novafix/issues/14">a new issue</a> on the RyuKorijo GitHub in the hopes of getting some help. Given that there are rumours 32-bit application support will be entirely dropped in one of the upcoming major OS X updates though, trying to keep EVN running in OS X feels like a futile exercise anyway. I've tried running the game on two different platforms instead.</span></div>
<br />
<div style="text-align: justify;">
<span style="color: #274e13;">First in <a href="https://sheepshaver.cebix.net/">SheepShaver</a>, because that would be the most convenient. I got the game to launch but the menu buttons lack their labels and do not work. Luckily the functions of the buttons can also be accessed by pressing certain keys: <em>N</em> for new pilot, <em>O</em> to open one, <em>E</em> to enter the game, <em>P</em> for preferences, <em>Q</em> to quit, and <em>A</em> for about (there's also an easter egg key by the way). There are some other minor problems like EVN sometimes crashing at startup and the target cursor not being visible which makes it difficult to select planets or ships. A plus however is that pilot files are interchangeable with the OS X version.</span></div>
<br />
<div style="text-align: justify;">
<span style="color: #274e13;">Next, in Windows 10 under Boot camp. Slightly annoying but I reboot for other games anyhow. I used all the tweaks <a href="https://www.reddit.com/r/Escape_Velocity/comments/9atyzj/ev_nova_download_links_and_more/">found here</a> and the game works, but it is only really playable in windowed mode. In full-screen the graphics are extremely jittery. I had to use these values in the resolution patcher to get the window take up almost the entire screen of my 15" MacBook Pro: 1600, 992, 1600, 800, 1280 (only the first two matter probably). A big drawback is that I can't port any pilot files from the Mac to the Windows version and there are some things off about the Windows version, like sound quality, readability of text, and the graphics are still jittery at times. And obviously it feels wrong to have to resort to Windows in order to play one of the most iconic Mac games!</span></div>
<br />
<div style="text-align: justify;">
<span style="color: #274e13;">In the end I prefer SheepShaver in spite of the issues it has, and I now play EVN inside it because the game just feels much smoother than in Windows and I can continue with my existing pilots. If the remaining issues in SheepShaver can be solved, I think it will end up the best long-term solution to keep playing EVN.</span></div>
<br />
<h2>Update 2020/05: Cosmic Frontier: Override</h2>
<div style="text-align: justify;">
<span style="color: #274e13;">A <a href="https://www.kickstarter.com/projects/cosmicfrontier/cosmic-frontier-override">Kickstarter campaign</a> has been launched to remake the <em>Escape Velocity: Override</em> game engine for modern operating systems. Although it isn't clear yet whether it will be possible to run the EV Nova scenario in this engine, playing the previous EV instalments with improved graphics and UI will become considerably easier. The kickstarter ends on Tue, May 26 2020 7:23 PM UTC, so <a href="https://www.kickstarter.com/projects/cosmicfrontier/cosmic-frontier-override">head over to the campaign page</a> and contribute if you want this to succeed!</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSA1KFN7ujK_cVPAw1-Tv_Sk0h3az-pms4DX9oKf8y_WBjy1lZG9m4Ud2pzSdW-LEbZX9BPr1fT8w4-gp1raw_NwA3jJLMNFKzVUAbzW9fO8RrB9P2thrbMofrDyYfWEBrq1yR4w/s1600/greetings4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSA1KFN7ujK_cVPAw1-Tv_Sk0h3az-pms4DX9oKf8y_WBjy1lZG9m4Ud2pzSdW-LEbZX9BPr1fT8w4-gp1raw_NwA3jJLMNFKzVUAbzW9fO8RrB9P2thrbMofrDyYfWEBrq1yR4w/s320/greetings4.jpg" width="320" height="180" data-original-width="960" data-original-height="540" /></a></div>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com6tag:blogger.com,1999:blog-15707288.post-80058793092930076942019-01-11T18:40:00.002+01:002019-01-13T20:31:50.565+01:00Is ETCV (Ethereum Classic Vision) a scam or not?<div lang="en" style="color: #274e13; text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_PR4QEioWBdEXqXdXefxbBKporAxxpu_b7IE5dvZXX9L3WjH7ddKo0Bo-3NLlkSqCSf9YJSgmtxKLlof2Yo03aJyGAEopuzUt-q-bo7EvIabYGcepAx-jtWlqr49tjS_N-JHGg/s1600/ETCV.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="Logo shamelessly stolen from ETCV website" border="0" data-original-height="256" data-original-width="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_PR4QEioWBdEXqXdXefxbBKporAxxpu_b7IE5dvZXX9L3WjH7ddKo0Bo-3NLlkSqCSf9YJSgmtxKLlof2Yo03aJyGAEopuzUt-q-bo7EvIabYGcepAx-jtWlqr49tjS_N-JHGg/s1600/ETCV.png" title="" /></a></div>
There is quite a bit of FUD about the upcoming Ethereum fork, called <b>Ethereum Classic Vision</b> (exchange token <b>ETCV</b>) being a scam like Ethereum Nowa. <a href="https://cryptoclan.nl/hard-fork-ethereum-classic-vision-etcv/">This Dutch website</a> for instance tries to give some evidence of this claim.<br />
<br />
If ETCV is a scam indeed, the authors sure have done a lot of effort to make it less obvious than with Nowa, whose site has spelling errors and makes ridiculous claims about the forked cryptocurrency. The biggest warning light for Nowa is the procedure to supposedly obtain free ‘ETN’ (which by the way is an already existing token for Electroneum, another fact that makes Nowa extremely suspect). They outright ask you to transfer your ETH to their address and those who are even more gullible than that, can even make it worse by sending them their private keys as well. First rule of cryptocurrencies: never give anyone your private key. Second rule… never give anyone your private key!<br />
<br />
The <a href="https://ethereumcv.io/">Classic Vision website</a> on the other hand looks a lot more legit. It seems the ‘scam’ claims for ETCV are mainly based on two things:<br />
<ol>
<li>Confusion between the supposed Nowa fork and the ETCV fork. The aforementioned article mentions some facts that appear to originate from the news about Nowa, like the photo models story. This confusion is understandable because the (supposed) dates for these two forks are only 1 day apart.</li>
<li>The idea that you are supposed to enter your ETH wallet private key to claim ETCV. There is some truth about this because there are only two ways to view an ETCV wallet on their website: either through a keystore or by directly entering the private key. Even though the latter seems to violate the First Rule, in this embryonic stage of the new currency with no third-party support yet, it makes some sense that these are the only options. Obviously the smarter option is to use the keystore but when following proper crypto hygiene, there is no risk with directly using the PK either as I will explain below.</li>
</ol>
<div>
The other suspect facts mentioned are that the website lacks certain information like the exact block number for the fork (which is true and pretty annoying), or obvious contact information for the authors. I don't know about you but in this day and age no sane person would spread all their personal details on a website. There seem to be enough contact methods albeit not very direct.<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb8XqM_VnIo6oe-soqf4tOCh9YqLYlnlX9P2xlQisdBMIAWSy7IzMcNGRWma6rjHB-ng4L_kvHGXY-SdYVZTs4JpM0wGu1D1Wqo0yES1PHTS28W92VgHsHby4dmMHmoBfmPIvQRA/s1600/fork.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Fork" border="0" data-original-height="266" data-original-width="400" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb8XqM_VnIo6oe-soqf4tOCh9YqLYlnlX9P2xlQisdBMIAWSy7IzMcNGRWma6rjHB-ng4L_kvHGXY-SdYVZTs4JpM0wGu1D1Wqo0yES1PHTS28W92VgHsHby4dmMHmoBfmPIvQRA/s200/fork.jpg" title="Photo from https://www.goodfreephotos.com/" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
<h3>Proper Forking Hygiene</h3>
<p>
This leaves the <i>private key</i> issue as the only big source for concern and until I have actually seen the fork happen, I cannot tell whether this concern is warranted. It is perfectly possible they will indeed use any wallet credentials you enter on their website to plunder your ETH wallet instead of handing you free ETCV. However if you treat the fork as follows, there is zero risk of your ETH being stolen:
</p>
<ol style="text-align: left;">
<li>Create an entirely new ETH wallet using <a href="https://myetherwallet.com/">MyEtherWallet</a> or a similar service. You will never use this wallet for anything else than the ETCV claim.</li>
<li>Transfer as much ETH to this wallet as you want to be replicated into 3 times the amount of ETCV (as they promise).</li>
<li>Leave the ETH on this wallet until you're certain the ETCV fork has happened.</li>
<li>Before doing <i>anything</i> else, <b>withdraw all your ETH</b> from the wallet to another wallet.</li>
<li>Now claim the ETCV using the wallet address from step 1.</li>
</ol>
<p>
If this is a true fork, what will happen is that the entire ETH chain state is duplicated into the new ETCV branch. This means any existing wallet addresses that exist for ETH at that point will also be valid wallet addresses for ETCV. Anything that happens with ETH after the fork will have no effect on the ETCV branch and vice versa because they each go entirely their own ways. Hence if you withdraw the ETH from your wallet with private key abc123, the ETCV wallet with the same private key will still contain the amount of coin that existed at the time of the fork (which in this case will be multiplied by 3). And of course if the whole thing was a scam after all and someone obtains your private key <strong>after</strong> you have emptied your ETH wallet, they cannot steal anything.
</p>
<h3>Update: It's (Most Likely) a Scam Alright!</h3>
<p>
Now the fork is supposed to have been performed, how do things look? Pretty bad:
</p>
<ul style="text-align: left;"><!-- why does blogger insist on making LI inside OL black? Annoying! -->
<li style="color: #274e13">Their website has been suspended</li>
<li style="color: #274e13">Before the site disappeared, a highly suspect prompt was added to it to ‘buy’ ETCV by sending ETH directly to a certain address. This prompt contained conflicting information that the ratio of obtained ETCV would be both 50:1 and 1:1. This looks just like a desperate attempt to grab some more ETH before their whole façade collapses.</li>
<li style="color: #274e13">Their wallet site is suspended</li>
<li style="color: #274e13">Their twitter account is suspended</li>
<li style="color: #274e13">News articles about ETCV being a scam are popping up</li>
</ul>
<p>
Although all this is not 100% irrefutable evidence that it's a scam, let's say it is 99.9% evidence. I have to hand it to them, they were a lot more crafty than the Nowa people. They did a lot more effort to make their scheme appear legit. On <a href="https://bitcointalk.org/index.php?topic=5089443.0">BitcoinTalk</a> they managed to gather a considerable following and it seems there still are some believers at this moment.<br />
<br />
However, I have lost nothing because I have followed the above procedure even though I haven't executed the last step. I'll keep the wallet address just in case we are in that 0.1% and ETCV exists after all, but I don't hold my hopes up high.
</p>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com1tag:blogger.com,1999:blog-15707288.post-45722148450213628042018-05-23T22:19:00.000+02:002018-06-24T18:26:17.223+02:003D Eksperten Silky Gold and Copper PLA review<div lang="en">
<span style="color: #274e13;">I have been looking for a gold-like filament for a while, and it proves difficult to find one that has a convincing metallic appearance. Many filaments with ‘gold’ in their name are merely a yellow or orange colour with perhaps a hint of metallic additives. For instance I bought a spool of Polaroid ‘gold’ PLA and even though it is overall a good material, it proved to be merely a deep yellow with only under ideal lighting conditions a very slight metallic sheen.</span><br />
<span style="color: #274e13;"><br /></span>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihcXveNwn_aJerQh1aJFEAJKm2Aq7fOlyrDcWveQQnvP_-mzEdUnKEe8Dov2tlovEPLaDcr1N37BwUVGrYp72SuDJpyf4mO7i286WDRJGTZ3eOrNd3XDFBtTGPxdVAfE6xFO-UTA/s1600/3DE01-boxes.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihcXveNwn_aJerQh1aJFEAJKm2Aq7fOlyrDcWveQQnvP_-mzEdUnKEe8Dov2tlovEPLaDcr1N37BwUVGrYp72SuDJpyf4mO7i286WDRJGTZ3eOrNd3XDFBtTGPxdVAfE6xFO-UTA/s200/3DE01-boxes.jpg" width="200" /></a><span style="color: #274e13;">A while ago I saw some makes on Thingiverse that looked quite promising, and the author was friendly enough to tell me that the filament was ‘Silky Gold’ from a Danish manufacturer called <a href="http://3deksperten.dk/">3D Eksperten (3DE)</a>. At that time 3DE didn't ship to my home country and only offered expensive express shipping. I checked out the store again after a few months and they did ship to my country with an option of more reasonably-priced shipping, hence I ordered both a spool of the Silky Gold as well as Silky Copper. I added the latter not only to reduce the relative shipping cost, but also because it looks stunning on photos. The total cost was about €60, which means €30 per 1 kg spool which is reasonable for a specialty filament. In hindsight I should also have added a spool of Silver to have a full set of shiny metals, so I know what to buy the next time.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3FjtO22Mosm7K6CnV9z5LLB0TEckWuEhBaBRpaxEuEDZ8F-n6K0scTH80Hvz-kSyGep3MKVea2HMeybvQPtdAC2XFEk923KXShqPe-_ZNUN4rs6m_rMPTF-d9EHaOBFsXiEvtA/s1600/3DE02-bag.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3FjtO22Mosm7K6CnV9z5LLB0TEckWuEhBaBRpaxEuEDZ8F-n6K0scTH80Hvz-kSyGep3MKVea2HMeybvQPtdAC2XFEk923KXShqPe-_ZNUN4rs6m_rMPTF-d9EHaOBFsXiEvtA/s320/3DE02-bag.jpg" width="320" /></a></div>
<br />
<span style="color: #274e13;">Despite the cheaper shipping it still arrived within a mere 3 days with tracking information. The filament comes in stylish boxes and is packaged in resealable plastic bags with of course a packet of silica gel contained within. This is nice but I have learnt that all plain plastic bags are only weak barriers against moisture: they will only slow down the rate at which moisture can reach the spool. For this reason one should refresh the desiccant in such bags at regular intervals, and for longer-term storage it is recommended to use mylar bags instead. Those have a metallic layer that is much better at stopping moisture (this is why all foodstuffs sensitive to humidity are packaged in metallic bags). The desiccant inside these particular bags proved to have absorbed near their saturation level of moisture, so I dried the filament in an oven to be absolutely certain it was in optimal condition. A weight comparison however showed that it hadn't taken up any noticeable amount of moisture.</span><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQt2AYqztdROwDK6YsW2mjdZBvgmCkxK-OnpY-Lq-KLS_Afffh4S4OH8SXzX-mDeTLwOsjcGUrDkxrSsxPo3kV66JtY5SJUT5v-t0ZBadcH4hP_wEDxp5oJCuDLFfFIMPryzxSLg/s1600/3DE03-spools.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQt2AYqztdROwDK6YsW2mjdZBvgmCkxK-OnpY-Lq-KLS_Afffh4S4OH8SXzX-mDeTLwOsjcGUrDkxrSsxPo3kV66JtY5SJUT5v-t0ZBadcH4hP_wEDxp5oJCuDLFfFIMPryzxSLg/s200/3DE03-spools.jpg" width="200" /></a><span style="color: #274e13;">The spools themselves sure do look promising out of the box, especially the copper one which looks like a big transformer coil. I have never seen such a convincing plastic simulation of a metal. The gold is very nice as well, still obvious it is merely plastic but it comes closer than any other attempt I have seen so far. It wouldn't be the first time that printed objects lose the appearance of the raw spooled material however, so the proof is in the pudding and it's time to load up this stuff and get printing.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">The tolerances on the filament are within the typical ±0.05 mm range. On the gold I measured an average diameter of 1.77 mm, on the copper 1.72 mm. These diameters remained consistent over the length of material I have used so far. The filament also appears well wrapped without risk of tangling, something that cannot always be said from the cheaper brands. I used my typical PLA settings of 200°C extrusion and 60°C bed temperature, on a glass bed with 3DLac and moderate cooling fan speed. Adhesion is excellent even with only a thin layer of hairspray. There is no obvious odour during prints, not even the typical popcorn-like smell of regular PLA.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_cxfXz3i860QPjUtFwG8GglRXZPZRKvSnf-FM_03RSPjQ-L48cuvZeVmUt-1Px6Xew8sK0RRXDxhDHYul7uIy1rd88ZaF77Yls_Y1B8xX8gXglR-IjBs18_WUKEVQBpNZtP2xjg/s1600/3DE04-marvins.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_cxfXz3i860QPjUtFwG8GglRXZPZRKvSnf-FM_03RSPjQ-L48cuvZeVmUt-1Px6Xew8sK0RRXDxhDHYul7uIy1rd88ZaF77Yls_Y1B8xX8gXglR-IjBs18_WUKEVQBpNZtP2xjg/s320/3DE04-marvins.jpg" width="320" /></a></div>
<br />
<span style="color: #274e13;">I started out with my traditional test print, a variation on the classic 20 mm calibration cube printed at 0.2 mm layers. This already looked very promising: the surfaces are shiny enough to reflect light like actual metal albeit with a matte finish (a true mirror it ain't). I then printed the 3DHubs Marvin (or rather my <a href="https://www.thingiverse.com/thing:2499424">‘improved crotch’ remix</a>, which is a good test for overhangs and rounded surfaces. These looked even better, especially the copper one which from a distance could easily fool someone into believing it is made from actual metal.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">The Marvin prints do show it is even more essential to avoid visible seams with these filaments than with most other materials. The glossy effect is visibly disturbed at the places where an outer contour starts. To understand why, we need to make at least a good guess at how the metallic effect is achieved.</span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-D5l3ypJAKpq3cfOqQHOrIpLP3cKopXQXrnwUWzySFlv74iWIu3QZ-oE38m3DJ185m1WqPkxiL7rS49E1kI3tdjc6tKw9xRLA4xu3WwaInQDIEHgIQVgWZiAKI4OpgXJowp_Hvg/s1600/3DE06-shine.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-D5l3ypJAKpq3cfOqQHOrIpLP3cKopXQXrnwUWzySFlv74iWIu3QZ-oE38m3DJ185m1WqPkxiL7rS49E1kI3tdjc6tKw9xRLA4xu3WwaInQDIEHgIQVgWZiAKI4OpgXJowp_Hvg/s320/3DE06-shine.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Left: piece of free-air extrusion, right: normal printed extrusion</td></tr>
</tbody></table>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr8-v-esM8rckqVrNDRsAc1WheuEYHhiC07KmRWuZqpZFRoOPHS5Xco6ZOwTyr-VAfKl5rXbuA_8gI0MMc2brQE1kLG8_-iFBS_fYNrBd1YUW6xdoBoNvVn-ihFYUWuAaPT9rgmw/s1600/3DE05-macro.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1201" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr8-v-esM8rckqVrNDRsAc1WheuEYHhiC07KmRWuZqpZFRoOPHS5Xco6ZOwTyr-VAfKl5rXbuA_8gI0MMc2brQE1kLG8_-iFBS_fYNrBd1YUW6xdoBoNvVn-ihFYUWuAaPT9rgmw/s200/3DE05-macro.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Close-up view</td></tr>
</tbody></table>
<span style="color: #274e13;">A close-up view reveals the usual trick of mixing in little metallic specks is <i>not</i> being used. Instead, there is a shiny effect that varies with extrusion direction. How does it work? </span><span style="color: #274e13;">There are two important observations: one, both the spools and the printed results reflect light only at angles perpendicular to the direction of extrusion. Second, the filament tends to contract very quickly in the direction of extrusion when extruding in free air, and the end result loses its shiny appearance altogether and becomes a plain dull yellow or orange strand. I can only explain this by assuming that the plastic contains a kind of elastic fibres that become glossy when stretched (like silk indeed). During normal extrusion the material is not allowed to contract, which ensures that the fibres remain stretched. For the same reason you <b>should not print this filament too slowly:</b> if the extruder keeps heating the same part for too long, the shiny material gets too much time to lose its ordering and gloss.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">This also explains why seams are especially visible: the extrusion changes direction abruptly at the start of the contour and it takes about a millimetre until the fibres are fully aligned to the new direction.</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvNNNAz19RfwikYEJcN2ZLAq5vsMQm4ou7wnQaXfP8fTB6CaHhN7TEO68spPxerR6uWwoiaUQImNo27ljaK6HcLeGYqUepyVo9eZZLxSSQtbRTzutPe9TtXkekMKICV6op9x4IYg/s1600/3DE07-goldvase1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvNNNAz19RfwikYEJcN2ZLAq5vsMQm4ou7wnQaXfP8fTB6CaHhN7TEO68spPxerR6uWwoiaUQImNo27ljaK6HcLeGYqUepyVo9eZZLxSSQtbRTzutPe9TtXkekMKICV6op9x4IYg/s320/3DE07-goldvase1.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Vase mode print of <a href="https://www.thingiverse.com/thing:415360">thing:415360 by Alphie</a></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1jxh9WnM0Vl5v-jJvXl8dYJLCkZbT3Fwo9PxioFbjmJMq5f42UBWqY26z7LQXFPzMJNEfYWT2I1Oxcl-PF3N_5vRY9GxibkjHELCBkNF8Np5t0EFoUlCcV2FvcqJJoq_25cPo7Q/s1600/3DE08-goldvase2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1jxh9WnM0Vl5v-jJvXl8dYJLCkZbT3Fwo9PxioFbjmJMq5f42UBWqY26z7LQXFPzMJNEfYWT2I1Oxcl-PF3N_5vRY9GxibkjHELCBkNF8Np5t0EFoUlCcV2FvcqJJoq_25cPo7Q/s320/3DE08-goldvase2.jpg" width="320" /></a></div>
<br />
<span style="color: #274e13;">There is unfortunately no magic solution to hide seams. If you're lucky, the object has enough concave corners to allow your slicing program to hide the seams inside. If not, a typical strategy is to randomise the starting point of the contours but this will leave the surface littered with quite visible specks due to the effects described above. The only way to eliminate seams is to print in ‘spiral vase’ mode when possible. I have done a few vase prints and they look impressive.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzra66b381e1N0WocAtH19lEYGHHKNUAgrgPkvvMmCJq856YioIi_kNYsIhzDYH0-Mmt1KBkLZPq9Er47FZQjYLgmMndIU-7JFNguWRkAfrLaVFKUkjF0Vo19Yo4qXLjGSrhSpug/s1600/3DE08-hexvases.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzra66b381e1N0WocAtH19lEYGHHKNUAgrgPkvvMmCJq856YioIi_kNYsIhzDYH0-Mmt1KBkLZPq9Er47FZQjYLgmMndIU-7JFNguWRkAfrLaVFKUkjF0Vo19Yo4qXLjGSrhSpug/s320/3DE08-hexvases.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="color: #274e13;">Objects with many different surface orientations are the most rewarding hence I made <a href="https://www.thingiverse.com/thing:2906756">a vase model with faceted hexagonal outer surface</a> specifically to showcase this filament. </span><span style="color: #274e13;">Also when printing coin- or medal-like models the best results are obtained when keeping the special properties of the filament in mind. Top surfaces of coins should be printed as one continuous spiral in order to get a finish that has no seams and reflects light in interesting ways.</span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiz3lI2u_NcCGf13ZiBpUyHticwcNCqV5l76siSoBYuPuUhOrLqu2ZPBtO0owWlJJviGce4oe28vihdIqTIDSLN-m61RPcI00tAvhh4ziVtzmey8slF0jn9dzajMBkYfWqmG8m0g/s1600/3DE09-bitcoins.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="960" data-original-width="1280" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiz3lI2u_NcCGf13ZiBpUyHticwcNCqV5l76siSoBYuPuUhOrLqu2ZPBtO0owWlJJviGce4oe28vihdIqTIDSLN-m61RPcI00tAvhh4ziVtzmey8slF0jn9dzajMBkYfWqmG8m0g/s320/3DE09-bitcoins.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Left coin was printed with spiral top infill, right with plain rectilinear. <a href="https://www.thingiverse.com/thing:2595156">Model by FLOWALISTIK</a>. (Too bad these aren't worth actual Bitcoins…)</td></tr>
</tbody></table>
<span style="color: #274e13;">The material proves quite tough: extruded material doesn't break easily and is not easy to cut up. If my fibres theory is correct, perhaps they also contribute to strength. While I consistently have stringing problems with almost all other PLA filaments in my Micro Swiss all-metal hot-ends, these silky filaments are much less prone to stringing, perhaps again thanks to their tendency to quickly contract in free air.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">There is one problem with ordering this filament and it is that the <a href="http://3deksperten.dk/">3DE store</a> is mostly in <em>Danish</em> only. The language is similar enough to my Dutch mother-tongue that I managed to get through the ordering process with the occasional help of Google Translate, but it may prove challenging for people from other countries. Also, no shipping outside the immediate surroundings of Europe. On Amazon one can find similar filaments which might come from the same source (judging from the similar hexagonal pattern on the spools), so it is worth trying if you are not able to order from the 3DE store.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">To conclude, this is a great filament for decorative pieces and medaillons or coins. The copper is obviously my favourite because it comes very close to looking like the real thing. The gold may not be able to fool anyone but still it looks better than other attempts at a ‘gold’ filament I have seen.</span>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-52856560820640033042018-04-15T01:26:00.000+02:002018-04-15T01:38:15.974+02:00Hacking the 4th generation IXO: white instead of yellow LED<div style="color: #274e13; text-align: justify;" lang="en">
<p>
I have a 4th generation Bosch IXO screwdriver and it is pretty good, aside from the measly LED that is supposed to help light up the thing you're working on. The LED is a yellow-orange color and is not very bright. It also has an uneven circular intensity pattern. In other words, it is pretty useless. I have been planning to replace it with a white LED for a while, and it seems <a href="http://jokenkosto.blogspot.com/2015/09/bosch-ixo-teardown_24.html">I am not the only one with this idea</a>. A bag of Nichia NSPW300DS 3 mm LEDs has been sitting on my desk for more than a year and I finally decided to have a go at it. These are probably not the brightest 3 mm LEDs currently available, but they were available at the shop where I usually buy components, and 15000mcd isn't bad at all.
</p>
<p>
However, as Joken mentions on his <a href="http://jokenkosto.blogspot.com/2015/09/bosch-ixo-teardown_24.html">IXO teardown post</a>, one cannot just replace the LED: the yellow LED is only supplied with 2 V through a 68 Ω resistor. Dropping the resistor only gains about 0.7 V, and 2.7 V is still way too low for a typical white LED that requires about 3.2 V.
</p>
<p>
I have a solution though: I bought some booster circuits from AliExpress a while ago, in fact these are buck/boost circuits that provide a steady 3.3 V output from any input between 1.8 V and 5 V. They aren't terribly efficient and I don't need the buck capability here, but the PCB is tiny which makes them a good candidate. They look like the following photo:
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYqadiqL7DPH51gxfZ6xPqiMPs47iUV2wameB72-ARacabnqFL1rtVVEgIn995A5nW09NpBZRtAbfOMBKHsyWipDqSLNQA0AJVH9nvm7A2XHQVDL_-PFG2hS_aL84v5ttEzfKh9A/s1600/boost.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYqadiqL7DPH51gxfZ6xPqiMPs47iUV2wameB72-ARacabnqFL1rtVVEgIn995A5nW09NpBZRtAbfOMBKHsyWipDqSLNQA0AJVH9nvm7A2XHQVDL_-PFG2hS_aL84v5ttEzfKh9A/s320/boost.jpg" width="320" height="240" data-original-width="677" data-original-height="508" /></a></div>
<p>
I did some tests by connecting the booster instead of the LED+resistor, but it is unable to reach 3.3 V with the white LED on its output. This is because the circuit that drives the LED seems to be a current source, limiting the current to either 11 mA (when pressing the switch without activating the motor) or 20 mA (when the motor is active). Due to P = U⋅I and some loss due to inefficiency of the booster, it can only push either 4.5 mA or 10 mA through the white LED. However, there is a way around this: by reducing the value of the 4.7 kΩ resistor that comes before the transistor, we can make it supply more current.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2HvYh3Y8lWEXTObb2vu-7IkNad2u8RTaT9qqJ9jBxefAk61Z9kLbGo-tMvUaP-qycUkkEakAe0x20O5RdYt_uWx27bVSUNX_rIYzyD7hYFBO34vWrCKfeNwSeVGu9ZiYnJf-41g/s1600/IXOhack2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2HvYh3Y8lWEXTObb2vu-7IkNad2u8RTaT9qqJ9jBxefAk61Z9kLbGo-tMvUaP-qycUkkEakAe0x20O5RdYt_uWx27bVSUNX_rIYzyD7hYFBO34vWrCKfeNwSeVGu9ZiYnJf-41g/s400/IXOhack2.jpg" width="400" height="300" data-original-width="1280" data-original-height="960" /></a></div>
<p>
I simply soldered another 4.7 kΩ on top to reduce the resistance down to 2.35 kΩ:
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3OIVhrenXqePZYcPWSHhRYVpL0mqYOVLXAAI8T1Mds68NIUt5Yopl47DIETJQVHw36lQkpVhvc-A_tTXduydHe4NgpltIYJNJw5_qKH4dzIzW94hW4o3eRoXeYwoGpAi6YKLWag/s1600/IXOhack2b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3OIVhrenXqePZYcPWSHhRYVpL0mqYOVLXAAI8T1Mds68NIUt5Yopl47DIETJQVHw36lQkpVhvc-A_tTXduydHe4NgpltIYJNJw5_qKH4dzIzW94hW4o3eRoXeYwoGpAi6YKLWag/s400/IXOhack2b.jpg" width="400" height="300" data-original-width="1280" data-original-height="960" /></a></div>
<p>
This shifts the current source to 17 and 36 mA respectively. The booster turns this into 7.5 mA and 17 mA, which is much closer to the nominal current for the white LED, so this is the final configuration I used. There is no series resistor for the LED, I purely rely on the limited current coming from the transistor. I removed the 68 Ω resistor and connected the booster circuit. Instead of trying to solder onto the tiny resistor pads, I picked the connected through-hole pad. The little PCB (with the 3-pin header removed) fits nicely under the battery.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp8EApsfrPILcLddXoazvpizhg9UG5Pz8bUUQ_xQRJCzLddA2E8oWCA2IuMErTjWGi1mVBlwHVZm-bOkgxYJ395oSM9gUO3efJP1UelZJsSwJjN9uhoJXmq2Qf9G-3EWCYTZ0p5g/s1600/IXOhack3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp8EApsfrPILcLddXoazvpizhg9UG5Pz8bUUQ_xQRJCzLddA2E8oWCA2IuMErTjWGi1mVBlwHVZm-bOkgxYJ395oSM9gUO3efJP1UelZJsSwJjN9uhoJXmq2Qf9G-3EWCYTZ0p5g/s400/IXOhack3.jpg" width="400" height="300" data-original-width="1280" data-original-height="960" /></a></div>
<p>
The result is pretty nice, finally the LED is useful! The lighting is also a nice even area instead of ugly concentric circles. It does draw more current now, but compared to the motor, 36 mA is still pretty negligible.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguwRnIhUqRTLj48Ys1jueHyx-JLuDVO2rNSL6gd5vBlmdn1niqW5MEVgkaTh912IlY83CruAPCQqO9seIA-0FUireKWnDK9SbqKDEu4NvoDAAOHAkG1cuqz0VbPP_h6rpOS3PLyQ/s1600/IXOhack1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguwRnIhUqRTLj48Ys1jueHyx-JLuDVO2rNSL6gd5vBlmdn1niqW5MEVgkaTh912IlY83CruAPCQqO9seIA-0FUireKWnDK9SbqKDEu4NvoDAAOHAkG1cuqz0VbPP_h6rpOS3PLyQ/s400/IXOhack1.jpg" width="400" height="300" data-original-width="1280" data-original-height="960" /></a></div>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-80714007495205918222017-05-19T23:01:00.002+02:002019-01-11T19:15:27.058+01:00Making Prosoft Hear work again with iTunes 12.6<div style="color: #274e13; text-align: justify;" lang="en">
<p>
The only reason why I stick with iTunes is that I have been suckered into it from the start when it still was a pretty good application for managing an offline collection of music files. Lately, the app has shifted towards cloud-based stuff and artificial stupidity algorithms that try to suck all the joy out of being your own virtual DJ. It is still usable for its original intent however so I haven't tried to move to an alternative… yet.
</p>
<p>
Lately, Apple has done two more stabs at endlessly annoying me and making me regret that even my alarm clock is tightly coupled to iTunes by means of Koingo's Alarm Clock Pro. The first thing they did was break the visualizer plug-ins, in the typical Apple fashion that has since many years made me shy away from developing anything specific for OS X. This fashion is of course doing it in total silence, without warning anyone or even mentioning it in the release notes. Starting with iTunes 12.6 the visualizer menu simply only shows the two built-in visualisers, ignoring any installed plugins. I am pretty glad I never took the effort to polish up my now obsolete <a href="https://www.dr-lex.be/software/spectrograph.html">Spectrograph plug-in</a>. Maybe I unconsciously saw it coming.
</p>
<p>
The second thing they did, and what this post really is about, is that they also broke the <a href="https://www.prosofteng.com/hear-audio-enhancer/">Hear audio enhancer</a> from Prosoft. I heavily rely on Hear to make listening with headphones more enjoyable. When properly set up, Hear can make even the cheapest headphones sound like expensive Sennheisers. Or in my case, make mid-priced Sennheisers sound like an explosion of aural bliss. It can also squeeze extra fidelity out of simple Bluetooth speakers or other sound systems. Great was my frustration when I noticed the controls had no effect anymore after iTunes had sneakily upgraded itself to 12.6.1, and it was even greater when I saw on the Hear product page that Prosoft officially does not support iTunes anymore. That's right, they admit that their product primarily geared towards enhancing your music experience, does not work with the de facto standard for music playback in Mac OS. I commend them for that, but it doesn't make the fact less annoying.
</p>
<p>
My guess is that iTunes has become yet another application in the row of ‘sandboxed’ apps like Safari, which are nailed shut to avoid exploits from malware and the like. After all, iTunes is linked to a store and the store is linked to credit card details. Why this also has to break the ability to manipulate the audio stream, beats me. I contacted Prosoft and they are looking if the problem can be fixed, but I'm not sure if they'll be able to circumvent the sandbox restriction.
</p>
<p>
However, I noticed that applications like Nicecast still work fine with iTunes. This made me pretty confident that I can still make the audio go through Hear after all, albeit by means of a pretty clumsy roundabout. And indeed, after the necessary cursing and kludging I made it work as follows.
</p>
<h2>Making it work</h2>
<p>
The strategy is quite simple: re-route iTunes' audio output through another non-sandboxed program that plays the stream on standard output. We can do this by means of two different free, open source projects: SoundFlower and Audacity.
</p>
<ol style="text-align: left">
<li>First install SoundFlower, the <a href="https://github.com/mattingalls/Soundflower/releases">current 2.0b2 release from mattingalls' GitHub</a> seems to work fine, at least in El Capitan. Don't bother with trying to get the Soundflowerbed application to work, you don't need it.</li>
<li>In your Sound system preferences, set the <em>‘Soundflower (2ch)’</em> device as output device.</li>
<li>Open <a href="https://sourceforge.net/projects/audacity/">Audacity</a> and select the <em>‘Soundflower (2ch)’</em> device as the microphone device. Select the <em>‘Built-in Output’</em> as your output device.<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAfx-w4edCliNIIpNUKv8_qYPXaGG-NjGJeoMHK_bnr6dg6Ko8d70tD4_As0HwNZoI0dfhczFOMHG3PHK0rxqekdXhvANne9ikLAZtmLP8673WeNuU8g-iB_7MzK2epjbR7F87w/s1600/Audacity-inout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAfx-w4edCliNIIpNUKv8_qYPXaGG-NjGJeoMHK_bnr6dg6Ko8d70tD4_As0HwNZoI0dfhczFOMHG3PHK0rxqekdXhvANne9ikLAZtmLP8673WeNuU8g-iB_7MzK2epjbR7F87w/s400/Audacity-inout.png" width="400" height="81" /></a></div></li>
<li>In Audacity's preferences, Recording, enable <em>‘Software Playthrough’</em>.<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwb1nBYr0sO3Y8hfeZanyf5_W61NVM4yf8JaqSEO4yV89bqroO7Gw9IMKwBuy2afg0EsoZTszC0bfAxxNSySt8NzwkhdnLr2DOakDkYcTPWo_QIh6J-iuWtiAeGaC5ljMj-urCg/s1600/Audacity-prefs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwb1nBYr0sO3Y8hfeZanyf5_W61NVM4yf8JaqSEO4yV89bqroO7Gw9IMKwBuy2afg0EsoZTszC0bfAxxNSySt8NzwkhdnLr2DOakDkYcTPWo_QIh6J-iuWtiAeGaC5ljMj-urCg/s400/Audacity-prefs.png" width="400" height="107" /></a></div></li>
<li>Drag both the <em>input</em> and <em>output</em> volume sliders in the top-right corner of Audacity's main window to maximum. Now press <em>‘Click to Start Monitoring’</em> and start playing some music. You should see Audacity's VU meter start to move, and hear the sound as usual. You may need to give the Hear control panel a kick by toggling the on/off button or nudging a slider to make it hook itself to the audio output, but it should work.<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN6K6xVJQkLVC8LPwxe2NqUKID43MPckMUrvvB-6Uh2nRuO350ExYfSkHPqfE9MAdkPAiqHL1JP4xD9-TnGvtGDaYM_LGbCI1Bavj43Eilcsyqqy3GBAuIELwArMuIBzJJGPrhCg/s1600/Audacity-moni.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN6K6xVJQkLVC8LPwxe2NqUKID43MPckMUrvvB-6Uh2nRuO350ExYfSkHPqfE9MAdkPAiqHL1JP4xD9-TnGvtGDaYM_LGbCI1Bavj43Eilcsyqqy3GBAuIELwArMuIBzJJGPrhCg/s400/Audacity-moni.png" width="400" height="115" /></a></div></li>
</ol>
<p>
Of course this has some <strong>disadvantages,</strong> like needing to keep Audacity open, and a noticeable extra delay on the audio as well. You will have no sound at all if you break any component in the whole chain. This can be pretty annoying if like me, you use your Mac as an alarm clock (it will be trying to wake you with silence which results in you being late for work). Moreover, when you switch back to direct playback through internal speakers, two things require attention. First, your volume will be at 100%, which can lead to unpleasant surprises if you forget to turn it down. Next, when you have switched back to internal speakers in the Sound control panel and plug or unplug something from the headphone jack, OS X will once more switch back to Soundflower output, and you must again select internal speakers.<br>
In other words, not only do you need a whole ritual to set up this workaround, you also need to do a little dance to tear it down. For all these reasons I hope Prosoft manages to find a solution. I wouldn't mind if it would simply implement this workaround under the hood and have some extra delay, if only it is reliable.
</p>
<p>
This hack does have some extra advantages however, for instance Hear will also work with Safari or any other sandboxed application's audio. And, if at any time you would want to record what's playing, all you have to do is hit the record button in Audacity.
</p>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com2tag:blogger.com,1999:blog-15707288.post-91486964380176062792017-01-23T22:47:00.000+01:002019-01-11T19:22:02.205+01:00Dark Sky / Forecast.io: avoid using the temperature, humidity, or pressure values of the first hourly block<div style="color: #274e13; text-align: left;" lang="en">
<p>
Here is yet another post about something highly specific that is totally unrelated to everything else on this blog. Enjoy!
</p>
<p>
If you rely on <em><a href="http://forecast.io/">Forecast.io</a></em> to obtain weather prediction data, you may also have implemented fancy things like a graph of how the temperature will evolve over the next few hours. Or maybe just a rising/falling trend indicator. This seems very easy to do: just take the “hourly” data block and take the “temperature” values of each entry, and either plot them or compare them. This will work, but you may notice that as the time gets nearer to the next hour change (eg. 09:57), the first point in your graph starts wobbling around wildly every time you refresh the data. Why is this?
</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp7dQ5xTvGigUrcj2S7tsJKwZ3F5C9PfWE0y2aBhkLb5d1PFIm684-myKhwcmIhhDSReyoQNRTzF0uOubSgEJWovm3hqisLgDdkpaidN28J4HExw1Esw1kocewxYwjsShVVTT2Qw/s1600/plot-extrapol.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp7dQ5xTvGigUrcj2S7tsJKwZ3F5C9PfWE0y2aBhkLb5d1PFIm684-myKhwcmIhhDSReyoQNRTzF0uOubSgEJWovm3hqisLgDdkpaidN28J4HExw1Esw1kocewxYwjsShVVTT2Qw/s1600/plot-extrapol.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A plot made at 16:55, current reported temperature was 0.1°C.</td></tr>
</tbody></table>
<p>
The first hourly data block represents the current ongoing hour. For instance if you retrieve predictions at 09:57, the first block will represent 09:00. One would expect that the folks at Dark Sky would rely on their historical data to fill in the values for that block, given that it represents a moment in the past. For some reason however they merely take the current observations, in this example from 09:57, and <em>extrapolate</em> them into the past using the data for the next predicted hourly block. For instance if it is currently 15.12 degrees and the temperature for 10:00 is predicted to be 15.79 degrees, then the value for 09:00 will be calculated as (15.12-15.79*57/60)/(1-57/60) = 2.39 degrees.
</p>
<p>
Extrapolation works fine for data that is known to be relatively stable if the extrapolated point is near the interval of known data. In this case only one point is an actual observation though, the other one is a <em>prediction:</em> also an extrapolation in its own right. This makes it doubly dangerous to extrapolate another value out of it, especially if it lies so far away from the two given points.
</p>
<p>
The morale of the story is: do not rely on the temperature, humidity, or pressure values from the very first hourly data point, unless the hour has only just started. If you want to make a temperature graph, it makes more sense anyway to start the plot at the current time and not at the start of the current hour. Even if at some point the people at Forecast.io update their system to really put historical data in that block, if you would merely dump the values from all blocks in a graph, visitors would still be seeing a curve that starts almost an hour ago when they load your page 09:57, which is not very intuitive.
</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9TFI_C7Eb4eY3agABFrhhPg-w1cMZHPaSxEXWWAZCfP99viIgw1cmh5eEGMiT0JstauYLlsqwuIAiLtVlw4uS2lugBdYEE8NA_A3cKVkIPRb8pJykHpBUnafnYJM2jf7vZGeeog/s1600/plot-current.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9TFI_C7Eb4eY3agABFrhhPg-w1cMZHPaSxEXWWAZCfP99viIgw1cmh5eEGMiT0JstauYLlsqwuIAiLtVlw4uS2lugBdYEE8NA_A3cKVkIPRb8pJykHpBUnafnYJM2jf7vZGeeog/s1600/plot-current.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The same plot as above, but now starting at the actual observation.</td></tr>
</tbody></table>
<p>
After figuring this out, I now start my plot with the current observation and I calculate the trends by comparing the current observation to a linear interpolation at the current time plus one hour. Interpolating also is not ideal but a lot more defendable here than a wild extrapolation.
</p>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-45396810430130367392016-05-14T16:42:00.002+02:002019-01-11T19:34:08.595+01:00Another illustration why mandatory IP changes for DSL subscribers are a royal PITA<div lang="en">
<div style="text-align: left;">
<span style="color: #274e13;">Originally this was a different article where I wrongly accused OpenDNS of blocking perfectly harmless websites, more specifically my favourite internet radio station, <a href="http://www.radioparadise.com/">Radio Paradise</a>. Eventually it proved to be a case of utter confusion caused by factors that only became apparent after some sleuthing.</span><br />
<span style="color: #274e13;"><span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Long story short, I was suddenly locked out from certain websites due to OpenDNS filters that some other customer of the same DSL service had previously set up. This customer may have been unaware that IP addresses on this service are forcibly changed every 36 hours, and did not take the necessary steps to keep their OpenDNS account up-to-date. When I received the same IP from the dynamic address pool, I also inherited the blocks. Eventually my only way out was either removing the OpenDNS servers from my config, or waiting 36 hours, or resetting the modem to get a new IP. This again makes me wonder why ISPs still enforce this idiotic IP change on customers. It is ineffective in preventing people from running servers because that can be mitigated mostly </span><span style="color: #274e13;">through a dynamic DNS</span><span style="color: #274e13;">. I guess this is simply another case of artificially degrading a product in order to be able to sell a ‘premium’ product with a static IP, at a higher price.</span></span><br />
<span style="color: #274e13;"><span style="color: #274e13;"><br /></span>
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Here's the entire detective story for the interested.<br />
On a certain day, I suddenly saw the following when I tried to visit the <a href="http://www.radioparadise.com/">Radio Paradise</a> site:</span></span><br />
<span style="color: #274e13;"><span style="color: #274e13;"><br /></span>
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRvuEXmKKyYG3Bui9gL5pPNk-D_79RbpbpAfmH9OFzeiTJpmt2b3o7gZWb1eSIJOYkvd739BQa4VbfRlcUkM7e1otraH7ze9M3pYmWeSyz-xkhZbpOTBDHpIXPJ-obqW_wLZnnDg/s1600/opendns-RP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img alt="OpenDNS: This domain is blocked due to content filtering." border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRvuEXmKKyYG3Bui9gL5pPNk-D_79RbpbpAfmH9OFzeiTJpmt2b3o7gZWb1eSIJOYkvd739BQa4VbfRlcUkM7e1otraH7ze9M3pYmWeSyz-xkhZbpOTBDHpIXPJ-obqW_wLZnnDg/s400/opendns-RP.png" title="" width="400" /></span></a></div>
<span style="color: #274e13;"><span style="color: #274e13;"><span style="color: #274e13;"><b><br /></b></span></span>
<span style="color: #274e13;">The OpenDNS servers 208.67.222.222 and 208.67.220.220 have been in my system settings for many years, and never had I seen this kind of block. Actually I had specifically switched to those servers to circumvent some idiotic blocks that were implemented in my ISP's DNS servers.</span></span><br />
<span style="color: #274e13;"><span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Radio Paradise being blocked made no sense at all. At first sight, there were only two plausible explanations:</span></span><br />
<ol>
<li><span style="color: #274e13;">Somehow I was now being defaulted to one of the OpenDNS flavours that filter potentially offensive content.</span></li>
<li><span style="color: #274e13;">Some law prohibits listening to USA radio streams from within Belgium, and OpenDNS enforced this.</span></li>
</ol>
<div>
<span style="color: #274e13;">The second explanation was very implausible because I have never heard of any law like that, it certainly would have caused a ruckus on the Web. The first explanation seemed plausible because from a quick glance at the <a href="https://www.opendns.com/home-internet-security/">OpenDNS home security plans</a>, it appeared that ‘Family Shield’ is the default when merely using the OpenDNS servers without configuring anything. Then I noticed this actually required configuring different servers, but nothing changed when I did: RP was still blocked. Hence I assumed that using OpenDNS without creating an account, had become equivalent to Family Shield.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">This (incorrect) assumption implied two things: first, RP would somehow have been considered ‘adult’ content and second, many visitors would suddenly be locked out. They would need to go through the effort of creating an OpenDNS account to choose what is being blocked. For DSL subscribers whose IP is forcibly changed at regular intervals, this would be particularly annoying because they also need to install a daemon that keeps their IP address up-to-date with their OpenDNS account.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">Even though the apparent </span><span style="color: #274e13;">‘adult’ </span><span style="color: #274e13;">categorisation of RP still made no sense, this angered me enough to write an article where I accused OpenDNS of behaving like the great firewall of China. I also posted this on the Radio Paradise forum. No other OpenDNS users could reproduce this problem however, they did not see certain websites suddenly being blocked. In the meantime I also had created an OpenDNS account, which requires registering the network you're currently on. This proved <em>impossible:</em> the IP address was already registered! These two facts lead to the ‘eureka’ moment and the conclusion I started this article with. I immediately reset the modem to force it to obtain a new IP and indeed: everything worked as before.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;"><span style="color: #274e13;">This does illustrate that maybe OpenDNS could have done a better job at detecting that someone tried to register a static network with an address that belongs to a dynamic address pool, although I do realise this is not a trivial task. I now have added my home network to the OpenDNS account and installed an update client to keep the dynamic IP in sync, but I'm not sure if this will prevent this same scenario in the future. Well at least now I know how to fix it and how I can use OpenDNS to block the things I want, like</span> spam domains or annoying ads that slip through Adblock, so this whole story does have a happy ending.</span><br />
<br /></div>
</div>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-20152737123089581352016-04-16T19:57:00.003+02:002016-04-16T20:18:22.340+02:00The ‘manual feed’ icon on printers: less than helpful<div language="en" style="color: #274e13;">
<p>Only seldom I need to use the manual feed on printers. The interval is generally long enough that I have totally forgotten how I need to insert the paper in order to get the image printed on the correct side of the paper. When using the manual feed, it is almost always crucial to know what side will be printed on. In an attempt to clarify this to users, manufacturers provide an icon on the manual feed tray:</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD5_Q9IFOuEVdL3PtieZxVQOXSCfiWcWlauckNzKeXYVy3d6LpdDZPaGJQSkpv9zgcpMic9IXHASoawRzTvUIyajthjiZN2UmdztVBmnkr4iv16190Dfr35Lo7YtgLVvmN-KA27g/s1600/manual_feed.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img alt="Manual feed icon" border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD5_Q9IFOuEVdL3PtieZxVQOXSCfiWcWlauckNzKeXYVy3d6LpdDZPaGJQSkpv9zgcpMic9IXHASoawRzTvUIyajthjiZN2UmdztVBmnkr4iv16190Dfr35Lo7YtgLVvmN-KA27g/s400/manual_feed.jpg" title="" width="400" /></span></a></div>
<p>The problem with this icon is that it is less than helpful. What does it mean? It shows a page with apparently a blank and printed side. This can either mean:</p>
<ol>
<li><span style="color: #274e13;">The printer will print on the side shown as having print in the icon, in this case the bottom side.</span></li>
<li><span style="color: #274e13;">If you insert a page, make sure the blank side, which will be printed on, is pointing upwards.</span></li>
</ol>
<p>Both interpretations make sense and no sense at the same time. The first interpretation fails because it does not match with reality: the underside of the real piece of paper will generally not have anything printed on it at the moment it is inserted in the tray. In the very common case of using the manual feed to print on the other side of an already printed page, reality is opposite from what the icon depicts. The second interpretation fails in the cases where one wants to print on a truly blank piece of paper, e.g. on the glossy side of photo paper.</p>
<p>The last time I was faced with this conundrum and failing to find anything useful about it in Google, I simply tested it, and the first interpretation proved correct: this printer (HP) will print on the bottom side of the paper. Mind how I say: “this printer,” because I deem it possible that there are other manufacturers who use the second interpretation. Because as we all know, the only thing printer manufacturers want, is to <a href="http://theoatmeal.com/comics/printers">piss off consumers</a>.</p>
<p>This icon also fails to clarify what the top side of the page will be, except for those people who have a habit of folding dog ears on the top of every piece of paper they insert into a printer. Common sense however dictates that the side that first enters the printer will be the first to be printed on.</p>
<p>If I would have a go at designing a better icon, it would be something like this:</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNvr7M2ACqr43cuuP2YjTBwmHy_TU_KGFQ6s6_i0WVyMH4FnIMDNUQ5nNyUiRMKZUHiJCaJa9SACbNDrQO9GxbLZrzDbAuLkMa-0oZlxtehT46BNA9B7KwwdXiXWck33oz_xMJRQ/s1600/manual_feed-proposal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #274e13;"><img alt="Proposed improved icon" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNvr7M2ACqr43cuuP2YjTBwmHy_TU_KGFQ6s6_i0WVyMH4FnIMDNUQ5nNyUiRMKZUHiJCaJa9SACbNDrQO9GxbLZrzDbAuLkMa-0oZlxtehT46BNA9B7KwwdXiXWck33oz_xMJRQ/s1600/manual_feed-proposal.png" title="" /></span></a></div>
<p>The disadvantage is of course that this icon is not universal and may need to be adapted to the specific printer model.</p>
</div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-75162694074367958212016-03-11T18:46:00.002+01:002016-05-07T20:05:09.413+02:00Undoing yellowing on ABS plastic like LEGO® bricks and old computer cases<span style="color: #274e13;">Every owner of vintage computer hardware or older LEGO® sets will know the problem: the plastic that used to have a bright white or neutral grey colour, tends to turn yellowish or even brown over time. I used to believe this was an irreversible ageing process, until I did some research. My first find was a <a href="https://www.youtube.com/watch?v=gmZOQJ1dHRg">YouTube video</a> presenting a rudimentary way of bringing back the bright white colour of LEGO® bricks. Further research led me to the <b>“<a href="http://www.retr0bright.com/">Retr0bright project</a>”</b> which presented a more advanced technique than the video.</span><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj45iVodWk10g_31fB4TG7R3P5GXTuXLG-ozYOjOUKV0AL1qN4CMr0JslUQUDK64epxtI1Wa9LRkFq5aJPM3iTz6Ln8cPrllmVaxSKJWHu3cbeNwIOjRdM_DP9eBDaPzMaAjnx8fQ/s1600/Bromine-ampoule.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj45iVodWk10g_31fB4TG7R3P5GXTuXLG-ozYOjOUKV0AL1qN4CMr0JslUQUDK64epxtI1Wa9LRkFq5aJPM3iTz6Ln8cPrllmVaxSKJWHu3cbeNwIOjRdM_DP9eBDaPzMaAjnx8fQ/s200/Bromine-ampoule.jpg" width="170" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Bromine.<br />
Original photo by <a href="https://commons.wikimedia.org/wiki/User:Jurii">Jurii</a> (<a href="https://creativecommons.org/licenses/by/3.0/deed.en">license</a>)</td></tr>
</tbody></table>
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">The culprit proves to be the flame retardant inside the ABS plastic. It is based on <i>Bromine,</i> which is not a big surprise because it has the same typical brown colour as gradually appears on the affected plastic parts. When exposed to UV radiation (which is present in sunlight), the bromine compound reacts with oxygen, causing the colour change. Ironically, the method to reverse this discolouration relies on the same UV radiation. The trick is to add hydrogen peroxide (H<sub>2</sub>O<sub>2</sub>) to the mix, which encourages the bromine compound to release the oxygen atom and put hydrogen in place, which undoes the colour change.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">That is the basic idea behind the process. A refinement can be made with a chemical called TAED which can act as a catalyst to greatly speed up the reaction. This chemical happens to be an ingredient of typical “Oxy” laundry booster, so it is readily available.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXLFIjpnd4f_7guBo_5V2f0VxXacfefRvHE3XmqiyiNx3jHWM4MlzuHVXgajlmdsoNARD44-EZ2aPjM9bgN8G3LaT-IoRwo0deXDg9KEChKP9_11g8SsV2BG831-j5wd3BJBe1Q/s1600/Retr0bright1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXLFIjpnd4f_7guBo_5V2f0VxXacfefRvHE3XmqiyiNx3jHWM4MlzuHVXgajlmdsoNARD44-EZ2aPjM9bgN8G3LaT-IoRwo0deXDg9KEChKP9_11g8SsV2BG831-j5wd3BJBe1Q/s400/Retr0bright1.jpg" width="400" /></a></div>
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">I did some experiments of my own on some old LEGO® bricks of which I assumed they were doomed to be eternally bereft of their original bright white colour. As you can see in the above photo, the results are quite spectacular. Those <i>are</i> the same bricks (if you look carefully, the legs still have the speck of dirt on their left side). The above experiment was done with </span><span style="color: #274e13;">H</span><sub style="color: #274e13;">2</sub><span style="color: #274e13;">O</span><sub style="color: #274e13;">2 </sub><span style="color: #274e13;">only, and it took several days to obtain those results. The next experiment was done with Oxy added, which provided results much quicker:</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg67hK0xarwf6msWaPsfUmKu8B9ejcioGkq-ipeL_tE_xWKKd_ScmpL-MfGSmJI195cJq15s46GstZOrexbv1MMeVpG3B9QX7Duzy0QvBk2MhC6Z-tpcacifp8wg-RvubpbP8arHw/s1600/Retr0bright2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg67hK0xarwf6msWaPsfUmKu8B9ejcioGkq-ipeL_tE_xWKKd_ScmpL-MfGSmJI195cJq15s46GstZOrexbv1MMeVpG3B9QX7Duzy0QvBk2MhC6Z-tpcacifp8wg-RvubpbP8arHw/s320/Retr0bright2.jpg" width="286" /></a></div>
<br />
<span style="color: #274e13;">The Retr0bright project used to have a wiki explaining how to make and use an optimal mixture for restoring old ABS plastic. Unfortunately this wiki is now down, and accessing it through the <a href="http://web.archive.org/web/20140216112149/http://retr0bright.wikispaces.com/home">Internet Archive</a> is slow and often incomplete. Therefore I will try to summarise the essential information here for easier reference, backed up by my own experimental results.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<h2>
<span style="color: #274e13;">Caveats and general remarks</span></h2>
<div>
<span style="color: #274e13;">You will be working with <i>hydrogen peroxide.</i> Any solution </span><span style="color: #274e13;">between 3% and 30% strength can be used. The 3% variety is easily found in the pharmacy section of supermarkets etc, and won't do any harm if you only leave it in contact with your skin for no longer than a few dozen seconds. Up to 10% can be obtained from hairdressers, it is used for bleaching hair. This is more dangerous and skin contact should be avoided, also ensure it does not get into your eyes: wear goggles. Stronger solutions are more dangerous: 30% can produce instant painful burns, so never handle it without proper precautions. Needless to say: if you are a kid, you should not attempt any of this without adult supervision.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">As with many chemical reactions, this one is dependant on <b>temperature</b> too. From my experiments, this proves to be an extremely important factor. It seems the reaction only really provides any results at all from 15°C <span style="font-size: x-small;">(60°F)</span> on, and only really starts to catch on at 20°C <span style="font-size: x-small;">(68°F)</span>. Warmer means faster, but I do not recommend going above 30°C <span style="font-size: x-small;">(86°F)</span> if you want to leave the parts unattended for a longer time period. Certainly avoid going above 40°C <span style="font-size: x-small;">(104°F)</span> because parts could start to deform.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">Ensure the parts are submerged at all times. Any part that is partially submerged risks developing a white sheen at the liquid-air boundary. If this does happen, it might be possible to remove the sheen by ‘burnishing’ it, i.e. rub another smooth and hard object against it. For LEGO, you could try a slightly harder plastic object like the brick remover.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">More is not always better: do not be tempted to add more Oxy, stronger peroxide, heat, or stronger UV light. At some point you will be damaging the plastic beyond repair if you do.</span><br />
<span style="color: #274e13;"><br /></span></div>
<h2>
<span style="color: #274e13;">Basic method</span></h2>
<div>
<span style="color: #274e13;">This method is easy and cheap, but not always practical.</span></div>
<br />
<ol>
<li><span style="color: #274e13;">Find a transparent recipient large enough to hold the plastic parts you want to restore. Cover the bottom <i>outside</i> with tin foil, preferably with the matte side up (this will reflect light more evenly). You can also apply tin foil to the side of the recipient that points away from the UV source. If you really want to provide the most uniform lighting, put the recipient on a slowly rotating turntable.</span></li>
<li><span style="color: #274e13;">Pour the hydrogen peroxide solution into the recipient, enough for the parts to be submerged.</span></li>
<li><span style="color: #274e13;">Submerge the parts and ensure they cannot float up again, e.g. by placing a glass plate or something else transparent over it. Do not stuff too many parts together: ensure the light can reach every part.</span></li>
<li><span style="color: #274e13;">Place it in direct sunlight, or under a UV lamp that outputs a decent amount of light. For a 15 W lamp, do not put it closer than 25 cm<span style="font-size: x-small;"> (10 inches)</span>.</span></li>
<li><span style="color: #274e13;">Wait, stir up the recipient occasionally to let bubbles escape and to turn around parts, and take out and rinse the parts when they appear to have bleached sufficiently.</span></li>
</ol>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEDc0hd0K-U3zyiuAOiUnAjknnsod0CB5CpI2UVMx2ioS-f17FQnLkE6tHXpSeW4B8LqVZX7Why7iKuFEZSI7UVgRKPmavapQLsSVyuamvYWC4VSI9mhjnQULz3_wKimdwt6sVQ/s1600/Retr0bright3.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEDc0hd0K-U3zyiuAOiUnAjknnsod0CB5CpI2UVMx2ioS-f17FQnLkE6tHXpSeW4B8LqVZX7Why7iKuFEZSI7UVgRKPmavapQLsSVyuamvYWC4VSI9mhjnQULz3_wKimdwt6sVQ/s200/Retr0bright3.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Bubbles</td></tr>
</tbody></table>
<div>
<span style="color: #274e13;">This method works OK, but may be slow, although it can go surprisingly fast when the liquid is warmed up to about 30°C. On a hot summer's day, parts can go from brown to bright white in a few hours. The advantage is that the peroxide solution will generally last long and can be reused. As long as you see bubbles forming on the plastic parts, the solution is still active. If no bubbles form within 5 minutes even when the solution is warmed up to 30°C, it has decomposed into plain water and must be replaced.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<h2 style="clear: both;">
<span style="color: #274e13;">Faster method</span></h2>
<div>
<ol>
<li><span style="color: #274e13;">Do the same as above, but add a small amount of “Oxy” laundry booster to the mix. You should not add more than about 1/4 teaspoon per half litre of solution. Ensure it is well-mixed, you could dissolve the Oxy in a bit of warm water before adding it.</span></li>
<li><span style="color: #274e13;">Ensure the solution stays at about 25°C, or 30°C if you want it to go really fast.</span></li>
<li><span style="color: #274e13;">Monitor the solution carefully at regular intervals. As soon as it stops bubbling, remove the UV light source and take the parts out. If they are not yet sufficiently bleached, make a new solution.</span></li>
</ol>
<div>
<span style="color: #274e13;">This method can provide spectacular results within hours, even at moderate temperatures. The problem is that the solution will break down much faster, and as soon as the peroxide is gone, the UV light will again start the yellowing process. It is therefore essential to stop when the peroxide is exhausted.</span><br />
<span style="color: #274e13;"><br /></span></div>
</div>
<div>
<span style="color: #274e13;">Only add the Oxy when you're going to start using the solution. It cannot be stored for a long time with the Oxy added, unless perhaps you cool it down to near-freezing temperature, but I do not guarantee this.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">The disadvantage is that the Oxy generally also contains detergents which will cause foam, especially with the peroxide bubbling. This will stop after a while though. The detergents may also leave a dull residue which needs to be washed off the parts. Also, see my comments about coloured parts below.</span><br />
<span style="color: #274e13;"><br /></span></div>
<h2>
<span style="color: #274e13;">Efficient method for large parts</span></h2>
<div>
<span style="color: #274e13;">The above methods are unpractical for large parts like computer cases, keyboards, or LEGO® baseplates. For those, it is better to create a gel as proposed by the Retr0bright project, which can be applied</span><span style="color: #274e13;"> </span><span style="color: #274e13;">to the surface</span><span style="color: #274e13;"> with a brush. Simply place the parts with gel applied to one side in the UV light (or sunlight) and check on them regularly. Then repeat for the other side.</span><span style="color: #274e13;"> </span><span style="color: #274e13;">On the </span><a href="http://www.retr0bright.com/">Retr0bright website</a><span style="color: #274e13;"> you can see a spectacular example of what this method did for a horribly discoloured Commodore 64, with repeated applications within a timespan of only eight hours.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">I have not tried this myself yet, but a good recipe for the gel seems to be the original Retr0bright one:</span></div>
<div>
<ul>
<li><span style="color: #274e13;">500ml of 10% to 15% hydrogen peroxide solution (dilute it down with distilled water if you have a stronger solution).</span></li>
<li><span style="color: #274e13;">2 heaped tablespoonfuls of Xanthan gum</span></li>
<li><span style="color: #274e13;">1 level teaspoon of Glycerine</span></li>
<li><span style="color: #274e13;">1/4 teaspoon of Oxy. </span><span style="color: #274e13;">Again, do not add the Oxy until you're about to apply the gel.</span></li>
</ul>
<div>
<span style="color: #274e13;">The same remark about temperature holds: try to keep the parts between 25 to 30°C. Ensure the gel does not dry out, replace it if it starts to dry.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Although in theory it could be omitted, the Oxy is very helpful for this method because the gel dries up within hours, therefore we can really use the extra speed from the TAED catalyst to save us from having to reapply new gel too many times.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">If you do want to omit the Oxy, you will need to ensure the parts are kept at a temperature between 30 and 40°C while being exposed to the UV light, otherwise the gel will work unpractically slowly. You may be lucky that the sunlight provides exactly the right amount of heat, but for an indoor setup with UV lamp, you would need to find a way to warm up the parts to the right temperature without causing the gel to dry up quickly (a heater with a fan is obviously not a good idea).</span><br />
<span style="color: #274e13;"><br /></span></div>
</div>
<h2>
<span style="color: #274e13;">What about coloured parts?</span></h2>
<div>
<span style="color: #274e13;">For LEGO®, the parts that suffer the most from yellowing tend to be the white, blue, and grey ones (obviously, on colours like yellow or red, a lot of additional yellow needs to be added for it to become visible). For white, there is not really a problem: you cannot overdo the bleaching. For colours however, the story is different, and from my experiments I can only conclude that results are unpredictable.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM8ep1HUW_UqLC6tu6mtWlSdk34P8yDoJ-CIScwsJPf04LKQjXuqYny1iKj_hiT1je3lf-VBOcLsSiTf5ISY3k9sAA1b9Zkod36kJcMApTfpvBut8roF_zB0qNex5uGAgXmdTwXg/s1600/Retr0bright4.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM8ep1HUW_UqLC6tu6mtWlSdk34P8yDoJ-CIScwsJPf04LKQjXuqYny1iKj_hiT1je3lf-VBOcLsSiTf5ISY3k9sAA1b9Zkod36kJcMApTfpvBut8roF_zB0qNex5uGAgXmdTwXg/s320/Retr0bright4.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The hook and bottom blue plate were treated, and ended up too pale.</td></tr>
</tbody></table>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">I tried the second method (with Oxy) on both a blue brick and grey hook that had badly discoloured. At first it got better, but in the end both parts were bleached beyond their original colour. However, I do have obtained quite good results by only using peroxide, with other bricks that were less yellowed to start with. I suspect two things: first, the pigments themselves were already damaged by the exposure to sunlight, making it impossible to restore the colour of really badly yellowed parts (unless someone would find another clever chemical process to revert that reaction). The yellow or brownish tint can be removed, but the original colour cannot be fully restored. Second, chemicals in the Oxy might further damage the pigments. </span><span style="color: #274e13;">I would avoid using Oxy with coloured parts. My intuition tells me that the risk of damaging the colours will be lower, the less chemicals you add to the mix, so the peroxide-only method seems safer.</span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">If you have a really badly yellowed blue or grey part, I recommend using peroxide </span><span style="color: #274e13;">only </span><span style="color: #274e13;">without Oxy, and regularly checking on its status. Avoid strong UV exposure because it could further damage the pigments. Take the part out of the liquid as soon as it looks good enough. Maybe a slightly yellowed darker colour is preferable over a yellow-free bleak colour. You will have to accept that it may not be possible to get back the original appearance. Anyone who has more experience with restoring coloured parts, be sure to leave a comment.</span><br />
<span style="color: #274e13;"></span></div>
<div>
<span style="color: #274e13;"><br /></span></div>
<div>
<span style="color: #274e13;">As for imprints and stickers on the plastic, these will generally not be harmed by the peroxide, although I cannot give any guarantees. If you want to err on the safe side, your best bet is to use the gel method and avoid applying gel over printed logos or any other non-ABS parts.</span><br />
<span style="color: #274e13;"><br /></span></div>
<h2>
<span style="color: #274e13;">Do ABS parts made today still suffer from yellowing?</span></h2>
<div>
<span style="color: #274e13;"><a href="https://en.wikipedia.org/wiki/Flame_retardant">Wikipedia</a> states that the use of bromine-based flame retardants is declining in the Western world. I have no concrete information about this, so I did a small experiment on a recently bought LEGO® part from Pick-a-Brick. I placed it under the same UV lamp used for the above experiments, for several days. The result was no visible effect whatsoever, so I am inclined to say that recent LEGO® parts are less susceptible to yellowing than the ones from the nineties and earlier. Nevertheless, if you plan to exhibit your favourite LEGO® models in a sunlit room, it may be wise to provide some kind of UV shielding.</span></div>DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-68596897788949863942015-11-13T11:35:00.000+01:002019-12-20T21:48:56.809+01:00Why the WD TV Live remote control works so poorly<div lang="en">
<span style="color: #274e13;">Owners of a Western Digital TV player, or WD TV Live as it tends to be called, may have noticed that the remote control is hit or miss. Especially in larger rooms, it only works when standing near to the player, which makes it a pretty poor ‘remote’ control. We have one of these things in our development setup and I got sick of having to walk up to the player every time I needed to change settings or start a new video. I tried to hook up the player to the network so I could use the web-based remote control, but the player cannot handle our heavy network traffic and freezes within 10 minutes, so this was not an option.</span><br />
<br />
<span style="color: #274e13;">Out of sheer frustration I dismantled the top of the remote to see if anything was wrong with the infrared LEDs. This indeed reveals there is something wrong… by design.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLIFPmqGz54FdKHEMgVnHmjXcExB08PMbLyO8m95QBs5NkNVDrEfHyR3g0AHRhrWmGbLJsZwbkif3iwCSdwzBH3sIaBARuKlVH_VezpXCgYNRpRiTl26RnYYhMx0iSoHCp-Lgjsg/s1600/WD_TV-crappy_remote.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLIFPmqGz54FdKHEMgVnHmjXcExB08PMbLyO8m95QBs5NkNVDrEfHyR3g0AHRhrWmGbLJsZwbkif3iwCSdwzBH3sIaBARuKlVH_VezpXCgYNRpRiTl26RnYYhMx0iSoHCp-Lgjsg/s320/WD_TV-crappy_remote.jpg" width="320" /></a></div>
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">As the photo shows, the remote has two LEDs, but instead of pointing forward, they point away from the central axis at a ±15 degree angle. Sure enough, when aiming the remote 15° away from the player, it works fine even at larger distances.</span><br />
<br />
<span style="color: #274e13;">Let me tell you what our QA engineer thinks of this: he would want to find everyone responsible for this design and shove one of these remotes up each of their ***es. I agree.</span><br />
<br />
<span style="color: #274e13;">I don't know what the motivation for this design was, maybe to enable even the most drunk of persons to control their player even when they can no longer aim properly? The problem is worst in large rooms because in smaller rooms, the infrared signals can bounce off walls and the off-center aim does not matter.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Unfortunately it is not trivial to remedy this by bending the LEDs such that they point forward, because this poor design is protected by ample plastic to hold the LEDs firmly into place. I'll try to do some surgery with an X-acto knife but I would not recommend this to the average consumer who does not want to risk cutting themselves. The easiest workaround is to actually aim 15° away from the player when using the remote.</span>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com0tag:blogger.com,1999:blog-15707288.post-67407126545832099122014-11-01T19:26:00.002+01:002015-11-13T11:35:56.701+01:00iTunes 12: hacking the playlist font sizes<div lang="en">
<span style="color: #274e13;">In iTunes 11, there were only two options for the font size in list views. The ‘small’ size corresponded to a font size of 12, the ‘large’ size was 15. It was possible to change these font sizes by editing the TextStyles.plist file (for your specific language) inside the iTunes app bundle. The two relevant keys were 9002 and 9003.</span><br />
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">In iTunes 12, the old choice between three list sizes was reintroduced. However, the font sizes associated with ‘small’, ‘medium’, and ‘large’ have been assigned dubious values: they are 11, 12, and 13 respectively. There is even less difference between smallest and largest than in iTunes 11. The row heights do change quite drastically, resulting in</span><span style="color: #274e13;"> an overly spacious display for the large size.</span><br />
<span style="color: #274e13;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-yohvSpae1W_S-wH5aNLvEFOfXcHWyXiuPikEU7myhOdKmfDtDAre0ZwbUQnIAtNzfg-TrurliWqtmJvmGWuM8PJirkR-GYCuuTReJASGyD_PmU6OaR7kqp3ImGArfHnn3RDAaw/s1600/iTunesListSizes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-yohvSpae1W_S-wH5aNLvEFOfXcHWyXiuPikEU7myhOdKmfDtDAre0ZwbUQnIAtNzfg-TrurliWqtmJvmGWuM8PJirkR-GYCuuTReJASGyD_PmU6OaR7kqp3ImGArfHnn3RDAaw/s1600/iTunesListSizes.png" height="343" width="400" /></a></div>
<span style="color: #274e13;"><br /></span>
<span style="color: #274e13;">Editing the same keys in the plist as before has no effect. After looking around a bit, I found the keys that are currently used: they are respectively #17920, named “Label” (this is actually the large size), #18688, named “Label_Medium”, and #18944, named “Label_Small”. It may be necessary to edit the other keys with similar names to get a consistent result. For instance, to revert the ‘large’ size back to its former 15 point size, you would need to ensure the Label, Label_Emphasized, etc.</span><span style="color: #274e13;"> entries look like this:</span><br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <key>17920</key></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <dict></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <key>- loc hint -</key></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <string>Label</string></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <key>font</key></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <string>_HelveticaNeueSystem</string></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <key>size</key></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> <integer>15</integer></span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> </dict></span><br />
<div>
<br />
<span style="color: #274e13;">Of course, this hack needs to be re-applied after every iTunes update. You may want to keep a backup of the edited plist file so you can simply copy it (although you should check whether no other values have changed in the update).</span></div>
</div>
DrLexhttp://www.blogger.com/profile/00586390670580322354noreply@blogger.com2