Jim Rome's Interactive Site http://jamesrome.net/drupal/ en Updating from Drupal 8 to Drupal 9 http://jamesrome.net/drupal/d8-d9 <span class="field-wrapper">Updating from Drupal 8 to Drupal 9</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Sat, 09/12/2020 - 13:42</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogfield-display-title"> <div class="field-wrapper field field-node--field-display-title field-name-field-display-title field-type-string field-label-hidden"> <div class="field-items"> <div class="field-item"><h2><a href="/drupal/d8-d9" hreflang="en">Updating from Drupal 8 to Drupal 9</a></h2> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>Drupal claims that updating sites from D8 to D9 is easy. That is true if you have no additional modules installed. But in the real world, it is really difficult. I have done 4 sites now, and all were somewhat different, alas. The issue is updating the modules, or removing those that cannot be updated to D9. Here is my procedure.</p> <h3>Make sure your D8 site is fully updated</h3> <p>Update everything to the latest Drupal8 (currently 8.9.6) version.</p> <h3>Install the upgrade_status module</h3> <p><a href="https://www.drupal.org/project/upgrade_status">https://www.drupal.org/project/upgrade_status</a></p> <pre> <span style="font-size:10px;">[~/www/drupal]# composer require --update-no-dev --update-with-dependencies drupal/upgrade_status Using version ^2.9 for drupal/upgrade_status ./composer.json has been updated </span><span style="font-size:8px;">Loading composer repositories with package information Updating dependencies . . . Writing lock file</span><span style="font-size:10px;"> Generating autoload files &gt; Drupal\Core\Composer\Composer::preAutoloadDump &gt; Drupal\Core\Composer\Composer::ensureHtaccess 32 packages you are using are looking for funding. Use the `composer fund` command to find out more! [~/www/drupal]# ./drush en upgrade_status [success] Successfully enabled: upgrade_status</span> <span style="font-size:10px;">[~/www/drupal]# ./drush cr</span> </pre><p>Browse to your site, and in the  the <em>Reports</em> menu, select <em>Upgrade status</em>.</p> <p>You first need to be sure that your hosting site has all the resources you need to actually run Drupal 9.</p> <p><img alt="" data-entity-type="file" data-entity-uuid="9c053174-b8ac-4765-bedf-efdb69a91529" height="345" src="/drupal/sites/default/files/upgradestatushost.png" width="800" /></p> <p>Your host also needs to allow you 2 GB of php memory of composer will die. If you fail any of these tests, switch your hosting server. See <a href="https://jamesrome.net/drupal/hosting">https://jamesrome.net/drupal/hosting</a></p> <h3>A Note about Composer</h3> <p>Composer 2.0rc is now available. It may solve your problems, or it may cause them. It has several important advantages:</p> <ul><li>It is MUCH faster than Composer 1.x</li> <li>It uses MUCH LESS memory, to avoid messages like:<br /><span style="font-size:10px;">Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar:///home/mysite/public_html/composer.phar/src/Composer/DependencyResolver/Solver.php on line 223</span><br /> and also respects memory limits such as <div style="-en-clipboard:true;">In .bash_profile</div> <div>export COMPOSER_MEMORY_LIMIT=2G</div> <div>alias comp="COMPOSER_MEMORY_LIMIT=-1 /home/mysite/www/composer"</div> </li> </ul><div>But, some module plugins are not ready for Compose 2.0, and you may get messages telling you to<br /> "--ignore-platform-req=composer-plugin-api, but this may result in broken plugins and bigger problems down the line."</div> <p>To upgrade to composer 2, do<br /> composer self-update --preview</p> <div>To revert to 1.x, do</div> <div>composer self-update --rollback</div> <div> </div> <div>If Composer gets a bad error (which early builds of 2.0 gave), rollback may not work, and you may need to reinstall composer from the Composer site.</div> <p>One of my sites would not allow me to update anything, even from the command line(!), but updating to Composer 2 solved this.</p> <h3>Clone your Drupal 8 site</h3> <p>On your current host, go into the directory above your Drupal 8 root and tar up the <em>public_html</em> directory or its equivalent. Do NOT use zip. It does not preserve permissions!</p> <pre> <span style="font-size:10px;">tar -cvf public_html.host.tgz public.html</span></pre><p>Also, using cpanel, select phpMyAdmin, and export your database.</p> <p>I use my home linux (opensSUSE LEAP 15.2) machine to do my site development.</p> <p>in /srv/www/htdocs, untar your public_html.host.tgz file:</p> <pre> <span style="font-size:10px;">tar -xvf public_html.host.tgz</span></pre><p>it will create a public_html directory with all your files. Also, use phpMyAdmin to install the exported database into your development environment. Use the same database name, user name, and password you used on your hosting server.</p> <p>I do all my development as root, so the untar will ruin the file ownership, so on my apache2 machine, I must go into /srv/www/htdocs and do</p> <pre> <span style="font-size:10px;">chown -R wwwrun:www public_html</span></pre><h3>Edit settings.php</h3> <p>If your site was set up properly, you will need to go into sites/default/settings.php and comment out the trusted_host_patterns section. Also be sure your public, private, and sync locations will work on your development machine.</p> <h3>Update or uninstall all your modules</h3> <p>This is the hard part, and it helps to have a big monitor.</p> <p><span style="color:#e74c3c;"><strong>If you do not uninstall all D9 incompatible modules from D8, the upgrade will fail, because this is the only way to properly fix your database.</strong></span></p> <p>Access your cloned site in a web browser. How you do this depends on your configuration. For example, if you are physically on the development machine, you can use <em><a href="https://localhost/public_html">https://localhost/public_html</a></em>. If your main installation is in the web directory, you may have to add a <em>/web</em> at the end. This also depends on the <em>.htaccess </em>file in your <em>public_html</em> directory.</p> <p>You will need to open two ssh windows into the <em>public_html</em> directory. In one, open <em>composer.json</em> in a text editor. In your browser, open the <em>Extend/Uninstall</em> Drupal menu.</p> <h4>The first goal is to uninstall all of your unneeded modules.</h4> <p><span style="color:#e74c3c;">After each step, it is wise to continue to check that your D8 installation works. The <em>drush updb</em> and <em>c</em>r commands should work with no errors, and your GUI Web page should still work.</span></p> <p><span style="color:#e74c3c;">You MUST first uninstall each module in the <em>Extend/Uninstall</em> Gui.</span> This gets rid of the module's entries in your database. If you do not do this diligently, you will get all sorts of errors that are impossible (for me) to recover from. Once the module is uninstalled,</p> <pre> composer remove drupal/module_name</pre><p>will remove the module from the <em>require</em> section of <em>composer.jso</em>n. In addition, this will fix <em>composer.lock</em>, which wilkl otherwise reinstall removed modules.</p> <p>It is OK to uninstall multiple modules at once, but the uninstall process might trash things like text formats, so you may also need to edit them to remove references to the removed modules before doing the uninstall.</p> <p><strong>Gotchas:</strong></p> <ul><li>The module file name may not be the thing listed in Extend/Uninstall!<br /> The module file <em>gdoc_field</em> is listed as <em>Embedded Google Docs Viewer</em></li> <li>You may have to install unwanted modules and then uninstall them in the GUI to properly remove their dependency.<br /><em>mailing_list</em> could not be uninstalled until I installed and uninstalled <em>email_confirmer</em></li> </ul><p>It is probably good to remove these module files from the <em>modules/contrib</em> directory.</p> <h4>Next, every module must be checked for Drupal 9 compatibility</h4> <p>Go through each line of the <em>require</em> section of <em>composer.json</em> and go to the module site to see if the module has a Drupal 9 version. This is easier said than done. If you are lucky, the release version will have</p> <pre> Requires Drupal: ^8 || ^9</pre><p>If it says</p> <pre> Requires Drupal: 8.x </pre><p>look down a bit for a development version. If it is dated more than a year ago, you are probably out of luck. If it is dated since the Covid era, click on it, and you may be surprised to see it is good for Drupal 9. In this case, edit the version in <em>composer.json</em> so you get the dev version. So, for example, replace</p> <pre> "drupal/front": "^1.0@beta",</pre><p>with</p> <pre> "drupal/front": "^1.x-dev",</pre><p>There is yet a third possibility: there may be a patch to make the module compatible with D9. So look at the issues and see. However, this poses a problem because you will have to jump through hoops to get composer to manage the module. What I do is remove the module from composer and patch it (if the patch works). Eventually, there will be a release or dev version with the patch included, and I can then add it back into <em>composer.json</em>.</p> <p>Otherwise, you will need to remove the module following the steps in the unneeded modules section.</p> <h4>Install the updated modules and pray</h4> <p>copy <em>vendor</em> to <em>vendor.sav</em>, and copy <em>composer.json t</em>o<em> composer.json.sav</em></p> <pre> cp -R vendor vendor.sav</pre><pre> composer update --no-dev --with-dependencies</pre><p>If you are lucky, this will work. BUT, it may not:</p> <pre> <span style="font-size:10px;">composer update --no-dev --with-dependencies Loading composer repositories with package information Updating dependencies { Your requirements could not be resolved to an installable set of packages. Problem 1 - The requested package drupal/audiofield ^1.x-dev exists as drupal/audiofield[1.0.0-alpha1, dev-1.x, 1.x-dev, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0, 1.9.0] but these are rejected by your constraint. Problem 2 - The requested package drupal/front ^1.x-dev exists as drupal/front[dev-1.x, 1.x-dev, 1.0.0-alpha1, 1.0.0-alpha2, 1.0.0-beta1, dev-9.1.x, 9.1.x-dev] but these are rejected by your constraint. Problem 3 - The requested package drupal/module_filter ^3.x-dev exists as drupal/module_filter[dev-1.x, 1.x-dev, dev-3.x, 3.x-dev, 3.0.0, 3.1.0] but these are rejected by your constraint. Problem 4 - The requested package drupal/uptime_widget ^1.x-dev exists as drupal/uptime_widget[dev-1.x, 1.x-dev, 1.0.0, 1.1.0, dev-2.x, 2.x-dev] but these are rejected by your constraint. Problem 5 - Conclusion: don't install drupal/core 8.9.x-dev - Conclusion: remove drupal/core 8.9.5 - Conclusion: don't install drupal/core 8.9.5 - Conclusion: don't install drupal/core 8.9.4 - Conclusion: don't install drupal/core 8.9.3 - Conclusion: don't install drupal/core 8.9.2 - Conclusion: don't install drupal/core 8.9.1 - Conclusion: don't install drupal/core 8.9.0 - Conclusion: don't install drupal/core 8.8.x-dev - Conclusion: don't install drupal/core 8.8.9 - Conclusion: don't install drupal/core 8.8.8 - Conclusion: don't install drupal/core 8.8.7 - Conclusion: don't install drupal/core 8.9.0-rc1 - Conclusion: don't install drupal/core 8.9.0-beta3 - Conclusion: don't install drupal/core 8.9.0-beta2 - Conclusion: don't install drupal/core 8.9.0-beta1 - Conclusion: don't install drupal/core 8.8.6 - drupal/module_missing_message_fixer 2.0.0 requires drupal/core ~9 -&gt; satisfiable by drupal/core[9.0.x-dev, 9.1.x-dev]. - drupal/module_missing_message_fixer 2.0.x-dev requires drupal/core ~9 -&gt; satisfiable by drupal/core[9.0.x-dev, 9.1.x-dev]. - drupal/module_missing_message_fixer 2.0.1 requires drupal/core ^9 -&gt; satisfiable by drupal/core[9.0.x-dev, 9.1.x-dev]. - drupal/module_missing_message_fixer 2.0.2 requires drupal/core ~9 -&gt; satisfiable by drupal/core[9.0.x-dev, 9.1.x-dev]. - Can only install one of: drupal/core[9.0.x-dev, 8.8.5]. - Can only install one of: drupal/core[9.1.x-dev, 8.8.5]. - Installation request for drupal/core ^8.8.5 -&gt; satisfiable by drupal/core[8.8.5, 8.8.6, 8.8.7, 8.8.8, 8.8.9, 8.8.x-dev, 8.9.0, 8.9.0-beta1, 8.9.0-beta2, 8.9.0-beta3, 8.9.0-rc1, 8.9.1, 8.9.2, 8.9.3, 8.9.4, 8.9.5, 8.9.x-dev]. - Installation request for drupal/module_missing_message_fixer ^2.0.0 -&gt; satisfiable by drupal/module_missing_message_fixer[2.0.0, 2.0.x-dev, 2.0.1, 2.0.2].</span></pre><p>So, this message tells you that for some reason, there is trouble with 4 modules.</p> <ul><li>Try installing the modules individually, e.g.,<br /><span style="font-family:Courier New,Courier,monospace;">composer require --update-no-dev --update-with-dependencies drupal/module_filter:3.x-dev</span></li> <li>Remove these modules from composer.json and try the update again. Then reinstall the modules one at a time.</li> </ul><p>Here is another gotcha:</p> <pre> composer require --update-no-dev --update-with-dependencies drupal/smtp Using version ^1.0@RC for drupal/smtp ./composer.json has been updated Loading composer repositories with package information Updating dependencies Package operations: 2 installs, 0 updates, 0 removals - Installing phpmailer/phpmailer (v6.1.7): Loading from cache &gt; Drupal\Core\Composer\Composer::vendorTestCodeCleanup - Installing drupal/smtp (1.0.0-rc4): Loading from cache &gt; Drupal\Core\Composer\Composer::vendorTestCodeCleanup</pre><p>Note that this installs phpmailer/phpmailer, not drupal/phpmailer. The former is a dependency of smtp (tthe phpmailer library) that is installed inside of <em>vendor</em>. So you will not see phpmailer in your module list (and it is not yet ready for Drupal 9).</p> <p>If at all possible, you should have a working, Drupal 8.9.x with Drupal9-ready modules, and the <em>drush updb</em> and <em>c</em>r commands should work with no errors. Id you get many conflicting dependence errors, you may have to delete <em>vendor</em> and <em>composer.lock</em>.</p> <h3>Update to Drupal 9</h3> <p>Thus far, all these changes have been performed on Drupal 8. It is possible that you have not completely eliminated all the errors above. For example, one module I needed to update would only work on Drupal 9 (probably an error in the module). But if you do not have any database errors, it is time to upgrade to Drupal 9. It is better to hit your head on the version you really want. Make a copy of <em>composer.json</em> outside of your Drupal installation so you can go back.</p> <p>Edit the require section of <em>composer.json</em> to require the Drupal 9 files:</p> <pre> "require": { "composer/installers": "^1.0.24", "drupal/core-composer-scaffold": "<strong>^9.0.5</strong>", "drupal/core-project-message": "<strong>^9.0.5</strong>", "drupal/core-recommended": "<strong>^9.0.5</strong>", "drush/drush": "^10.3", "drupal/core": "<strong>^9.0.5</strong>", ....</pre><p>9.0.5 was the current core version when I wrote this. Use the version current at your upgrade time. Then perform the update:</p> <pre> composer update --no-dev --with-dependencies</pre><p>and pray.  When I did this, there were still modules I had to fix (see below). Use the techniques discussed above.</p> <p> </p> <hr /><p>Here is what I had to do on my installation:</p> <p><strong>composer.json changes</strong></p> <pre> imagemagick ^3.1 imce ^2.3 zurb_foundation ^6.0 audio field 1.x-dev module_filter 3.x-dev uptime_widget 1.x-dev file_entity (has 9.0 available 'drupal/file_entity:2.x-dev') devel": "^4.0.0" front:1.x-dev' recaptcha ^3.0 entity": "^1.1 module_missing_message_fixer": "^2.0.0 <strong>Removed modules</strong> audio_embed_field eform video video_filter migrate_tools migrate_upgrade phpmailer httpbl libraries db_maintenance context file_entity hacked (has patches) media_entity_actions entity_extra_field <strong>to get composer update to work I also removed</strong> audiofield front module_filter uptime_widget <strong>I got more errors:</strong> [error] (Currently using Incompatible module The following module is installed, but it is incompatible with Drupal 9.0.5: * Insert Block (<strong>I removed it</strong>) Review the suggestions for resolving this incompatibility [1] to repair your installation, and then re-run update.php. [1] https://www.drupal.org/docs/8/update/troubleshooting-database-updates ) [error] (Currently using Incompatible theme The following theme is installed, but it is incompatible with Drupal 9.0.5: * Showcase Lite Review the suggestions for resolving this incompatibility [1] to repair your installation, and then re-run update.php. [1] https://www.drupal.org/docs/8/update/troubleshooting-database-updates ) [error] (Currently using Missing or invalid module The following module is marked as installed in the core.extension configuration, but it is missing: * audiofield</pre><p>I reinstalled audiofield</p> <p><span style="font-family:Courier New,Courier,monospace;">composer require --update-no-dev --update-with-dependencies drupal/audiofield:1.x-dev</span></p> <p> </p> <p> </p> <p> </p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=199&amp;2=comment_node_blog&amp;3=comment_node_blog" token="n4KGYT0bw7ha8IJLGydGVSorzecYiZKTC21_ytQqnGs"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Sat, 12 Sep 2020 19:42:29 +0000 jarome 199 at http://jamesrome.net/drupal A survey of DLNA/UPnP media servers http://jamesrome.net/drupal/UPnP <span class="field-wrapper">A survey of DLNA/UPnP media servers</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Tue, 07/21/2020 - 11:06</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>For many years now, I have been ripping my CDs to my computer and playing them using my Logitech Squeezebox Server (on my Linux computer) and listening to them via my Logitech Transporter players. However, time marches on, and now high-resolution audio is available on the internet via services such as Qobuz, Tidal, Spotify, etc. I highly recommend Qobuz, which offers audio streams up to 24-bit/192 kHz resolution. </p> <p>When my Cruise was canceled (due to Covid), I bought myself a DCS Bartók DAC ($13,500!) to replace the Transporters. But to play my computerized music collection, I needed a DLNA/UPnP server.  Such a server presents a list of available music and art to the player's control software. In the case of the DCS Bartók, this is an Android or IOS app called Mosaic. Mosaic searches for DLNA/UPnP servers on my network and presents the content to be selected and played.</p> <p>The issue is that it is the DLNA/UPnP server that determines how the content is arranged. For instance, DCS says "<a data-ember-action="" data-ember-action-24="24" href="https://dcs.community/t/mosaic-faq-why-is-minimserver-the-only-upnp-server-software-that-is-fully-supported-by-dcs/376">Why is MinimServer the only UPnP server software that is fully supported by dCS?</a>" Well, despite this unwarranted FUD (fear, uncertainty, doubt) there are many reasons to NOT use the minumServer. I have tried the following servers on my OpenSUSE LEAP 15.2 computer (except as indicated):</p> <table border="0" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td> <ul><li>MinumServer</li> <li>Kodi</li> <li>Subsonic</li> <li>Mezzmo (Windows 10)</li> <li>minidlna</li> </ul></td> <td><img alt="" data-entity-type="file" data-entity-uuid="5021b35a-d13a-4543-bd65-39c376165546" height="384" src="/drupal/sites/default/files/Servers%20on%20Mosaic_0.jpg" width="400" /></td> </tr></tbody></table><p>What are the qualities I require from a DLNA/UPnP server?</p> <ul><li>It needs a decent user interface on the server so I can modify its settings</li> <li>It should automatically scan for new additions to my music collection, either quasi-instantly, or, say, every hour.</li> <li>It should list new <em>albums</em>, not <em>tracks. </em>For classical music, I almost always want to hear an entire album</li> <li>It should handle my large collection quickly and make it easy to search: <ul><li>2,544 artists<br /> 10,554 albums<br /> 136,211 songs<br /> 3299.26 GB</li> </ul></li> </ul><p><strong>Spoiler alert:</strong> None of these is perfect.</p> <hr /><h3><a href="http://www.conceiva.com/products/mezzmo/">Mezzmo</a></h3> <table border="0" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="26945239-d62a-4564-b8b8-3bb26ad00f32" height="667" src="/drupal/sites/default/files/MezzmoMainPage.jpg" width="300" /></td> <td><img alt="" data-entity-type="file" data-entity-uuid="e6e5529a-d0ad-4cf7-8c2d-69cbb1a3edf6" height="667" src="/drupal/sites/default/files/MezzmoSearch.jpg" width="300" /></td> </tr></tbody></table><p>Mezzmo does not run on Linux, so I installed it on my Windows 10 machine. I really prefer servers to run on Linux since reboots are few and far between, and my Linux server is up all the time.</p> <p>If you click on the Music menu item, Mezzmo does list "Recently Added", but it is by track, not by album. Notice that the search missed Vainberg as an Artist. The Artist is tagged as "Vainberg, Moishei" and that search turns up nothing at all. There is a whole folder of albums with that title. The search came back in a few seconds.</p> <hr /><h3><a href="https://kodi.tv/">Kodi</a></h3> <p>In some ways, Kodi is an overkill. It is a complete music/video system with a large ecosystem of plugins, some of which are responsible for updating my collection when new additions occur. Kodi has a very complete, but often obscure Linux GUI. (I had to right-click the Kodi label to exit search mode!)</p> <table border="0" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="59ec428e-aea5-4429-a978-bb70c2752d5b" height="326" src="/drupal/sites/default/files/Screenshot%20from%202020-07-21%2014.44.34.png" width="600" /></td> </tr><tr><td><img alt="" data-entity-type="file" data-entity-uuid="595ecbac-02c5-4c5b-b09c-39d03c5874b5" height="326" src="/drupal/sites/default/files/Screenshot%20from%202020-07-21%2014.42.33.png" width="600" /></td> </tr></tbody></table><p>Notice that when I tried to do the search using the Linux desktop, Kodi informed me that I had to install a plugin, which I did. However, doing the search using Mosaic on my phone never got past the busy search icon. So search is non-functional. Scrolling through the list of Artists is quite slow also.</p> <p>But KODI is the ONLY DLNA/UPnP server that displays Recent Albums. </p> <p><img alt="" data-entity-type="file" data-entity-uuid="7da0d46a-5a84-4fdb-bb0c-b04ce42c0883" height="667" src="/drupal/sites/default/files/KodiAlbums.jpg" width="300" /></p> <hr /><h3><a href="http://www.subsonic.org/pages/index.jsp">Subsonic</a></h3> <p>I have been using Subsonic for years as a server to let me access my music collection remotely (yes, even from Borneo!). It has an excellent web-based interface:</p> <p><img alt="" data-entity-type="file" data-entity-uuid="37802329-4ddf-4b8d-9a22-35cb971e49c6" height="587" src="/drupal/sites/default/files/Subsonic.png" width="600" /></p> <p>It also lets you do obscure searches in the Web GUI, and returns them quickly. However, it is a lousy DLNA/UPnP server. It only lists the Artists and Playlists, and supports NO search function at all—the search icon is greyed out.</p> <hr /><h3>MiniDLNA (also known as <a href="https://sourceforge.net/projects/minidlna/">ReadyMedia)</a></h3> <p>It has several front ends that you can download and use on the Linux server.</p> <table border="0" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="5d15a34e-db6a-43a6-b39b-6c94296069bb" height="667" src="/drupal/sites/default/files/MiniDlnaMenu.jpg" width="300" /></td> <td><img alt="" data-entity-type="file" data-entity-uuid="9cae2ec4-76a4-403f-8cc6-64446fe3c2aa" height="667" src="/drupal/sites/default/files/MiniDlnaSearch.jpg" width="300" /></td> </tr></tbody></table><p>Ia seen above, it has a "Recently Added" listing, but this is a list of tracks, not albums. However, MiniDLNA DLNA/UPnP server does correctly locate the search for Vainberg as an artist. Scrolling through the artist list is also quick, although you must stop the scrollbar to see where you are. </p> <hr /><h3><a href="https://minimserver.com/">MinumServer</a></h3> <table border="0" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="69264e8f-0aa4-40c0-997c-0c8528fbec7f" height="667" src="/drupal/sites/default/files/MinimServerMainPage.jpg" width="300" /></td> <td><img alt="" data-entity-type="file" data-entity-uuid="e4ca1a9e-ab75-41b2-98ac-fc6ae570d8d5" height="667" src="/drupal/sites/default/files/MinumSearch.jpg" width="300" /></td> </tr></tbody></table><p>MinumServer does not offer a view of recently-added items, neither tracks nor albums. It did succeed in searching for Vainberg as an Artist. It also lets you view folders by date, genre, track,... Scrolling is fast too. However, MinimServer has a 65000 folder and 100000 file limit, which I am past!</p> <hr /><p>Luckily, All of these servers can run at once, so I can select the server (on Mosaic) that offers me the best version of my current need.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=198&amp;2=comment_node_blog&amp;3=comment_node_blog" token="RmRGoo3DrtexuYq5dtHlGz7q7LymLf8lNIXaRSCts9M"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Tue, 21 Jul 2020 17:06:26 +0000 jarome 198 at http://jamesrome.net/drupal Corona virus facts from a medical professional http://jamesrome.net/drupal/cv <span class="field-wrapper">Corona virus facts from a medical professional</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Wed, 04/08/2020 - 07:38</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p> </p> <p>My neighbor, Dr Elaine Bunick is an Endocrinologist and Internal Medicine specialist, and she has been checking out all the facts about Covid 19. She gave me permission to post her recent talks.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=196&amp;2=comment_node_blog&amp;3=comment_node_blog" token="e_amP05XjB4GzIGVwfLy3awapDHVvtsdKdh2zEZKCao"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> <section class="block block-layout-builder block-field-blocknodeblogfield-attachment"> <div class="field-wrapper field field-node--field-attachment field-name-field-attachment field-type-file field-label-above"> <div class="field-label">attachment</div> <div class="field-items"> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-04/Coronavirus_and_pets_coughing.pdf" type="application/pdf; length=131945" title="Coronavirus_and_pets_coughing.pdf">Coronavirus_and_pets_coughing</a></span> </div> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-04/Cough_%26_Lung_Diseases_2020.pdf" type="application/pdf; length=4240251" title="Cough_&amp;_Lung_Diseases_2020.pdf">Cough_&amp;_Lung_Diseases_2020</a></span> </div> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-04/COVID-19_Update.pdf" type="application/pdf; length=15481317" title="COVID-19_Update.pdf">COVID-19_Update</a></span> </div> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-04/Viruses-deadly_to_beneficial_2020.pdf" type="application/pdf; length=795751" title="Viruses-deadly_to_beneficial_2020.pdf">Viruses-deadly_to_beneficial_2020</a></span> </div> <div class="field-item"><span class="file file--mime-application-vnd-openxmlformats-officedocument-presentationml-presentation file--x-office-presentation"><a href="http://jamesrome.net/drupal/sites/default/files/2020-04/Cough_Differential_Diagnosis_2020.pptx" type="application/vnd.openxmlformats-officedocument.presentationml.presentation; length=7757229" title="Cough_Differential_Diagnosis_2020.pptx">Cough_Differential_Diagnosis_2020</a></span> </div> </div> </div> </section> </div> </div> Wed, 08 Apr 2020 13:38:05 +0000 jarome 196 at http://jamesrome.net/drupal VPNs—Not needed for the average user http://jamesrome.net/drupal/vpns <span class="field-wrapper">VPNs—Not needed for the average user</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Fri, 03/27/2020 - 11:16</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>Now that many of us are working from home, we are being bombarded with ads and offers to be safe, and use a VPN. This is a scare tactic. VPNs are totally redundant for MOST purposes.</p> <p><strong>What is a VPN?</strong></p> <p>A  Virtual private network (VPN) is a secure tunnel that encrypts traffic between its endpoints. If traffic is already encrypted between your computer and a destination, a VPN is totally redundant.</p> <ul><li>For the past year or so, almost all Web addresses URLs) use encryption, as evidenced by http<span style="color:#c0392b;">s</span>:// in the URL, and a closed lock in the address bar:</li> </ul><p><img align="center" alt="" height="433" hspace="80" src="/drupal/sites/default/files/NYT%2Ccom.png" width="319" /></p> <ul><li>By law, all financial transactions must be encrypted, and generally require two forms of authentication.</li> <li>All reputable mail servers require at least encryption of your credentials (TLS), and usually full encryption (SSL). Check your mail settings to be sure you have taken advantage of these things. Below is my Thunderbird setting for gmail:</li> </ul><p><img alt="" height="372" hspace="80" src="/drupal/sites/default/files/gmail.png" width="500" /></p> <p> </p> <p><strong>What is the other endpoint of the VPN?</strong></p> <p>A VPN only encrypts traffic between you and the endpoint. But where is that endpoint? It is at the VPN provider! From there, the traffic goes unencrypted (by the VPN) to its destination. What good is this?</p> <p>Well, there is a good use case for a VPN—connection to your employer. A VPN provided by your employer encrypts everything between your computer and the employer's internet portal. This can serve several purposes:</p> <ol><li>All your traffic going through the tunnel can be <em>unencrypted</em>, so that the employer can snoop and see whether sensitive material is leaking into or out of the company. This is used by a local defense factory.</li> <li>The VPN software can isolate the user's computer from his local network resources to provide additional security for the company.</li> <li>The company can scan the user's computer through the VPN to detect malware.</li> </ol><p>In the above cases, the company pays for and provides the VPN software.</p> <p><strong>Do you need a VPN for public WiFi spots?</strong></p> <p>No, with a few caveats.</p> <ul><li>Nowadays, most airport (for example) WiFi systems require some sort of logon. They may or may not offer an encrypted channel between you and the WiFi provider. But if you are doing email and even banking, as explained above, your traffic is <em>automatically encrypted</em>.</li> <li>But this safety assumes that your computer is secure. This means that the operating system and all your applications are up-to-date, and that you have proper anti-malware software. (See <a href="https://jamesrome.net/drupal/patching">https://jamesrome.net/drupal/patching</a>.)</li> <li>You should NOT have to download extra software to use the WiFi. Any such software could be a source of infection. For example, it could install a key logger that would record your keystrokes before they enter your encrypted connection!</li> </ul><p><strong>Legitimate (?) uses for VPNs that terminate at the VPN provider</strong></p> <ul><li>To change your country of origin, for example to access country-restricted content.</li> <li>To hide your identity and network activity from snooping governments. </li> </ul><p>I follow computer security closely, and cannot recall a case where there was a case of hacking via encrypted internet traffic. It is much easier to hack your computer. (See <a href="https://jamesrome.net/drupal/ComputerSafety">https://jamesrome.net/drupal/ComputerSafety</a>.)</p> <p><strong>Conclusion</strong></p> <p>Buying a VPN is a waste of money. And using a VPN may hinder your ability to do things on your local network, such as accessing remote drives.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=195&amp;2=comment_node_blog&amp;3=comment_node_blog" token="mQwUQHFtkAccFJBiRUmTuzdGvTPudwrqeqZJSQrdR7I"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Fri, 27 Mar 2020 17:16:02 +0000 jarome 195 at http://jamesrome.net/drupal High-end massage Chairs: Inada DreamWave vs OHCO M8 (updated) http://jamesrome.net/drupal/massage_chairs <span class="field-wrapper">High-end massage Chairs: Inada DreamWave vs OHCO M8 (updated)</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Wed, 03/25/2020 - 11:53</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogfield-display-title"> <div class="field-wrapper field field-node--field-display-title field-name-field-display-title field-type-string field-label-hidden"> <div class="field-items"> <div class="field-item"><h2><a href="/drupal/massage_chairs" hreflang="en">High-end massage Chairs: Inada DreamWave vs OHCO M8 (updated)</a></h2> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>I have a bad back  and neck, and a good massage chair (MC) is a necessity. But they do not come cheap! I currently own two of the top-of-the-line Japanese MCs, and here is my thorough review of both of them.</p> <table border="1" cellpadding="2" cellspacing="1" style="width: 800px;"><caption><strong>My Massage Chairs</strong></caption> <tbody><tr><td><img alt="" rotate="" transform:="" /><img alt="" height="533" src="/drupal/sites/default/files/20200325_133758_2.jpg" width="400" /></td> <td><img alt="" height="533" src="/drupal/sites/default/files/P9200011chair_0.jpg" width="400" /></td> </tr><tr><td class="text-align-center">OHCO M8</td> <td class="text-align-center">Inada DreamWave (2014 model)</td> </tr></tbody></table><p>I bought the Inada in 2014, and it actually has more features than the current model, for example a heated seat. I bought a new chair because the upholstery on the Inada has worn out, and it costs $612 to buy a new back, and it is quite non-trivial to replace the part. Mechanically, it is still perfect.</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 400px;"><tbody><tr><td><img alt="" height="300" src="/drupal/sites/default/files/20200325_142007_0.jpg" width="400" /></td> </tr><tr><td class="text-align-center">Ripped upholstery on the Inada chair</td> </tr></tbody></table><h2>Overall comments and setup</h2> <p>As can be seen in the above pictures, The OHCO chair has arms that swing out to allow easy access to get settled into the chair. These arms are disassembled for shipping, and come in a separate box. The allows the OHCO to fit through a smaller door (30 inches?) than the Inada (36 inches), and is a great idea. Both chairs come with White Glove service to carry the chairs into your house, set them up, and remove the cartons. These chairs are HEAVY. Do not ruin your bad back by doing this yourself. And Negotiate to get this $450 setup as a throw-in to your cost. Also make sure you get a 5-year warranty on each chair. You will want them to put slider pads under the feet so that you can move the chairs easily.</p> <h2>Feature comparison</h2> <p>Look carefully at the side-by-side images of the two MCs, and you will see some differences:</p> <ul><li>The OHCO has no side pads that inflate to pressure your thighs. This is a part of the Inada DreamWave mechanism that moves your rear end from side-to-side by several inches.</li> <li>The OHCO has no sideways motion of the seating area.</li> <li>The OHCO has 4 dual pads that look a bit like lips that open (like a mouth) to apply sideways pressure to the shoulders and downward pressure on the shoulder tops. Instead, Inada uses U-shaped pads to squeeze the upper arms, and there are two air pads (not visible) that inflate to provide downward force on the shoulder tops.</li> <li>OCHO has rollers in the feet and thighs. Inada just uses air and static bumps in the footbeds.</li> <li>The OHCO thigh pads can move in a circular motion; Inada pads just inflate.</li> <li>The OHCO has heat everywhere, including in the rollers. It can be selectively turned on or off. The Inada 2014 has just a heated seat.</li> <li>The OHCO has many whistles and bells, which I wish were deleted to save money: Aromatherapy, USB ports to play music (My chair is in front of my HiFi system), night lights that come on when you approach the chair. There is an air ionizer and chromotherapy too! The cheaper OHCO model eliminates this froufrou, but also removes the essential (to me) foot massage. I have not tried aromatherapy or the USB ports.</li> <li>The OHCO has a far more modern controller (on a retractible cord) than Inada. It also has many more selectable programs.</li> </ul><hr /><h2>Comparing the controllers</h2> <table border="1" cellpadding="2" cellspacing="1" style="width: 600px;"><caption>Massage Chair Controllers</caption> <tbody><tr><td><img alt="" height="400" src="/drupal/sites/default/files/20200325_132629.jpg" width="300" /></td> <td><img alt="" height="400" src="/drupal/sites/default/files/20200325_132526_0.jpg" width="300" /></td> </tr><tr><td class="text-align-center">OHCO Controller</td> <td class="text-align-center">Inada Controller</td> </tr></tbody></table><p>It is obvious from the pictures that the OHCO Is by far the more modern and capable controller.</p> <p>As shown, the Inada controller opens to reveal buttons that can activate individual massage features (rolling, tapping, kneading,...). But there is no way to save any program that you create, therefore, these manual controls are not very useful. My lid stays closed. There are 8 program buttons below the display, but two (quick and child) are useless to me, so that leaves 6 different massage programs.</p> <p>On the other hand, the OHCO has 14 programmed selections, and there are 4 focused sessions (Neck &amp; shoulders, Low Back, Glutes, Feet &amp; Calves). Finally, there are also manual sessions.</p> <p>When you start a massage, the OHCO moves the chair to the zero gravity position. For most of the Inada massages, it assumes you have adjusted the chair to the desired reclination. Then both MCs scan your back for shiatsu points. As soon as the scan completes, you can press the roller switch to adjust the height of the most concentrated massage. For me this is a necessity, because the default programs (both chairs) insist on rolling sideways across my shoulder blades, which is very painful. The OHCO is smart enough to remember this preferred location until you turn the chair off; The Inada requires resetting the location for every individual massage program—it gets old soon.</p> <p>For me, the zero gravity position is a disadvantage because the raised footrest blocks the direct sound from my loudspeakers. Adjusting the back and feet position on the OHCO is a bit strange. You press the desired button, but must press it again to stop the motion.</p> <p>The OHCO manual modes (rollers &amp; air) are much more useful than the Inada ones. You seem to be able to combine any number of different manual modes, and unlike Inada, they all run simultaneously. For example, since I don't really like the calf rollers, I can select foot rollers, and foot and calf air, which leaves off the calf rollers.</p> <p>One of my favorite OHCO modes is to manually select one of the back roller modes, and the all air mode, and to also select the three roller modes on the corner sof the OK button.</p> <p><strong>Winner:</strong> OHCO</p> <hr /><h2>Massaging the back</h2> <p>For must users, massaging the back to relieve back discomfort is the main raison d'être for buying a MC. Each chair has a different approach to doing this.</p> <p>The Inada uses gentle motions—rolling, kneading, tapping, "human hands," and shiatsu. It also uses the sideways motion of the DreamWave mechanism to gently shake your spine into position. The Inada's air mechanism sighs with each new movement. And transitions are slow.</p> <p>The OHCO mechanism has a much broader range of motions, and instead of the Inada side-to-side motions, the OHCO tilts the back left and right. The motions are also much more abrupt; they remind me of the ones a chiropractor uses to readjust the spine. There can be fast side-to side motions accompanied by knocking sounds, but the air mechanism is silent. </p> <p>So which system is better? I got rather bored with the Inada motions after 7 years, they became quite predictable. The many more and varied OHCO motions are quite unpredictable, and I do not think I will be able to predict things given the large number of programs. Both MC back massages work, but they are different. I instantly fall asleep during an Inada Massage, but the OHCO's jerkier motions keep me awake.</p> <p><strong>Winner:</strong> a tie</p> <hr /><h2>Massaging the arms</h2> <p>Both chairs have a tendency to throw your arms towards you when the arm cushions squeeze. This is exacerbated in the OHCO by the upper-arm mechanism:</p> <table border="1" cellpadding="2" cellspacing="1" style="width: 800px;"><tbody><tr><td><img alt="" height="533" src="/drupal/sites/default/files/20200325_132544.jpg" width="400" /></td> <td><img alt="" height="533" src="/drupal/sites/default/files/20200325_132455.jpg" width="400" /></td> </tr><tr><td class="text-align-center">OHCO side and top shoulder pads</td> <td class="text-align-center">Inada upper shoulder pad</td> </tr></tbody></table><p> </p> <p>You will notice that on the Inada, the upper arm fits into a U-shaped holder that squeezes the arm from both sides. The OHCO pad expands and pushes your upper-arm against your body, and while doing this, pulls your lower arm out of its holder. Not only does this give an inferior massage, but it can also be uncomfortable.</p> <p><strong>Upper-arm winner:</strong> Inada</p> <p>The lower-arm massage is much better on the OHCO. Inada just has two pad inflation positions. OHCO has a much faster mechanism that locks your arm in place (after you replace it from the upper-arm mechanism ejection) before it can squirt out sideways, and it has three different motions, one of which almost feels like a hammer coming down on the top of your hand.</p> <p><strong>Lower-arm winner:</strong> OHCO</p> <hr /><h2>Massaging the feet</h2> <p>Inada has bumps in the footbed that your feet get pressed into when the air pillows inflate. OHCO has heated rollers in the footbeds. The only issue with this might be if you are very ticklish.</p> <p><strong>Winner:</strong> OHCO</p> <hr /><h2>Massaging the calves</h2> <p>Again, Inada has only air bags that have two inflation positions. OHCO has airbags that give a circular massage to the sides of the calves, and also heated rollers that move up and down the backs of the calves. Sometimes the rollers feel like a fixed bar is across the back of the calves, a  slight negative.</p> <p><strong>Winner: </strong>OHCO</p> <hr /><h2>Massaging the upper shoulders</h2> <p>Inada has a small air bag that inflates and exerts great pressure on the trapezius muscle (just where I am sore). OHCO has an expanding mouth-like airbag (see last picture). One would think that this would work, but it does not. Even with the headrest in its lowest possible position, when the bag inflates, the headrest rises (even while I push back on it with my head), and very little pressure is applied to my shoulder tops. Any pressure that is applied, is to the front of the shoulder.</p> <p><strong>Winner:</strong> Inada</p> <hr /><h2>Massaging the neck</h2> <p>Inada applies symmetric pressure to both sides of the neck, and even can squeeze the shiatsu points just below the skull on either side of the spine. OHCO has three modes, one of which is symmetric. But (so far as I can tell), they are only selectable in the manual neck massage mode. The asymmetric mode is used in the pre-programmed massages. For me, this is bad because my neck fusion is very iffy, and side-to-side motion is probably not good. OHCO also applies gentle traction to the neck. OHCO also has neck knead rollers.</p> <p><strong>Winner:</strong> a tie</p> <hr /><h2>Massaging the thighs</h2> <p>Inada has thigh and kidney pads that apply air pressure to the sides of your thighs and body, and that also move your body from side to side. This feels good. OHCO has no massage features in this area.</p> <p><strong>Winner:</strong> Inada (by default)</p> <hr /><h2>Massaging the posterior (gluteus muscles)</h2> <p>Inada provides gentle motions (up-down &amp; sideways) to the seat area. Moving the seat gently from side-to-side is what Inada calls DreamWave and it is indeed very relaxing. I think it also "shakes" the spine into position similar to the devices I have seen that do this my moving your  legs from side-to-side.</p> <p>OHCO has 4 air bags that vigorously knead the heated seat, but it feels as if there are rollers too, because it massages the central prostate area also! There is no sideways motion.</p> <p>Each MC has a different approach here, but they are about equal.</p> <p><strong>Winner:</strong> a tie. </p> <hr /><h2>Other assorted comments</h2> <ul><li>Inada programs are either 15- or 10-minutes long and cannot be cascaded in the 2014 model. OHCO programs are 17- or 18-minutes long and can be cascaded.</li> <li>The OHCO stretch program hurts unless is move the initial roller position to my lower back. Inada's stretches sideways as well as along the spine.</li> <li>Two Navy midshipmen rowers loved the OHCO Sports Recovery program.</li> <li>I put a dish towel on the headrest of both MCs to make it easy to keep the headrests clean and oil-free. The OHCO head cover is removable for washing.</li> <li>The Inada chair must be reset (by turning it off and on) after any power failure. I am not sure about the OHCO, because the power has stayed on.</li> <li>I tried the OHCO air ionizer. It emits a not-pleasant smell that is vaguely vegetable-like. I won't use it again! It now smells upstairs where this computer is located.</li> <li>The springs on the OHCO foot rest are too strong. The constant high upward pressure from foot to knee aggravates the torn meniscus on my left knee. Inada's springs are much gentler.</li> </ul><hr /><h2>Long-term OHCO updates</h2> <p>I have now lived with the OHCO chair for three months and have used it for an hour each day. Definitely now prefer it to the Inada, mainly because of its extensive massage repertoire.</p> <h3>General comments</h3> <p>The OHCO is a much better chair (for sitting in) than the Inada. When the Inada completes a session, the back rollers are moved so that they give you no lower back support. You can hit the emergency stop button when the rollers are in just the right place, but this is hard, awkward, and then the controls are disabled. When the OHCO finishes a massage session the back rollers are positioned in the perfect spot for lower-back support. And, you can then adjust the chair leg and back positions, to say a comfortable reading position. However, you must go through a whole (at least 17 minute) massage first.</p> <p>I have now tried all of the massage options and combinations. All massages last a minimum or 17 minutes, and the Stretch massage lasts 21 minutes.Even the Quick massage is 17 minutes. By quick, OHCO seems to mean a little bit of every motion in the chair's repertoire. Inada's Quick massage is 5 minutes. </p> <p>If you are buying pads for under the chair's feet (so you can slide the chair on your floor), note that there are six feet.</p> <h3>Nits to pick</h3> <p>It is essential (for my back) to move the "adjusting shoulder blades" position just above my hip bone. If this is not done, the back roller goes between my shoulder blades, which is very painful. The difficulty is that <strong><em>about 20% of the time, the roller adjust buttons does not actually work</em></strong>. The OHCO system only gives you one chance (up or down) to try the adjustment. If you release the roller button (if it worked), the massage starts. Inada lets you adjust the rollers up or down and you have three sideways roller swipes intervals to keep adjusting the roller position (and with both up and down buttons). If the OHCO roller adjustment does not work, you must turn the chair off to get another chance; otherwise you may get a painful massage.</p> <p>The top shoulder pads, even with high air pressure, do not put any pressure on my trapezius muscles. The side shoulder pads indeed move my upper body from side to side, or roll it, but when they do this, my arms are thrown out of the arm pad slots. Thus there is a constant effort (on my part) to keep repositioning my arms, and this prevents relaxation. (Not all massage programs use the arm pads, so this is not a problem if using one of them.) I think this problem is exacerbated by the fact that I usually do not allow the chair to go all the way to its zero-gravity position for two reasons (mentioned in the original report):</p> <ol><li>If it is all the way back, my raised feet block a direct path to my HiFi speakers, and</li> <li>The zero-g position puts pressure upward from my feet, and causes pain down my left side.</li> </ol><h3>Program comments</h3> <ul><li>Now that I know to adjust shoulder blade position to just above my hip bones, I have found out that I love the <em>Stretch</em> mode. It initially says 18 minutes, but after I adjust the rollers, it jumps to 21. Unlike the Inada, the OHCO really does stretch you, tightly gripping upper body and feet while tilting backwards and forwards.</li> <li>I find the <em>Manual</em> roller position is very restful, and this can be combined with any of the <em>Manual Air</em> options. I like the foot air.</li> <li>Believe it or not, the list of preprogrammed massages are in fact all different, and better yet, I have not been able to predict the next motion. So it does not get boring. I usually stop the chair recline about halfway back, and set the air pressure to high. If it is not hot in the house, I turn on the heat.</li> <li>Although the for corner region lights may not all be on, most programs massage everything</li> <li>The <em>Focused</em> massages do what they say. I especially like the lower back and glute cycles.</li> </ul></div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=194&amp;2=comment_node_blog&amp;3=comment_node_blog" token="lqJXC_eJVChYOgcZgAF2kkm0AAtb3Bmu3m_eT7TVkSY"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Wed, 25 Mar 2020 17:53:51 +0000 jarome 194 at http://jamesrome.net/drupal Internet ID monitoring is useless http://jamesrome.net/drupal/id_monitoring <span class="field-wrapper">Internet ID monitoring is useless</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Sun, 07/28/2019 - 08:28</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>As part of their "service," MyIDCare monitors your compromised passwords on the internet. But this is totally useless!</p> <p><img alt="" height="840" src="/drupal/sites/default/files/MyIDCare.png" width="766" /></p> <hr /><p>But, almost all of my 1000 different accounts use my e-mail address for my user ID, and this report does not identify the site in question, so there is nothing I can do about this!</p> <p>If you were compromised by Equifax, take the $125 (+ $25.hour spent) rather than credit monitoring.</p> <p> </p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-label">Comments</h2> <article data-comment-user-id="1" id="comment-1137" class="js-comment"> <mark class="hidden" data-comment-timestamp="1588084988"></mark> <footer> <article typeof="schema:Person" about="/drupal/user/1"> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> </div> </div> </article> <p>Submitted by <span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span> on Tue, 04/28/2020 - 08:43</p> <a href="/drupal/comment/1137#comment-1137" hreflang="en">Permalink</a> </footer> <div> <h3><a href="/drupal/comment/1137#comment-1137" class="permalink" rel="bookmark" hreflang="en">I just had one of my cards…</a></h3> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blockcommentcomment-node-blogcomment-body"> <div class="field-wrapper field field-comment--comment-body field-name-comment-body field-type-text-long field-label-hidden"> <div class="field-items"> <div class="field-item"><p>I just had one of my cards used fraudulently, and MyIDCare did not notice it a day later, even though the bank suspended my card.</p></div> </div> </div> </section> <section class="block block-layout-builder block-extra-field-blockcommentcomment-node-bloglinks"> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=1137&amp;1=default&amp;2=en&amp;3=" token="lFoAvXZcWEVaI0MjBXcLCFBNP6veGzVXdxgVJuIMvCI"></drupal-render-placeholder> </section> </div> </div> </div> </article> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=189&amp;2=comment_node_blog&amp;3=comment_node_blog" token="Q0pNWCeWshkcv1ErWkPPmRd2p9rTZOuGhXIhcEkbuf8"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Sun, 28 Jul 2019 14:28:16 +0000 jarome 189 at http://jamesrome.net/drupal Review of Evelo Aurora Mid-drive Bicycle http://jamesrome.net/drupal/Evelo_Aurora <span class="field-wrapper">Review of Evelo Aurora Mid-drive Bicycle</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Thu, 06/06/2019 - 13:18</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><h3>Introduction</h3> <p>The <a href="https://www.evelo.com/electric-bicycles/aurora/">Evelo Aurora</a> is the second electronic bike I have tried. (See my <a href="https://jamesrome.net/drupal/vanmoof">review of the Vanmoof S2</a>.) Unlike the Vanmoof S2, the Evelo Aurora looks like an e-bike:</p> <p><img alt="" height="600" src="/drupal/sites/default/files/20190606_151244_0.jpg" width="800" /></p> <p>The Aurora has a step-through frame and a big obvious battery pack. Since I preordered the bike, I got a discount, and the free carrier bag (shown). However,  the Aurora I received is not quite the Aurora I saw on the Web site, and in the videos. Missing are the studs for a water bottle holder.  And the double kickstand has been replaced by a single one (barely visible). Evelo says that people had problems with the original stand, and that the new one is an upgrade. I also paid to upgrade to the Thudbuster seat post (shown), and added a bell, a rear-view mirror, and a clamp-on water bottle holder on the side of the handlebar extension. The air pump is part of their Commuter Package, and I attached it to the carrier rear riser with zip ties. </p> <h3>Assembly</h3> <p>The Web site says the Aurora comes "almost fully assembled." This was not the case for my bike, and Evelo is still investigating why this occurred. The front fork, and handlebars were attached to the rest of the bike with zip ties; there must have been 20 of them all told. Evelo has an assembly video, but it assumes that the fork and handlebars are in place. What is worse, both the fork and handlebars are entangled with cables and fluid tubes (for the brakes). It is a real rats nest.</p> <p>After the fact, Bill Cummings of Evelo mailed me some pictures of the disassembled front headset assembly, which I post here for your edification</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 800px;"><tbody><tr><td><img alt="" height="520" src="/drupal/sites/default/files/EveloHeadset.png" width="353" /></td> <td> <p>PART Numbers</p> <p>​</p> <p> 1    Ball bearings in cage -- this goes in first, with the bearings facing upwards as shown</p> <p>​</p> <p> 2    Dust cover with lip.  Inner lip goes down</p> <p> </p> <p>​ 3    Solid tapered spacer.  Taper (wedge) goes down and will contact the ball bearings</p> <p> </p> <p>​ 4    Split tapered spacer. Taper (wedge) goes down</p> <p> </p> <p> 5   Decorative conical spacer.  Narrow side goes up</p> <p> </p> <p>6–9  Spacers.  You probably only have 3.  Sequence doesn't matter at all.</p> </td> </tr></tbody></table><p>Parts 1–3 were installed in the headset as shown below. The parts came in the loose cardboard box was inserted into the main carton. It had a hole in it, and I had to fish out the parts out of the main carton. Be careful—I originally ignored part 4 and had to reassemble these parts again. </p> <p><img alt="" height="600" src="/drupal/sites/default/files/20190606_105852.jpg" width="800" /></p> <p>I also originally had the cables dressed badly, and had to remove the handlebars again to fix this. Here is how I ended up dressing the cables and tubes:</p> <p><img alt="" height="800" src="/drupal/sites/default/files/frontview.png" width="600" /></p> <p>There is a trick to getting the headbolt in the handlebars tightened properly. You need to press down hard on the handlebars while tightening the top bolt as far as it will go, checking to see that there are no gaps in the head assembly, especially at the bottom. Then, adjust the handlebars to be straight, and tighten the two side bolts. What is very difficult about this process is that without the front fork in place, there is nothing to hold the bike upright and straight. If I were to do this again, I would temporarily install the front wheel so that with the fork in place, you can hold the bike up using the kickstand. The front wheel will not go in place unless you remove a plastic tab from the brake calipers. In the assembly video, it is orange I think. Mine was black. It has a handle like a pop-top ring that you can pull. You will have to remove the wheel to install the front fender. Or get a friendly assistant. </p> <h3>Riding the Aurora</h3> <p>The Aurora does solve the problems I had with the Vanmoof S2, namely a lack of power and/or gears for steep hills. But it does so at a price—about $1000 and 24 pounds of weight. Wheeling it to my front door required some "horsing" of the rear of the bike to make the sharp turns. But once on the road, this awkwardness disappeared. I have only had a chance to ride 5.5 miles today before the deluge started, so these are very preliminary observations. I will update this post as I learn more.</p> <p>The control panel is very obvious in its use, and easy to see on this cloudy day. I only tried the automatic shifting mode, but it offered seamless performance, unlike the clunky Vanmoof. When I reached 20 mph (the speed limit I set to avoid needing a license), there was a noticeable clunk as the power assist stopped. But I was able to pedal up all the hills I encountered easily enough. That is a big plus.</p> <p>The handlebar grips are painful. The diamond rubber hatching digs into your hands. Luckily I had riding gloves with gel pads.</p> <p>More when the weather clears . . .</p> <p>I have had a chance to ride a 20- and 14-mile trip in nice weather, together with some shorter trips. 20 miles is the hurt point for my hips. The 14-mile trip is shown below:</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 615px;"><tbody><tr><td><img alt="" height="461" src="/drupal/sites/default/files/map%20Health_0.png" width="600" /></td> <td style="width: 200px;">The numbers show the progression of my trip</td> </tr><tr><td><img alt="" height="510" src="/drupal/sites/default/files/hill-speed_Samsung%20Health_0.png" width="600" /></td> <td style="width: 200px;">The red numbers are the assist levels I used (approximately) at different parts of my trip.</td> </tr></tbody></table><p>Along the river, I tried riding with 0 assist since it is flat. A nice feature of the Aurora is that even with the assist off, the automatic (or manual) CVT transmission is still on and usable. So you can ride the Aurora much as a regular unpowered bike that uses a derailleur. However, in manual mode, the calibration is very strange: anything above the third bar seems like an incredibly low gear. I could not pedal fast enough to apply power to the bike. Unpowered, and on flat ground, I generally rode at about 14 mph. With assist level 1, this was more like 19 mph, or even the limited 20.5 mph. But it was a very windy day, and i definitely needed an assist as noted on the map. </p> <p>The assist control is very sensitive, and I often jumped up or down by 2 levels instead of one. Practice makes perfect, I guess. If you accidentally downshift to 0, it feels like the bike has suddenly hit a patch of molasses. But in general, the CVT transmission worked flawlessly when I left it in assist level 1, and also when I goosed it up to go up a steeper hill. After I left my street, I turned up the adjacent street (Crestview) which is a steep, long uphill. As I proceeded, the hill got steeper, and I added more assist until I got up to level 4 near the top. This one street took 10% of the battery! I have not yet decided whether it is better to change the assist level, or to push down the power lever while going up hills.</p> <p>For me, if I avoided the big hill, I got about 25 miles on a battery charge. Your mileage may vary. The hills here eat battery, even when they are not too steep. My battery only seems to charge to 98%. Also, despite the warnings in the manual, don't unplug the charger from the bike once it is charged. Overnight, it lost about 10% of its charge when I unplugged it the evening before. Finally, as you ride, the battery % jumps down 2-4% rather than descending one% at a time. There is a USB charging port on the bottom of the control/display unit, a handy feature if your cell phone runs out of juice.</p> <p>A nice feature of the propulsion system is that you can press down the left lever to get up to speed very quickly when you start. However, I still have not mastered this process. If I stand with a foot on each side of the bike, I cannot sit on the saddle. If I start with the left pedal halfway up, the right pedal hits me in the right shin. I think that the best method for starting the bike at a light is to dismount on one side (left for me) of the bike, put the left foot on the pedal at its lowest point, and let the motor coast the bike while you swing the other foot through the frame to the right side. I am still perfecting this skill.</p> <p>The motor system is very quiet—a swishy sound at most. The Vanmoof made a lot of noise compared to the Evelo.</p> <p>Riding the Aurora with the power assist at level 1 makes the bike feel alive. It is a very invigorating experience. Everything becomes easier to do (except sharp turns). The bike likes to go at about 19 mph on level ground. Even if you stop pedaling, the motor is still working. You will not maintain your speed (at least at level 1), but the slowdown time is much longer than on a conventional bike.</p> <p><img alt="" height="450" src="/drupal/sites/default/files/20190617_113932_0.jpg" width="600" /></p> <p>As you can see by comparing this handlebar image to the one at the top of the page, I changed the rear-view mirror. The top one seemed like a good deal, but the mirror is flat, and gives a tiny view of the world. It also moves position when jarred by a bump. The <a href="https://smile.amazon.com/gp/product/B07QJ55K13/ref=ppx_yo_dt_b_asin_title_o05_s01">new one</a> is convex, and positions itself high enough so that I see more than just my left hand. Furthermore, my bike path is undermined by tree roots which make riding very bumpy, and this mirror did not move at all, despite a bumpy ride.</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 711px;"><tbody><tr><td><img alt="" height="600" src="/drupal/sites/default/files/20190625_100438.jpg" width="450" /></td> <td style="width: 248px;"> <p>Tree roots cause the bike path to get rough and bumpy—a great reason for shocks in the fork, and the Thudbuster seat post.</p> <p>It is also imperative that the rear-view mirror does not change position due to the bump. The second mirror I bought has a rubber insert under the mount clamp and never budges.</p> </td> </tr></tbody></table><p>And note the <a href="https://smile.amazon.com/gp/product/B01DDPTJY6/ref=ppx_yo_dt_b_asin_title_o00_s00">water bottle holder</a> I mounted to the stem. There is no room left on the handlebars, and this location makes it very easy to grab and to replace the bottle. I had to use a zip tie to prevent the bottle holder from flipping over. Finally, because my neck is fused, which prevents me from looking up, I used all 3 stem extenders to get a nice upright riding position. I get a lot of air resistance, but I can see, and the motor keeps me going at a good speed.  The speed-generated wind cools me off, even when it is hot and humid out.</p> <p>I really like the fluid-assist brakes. They are easy to use, even with just one or two fingers, and stops are quite smooth.</p> <p>However, I have issues with the pedals. If the bottoms of your shoes are wet when you mount the bike, there is NO grip between the shoes and pedals at all. Several times, both feet slipped off the pedals. This is a safety issue. I may go back to using toe clips if there is a way to remove a reflector from each pedal to attach them. I replaced the pedals with a set of mountain bike ones that have metal studs, and a wider footprint.</p> <p><img alt="" height="450" src="/drupal/sites/default/files/20190906_111239.jpg" width="600" /></p> <p>In addition, these pedals have studs near the center spindle. I now have a much better grip between foot and pedal, and can now exert pressure forwards and backwards as well as just up and down.</p> <h3>Conclusion</h3> <p>I really like my Evelo Aurora, and I think you will like it too. Contact me for a discount code.</p> <hr /><h3>Updates</h3> <p>I took a really bad fall at low speed trying to turn on a thin layer of gravel sprayed out over asphalt by passing cars. Do not turn on gravel! The Aurora was undamaged, but I fell on top of a handlebar and did a number on my chest. I have recovered. It was really nice to have the bike do all the work going home.</p> <p>You can reset the gearing in the rear hub by holding down the auto/manual switch for 7 seconds while the rear wheel is moving. I tried it twice, but it made no difference. The manual speeds are all much too low except when set at the bottom 2 bars, or when going uphill.</p> <hr /><h3>Tales of a major fix</h3> <p>Since I received my Aurora, something made a rattling noise somewhere near the bottom bracket. This noise got louder and more annoying with time. It sounded as if ball-bearings were rolling around in a race. I narrowed this down to the motor because there was no noise if the motor was off while pedaling, and there was noise if the motor was on, pedaling or not. It was not the chain making noise because there was still noise when the chain was motionless. So I decided to fix this.</p> <p>I live in Oak Ridge, TN where there is just one bike dealer. There are several in Knoxville, but no one deals in Evelo bikes, and they will not repair electric bikes they are not familiar with. And of course, replacing the motor is about the most difficult task there is!</p> <p>I had to convince Evelo that indeed the problem was the motor by taking it to my local bike shop. They agreed with me. About 2 weeks later, a package arrived containing a new motor and two essential tools—a crank puller, and a special wrench to unmount the motor from the frame. Thomas Weber, the Evelo Service Manager also sent me the attached instructions. There are two types of repairs—those that take skill (truing a wheel) and those that require following steps. I felt that I could do the latter with some assistance along the way. My main handicaps were a lack of arm strength, and a bad back. So I splurged on a heavy-duty (the Aurora weighs over 60 lbs!) bike stand to keep things at a comfortable level.</p> <p>If pictures of the steps were not fully clear in the attached pdf, I took my own with my cell phone. I wanted to be able to get Humpty-Dumpty back together again. I used a 14-compartment pill box to keep the screws and bolts separated and in order. I lined up larger parts on the floor, also in order.</p> <p>When you remove the rear wheel and the chain, <em>be sure to store it so that the chain is not twisted</em>. I failed to do this, which caused me grief at the end of this process.</p> <p>I needed help from my neighbor to lift the bike onto the stand, and to undo the crank bolts. The rear wheel is removed by unplugging the wire from the auto-shift box, and undoing the two axle bolts. One bolt was close to the frame, so I had to use asn open-ended wrench for it. I also had to use one of my large metric allen wrenches (not included in the bike toolkit) to remove the crank bolt.</p> <p>I was worried about undoing and redoing all the plug-in wire connections (they are not marked), but each plug pair had a unique internal configuration. Things went well until I removed the motor, and discovered that one end of a plug disappeared inside the battery tube.</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 600px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="b86c4ec3-b379-464f-93de-354ff2d2547e" height="300" src="/drupal/sites/default/files/20200805_151209.jpg" width="400" /></td> <td>This is a picture of the hole that goes up the battery tube from inside the motor mount. The missing plug is nowhere to be seen!</td> </tr></tbody></table><p>There was no way to fish the plug out either. This plug halves are supposed to be taped together, but not on my early Aurora. Thomas suggested that I pull the harness out from the top, and sent me a picture of it (attached HarnessPlug.pdf). I was able to pull the harness out from the top of the battery tube. After thinking about it for a week, I figured out how to get the harness back down the battery tube. I have the remnants of a roll of plastic-coated aluminum antenna guy wire that I used. I cut off a piece 8" longer than the battery tube, made a hook on one end, and taped it to the single plug end of the wire using duct tape.</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 800px;"><tbody><tr><td><img alt="" data-entity-type="file" data-entity-uuid="10e3e6d9-b0cb-4f44-9eca-edf75ac516ea" height="300" src="/drupal/sites/default/files/20200807_164205_0.jpg" width="400" /></td> <td><img alt="" data-entity-type="file" data-entity-uuid="3172e72e-4a7f-4b2e-a7ff-1c60fcaa8e38" height="300" src="/drupal/sites/default/files/20200807_165506.jpg" width="400" /></td> </tr></tbody></table><p>I was then able to push the wire and attached plug down through the tube. This was the trickiest part of the whole process. I undid the tape, and used heat-shrink wrap to bind the two halves of this connection together. Then I pushed it back into the battery tube.</p> <p>The <a href="https://jamesrome.net/drupal/sites/default/files/2020-08/EveloMidEngineSwap.pdf" type="application/pdf; length=32355869">EveloMidEngineSwap.pdf</a> file suggests removing the bottom battery socket to dress some of the connections so that they are available without removing the motor. However, one of the 4 Phillips-head screws stripped, and I had to drill the screw out. The Phillips-head screws should all be replaced by hex head screws.</p> <p>I had to install the motor twice because I failed to look on both sides of the bike for properly dressed cables. Practice makes perfect.</p> <p>But when the bike was almost all done, I replaced the rear wheel and chain and found out that the chain, which was now not perfectly straight do to its storage off the bike (see above warning), hit the head of the bolt that holds the clear plastic chain guard onto the bike frame. Thomas agrees that this is a poor design. He sent me a special washer that moved the chain ring away from the chassis by 1 mm. This did the trick!</p> <p>I tested the fixed bike today, and all I can hear is a slight whirring noise when the motor is engaged. All-in-all, it took about 5 weeks to repair my bike, but I was not rushing things. </p> <p>So, if you live away from a dealer versed in E-bike repair, Evelo will help you do it yourself online. Thank you Thomas Weber for your great support.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=188&amp;2=comment_node_blog&amp;3=comment_node_blog" token="2VdRs548VE63vl2RtPhAAFN3Q09xqNm47lWqIgWKiHY"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> <section class="block block-layout-builder block-field-blocknodeblogfield-attachment"> <div class="field-wrapper field field-node--field-attachment field-name-field-attachment field-type-file field-label-above"> <div class="field-label">attachment</div> <div class="field-items"> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-08/EveloMidEngineSwap.pdf" type="application/pdf; length=32355869" title="EveloMidEngineSwap.pdf">Instructions for swapping out my engine</a></span> </div> <div class="field-item"><span class="file file--mime-application-pdf file--application-pdf"><a href="http://jamesrome.net/drupal/sites/default/files/2020-08/HarnessPlug.pdf" type="application/pdf; length=6392290" title="HarnessPlug.pdf">The harness that goes up the battery tube and its exit at the top of the tube</a></span> </div> </div> </div> </section> </div> </div> Thu, 06 Jun 2019 19:18:55 +0000 jarome 188 at http://jamesrome.net/drupal Review of Vanmoof Electrified S2 bicycle http://jamesrome.net/drupal/vanmoof <span class="field-wrapper">Review of Vanmoof Electrified S2 bicycle</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Tue, 05/21/2019 - 11:32</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>The <a href="https://www.vanmoof.com/en_us/electrified-s2-x2">Vanmoof Electrified S2</a> bike is from Holland, with a USA store in Brooklyn.</p> <p>It is a very handsome bicycle:</p> <p><img alt="" height="600" src="/drupal/sites/default/files/20190517_112759_0.jpg" width="800" /></p> <p>In particular, just looking at it, you probably would not know this is an electric bike. Weighing about 41 pounds, it is a lot heavier than a standard high-end bike, but it is a lot lighter than many other e-bikes (~60 pounds). My neck is fused (I cannot look up), so I installed the two (included) stem risers. It still does not give me a particularly upright sitting position. </p> <p>The Vanmoof claim to fame is a very clever anti-theft system. Your bike is connected to an app on your Android or IOS device. You can lock or unlock the bike using the phone. You can also lock the S2 by pushing in the little knob you can see just in front and a bit below the rear axle nut. You can unlock it by entering a code using a button on the left handlebar. When the bike is locked, the rear wheel will not turn, and moving the bike sets off a loud alarm. Furthermore, if you report the bike stolen (via the app), and if if is locked, Vanmoof can track it down via a GPS cell connection built into the bike. It costs $240 for three years of this service. If Vanmoof cannot find the bike, they will replace it. There are also two special security nuts on the axles that can only be removed using a special tool (included). However<a href="https://ebiketips.road.cc/content/news/false-info-vanmoof-rejects-tech-website-s-claim-it-hacked-one-of-dutch-firm-s"> these security claims may be overblown</a>.</p> <p>I will come back to the phone app later in this review.</p> <p>Mechanically, the motor is in the front wheel hub, and there is a two-speed Sturmey-Archer internal shifter in the rear hub. The only thing the rider can control is the power assist level (from 0–4), which I always left on 4. This also can be done via the app or manually on the stopped bike. From my point of view, the power train is the weakest part of the S2 in hilly East Tennessee. We have many steep hills, and the power assist gets lower and lower as you pedal slower and slower. To help solve this problem, there is a button on the right side of the handlebars you can press to give a power boost. On a long, gradual hill, this works like a charm, but on a short steep hill, I could barely make it to the top of the hill. If the hill is longer, the S2 just does not have power. There are no hills in Holland! When I got the S2, the power assist button did not work properly. It stuttered and dropped out. It took a month for Vanmoof to admit that this was a problem, which they mostly fixed with a bike firmware update (version 1.6) The app tells you such an update is available—a nice touch.</p> <p>I also had difficulty with the gearing. Often, after coasting down a hill, I had trouble keeping my feet on the pedals because there was little resistance. I wish there was a way to shift manually.</p> <p>When the hills are not to steep, the S2 feels like a normal bike, but one in which you do not have to worry about gear shifts. It is easy to keep up a 15 miles-per-hour speed.</p> <p>The tires are not at all puncture resistant. Over night, my rear wheel went flat, and this was due to a thorn that barely entered the tire. And when the tire goes flat, the kickstand no longer works, and the bike keeled over into my glass table top (see above). It was also totally unobvious how to remove the rear wheel which is captured by the chain guard. I had to call Vanmoof in Holland to get a video of the process, which took a week. You will need to carry two different Allen wrenches, the special nut remover, and a wrench for that (plus a repair kit and a pump) to rescue yourself from a flat in the middle of nowhere. The front wheel is ner to take off. It is very hard to get at the screws of the cover for the cable on the front fork—it took me well over an hour. There are no welded points to attach a pump or water bottle holder.</p> <p>The biggest source of frustration with the Vanmoof system is the app. If you switch phones or update Android, the app will not start. I rebooted the phone, uninstalled/reinstalled the app, reset the bike with a paperclip, and it still crashed every time I tried to start it. Eventually, I unlocked the bike manually, and lo and behold, the Vanmoof app then started. Also, there were times that the app lost connection to the bike. It did this after the above-mentioned flat tire. I replaced the wheel, and knowing that the bike was unlocked. I took it out. I live on a hill, and when I reached the bottom and started up the next hill, I realized that the bike was off. There was no connection to the app. It required a reset using a paperclip. I did not have one with me, so had to walk the bike home. Carry a paperclip with you! The app also controls things like the lights, horn, the max top speed, and shows you where the bike is parked. I hope Vanmoof fixes the issues I had with the app.</p> <p>But I need a more powerful bike motor where I live. Vanmoof has been gracious about letting me return the S2 for a refund.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-label">Comments</h2> <article data-comment-user-id="0" id="comment-873" class="js-comment"> <mark class="hidden" data-comment-timestamp="1587999871"></mark> <footer> <article typeof="schema:Person" about="/drupal/user/0"> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> </div> </div> </article> <p>Submitted by <span lang="" typeof="schema:Person" property="schema:name" datatype="">IraBob</span> on Sun, 09/15/2019 - 09:49</p> <a href="/drupal/comment/873#comment-873" hreflang="en">Permalink</a> </footer> <div> <h3><a href="/drupal/comment/873#comment-873" class="permalink" rel="bookmark" hreflang="en">Thanks for your review </a></h3> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blockcommentcomment-node-blogcomment-body"> <div class="field-wrapper field field-comment--comment-body field-name-comment-body field-type-text-long field-label-hidden"> <div class="field-items"> <div class="field-item">Thanks very much for your review. It’s good to hear from a rider from a hilly area, rather than just urban London or Brooklyn or etc. And thanks for pointing out that Holland doesn’t have hills!!! I hadn’t read that in any other review or comment. I think that’s significant. I live in Seattle. Lots of hills. I’m afraid my experience would be the same as yours. And if the big selling point is the anti-theft system, I’m wondering why purchasers aren’t mentioning renters’ or homeowners’ insurance, which normally covers personal property on and off your premises.</div> </div> </div> </section> <section class="block block-layout-builder block-extra-field-blockcommentcomment-node-bloglinks"> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=873&amp;1=default&amp;2=en&amp;3=" token="q-koJOnDcyQEGTnsLT3wcdcHV93_3SWBNU2FQdm03PI"></drupal-render-placeholder> </section> </div> </div> </div> </article> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=187&amp;2=comment_node_blog&amp;3=comment_node_blog" token="XcMmQYM7Q3mYqYC3aQG6ZfroXIoHWKIA_7gz6HJruL8"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Tue, 21 May 2019 17:32:45 +0000 jarome 187 at http://jamesrome.net/drupal Script for updating the Drupal 8 core http://jamesrome.net/drupal/drupal8_update <span class="field-wrapper">Script for updating the Drupal 8 core</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Thu, 04/18/2019 - 15:02</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><hr /><p>Drupal 8 has integrated  other projects and modules into the Drupal Core. For example: Views, Symfony, and JQuery. Asz a result, whenever any of the included projects have an architecture change, or security issue, the Drupal Core must be updated, and there is not an automatic way of doing this. As a result, there have been a half-dozen Core updates in the past month, and it wastes 2–3 hours of my time whenever I must update my 6 sites. And this is if there are no bugs in the provided update, and all goes smoothly.</p> <p>It occurred to me that I essentially do the same things to each site each time I update them, so why not create a shell script? So I did, and I offer it to others with the following provisos:</p> <ul><li>There are no guarantees of correctness or application to your site. Editing the script may be needed. Although my script makes a backup of your files and database, I suggest you make your own until you have confidence in the script.</li> <li>I assume that there are links to <em>composer.phar</em> and <em>vendor/drush/drush/drush </em>in the installation directory (where vendor and this shell script are located).</li> <li>I inserted pause statements in the script to enable you to make sure things are working correctly as the script is executed. When you are confident of the script, comment them out.</li> <li>I have used this script to successfully update major (5.5 -&gt; 5.6) updates, and minor updates (5.6.14 -&gt; 5.6.15).</li> </ul><p>Save the script in your main Drupal directory. I called it <em>drupal8_update.sh</em></p> <p>Once you have confidence in the script, you can remove the diagnostics and pauses.</p> <hr /><blockquote><p>#!/bin/bash -x</p> <p># A script to upgrade a Drupal installation to the next minor version<br /> # This script uses drush to initiate database updates; Assumes there is a drush link to vendor/drush/drush/drush<br /> # and a link to composer.phar in the install directory<br /> #init<br /> function pause(){<br />    read -p "$*"<br /> }</p> <p>TMP="~/tmp"</p> <p># check for user input<br /> if [ ! $@ ]; then<br />   echo<br />   echo "  Usage:"<br />   echo "    $0 MAJOR MINOR SITE [DIRECTORY]"<br />   echo<br />   echo "    MAJOR: The new MAJOR version to install - e.g., 8.6"<br />   echo "    MINOR: The new MINOR version to install - e.g., 14 (for 8.6.14)"<br />   echo "    SITE: a nick for your site (fixes multiple sites)"<br />   echo "    DIRECTORY: The relative path to your Drupal installation; if blank the current directory is assumed"<br />   echo<br />   echo "  Example usage:"<br />   echo "    $0 6.  9 xisam public_html/"<br />   echo<br />   exit 0<br /> fi<br /> MAJOR=$1<br /> MINOR=$2<br /> VERSION="${MAJOR}.${MINOR}"<br /> OLD_VERSION="${MAJOR}.$(( ${MINOR} - 1 ))"<br /> DRUPAL_OLD="drupal-${OLD_VERSION}"<br /> echo "OLD_VERSION = $OLD_VERSION   DRUPAL_OLD =$DRUPAL_OLD"<br /> pause 'Press [Enter] key to continue...'<br /> if [ ! $4 ]; then<br />   SITEPATH="."<br /> else<br />   SITEPATH=$4<br /> fi</p> <p>SITE=$3<br /> DRUPAL_SITE="${SITE}-"<br /> DRUPAL_VERSION="drupal-${VERSION}"<br /> DRUPAL_PACKAGE="${DRUPAL_VERSION}.tar.gz"<br /> TMP_FILE="${TMP}/${DRUPAL_PACKAGE}"</p> <p>echo "Drupal_site=${DRUPAL_SITE}"<br /> echo "DRUPAL_PACKAGE=${DRUPAL_PACKAGE}"</p> <p>cd $SITEPATH</p> <p># Put the site offline<br /> echo "Putting site in offline mode..."<br /> ./drush sset system.maintenance_mode 1</p> <p>pause 'Site is offline. Press [Enter] key to continue...'</p> <p># backup core files</p> <pre> now=$(date +"%m_%d_%Y")</pre><p>echo "Backing up current Drupal non-core files... "<br /> tar --exclude=./.htaccess --exclude=./*.php --exclude=./libraries --exclude=./modules --exclude=./profiles --exclude=./themes --exclude=./core --exclude=./vendor --exclude=./*.tgz -zcvf  "${DRUPAL_SITE}drupal-${now}.backup.tgz" ./<br /> echo "Done."<br /> # (ls) | xargs echo</p> <p>#backup database; use result-file option to prevent charset corruption<br /> echo -n "Backing up current Drupal database... "<br /> ./drush sql-dump --result-file=../drupal-upgrade.backup.sql.tgz<br /> echo "Done."</p> <p># example download link <a href="http://ftp.drupal.org/files/projects/drupal-6.9.tar.gz">http://ftp.drupal.org/files/projects/drupal-6.9.tar.gz</a><br /> DOWNLOAD="<a href="http://ftp.drupal.org/files/projects/">http://ftp.drupal.org/files/projects/</a>${DRUPAL_PACKAGE}"<br /> echo "Start downloading $DRUPAL_PACKAGE... "<br /> wget -q $DOWNLOAD<br /> echo "Done."<br /> echo "Untarring new distribution"<br /> tar -zxf $DRUPAL_PACKAGE<br /> pause 'Untarred. Press [Enter] key to continue...'</p> <p>echo "Removing .old directories and old distro files if any"<br /> rm -rf *.old<br /> rm -rf ${DRUPAL_OLD}*<br /> mv core core.old<br /> mv vendor vendor.old<br /> # (ls) | xargs echo<br /> echo "Old versions removed. Core &amp; vendor moved to .old Upgrading Drupal core files... "<br /> echo $(ls)</p> <p>cd $DRUPAL_VERSION<br /> cp -R vendor ../<br /> cp -R core ../<br /> cp -f *.php ../<br /> cd ../<br /> # (ls) | xargs echo<br /> pause 'New directories copied. Press [Enter] key to continue...'</p> <p>./composer update --no-dev --with-dependencies<br /> pause 'Composer did the update. Press [Enter] key to continue...'<br /> # The .htaccess file is purposely not copied</p> <p>echo "Done."</p> <p>echo -n "Upgrading Drupal database... "<br /> yes | ./drush updb<br /> ./drush cr<br /> echo "Done."</p> <p># Put the site back online<br /> echo -n "Putting site back online... "</p> <p>./drush sset system.maintenance_mode 0<br /> echo "Done."</p> <p>echo<br /> echo -n "If something went horribly wrong type \"restore\" to restore from backup: "<br /> read RESTORE</p> <p>if [ "$RESTORE" = "restore" ]; then<br />   echo -n "Restoring database... "<br />   MYSQL_CONNECT=$(drush sql-connect)<br />   $MYSQL_CONNECT &lt; ../drupal-upgrade.backup.sql.tgz<br />   echo "Done."</p> <p>  echo -n "Restoring files... "<br /> #  tar -xzf ../drupal-core.backup.tgz -C ./<br /> rm -rf core<br /> mv core.old core<br /> rm -rf vendor<br /> mv vendor.old vendor<br />   echo "Done."</p> <p>   echo "Your upgrade failed, but the backup was restored"<br /> else<br />   echo "removing .old directories"<br />   echo "Your upgrade is complete"<br /> fi</p> <p>BACKUP_DIR=$(readlink -f ../)<br /> echo "Backup files before the upgrade where saved in the following locations:"<br /> echo "  ${BACKUP_DIR}/${DRUPAL_SITE}drupal-core.backup.tgz"<br /> echo "  ${BACKUP_DIR}/drupal-upgrade.backup.sql.tgz"<br />  </p> </blockquote> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=186&amp;2=comment_node_blog&amp;3=comment_node_blog" token="FDAKAXAEMxoDiklNGN5VjPJgsoUQrUQE6QW_Lszgu7s"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> <section class="block block-layout-builder block-field-blocknodeblogfield-attachment"> <div class="field-wrapper field field-node--field-attachment field-name-field-attachment field-type-file field-label-above"> <div class="field-label">attachment</div> <div class="field-items"> <div class="field-item"><span class="file file--mime-text-x-sh file--text"><a href="http://jamesrome.net/drupal/sites/default/files/2019-04/drupal8_update.sh" type="text/x-sh; length=3737" title="drupal8_update.sh">The shell script in a file</a></span> </div> </div> </div> </section> </div> </div> Thu, 18 Apr 2019 21:02:59 +0000 jarome 186 at http://jamesrome.net/drupal How you can stream your music collection http://jamesrome.net/drupal/streaming_music <span class="field-wrapper">How you can stream your music collection</span> <span class="field-wrapper"><span lang="" about="/drupal/user/1" typeof="schema:Person" property="schema:name" datatype="">jarome</span></span> <span class="field-wrapper">Thu, 02/28/2019 - 13:35</span> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blocknodeblogbody"> <div class="field-wrapper body field field-node--body field-name-body field-type-text-with-summary field-label-hidden"> <div class="field-items"> <div class="field-item"><p>I have run out of room for CDs and records. All available wall space is taken, and cabinets can cost more than the music media. Hence, all of my music has now been transferred to my computer systems. I have about 120,000 tracks now, which take about 2 TB of storage. All newer tracks are in lossless Flac or M4a, and many are in high-resolution (24 bits up to 96 kHz). To be safe, I have FIVE copies of everything on different disks and different machines. (I have actually managed to lose three backups once...). I also have one copy in my vault. </p> <p>But how to play the music in three venues: on a computer, at my HiFi, and when I am out and about (or sharing with friends and relatives). I have multiple solutions I use: Logitech's Media Server and their Transporter DAC; Subsonic; and BluOS streaming to my Node 2i - 3855 DAC/Streamer. I also use Audirvana on my Mac, and tried using Roon to also feed the Node 2i.</p> <h2>Playing on a HiFi System</h2> <p>Although I have an excellent wireless WiFi system, if you want to stream Hi-Res music, you should get hard-wired Ethernet connections. I have two such devices:</p> <p><img alt="" height="289" src="/drupal/sites/default/files/P2280003-1.jpg" width="800" /></p> <p>On the left is the Node 21 - 3855, and on the right (bottom) is a Logitech Transporter.</p> <h3>Logitech Media Server</h3> <p>I have been using the <a href="https://en.wikipedia.org/wiki/Logitech_Media_Server">Logitech Media Server</a> (LMS) system since forever. It used to be called Squeezebox until Logitech bought out Slimdevices and dropped the product line. I own 3 Transporters and 5 of their lesser devices. The way the system works is that you install their free LMS server software on a Mac, Windows, or Linux computer. I have mine on a Linux i7 Dell running OpenSUSE Leap 15. This machine is always on ready to serve its clients. The Transporter got <a href="http://www.hifiplus.com/articles/tested-logitech-transporter-network-music-player/">rave reviews</a> when it first came out, but it is quite old in the tooth now. It has a 24bit/96kHz limit, and no MQA. But I cannot hear the difference at higher sample rates. You can still buy a new Transporter on Ebay for $500. I have one at my HiFi, and one in my bedroom. Note that if you try to play multichannel or over 96 kHz tracks, <strong>bad things will happen</strong>!</p> <p>You access the LMS server via its Web interfaces. There are two:</p> <p>One is for setting up the system in all its gory details</p> <p><img alt="" height="355" src="/drupal/sites/default/files/LMSsettings%20.png" width="704" /></p> <p> </p> <p>The other is for selecting your music</p> <p><img alt="" height="786" src="/drupal/sites/default/files/LMSPlayer.png" width="919" /></p> <p>Now of course, I could access my LMS collection via any Web browser (say on phone) and use the phone as a controller when at my HiFi. But if you allow LMS access through the firewall, you can also listen to music ON your phone.</p> <p>Aside from things sounding really good, the LMS is very configurable, which is probably why it was discontinued. Fortunately, Logitech still has one person (Michael Herger) who is maintaining the software and adding new features. There is also a very helpful online <a href="https://forums.slimdevices.com/">forum</a> left over from the Squeezebox days. As you can see, LMS can stream media from all the major streaming services, in addition to your own music collection.</p> <p>Note that the above Web interface will not play music on your computer, but there is an app called Squeezeplay that will do so.</p> <p><img alt="" height="495" src="/drupal/sites/default/files/Squeezeplay.png" width="789" /></p> <p><img alt="" height="493" src="/drupal/sites/default/files/Squeezeplayatrist.png" width="803" /></p> <p>Generally I am very pleased with the LMS system, and sincerely hope that it keeps going. There is now an open source version of the LMS software.</p> <h3>Bluesound Node 2i</h3> <p>I got the <a href="https://www.bluesound.com/products/node-2i/">Node 2i </a>to see if it was time to replace my LMS system.  It costs $500, and supports 24-bit/ 192 kHz audio streams. It also has MQA. </p> <p><img alt="" height="201" src="/drupal/sites/default/files/Node2iback.png" width="769" /></p> <p>Notice the Ethernet connector—a sign that this is a music player, and not just a DAC. The BlueOS software is inside the Node 2i, and is accessed via the Web, or an application on your Mac, PC, or phone. Again, this will only play music via the Node 2i, so the phone interface is just a remote control.</p> <p><img alt="" height="598" src="/drupal/sites/default/files/BlueOSController.png" width="800" /></p> <p>As with the other music servers, BlueOS supports all of your networked music (a NAS server is not needed, just a Windows Samba share). It also supports your accounts with all the major streaming services as shown above. The BlueOS software makes better use of album images than the LMS system.</p> <table border="1" cellpadding="1" cellspacing="1" style="width: 800px;"><tbody><tr><td><img alt="" height="818" src="/drupal/sites/default/files/Screenshot_20181128-090950_BluOS.jpg" width="398" /></td> <td><img alt="" height="818" src="/drupal/sites/default/files/Screenshot_20190228-191302_BluOS.jpg" width="398" /></td> </tr></tbody></table><p>On the left is the Android app accessing my music library, and on the right, it is accessing Qubuz.</p> <h3>Roon</h3> <p>Many writers in audiophile publications (Stereophile, Absolute Sound) rave about Roon. I rave AT Roon. I had a free 90-day trial and installed Roon on my Linux server (very easy to do). Roon supports the node 2i and enev my Transporter. However it does not support any of the LMS plugins that make the Transporter so useful—it is my clock and weather forecaster.</p> <p>The problem with Roon is that it is totally unacceptable for a large classical music collection. I have about 5000 artists (which for me is composers). They are stored in my file system as <em>Last_name, First_name,</em> which is appropriate for classical music. Roon insists on displaying then by <em>First_name, Last_name</em>. Very few people know the first name of obscure Classical composers (Currier, Philador, Shebalin,....). According to Roon</p> <blockquote><p>this practice runs contrary to how Roon behaves. This quote is from the Roon KB for Best File Tagging Practices:</p> <p>One thing worth noting is that Roon will attempt to match up names that you have put into your file tags with Roon database versions of the <em>same individuals</em> who are associated with <em>identified</em> content in your library. You’ll get much better results if you stick with the likes of the following:</p> <ul><li>Wolfgang Amadeus Mozart</li> <li>Pyotr Il’yich Tchaikovsky</li> <li>Paul McCartney</li> <li>Richard Rodgers; Oscar Hammerstein II</li> </ul><p>than if you use:</p> <ul><li>Mozart, Wolfgang Amadeus</li> <li>Ludwig van Beethoven (1770-1827)</li> <li>Rodgers and Hammerstein</li> </ul></blockquote> <p>There is also an issue with how one transliterates Russian names. I decided upon <em>Peter Ilyich Tchaikovsky</em>. </p> <p>Even worse, unlike in LMS, there is no way to limit the tags used by Roon in making its list. This there are a huge number of entries, many of which are doubled, even tripled (Artist, Album Artist, Composer). And each one is displayed in a large image.</p> <p><img alt="" height="500" src="/drupal/sites/default/files/RoonArtists.jpeg" width="312" /></p> <p>And scrolling on a phone through over 5000 such images is a non-starter. There is supposedly an alphabetical index, but it was hidden on my devices. Roon also lists each act or Swan Lake as a separate album, adding to the plethora of listings. The advice from Roon is to use WORK and PART tags, to correctly identify compositions. But I have 115,000 tracks, and am NOT going to retag them.</p> <p>Thus, it is impossible to find things to play. Roon is a case where more is worse. On the Roon forum, I got this message:</p> <blockquote><p>I guess for a start most users aren’t mainly classical devotees and don’t have such large libraries. You are already a double edge case as a user.<br /> If you have a set way of working and tagging that is at odds with the roon default then this will also be difficult.<br /> Roon are re-doing the classical experience after a lot of feedback such as yours. You might be better off by skipping a few months until whenever the next major release surfaces and see if it is a better fit.</p> </blockquote> <h2>Streaming to phones and your own externally accessible music server</h2> <h3>Subsonic</h3> <p>I am a big fan of <a href="http://www.subsonic.org/pages/index.jsp">Subsonic</a>, and use it to access my music outside of my house, or to share it with friends. If you want Subsonic to work on mobile device apps (as opposed to using a Web page), it costs $1 a month. I bought a perpetual license many years ago. </p> <p><img alt="" height="1220" src="/drupal/sites/default/files/subsonic.png" width="1110" />I really like Subsonic's interface. Unlike with Roon, you can rapidly find the composer via the left-hand pane. The right-hand pane shows all users online and what they are listening to. It also has a rudimentary chat capability there. Because this is a software-based system, it actually plays the music you choose from the Web page, or from a mobile app. On Android, I recommend <a href="https://play.google.com/store/apps/details?id=github.daneren2005.dsub"><em>Dsub</em></a>; In IOS I use <a href="https://itunes.apple.com/us/app/play-sub-music-streamer/id955329386?mt=8"><em>play:Sub</em></a>.</p> <p>By default, Subsonic runs as root, so you must create a subsonic user and run it as this user to be secure. Also, it is easy to encrypt your sessions with a self-signed certificate, but your users will have to accept this certificate after a security warning.</p> <p>Subsonic also gives you a detailed listing of network usage by user</p> <p><img alt="" height="884" src="/drupal/sites/default/files/SubsinicNetwork.png" width="800" /></p> <p>As you see, you can configure users to be able to upload or download music. Access is password protected.</p> <h3>LMS</h3> <p>You can also configure the Logitech media server to serve music to the Internet, but I much prefer the Subsonic interface. There are Android apps that will play the LMS music on your phone, or that will control your HiFi system.</p> </div> </div> </div> </section> <section class="block block-layout-builder block-field-blocknodeblogcomment-node-blog"> <section class="field-wrapper"> <h2 class="field-label">Comments</h2> <article data-comment-user-id="0" id="comment-904" class="js-comment"> <mark class="hidden" data-comment-timestamp="1579791782"></mark> <footer> <article typeof="schema:Person" about="/drupal/user/0"> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> </div> </div> </article> <p>Submitted by <span lang="" typeof="schema:Person" property="schema:name" datatype="">alex</span> on Mon, 01/06/2020 - 23:01</p> <a href="/drupal/comment/904#comment-904" hreflang="en">Permalink</a> </footer> <div> <h3><a href="/drupal/comment/904#comment-904" class="permalink" rel="bookmark" hreflang="en">great list and details</a></h3> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blockcommentcomment-node-blogcomment-body"> <div class="field-wrapper field field-comment--comment-body field-name-comment-body field-type-text-long field-label-hidden"> <div class="field-items"> <div class="field-item">felt like i wrote this! i used my squeezebox system for years before finally forgoing for easier (echos) for the other members of my family! i now just got a blueos capable system, nad 658 and it is a blast from the lms past! i also use subsonic! with a perpetual license i got years ago. thinking about roon but will keep thinking. thanks for the details and insights into your listening habits! alex</div> </div> </div> </section> <section class="block block-layout-builder block-extra-field-blockcommentcomment-node-bloglinks"> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=904&amp;1=default&amp;2=en&amp;3=" token="22R3kpTi2ViULH6_sJ4lCNntN1YlQGyXXt95AdjOjAk"></drupal-render-placeholder> </section> </div> </div> </div> </article> <article data-comment-user-id="0" id="comment-1112" class="js-comment"> <mark class="hidden" data-comment-timestamp="1587999735"></mark> <footer> <article typeof="schema:Person" about="/drupal/user/0"> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> </div> </div> </article> <p>Submitted by <span lang="" typeof="schema:Person" property="schema:name" datatype="">ZJ</span> on Sun, 04/12/2020 - 08:37</p> <a href="/drupal/comment/1112#comment-1112" hreflang="en">Permalink</a> </footer> <div> <h3><a href="/drupal/comment/1112#comment-1112" class="permalink" rel="bookmark" hreflang="en">Node 2i seems like what i&#039;m looking for.</a></h3> <div class="layout layout--onecol"> <div class="layout__region layout__region--content"> <section class="block block-layout-builder block-field-blockcommentcomment-node-blogcomment-body"> <div class="field-wrapper field field-comment--comment-body field-name-comment-body field-type-text-long field-label-hidden"> <div class="field-items"> <div class="field-item">Great article on the more popular streamers. Just wanted stream FLAC/DSD from PC to the stereo which are at opposite ends of the living room. Was going to go the &#039;expensive&#039; route of Roon, but guess Node 2i will do equally fine. I literally laughed out loud at &quot;I decided upon Peter Ilyich Tchaikovsky&quot;. XD</div> </div> </div> </section> <section class="block block-layout-builder block-extra-field-blockcommentcomment-node-bloglinks"> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=1112&amp;1=default&amp;2=en&amp;3=" token="GwNjX1-6W8uZfthS-FsIzg-RGXOJYYIkoFUdbnKsgtU"></drupal-render-placeholder> </section> </div> </div> </div> </article> <h2 class="field-items">Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=185&amp;2=comment_node_blog&amp;3=comment_node_blog" token="X6CQ9qEDJ2_jx__e-ZOBkzi-AY1ygHMBkLuqQQKUbkU"></drupal-render-placeholder> </section> </section> <section class="block block-layout-builder block-extra-field-blocknodebloglinks"> </section> </div> </div> Thu, 28 Feb 2019 20:35:56 +0000 jarome 185 at http://jamesrome.net/drupal