<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Frederick Robinson</title>
    <description>Home page of Frederick Robinson.</description>
    <link>http://www.frrad.com/</link>
    <atom:link href="http://www.frrad.com/feed.xml" rel="self" type="application/rss+xml" />
    
      <item>
        <title>SNCF Error</title>
        <description>&lt;p&gt;I tried to buy a ticket on &lt;sncf-connect.com&gt; and was presented with the following error:&lt;/sncf-connect.com&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/error-message.png&quot; alt=&quot;Error Message&quot; /&gt;&lt;/p&gt;

&lt;p&gt;“No retrieval options available for this journey. Seats on this train cannot be reserved. Select another journey.”&lt;/p&gt;

&lt;p&gt;Which doesn’t really tell you anything. A bit more searching&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;CART_NO_DELIVERY_MODE_AVAILABLE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/booking/no-delivery-mode-available&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;behaviour&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;UNRECOVERABLE&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;details&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;No retrieval options available for this journey. Seats on this train cannot be reserved. Select another journey.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;description&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;message&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;No retrieval options available for this journey. Seats on this train cannot be reserved. Select another journey.&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;cause&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Reservation error&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/errors/reservation/reservation-error&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;status&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;turns up this page: &lt;a href=&quot;https://www.sncf-connect.com/en-be/help/eticket-not-offered&quot;&gt;https://www.sncf-connect.com/en-be/help/eticket-not-offered&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;which is a bit more helpful:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;if you have a few different journey legs included in your booking, it could be
that the various ticket collection types might not be compatible with each
other. in this case, we can offer you home delivery, which is the most common
collection method for all carriers. depending on the date of your journey,
however, sometimes the time frame for receiving your tickets may be too short,
meaning it’s impossible to reserve your trip.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;p&gt;don’t panic! here are some tips ;)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;p&gt;you just need to make a separate booking for each section of your journey, and
if the journey is eligible for an e-ticket, this option will be offered.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Thu, 24 Feb 2022 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog,/sncf/2022/02/24/sncf-connect/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog,/sncf/2022/02/24/sncf-connect/</guid>
      </item>
    
      <item>
        <title>Migrating data to a new ZFS Pool</title>
        <description>&lt;p&gt;I recently had to migrate my data to a new ZFS pool. There was lots of great
info in this &lt;a href=&quot;https://serverfault.com/questions/88638/moving-a-zfs-filesystem-from-one-pool-to-another&quot;&gt;serverfault
post&lt;/a&gt;. I’m
writing this to bring it all together in one place for the next time I need to
remember how to do this.&lt;/p&gt;

&lt;p&gt;First, create a snapshot on the source pool, and send it to the new pool. You
can leave your source pool online while the snapshot is being sent.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs snapshot -r sourcepool@moving1

# Maybe do this next bit a screen. It can take a while.
sudo zfs send -R sourcepool@moving1 | mbuffer \
    | sudo zfs receive -F destpool
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Since that step probably took a while, there are probably difference between the
snapshot and what’s on your new pool. Take a new snapshot and send it. You can
do an incremental send which should be much faster than the first send.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs snapshot -r sourcepool@moving2

sudo zfs send -Ri sourcepool@moving1 sourcepool@moving2 | mbuffer \
    | sudo zfs receive -F destpool
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, we’ll have some downtime. Stop everything that’s currently accessing the
old pool. You can check what’s using your pool with:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo lsof | grep /my/mountpoint
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now that nothing is using the original pool we no longer have a moving target to
copy over. Do one last snapshot and send.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs snapshot -r sourcepool@moving3

sudo zfs send -Ri sourcepool@moving2 sourcepool@moving3 | mbuffer \
    | sudo zfs receive -F destpool
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;At this point, both pools should have exactly the same data. All that’s left is
to mount the new pool where the old one was.&lt;/p&gt;

&lt;p&gt;Before changing how things are mounted, you can double check your current
mountpoint with.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs get mountpoint sourcepool 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, rearrange&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;zfs set mountpoint=/backup/mountpoint sourcepool
zfs set mountpoint=/original/mountpoint destpool
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After you’re satisfied that everything worked, you can destroy the snapshots you used to migrate.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs destroy destpool@moving1
sudo zfs destroy destpool@moving2
sudo zfs destroy destpool@moving3
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Optionally, destroy the old pool.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo zfs destroy sourcepool
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Fri, 14 Aug 2020 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog,/zfs/2020/08/14/migrate-zfs/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog,/zfs/2020/08/14/migrate-zfs/</guid>
      </item>
    
      <item>
        <title>Previewing Jekyll on Chrome OS</title>
        <description>&lt;p&gt;It’s nice to be able to preview how Jekyll will render my GitHub Pages site
before merging a new post. There is a minor wrinkle in Chrome OS which means that
the default &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Jekyll serve&lt;/code&gt; does not work.&lt;/p&gt;

&lt;p&gt;At first I tired to install Jekyll deps as per &lt;a href=&quot;https://jekyllrb.com/docs/installation/ubuntu/&quot;&gt;the
docs&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo apt-get install ruby-full build-essential zlib1g-dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then I tried to install as root. The docs advise against this, but I don’t want
go to the trouble of setting up a bunch of stuff in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.zshrc&lt;/code&gt; for ruby which I
don’t plan to use except for Jekyll. When I tried to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo gem install jekyll
bundler&lt;/code&gt; I got the following error:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ERROR:  Error installing jekyll:
        jekyll-sass-converter requires Ruby version &amp;gt;= 2.4.0.
Successfully installed bundler-2.0.2
Parsing documentation for bundler-2.0.2
Done installing documentation for bundler after 28 seconds
1 gem installed
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Fortunately, I noticed that there’s a version of Jekyll available via apt so a
quick &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo apt install jekyll&lt;/code&gt; is all that’s required to install.&lt;/p&gt;

&lt;p&gt;To run, use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jekyll serve -P 4200&lt;/code&gt;. It defaults to trying to use port 4000 which
is blocked by the default crostini port forwarding configuration. This &lt;a href=&quot;https://www.reddit.com/r/Crostini/comments/99s3t9/wellknown_ports_are_now_autoforwarded_to_the/&quot;&gt;reddit
post&lt;/a&gt;
has a more complete list of what ports work.&lt;/p&gt;
</description>
        <pubDate>Mon, 14 Oct 2019 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2019/10/14/jekyll-chromeos/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2019/10/14/jekyll-chromeos/</guid>
      </item>
    
      <item>
        <title>Installing Mizar</title>
        <description>&lt;p&gt;Mizar is a system for formalizing mathematical proofs.&lt;/p&gt;

&lt;p&gt;It can be downloaded &lt;a href=&quot;http://mizar.org/system/index.html#download&quot;&gt;here&lt;/a&gt;. The
server with the binaries wasn’t up one of the times I tried to download it.&lt;/p&gt;

&lt;p&gt;Nevertheless, I did eventually manage to get a copy with&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;FILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;mizar-8.1.09_5.57.1355-i386-linux.tar
wget &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; http://mizar.uwb.edu.pl/~softadm/current/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;FILE&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;(it stalled a few times, thus the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-c&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Extract and install with&lt;/p&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;tar &lt;/span&gt;xvf &lt;span class=&quot;nv&quot;&gt;$FILE&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo&lt;/span&gt; ./install.sh &lt;span class=&quot;nt&quot;&gt;--default&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finally, verify that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$PATH&lt;/code&gt; contains the install path and setup a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MIZFILES&lt;/code&gt; var&lt;/p&gt;
&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$PATH&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;usr/local/bin
&lt;span class=&quot;nv&quot;&gt;CONFIG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;~/.zshrc
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;export MIZFILES=/usr/local/share/mizar&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$CONFIG&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$CONFIG&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$MIZFILES&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After setup is complete you can verify your installation by checking the smallest legal proof&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mkdir dict text
touch dict/my_mizar.voc
echo &quot;environ\nbegin\n&quot; &amp;gt; text/my_mizar.miz 
mizf text/my_mizar.miz 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If all goes well output should look like this&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Make Environment, Mizar Ver. 8.1.09 (Linux/FPC)
Copyright (c) 1990-2019 Association of Mizar Users

-Vocabularies  [   1]
-Constructors  [   1]
-Requirements  [   1]
-Registrations [   1]
-Notations     [   1]

Verifier based on More Strict Mizar Processor, Mizar Ver. 8.1.09 (Linux/FPC)
Copyright (c) 1990-2019 Association of Mizar Users
Processing: text/my_mizar.miz

Parser   [   3]   0:00
MSM      [   2]   0:00
Analyzer   0:00
Checker  [   1]
Time of mizaring: 0:00
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Mon, 14 Oct 2019 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2019/10/14/install-mizar/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2019/10/14/install-mizar/</guid>
      </item>
    
      <item>
        <title>Google Fi with Google Voice</title>
        <description>&lt;p&gt;Google Fi does some magical VOIP type things with your phone service, but it
doesn’t play nice with Google Voice. You can’t have both Google Voice and Fi on
the same Google account. (Here’s a Google Fi &lt;a href=&quot;https://support.google.com/fi/answer/6246240?hl=en&quot;&gt;help
article&lt;/a&gt; about the issue.)
You also can’t forward your Google Voice number to a Fi number as you would with
a normal carrier phone number. (I think there may be some workarounds for this,
but don’t remember the specifics).&lt;/p&gt;

&lt;p&gt;There are a few options:&lt;/p&gt;

&lt;h2 id=&quot;get-fi-and-transfer-your-google-voice-number-to-it&quot;&gt;Get Fi and transfer your Google Voice number to it&lt;/h2&gt;
&lt;p&gt;This is actually not a terrible option if you are going to use Fi long term as
it has some of the nice features of Google Voice baked in. However, one of the
things I like the most about Google Voice is the flexibility of being able to
change plans which this option reduces. You can transfer your number back to
Google Voice after leaving Fi, but it’s not the magical seamless process of not
changing anything.&lt;/p&gt;

&lt;h2 id=&quot;get-fi-on-a-different-google-account-with-a-different-number&quot;&gt;Get Fi on a different Google account with a different number&lt;/h2&gt;
&lt;p&gt;You can have two accounts on your phone and all the texting features of Google
Voice will still work. To make phone calls you can use the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.hangoutsdialer&quot;&gt;Hangouts Dialer
App&lt;/a&gt;
to make them over data with your Google Voice number or use the native dialer to
make them over non-data with your Fi number. This is a sort of ugly split-brain
setup, but is fine especially if you are just using Fi short term for i.e. the
amazing international coverage&lt;/p&gt;

&lt;h2 id=&quot;dont-use-fi-at-all-this-is-the-one-i-would-choose&quot;&gt;Don’t use Fi at all. (This is the one I would choose.)&lt;/h2&gt;
&lt;p&gt;It’s actually not a super great plan apart from the international coverage. Plus
all the hassle with Google Voice is not great.&lt;/p&gt;

&lt;p&gt;You can find much better value/ $ plans. For instance I currently have the “AT&amp;amp;T
Prepaid $50/month plan”. It’s actually $40/month if you sign up for auto pay and
you get 8G, so as long as you use &amp;gt;2G and &amp;lt;8G/month it beats the Fi plan.&lt;/p&gt;

&lt;p&gt;If you don’t think you’ll use that much data you can find MVNO plans that are
“pay for what you use” in the same way as Fi, but for less. (“Ting” is the one
that sticks in my head, but I haven’t really researched these plans. They tend
to be relatively expensive per usage and only make sense if you think you won’t
use much)&lt;/p&gt;

&lt;p&gt;In general, check out &lt;a href=&quot;https://www.reddit.com/r/NoContract&quot;&gt;r/NoContract&lt;/a&gt; for
probably better phone plan recommendations.&lt;/p&gt;
</description>
        <pubDate>Thu, 01 Aug 2019 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2019/08/01/google-voice-fi/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2019/08/01/google-voice-fi/</guid>
      </item>
    
      <item>
        <title>ChromeOS Terminal Keybindings</title>
        <description>&lt;p&gt;By default &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Alt - Backspace&lt;/code&gt; doesn’t work in ChromeOS terminal.&lt;/p&gt;

&lt;p&gt;To fix, access the settings by hitting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Control+Shift+P&lt;/code&gt; or &lt;a href=&quot;chrome-extension://nkoccljplnhpfnfiajclkommnmllphnl/html/nassh_preferences_editor.html&quot;&gt;use this
link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then you can change the settings in the Keyboard section. The one to fix
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Alt+Backspace&lt;/code&gt; is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Alt+Backspace is Meta-Backspace&lt;/code&gt;.&lt;/p&gt;
</description>
        <pubDate>Sun, 28 Jul 2019 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2019/07/28/chromeos-keybindings/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2019/07/28/chromeos-keybindings/</guid>
      </item>
    
      <item>
        <title>Python SQLite3 Versions</title>
        <description>&lt;p&gt;The version of sqlite you get when you do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;import sqlite3&lt;/code&gt; in python is is
determined by the version of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libsqlite3&lt;/code&gt; installed on your system, not the
version of the binary.&lt;/p&gt;

&lt;p&gt;To check what version of sqlite you are using you can check the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sqlite_version&lt;/code&gt;
string like this&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;user@penguin&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;python3
Python 3.5.3 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;default, Sep 27 2018, 17:25:39&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; 
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;GCC 6.3.0 20170516] on linux
Type &lt;span class=&quot;s2&quot;&gt;&quot;help&quot;&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;&quot;copyright&quot;&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;&quot;credits&quot;&lt;/span&gt; or &lt;span class=&quot;s2&quot;&gt;&quot;license&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;more information.
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; import sqlite3
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; sqlite3.sqlite_version
&lt;span class=&quot;s1&quot;&gt;&apos;3.16.2&apos;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To upgrade to a more recent version in Debian Stretch it may be necessary to get
the package from backports.&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;deb http://deb.debian.org/debian stretch-backports main&quot;&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;sudo tee&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; /etc/apt/sources.list
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt-get update
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt-get &lt;span class=&quot;nt&quot;&gt;-t&lt;/span&gt; stretch-backports &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;libsqlite3-dev&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Tue, 09 Jul 2019 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2019/07/09/sqlite3-versions/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2019/07/09/sqlite3-versions/</guid>
      </item>
    
      <item>
        <title>Garuda Indonesia Fraud Email</title>
        <description>&lt;p&gt;&lt;em&gt;Update: got seemingly Garuda-related fraud on this card a while after doing
this&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just got the follwing email from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GarudaVerification &amp;lt;GarudaVerification@garuda-indonesia.com&amp;gt;&lt;/code&gt;. It seems pretty sketchy but discussion on &lt;a href=&quot;https://www.facebook.com/garudaindonesia/posts/1117281248386596&quot;&gt;this facebook post&lt;/a&gt; seems to indicate that it is real.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Dear Sir/Madam,

Please be informed that your transactions with Garuda Indonesia has been
confirmed. For fraud prevention purposes on Credit Card transaction, we would
like to validate your recent transaction with Garuda Indonesia by providing
information, as follow:

Passenger(s) name :
Route :
Date of Travel :
Cardholder name :

Please kindly provide only scanned/image of front side credit card used for
buying the ticket for validation purposes.

Please reply this email in 24 hours after received this email to secure your
flight.

Thank you for your cooperation.

Best Regards,
Verification Data Management
PT. GARUDA INDONESIA (Persero) Tbk
Management Building Garuda City 1st Floor, Soekarno-Hatta International
Airport, CGK 19120, Indonesia
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Called Garuda in Indonesia at +622123519999. They confirmed that this is indeed a legitimate email.&lt;/p&gt;
</description>
        <pubDate>Mon, 04 Sep 2017 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2017/09/04/garuda-fraud/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2017/09/04/garuda-fraud/</guid>
      </item>
    
      <item>
        <title>Tor eBook of the Month Club</title>
        <description>&lt;p&gt;&lt;strong&gt;Last Update: June 2017&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tor offers an &lt;a href=&quot;http://ebookclub.tor.com/&quot;&gt;eBook of the month club&lt;/a&gt;. In return for signing up for a moderate amount of (unsubscribable) spam they send you a DRM free ebook every month. They offer both .epub and .mobi formats. So far the books have been very good too.&lt;/p&gt;

&lt;p&gt;Here’s the list so far:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Month&lt;/th&gt;
      &lt;th&gt;Year&lt;/th&gt;
      &lt;th&gt;Title&lt;/th&gt;
      &lt;th&gt;Author&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;July&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;The Three-Body Problem&lt;/td&gt;
      &lt;td&gt;Cixin Liu&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;August&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;The Just City&lt;/td&gt;
      &lt;td&gt;Jo Walton&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;September&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Gardens of the Moon&lt;/td&gt;
      &lt;td&gt;Steven Erikson&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;October&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Range of Ghosts&lt;/td&gt;
      &lt;td&gt;Elizabeth Bear&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;November&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;Spin&lt;/td&gt;
      &lt;td&gt;Robert Charles Wilson&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;December&lt;/td&gt;
      &lt;td&gt;2016&lt;/td&gt;
      &lt;td&gt;The Towers of the Sunset&lt;/td&gt;
      &lt;td&gt;L.E. Modesitt, Jr.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;January&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;Off Armageddon Reef&lt;/td&gt;
      &lt;td&gt;David Weber&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;February&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;The Bloodline Feud&lt;/td&gt;
      &lt;td&gt;Charles Stross&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;March&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;Shadow &amp;amp; Claw&lt;/td&gt;
      &lt;td&gt;Gene Wolfe&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;April&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;Deathless&lt;/td&gt;
      &lt;td&gt;Catherynne M. Valente&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;May&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;A Fire Upon the Deep&lt;/td&gt;
      &lt;td&gt;Vernor Vinge&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;June&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;Old Man’s War&lt;/td&gt;
      &lt;td&gt;John Scalzi&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;July&lt;/td&gt;
      &lt;td&gt;2017&lt;/td&gt;
      &lt;td&gt;Kushiel’s Dart&lt;/td&gt;
      &lt;td&gt;Jacqueline Carey&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        <pubDate>Thu, 09 Mar 2017 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog/2017/03/09/tor-ebook-of-the-month/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog/2017/03/09/tor-ebook-of-the-month/</guid>
      </item>
    
      <item>
        <title>Retrieving Saved Wifi Passwords on ChromeOS</title>
        <description>&lt;p&gt;I was trying to retrieve the stored passwords from my chromebook. I came across &lt;a href=&quot;http://www.guidingtech.com/54928/view-saved-wifi-passwords-chromebook/&quot;&gt;this blogpost&lt;/a&gt; but their instructions had a few unnecessary steps.&lt;/p&gt;

&lt;p&gt;Here’s the ugly one-line version:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;(grep &quot;Name=&quot; /home/root/*/shill/shill.profile | cut -c 6- |&apos;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&apos;sed &quot;s/\(^.*$\)/id:   \1/&quot; | nl &amp;amp;&amp;amp; grep Passphrase /home/root/*/shill/shill.profile|&apos;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&apos;tr &quot;!-~&quot; &quot;P-~!-O&quot; | cut -c 18-| sed &quot;s/\(^.*$\)/pass: \1/&quot; | nl ) | sort -n |&apos;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;&apos;sed &quot;s/\(.*pass:.*\)/\1\n/&quot;&apos;&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Just paste it into crosh shell. It should produce output like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
     1  id:   home
     1  pass: mypassw0rd

     2  id:   my_network
     2  pass: xtrasecure!

     3  id:   coffee_shop_wifi
     3  pass: cleverPassw0rd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Sat, 04 Mar 2017 00:00:00 +0000</pubDate>
        <link>http://www.frrad.com/blog,chromeos/2017/03/04/chromeos-wifi-passwords/</link>
        <guid isPermaLink="true">http://www.frrad.com/blog,chromeos/2017/03/04/chromeos-wifi-passwords/</guid>
      </item>
    
  </channel>
</rss>
