<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title><![CDATA[LinLog]]></title>
    <link>https://linlog.skepticats.com/</link>
    <description><![CDATA[Linux, Programming, and Computing in General]]></description>
    <lastBuildDate>2023-05-14T22:30:05+00:00</lastBuildDate>
    <managingEditor>pageer@skepticats.com (Peter Geer)</managingEditor>
    <language>en-US</language>
    <generator>https://lnblog.skepticats.com/?v=2.3.1</generator>
    <item>
      <title><![CDATA[The joy of WSL and desktop Linux]]></title>
      <link>https://linlog.skepticats.com/entries/2023/05/the-joy-of-wsl-and-desktop-linux.php</link>
      <description><![CDATA[<p>I had a workflow revelation on my work machine the other week: Corporate IT pushed a Windows 10 update that brought me up to a version that <em>actually supports</em> running Linux GUI apps under WSL!</p>
<p>I've WSL GUI apps on my home Win11 system for a while, but having that on my work machine is <em>huge.&nbsp; </em>I use WSL extensively there.&nbsp; See, we've been standardizing our dev environment setup using <a href="https://lando.dev">Lando</a>, which is basically a convenience layer on top of <code>docker-compose</code>.&nbsp; It's a handy tool, but the relevant thing to note here is that it works by directly mounting your project code directory inside the Docker container.&nbsp; This is convenient for Mac and Linux users, but is kind of a problem for Windows users.</p>
<p>As you may (or may not) know, WSL2 is great and <a href="https://learn.microsoft.com/en-us/windows/wsl/compare-versions">out-performs WSL1 in every way except one</a>: cross-filesystem performance.&nbsp; As long as you keep everything inside the WSL filesystem, you're golden and everything is fast.&nbsp; But as soon as you try to cross from the Windows filesystem to the Linux one, or vice versa, performance just falls off a cliff.&nbsp; Sure, it's not a big deal if you just want to edit a file or something like that, but anything that does any <em>remotely</em> significant amount of filesystem access (e.g. running an <code>npm install</code>) is just painful.&nbsp; In my experience, it's not unheard of for the performance penalty to be on the order of 10x.&nbsp;</p>
<p>Clearly that's not something you want to endure as part of your normal workflow.&nbsp; The simple fix is to do all your work inside WSL, which for me means installing Lando in WSL and hosting my code inside WSL.&nbsp; The only problem is managing the code.&nbsp; If you want to do that in Windows, you need to do it over a network share, which&nbsp;<em>works</em>, but isn't exactly a great experience.&nbsp; It also causes various permissions and file ownership issues for apps like Git that actually care about that.</p>
<p>That's where the WSL GUI apps come in.&nbsp; Rather than dealing with the network share hassle, you can just install your favorite GUI tools inside WSL and run them just like you're on native Linux.&nbsp; Problem solved!</p>
<p>Well,&nbsp;<em>mostly</em> solved.&nbsp; Sadly, not&nbsp;<em>everything</em> runs on Linux.&nbsp; In particular, there's no Linux port of SourceTree, which is currently my graphical Git client of choice.&nbsp; But it's not that I <em>particularly</em> like SourceTree - it's just that I hate it less than all the other Git clients I've tried.&nbsp; So I was forced to try some other options.</p>
<p>This part did not go well.&nbsp; I tried a few different options, including <a href="https://gitfiend.com">GitFiend</a> (which was nice, but would randomly crash under WSL) and <a href="https://git-cola.github.io/">Git-Cola</a>, which was also decent, but which I had to drop because if left alone it would occasionally lock up and then somehow&nbsp;<em>take down the entire system if I tried to close it</em>.&nbsp; I have no idea how it managed to do that (presumably some bug in WSL's GUI layer), but that's a different problem.&nbsp; I also&nbsp;<em>attempted</em> to try <a href="https://murmele.github.io/Gittyup/">Gittyup</a>, but I couldn't, because it only offered Flatpak packages.&nbsp; And, of course, the Flatpak daemon (or whatever it's called) won't install on WSL because it's missing some of the system-level stuff that it uses.&nbsp; But that's a different post.</p>
<p>Eventually, I declared GUI bankruptcy and decided to actually learn how to use <a href="https://github.com/tpope/vim-fugitive">Fugitive</a>, the Git plugin for Vim.&nbsp; Turns out that Fugitive is actually pretty good and figuring it out was <em>easier</em> than finding a good graphical Git client.&nbsp; But that's also a story for another post.</p>
<p>In any event, having WSL GUI apps is pretty nice.&nbsp; Now I can do all my work in WSL, and still have both GVim and <a href="https://linlog.skepticats.com/entries/2023/05/installing-phpstorm-under-wsl2.php">PHPStorm</a>, if I need it, without having to pay the cross-OS performance price.&nbsp; So I can have nice things&nbsp;<em>and</em> good performance.&nbsp; Yay!</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sun, 14 May 2023 22:28:56 +0000</pubDate>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Ubuntu]]></category>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[WSL]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2023/05/the-joy-of-wsl-and-desktop-linux.php</guid>
      <comments>https://linlog.skepticats.com/entries/2023/05/14_1828/comments/</comments>
    </item>
    <item>
      <title><![CDATA[OneDrive for Linux]]></title>
      <link>https://linlog.skepticats.com/entries/2023/03/onedrive-for-linux.php</link>
      <description><![CDATA[<p>As I mentioned a while ago, I r<a href="https://linlog.skepticats.com/entries/2022/07/powering-down-an-old-friend.php">eplaced my desktop/home server</a> this past summer.&nbsp; In the process, I switched from my old setup of Ubuntu running <a href="https://www.trinitydesktop.org/">Trinity Desktop</a> to plain-old Ubuntu MATE, so I've been getting used to some new software anyway.&nbsp; As part of this process, I figured it was time to take another look for OneDrive clients for Linux.</p>
<p>See, I actually kind of like OneDrive.&nbsp; I have an Office 365 subscription, which means I get 1TB of OneDrive storage included, so I might as well use it.&nbsp; I also happen to like the web interface and photo-syncing aspects of it pretty well.</p>
<p>However, I'm slightly paranoid and generally distrustful of cloud service providers, so I like to have local copies and offline backups of my files.&nbsp; This is a problem for me, because my primary Windows machine is a laptop, and I don't want to pay the premium to put a multi-terabyte drive in my laptop just so I can sync my entire OneDrive, and scheduled backups to a USB disk are awkward for a laptop that's not plugged in most of the time.&nbsp; Now, I do have a multi-terabyte drive connected to my Linux desktop, but for a long time there were no good OneDrive sync clients for Linux.&nbsp; In the past, I had worked around this by using one-off sync tools like <a href="https://github.com/bcpierce00/unison">Unison</a> (which...mostly worked most of the time) or by setting up an ownCloud sync on top of the OneDrive sync (which worked but was kind of janky).&nbsp; However, but those depended on syncing <em>from</em> my Windows laptop, which was OK when I had 20 or 30 gigabytes of data in OneDrive, but at this point I'm well over 100GB.&nbsp; Most of that is archival data like family photos and just eats up too much space on a 500GB SSD.</p>
<p>Enter <a href="https://www.insynchq.com">InSync</a>.&nbsp; InSync is a third-party file sync tool that runs on Windows, Mac, and Linux and supports OneDrive, Google Drive, and Dropbox.&nbsp; It has all the bells and whistles you'd expect, including file manager integrations, exclusions, directory selection, and other cool stuff.&nbsp; But what I care about is the basics - two-way syncing.&nbsp; And it does that really well.&nbsp; In fact, it totally solves my problem right out of the box.&nbsp; No more janky hacks - I can just connect it to my OneDrive account and it syncs things to my Linux box.</p>
<p>The only down-side to InSync is that it's proprietary (which I don't mind) and the licensing is confusing.&nbsp; The up side is that it's not actually that expensive - currently, the <a href="https://www.insynchq.com/pricing">pricing page</a> lists licenses at $30 USD per cloud account.&nbsp; So if you only want to sync OneDrive, it's $30 and you're done.&nbsp; However, there's also an optional support contract and there's some difference between "legacy" licenses (which I think is what I have) and their new subscription model.&nbsp; Frankly, I don't fully understand the difference, but as long as it syncs my OneDrive and doesn't cost too much, I don't really care.&nbsp;&nbsp;</p>
<p>So if you're a OneDrive user&nbsp;<em>and</em> a Linux user, InSync is definitely worth a try.&nbsp; I don't know about the other platforms or services (I assume they're all similar), but OneDrive on Linux works great.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 04 Mar 2023 23:21:28 +0000</pubDate>
      <category><![CDATA[Tools]]></category>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Ubuntu]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2023/03/onedrive-for-linux.php</guid>
      <comments>https://linlog.skepticats.com/entries/2023/03/04_1821/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Nextcloud session annoyances]]></title>
      <link>https://linlog.skepticats.com/entries/2023/02/nextcloud-session-annoyances.php</link>
      <description><![CDATA[<p>This is a note to my future self about an annoyance with <a href="https://nextcloud.com">Nextcloud</a>.&nbsp; If you're not aware of it, Nextcloud is basically a fork of <a href="https://owncloud.com">ownCloud</a>, which is a "self-hosted cloud" platform.&nbsp; Basically, they both provide a bunch of cloud-based services, like file sync and share, calendar, contacts, and various other things.&nbsp; I <a href="https://linlog.skepticats.com/entries/2022/07/finally-switching-to-nextcloud.php">switched to Nextcloud</a> last year because ownCloud was lagging way behind in its support for newer PHP versions.</p>
<p>Anyway, I noticed a rather annoying issue where Nextcloud was leaving hundreds of stale auth tokens in the database.&nbsp; Apparently, I'm not the <a href="https://github.com/nextcloud/server/issues/8720">only</a> <a href="https://forum.cloudron.io/topic/7657/cleaning-up-old-sessions">person</a> this has happened to.</p>
<p>While Nextcloud has a menu item to revoke and remove stale sessions on their settings page, it's on a per-item basis.&nbsp; So if you have&nbsp;<em>hundreds</em> of stale sessions, the only way to remove them is to go through, one by one, and click the menu and select the "revoke" option.&nbsp; Needless to say, this is terrible.</p>
<p>The less annoying solution is to just go straight into the database and delete them there.&nbsp; You can just run something like:<br /><code>DELETE FROM oc_authtoken WHERE last_activity &lt; &lt;whatever_timestamp&gt;;</code><br />That might be ugly, but at least it doesn't take forever.</p>
<p>It's important to note that, in addition to being annoying, this is evidently also a performance problem.&nbsp; From what I've read, it's the reason that authenticating to my Nextcloud instance had gotten absurdly slow.&nbsp; The app responded fine once I was logged in, but the login process itself took <em>forever</em>.&nbsp; It also seems to be the reason why my hosting provider's control panel has been showing I'm&nbsp;<em>way</em> over my allotted MySQL execution time.&nbsp; After deleting all those stale sessions, not only is login nice and snappy again, but my MySQL usage dropped off a ledge.&nbsp; Just look at this graph:</p>
<p><a href="https://linlog.skepticats.com/entries/2023/02/25_1821/2023-02-21T17-16-56-020Z.png"><img src="https://linlog.skepticats.com/entries/2023/02/25_1821/2023-02-21T17-16-56-020Z-med.png" alt="2023-02-21T17-16-56-020Z-med.png" /></a></p>
<p>As you can see, January is a sea of red, and then it drops off to be comfortably under the limit after I deleted the old sessions.&nbsp; The Nextcloud team really needs to fix this issue.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 25 Feb 2023 23:21:23 +0000</pubDate>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Note to Self]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2023/02/nextcloud-session-annoyances.php</guid>
      <comments>https://linlog.skepticats.com/entries/2023/02/25_1821/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Komodo is being retired]]></title>
      <link>https://linlog.skepticats.com/entries/2023/02/komodo-is-being-retired.php</link>
      <description><![CDATA[<p>It looks like my old go-to editor, Komodo IDE, <a href="https://www.activestate.com/blog/activestate-komodo-ide-now-open-source/">is being retired</a>. I find this slightly sad, since I was a Komodo Edit and Komodo IDE user for many years.&nbsp; Of course, it's been several years since I used Komodo, but it still feels like a loss to see something you were once very invested in being put out to pasture.&nbsp; Although it is good to see that ActiveState chose to open-source Komodo IDE rather than just letting it die, so bravo!</p>
<p>Of course, when you read the rationale, you can't really disagree.&nbsp; The number of free, high-quality editors and IDEs makes "generic code editor" not exactly the best business to be in.&nbsp; Especially when you're tied to an archaic, end-of-life framework like <a href="https://en.wikipedia.org/wiki/XUL">XUL</a>.&nbsp; And given that they don't exactly have a large team working on Komodo (never more than 4 people, according to the article), rewriting sounds like it would be a pretty huge effort.</p>
<p>Looking at my <a href="https://linlog.skepticats.com/?sb_search_terms=komodo&amp;plugin=sidebar_search&amp;show=sb_search_results">blog history</a> and <a href="https://linlog.skepticats.com/?action=tags&amp;tag=Komodo">tag list</a>, it seems I started using Komodo Edit some time before November of 2008, used that for several years, and then upgraded to Komodo IDE.&nbsp; I posted about <a href="https://linlog.skepticats.com/entries/2017/03/Looking_for_a_new_editor.php">looking for a new IDE</a> in March 2017.&nbsp; So I was a Komodo user for 8+ years.&nbsp; Not&nbsp; bad run.&nbsp; It was a good IDE for a long time.&nbsp; Sadly, I was one of those people who didn't like the UI revamp that came out in version 10.</p>
<p>However, I was somewhat lucky in my timing, because by the time I dropped Komodo, Visual Studio Code had come out.&nbsp; So I was starting to use Vim seriously in the era where&nbsp;<em>language servers were becoming a thing</em>.&nbsp; The importance of the Language Server Protocol (LSP) for making "Vim as IDE" viable cannot be understated.&nbsp; This makes things&nbsp;<em>way</em> easier and better.&nbsp; All you need is a Vim plugin that speaks LSP (I use <a href="https://github.com/neoclide/coc.nvim">coc.nvim</a>), and you can get all the same code intelligence that VS Code does.&nbsp; That means you can get all of the goodness of Vim without having to sacrifice your intellisense.&nbsp; It's a good time to be coding.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 18 Feb 2023 23:20:30 +0000</pubDate>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Komodo]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2023/02/komodo-is-being-retired.php</guid>
      <comments>https://linlog.skepticats.com/entries/2023/02/18_1820/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Finally switching to NextCloud]]></title>
      <link>https://linlog.skepticats.com/entries/2022/07/finally-switching-to-nextcloud.php</link>
      <description><![CDATA[<p>It's the end of an era. (Cue overly dramatic music.)&nbsp; I've been using ownCloud as my personal file/caldav/carddav server for years.&nbsp; This week, I finally decided to switch to NextCloud.&nbsp; This is my story.</p>
<p>The thing is, I actually remember when NextCloud split from ownCloud.&nbsp; At the time, I was working on a (now-defunct) product that involved ownCloud.&nbsp; Basically, my company's core business at the time was data backup, so we had a lot of servers with big disks and were looking for a way to monetize that extra space.&nbsp; The idea at the time was to do that by integrating a "file sync and share" product into our offerings, and that product was a rebranded ownCloud Enterprise.&nbsp; Of course, the "file sync and share" space was already pretty crowded, so that product never gained much traction, but it did help me get more into ownCloud and the company even paid to send me to their user conference in Berlin, where I got to meet their team (who, at the time, seemed not-very-impressed with the whole "NextCloud" thing) and see some sites.&nbsp; So it was actually a great experience, even if the product didn't pan out.</p>
<p>Anyway, despite my affection for ownCloud, my motivation for this change was actually pretty simple and prosaic - I was upgrading my home server (that'll be another post), and I didn't want to downgrade shit.&nbsp; See, I actually run two ownCloud instances - one on my local network for accessing various media files, and another in my web hosting, for caldav/carddav and files that I want to be highly available.&nbsp; For my home instance, I was doing a fresh install of the latest Ubuntu MATE on&nbsp; a brand-new box.&nbsp; This shouldn't be an issue, except that MATE comes with PHP 8.1, but for some reason, ownCloud only supports PHP 7.4.</p>
<p>Yes, you heard that right - 7.4.&nbsp; That's the <em>newest</em> version that's officially supported.&nbsp; The last 7.x release.&nbsp; The one that's <a href="https://www.php.net/supported-versions.php">no longer actively supported</a> and has less than six months of security updates left.&nbsp; That one.&nbsp; That's what they <em>still</em> expect me to use.</p>
<p>For my previous home box, I believe I'd actually hacked up the source a bit to make it work (since I don't think I depended on anything that didn't work in 8.x), but week I was sick and I just didn't feel like it.&nbsp; Depending on a version that's about to lose security fixes is crazy anyway.&nbsp; So I figured I'd "upgrade" to NextCloud, since they actually recommend PHP 8.1.</p>
<p>For my home server, I just did a fresh install, which is fairly straight-forward.&nbsp; The only annoying part was the Apache configuration, and that was only annoying because I was running NextCloud on a non-standard port and forgot to add a "Listen" directive. 🤦&zwj;♂️ For this instance, there was no real need to do any migration, because the only data I had in there was the (very small) list of users - the rest was just files, which can be trivially re-indexed.</p>
<p>Upgrading the instance on my web hosting was another story.&nbsp; Since that had my carddav and caldav data, I really did need to migrate that.&nbsp; I was also already several versions behind on my updates - it was running ownCloud 10.3, whereas 10.8 was current.&nbsp; However, this turned out to be a blessing in disguise.</p>
<p>You see, NextCloud includes support for migrating from an ownCloud instance.&nbsp; The thing is, they only support <em>specific</em> migrations.&nbsp; In my case, the relevant case was that you can migrate from <em>exactly</em> ownCloud 10.5 to NextCloud 20.&nbsp; Sadly, it took me a couple of tries to realize that the version <a href="https://docs.nextcloud.com/server/latest/admin_manual/maintenance/migrating_owncloud.html">migration matrix</a> are exact, so there was no path to directly migrate from ownCloud 10.3 to NextCloud.&nbsp; So I had to use the auto-updater to update ownCloud 10.3 to 10.4, and then manually update ownCloud 10.4 to 10.5 (because the auto-updater wanted to go all the way to 10.8).&nbsp; <em>Then</em> I could follow the migration process and manually update to NextCloud 20.&nbsp; From there, I was able to use the NextCloud auto-updater <em>four times</em> to upgrade to the current version.</p>
<p>So the upgrade process was...tedious.&nbsp; Not really "hard", but definitely tedious.&nbsp; The directions are pretty clear and simple, it's just a lot of steps to get to a current version of NextCloud.&nbsp; But at least none of the steps were particularly complicated or prone to error.&nbsp; As data migrations go, it could be much worse.&nbsp; And the best part is that it maintained URLs and credentials, so I didn't even have to reconfigure my caldav/carddav clients.</p>
<p>As far as NextCloud itself goes, it seems...pretty much like ownCloud, but nicer.&nbsp; They've made the UI prettier (both for the web interface and the client app), added a nice dashboard landing page, and made some other cosmetic improvements.&nbsp; They also seem to have a wider range of installable apps, which is nice.&nbsp; I haven't had all that long to play with it yet, but so far it seems like a distinct upgrade.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 23 Jul 2022 15:16:04 +0000</pubDate>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Free Software]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2022/07/finally-switching-to-nextcloud.php</guid>
      <comments>https://linlog.skepticats.com/entries/2022/07/23_1116/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Duet Air is pretty cool]]></title>
      <link>https://linlog.skepticats.com/entries/2022/06/duet-air-is-pretty-cool.php</link>
      <description><![CDATA[<p>A while back, I posted about <a href="https://linlog.skepticats.com/entries/2021/12/using-your-tablet-as-a-monitor.php">a tool called Duet</a>, which allows you to convert an iPad or Android tablet (or even phone) into an external laptop display.&nbsp; It actually works quite well, and allows you to use either WiFi or USB connections for your tablet monitor.&nbsp; It also support using the touch screen on the tablet to control your desktop, which is pretty cool.</p>
<p>However, I did eventually discover an issue with it.&nbsp; It seems that, on my work laptop (but not my personal one), the "energy efficient" setting doesn't properly support all resolutions.&nbsp; It's a really weird bug, as the other two performance settings ("high power" and "pixel perfect") both work fine, and everything works fine on my personal laptop, but "energy efficient" only works when the resolution is set to maximum on my work laptop.&nbsp; On the up side, their support people have been very responsive and I can just use a different setting, so it's not a big deal.</p>
<p>Anyway, as part of trying to collect more info on this bug for Duet's testing team, I signed up for a trial of Duet Air to see if I could reproduce the issue through that (spoiler: I could).&nbsp; Duet Air enables Duet's "remote desktop" feature, which allows you to use not only mobile devices, but other laptops as external displays.</p>
<p>It's actually a pretty slick feature.&nbsp; You just create an account and sign into all of your devices with it.&nbsp; Then you can go to the "remote desktop" tab in Duet and choose the device you want to connect to.&nbsp; The paradigm is that you use the "display" device to select what you connect to.&nbsp; So, for example, if I want to have four monitors for my work machine, I can open up Duet on my home laptop, select my work laptop, and the home laptop becomes a wireless display.</p>
<p>So far, it's working pretty well.&nbsp; It's easy to use and set up, performant, and it's a tool I'm already using.&nbsp; It's also fairly cheap at $25/year.&nbsp; I think I'll probably continue using it after the trial.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sun, 26 Jun 2022 19:56:55 +0000</pubDate>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Tools]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2022/06/duet-air-is-pretty-cool.php</guid>
      <comments>https://linlog.skepticats.com/entries/2022/06/26_1556/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Poor man's home intercom]]></title>
      <link>https://linlog.skepticats.com/entries/2022/06/poor-mans-home-intercom.php</link>
      <description><![CDATA[<p>A few weeks ago, I decided to set up a DIY home intercom system.&nbsp; This was motivated by the fact that my son has been doing home-school and we set him up a workspace in the basement.&nbsp; This isn't a problem&nbsp;<em>per se</em>, but my wife usually doesn't go down there with him if he's doing independent work, which means there's often yelling up and down the stairs.&nbsp; This is, shall we say... somewhat distracting when I'm trying to work.</p>
<p>I did a little searching for intercom systems, thinking I might buy some hardware, but decided that looked like too much work.&nbsp; We'd have to find a home for it, and then you might not hear it if you were on the other side of the house, unless I put them everywhere, which is an even bigger pain.&nbsp; Besides, it seemed like there should be an app for that.&nbsp; And since we pretty much have our phones close to hand most of the time, that would be more convenient than dedicated hardware anyway.</p>
<p>Turns out there is an app for that.&nbsp; A number of them, actually.&nbsp; The one I decided to go with was <a href="https://zello.com">Zello</a>, which is a fairly simple walkie-talkie app.&nbsp; I went with this one for a few reasons:</p>
<ol>
<li>The mobile app is free, at least for personal use.&nbsp; (There's a PC version too, but that's only for paid corporate accounts.)</li>
<li>It's in the Amazon and Google Play app stores.</li>
<li>It's easy to set up.</li>
<li>It's really easy to use.</li>
</ol>
<p>The setup process for Zello was pretty basic.&nbsp; For my son, I decided to just put it on an old Kindle Fire that I had laying around.&nbsp; It can just sit on the desk, plugged in and ready to use whenever we need to talk to him.&nbsp; My wife and I just put the app on our phones.&nbsp; From there, you just create an account (which only requires basic information) for each device using the app, and then send a contact request to the other accounts.&nbsp; Once your request is accepted, that person will appear in your contact list.</p>
<p>Actually talking to other people is even simpler.&nbsp; You just tap on the person's account from your contact list and then you get a screen with a great big "talk" button in the middle.&nbsp; When you want to talk to the person, you just press and hold the button and start talking, just like an old-fashioned walkie-talkie.&nbsp; When you're done, you release the button.&nbsp; From what I can tell, the connection is&nbsp;<em>not</em> in real-time - it seems like the app records your message and then delivers it, so you are less subject to the vagaries of the network.&nbsp; But barring networking issues, the delay seems to be pretty short - a few seconds in most cases.</p>
<p>The app also has a few other features, including very basic text messaging.&nbsp; There's also a "channels" feature, which I haven't used yet.&nbsp; That's their "group voice chat" feature.&nbsp; Presumably the idea is to mimic a dedicated frequency for a CB radio.&nbsp; The primary use-case for the commercial version of Zello seems to be for fleet dispatchers, so the interface seems geared toward a simple replacement for a traditional radio system.</p>
<p>Overall, the app works pretty well.&nbsp; It was easy to set up and it has definitely saved some frustration in terms of yelling back and forth across the house.&nbsp; Also, my son seems to like using it.&nbsp; He even ends is messages with "over and out".&nbsp; So I count this as a win.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sun, 05 Jun 2022 13:46:52 +0000</pubDate>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Tools]]></category>
      <category><![CDATA[Mobile]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2022/06/poor-mans-home-intercom.php</guid>
      <comments>https://linlog.skepticats.com/entries/2022/06/05_0946/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Using your tablet as a monitor]]></title>
      <link>https://linlog.skepticats.com/entries/2021/12/using-your-tablet-as-a-monitor.php</link>
      <description><![CDATA[<p>The other week I was wondering: can I use my tablet as an external monitor?&nbsp; I mean, it would be nice to have a portable monitor so I can do dual-display on my laptop wherever I go.&nbsp; And I usually have my tablet with me.&nbsp; And it's got a nice 10" display with decent definition.&nbsp; So why not use it as an extra monitor where I can toss my Slack window or something like that?</p>
<p>Unfortunately, it doesn't seem like there's an out-of-the-box way to do this with my Windows laptop and Galaxy S6 Lite tablet.&nbsp; But the good news is that there's software that will make it work pretty painlessly.</p>
<p>The solution I ended up going with was <a href="https://www.duetdisplay.com">Duet</a>.&nbsp; It's a combination of a desktop app and mobile app working in tandem that works for Windows, Mac, Android, and iOS.&nbsp; There is a service you can create an account for, but it's not necessary - you can use the apps locally without signing up for anything.&nbsp; (In fact, I haven't even tried creating an account yet.)&nbsp; By default Duet connects via a USB connection to your device, but you can also enable an option to connect wirelessly over WiFi.&nbsp; The WiFi connection is fine, but at least on my network there was a lot of mouse lag when trying to use apps on the tablet.&nbsp; It's not un<em>usable</em>, but it is un<em>pleasant</em>.&nbsp; The USB connection is super-responsive, though, so I normally just use that.&nbsp; As a nice extra, Duet even allows you to use the touchscreen of the tablet, so if your laptop has a touchscreen (which mine does), your secondary screen will work just the same.&nbsp; Very slick!</p>
<p><a href="https://linlog.skepticats.com/entries/2021/12/18_1820/IMG_20211214_154055.jpg"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://linlog.skepticats.com/entries/2021/12/18_1820/IMG_20211214_154055-small.jpg" alt="IMG_20211214_154055-small.jpg" /></a></p>
<p>The only down side of Duet I've seen so far is that it's not free and there doesn't seem to be a demo version.&nbsp; There's no cost for the desktop component, but the Android app is about $10.&nbsp; That's not exactly a fortune, but it's enough to be annoying if you try it and it doesn't work.&nbsp; Thus my first attempt was with Spacedesk, which <em>is</em> completely free.&nbsp; However, I didn't actually get a chance to try it out, as the desktop driver install experience was...not great.&nbsp; For some reason, it took an uncomfortably long to for the installer to run.&nbsp; Like, after half an hour it was&nbsp;<em>still</em> working.&nbsp; So I clicked "cancel".&nbsp; And then, after&nbsp;<em>another hour</em>, the rollback finally completed and I closed the installer.&nbsp; I have no idea what it was doing, but that was enough to make me not trust it.</p>
<p>Duet, on the other hand, installed fast and worked the first time.&nbsp; The settings are pretty minimal.&nbsp; For the connection, you can change the framerate, performance setting, and resolution.&nbsp; System-wide, you can toggle notifications and "Duet Air", which is what they call the WiFi connection.&nbsp; To connect the tablet, you pretty much just plug it in.&nbsp; Duet on the tablet will prompt you to connect the screen and Duet on the laptop will also detect the connection and add the display.&nbsp; (Of course, if you're using a WiFi connection, it's not that simple.&nbsp; But it's still pretty simple.)&nbsp; After that, the tablet just behaves like a regular touchscreen display.&nbsp; Unfortunately, it only supports one device at a time, so you can't plug in two tablets, or your tablet&nbsp;<em>and</em> your phone, but that's not a huge deal.</p>
<p>So far I'm pretty happy with Duet.&nbsp; It's a nicely done little utility that "just works" and does a useful thing.&nbsp; Definitely worth checking out if you have a device that would make a good extra monitor.</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 18 Dec 2021 23:20:12 +0000</pubDate>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Software]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2021/12/using-your-tablet-as-a-monitor.php</guid>
      <comments>https://linlog.skepticats.com/entries/2021/12/18_1820/comments/</comments>
    </item>
    <item>
      <title><![CDATA[Windows 11 is fine]]></title>
      <link>https://linlog.skepticats.com/entries/2021/12/windows-11-is-fine.php</link>
      <description><![CDATA[<p>A couple of weeks ago I got the notification on my laptop that I could now upgrade to Windows 11.&nbsp; And since I was feeling optimistic that day, I clicked "yes".</p>
<p>I'm not going to do a "review of Windows 11" post, though.&nbsp; Not because I'm lazy or pressed for time (though I don't deny those charges), but really just because I don't have that much to say.&nbsp; I mean, so far Windows 11 is fine.&nbsp; And I don't mean that in the sarcastic, room-on-fire-this-is-fine meme sort of way.&nbsp; My experience has been genuinely&nbsp;<em>fine</em>.&nbsp; It's not a phenomenal, life-changing upgrade, but I haven't had any problems either.</p>
<p>For the most part, I haven't really noticed much of a change from Windows 10.&nbsp; Yeah, now windows have more rounded corners and the UI in general got kind of a face lift, but those are mostly cosmetic changes.&nbsp; They added some handy window management features that I use on occasion, but I haven't discovered any major features that strike me as must-have's.&nbsp;&nbsp;</p>
<p>The one change I&nbsp;<em>did</em> immediately notice was the start menu.&nbsp; I really don't like the new start menu.&nbsp; I think it's much less useful than the one from Windows 10.&nbsp; For one, the default position is in the middle of the screen, which seems like a pointless change.&nbsp; However, there's a setting to easily change that.&nbsp; But beyond that, it doesn't allow much customization and seems much more focused on being a glorified search box than a menu.&nbsp; You can still pin items to the start menu, but the option to arrange them into groups is gone.&nbsp; Also, the pinned area is now smaller and paginated, which is kind of annoying.</p>
<p><a title="The new Windows 11 Start menu" href="https://linlog.skepticats.com/entries/2021/12/04_1820/2021-11-27T14-22-18-212Z.png"><img style="display: block; margin-left: auto; margin-right: auto;" src="https://linlog.skepticats.com/entries/2021/12/04_1820/2021-11-27T14-22-18-212Z-small.png" alt="2021-11-27T14-22-18-212Z-small.png" /></a></p>
<p>Fortunately, that can be changed too.&nbsp; There are a few options out there for start menu replacement in Windows 11.&nbsp; I went with Stardock's <a href="https://www.stardock.com/products/start11/">Start11</a>, which give you quite a few options in terms of customizing the start menu experience, including versions of the Windows 10 menu and the "classic" Windows 7 style menu.&nbsp; On top of this, it gives you a number of other settings to manipulate the look and behavior of the start menu and taskbar, such as controlling transparency and texture, swapping out the start button image, and controlling click behavior.&nbsp; It's actually quite well done, and with a $6 price tag, it's kind of a no-brainer if you don't like the new menu.</p>
<p><a title="The Start11 start menu set to emulate Windows 10" href="https://linlog.skepticats.com/entries/2021/12/04_1820/2021-11-27T14-10-15-829Z.png"><img src="https://linlog.skepticats.com/entries/2021/12/04_1820/2021-11-27T14-10-15-829Z-small.png" alt="2021-11-27T14-10-15-829Z-small.png" /></a></p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 04 Dec 2021 23:20:03 +0000</pubDate>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Tools]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2021/12/windows-11-is-fine.php</guid>
      <comments>https://linlog.skepticats.com/entries/2021/12/04_1820/comments/</comments>
    </item>
    <item>
      <title><![CDATA[CoC for Vim]]></title>
      <link>https://linlog.skepticats.com/entries/2021/08/coc-for-vim.php</link>
      <description><![CDATA[<p>A few weeks ago, I was looking into Typescript a bit.&nbsp; I've heard lots of good things about it, but never had a chance to play with it.&nbsp; However, I got tasked with some updates to my company's portal site.&nbsp; (While not technically my team's responsibility, the portal team was swamped, so I agreed to make the required updates to support a&nbsp; back-end feature my team added.)&nbsp; And, of course, the portal team uses Typescript.</p>
<p>Naturally, most of the editing recommendations for Typescript are focused on Visual Studio Code.&nbsp; But I like Vim, so I did a quick search and found <a href="https://pragmaticpineapple.com/ultimate-vim-typescript-setup/">this article</a>, which led me to CoC (which I choose to pronounce "coke", like the soda), which stands for the slightly ungrammatical "Conquer of Completion".&nbsp; It's a plugin for NeoVim and Vim that essentially does Intellisense (code completion, context popups, etc.) using language servers.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://linlog.skepticats.com/entries/2021/08/14_1821/html-completion.png" alt="" width="800" /></p>
<p>If you're not familiar, the <a href="https://langserver.org">Language Server Protocol</a> (abbreviated LSP, though that always makes me think of the <a href="https://reflectoring.io/lsp-explained/">Liskov Substitution Principle</a>) was developed by Microsoft for VS Code.&nbsp; It's essentially a way to make Intellisense work without the editor having to implement support for each language.&nbsp; It does this by defining a protocol that "clients" like an editor can use to communicate with a "language server".&nbsp; The language server is a stand-alone program that can provide code intelligence for a particular language, but is not directly tied to any particular editor.&nbsp; The server can then be called by any client that implements the protocol, which means that the editor itself doesn't actually have to know anything about the language to implement advanced editing features - which is <em>huge</em>.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://linlog.skepticats.com/entries/2021/08/14_1821/php-completion.png" alt="" width="800" /></p>
<p>Anyway, CoC is an LSP client for Vim.&nbsp; And I have to say,&nbsp;<em>it's awesome</em>!&nbsp; I've messed with a few code completion and LSP plugins in the past, but I never really got them to work right.&nbsp; They were either difficult to configure, or required Vim to be built with particular non-standard options.&nbsp; But CoC was dead-simple to set up.&nbsp; The only catch is that you have to install the language servers separately, but it turns out that's super-simple as well.&nbsp; (The ones I've used so far can all be installed through NPM.)</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://linlog.skepticats.com/entries/2021/08/14_1821/strpos-info.png" alt="" width="800" /></p>
<p>I'm still getting used to it, but having CoC is a game changer for Vim.&nbsp; I'd given up on having this level of intelligence in my editor.&nbsp; I mean, for something that supports as many languages as Vim, building it the old-fashioned way just isn't feasible.&nbsp; But when you can use the same language servers as more modern editors to do the heavy lifting, suddenly it's no longer crazy.</p>
<p>The next step is to look into the available commands and customizations for CoC and see what I can come up with to optimize my experience.&nbsp; So far it's a pretty cool tool and it definitely makes the development experience nicer.&nbsp; I want to see what else I can do with it.</p>
<p>&nbsp;</p>]]></description>
      <author><![CDATA[pageer@skepticats.com (Peter Geer)]]></author>
      <pubDate>Sat, 14 Aug 2021 22:21:37 +0000</pubDate>
      <category><![CDATA[Vim]]></category>
      <category><![CDATA[Software]]></category>
      <category><![CDATA[Programming]]></category>
      <category><![CDATA[Tools]]></category>
      <guid isPermalink="true">https://linlog.skepticats.com/entries/2021/08/coc-for-vim.php</guid>
      <comments>https://linlog.skepticats.com/entries/2021/08/14_1821/comments/</comments>
    </item>
  </channel>
</rss>
