Aquileo | http://helpful.cat-v.org:80/Blog/index.rss en-usTue, 09 Jul 2024 23:03:38 -0400Aquileo | http://helpful.cat-v.org:80/Blog/2024/07/07/0/ http://helpful.cat-v.org:80/Blog/2024/07/07/0/Sat, 16 Nov 2024 20:57:13 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p><img src="http://img.stanleylieber.com/src/24253/img/small.1713199765.png" alt="illustration by sl of an ebay listing for a custom action figure head for the x-men character jubilee, chewing gum and blowing a bubble" /></p> <p>I honestly never thought it would come to this. First, Bell Labs software was released under a series of increasingly permissive licenses (<a href="https://en.wikipedia.org/wiki/Domino_theory">Domino Theory</a>, anyone?), and now people are using Plan 9 to produce finished, camera ready artwork for comic books.</p> <p>Well, I am, anyway.</p> <h2>Preamble</h2> <p>I am not skilled at using drawing tablets that don&rsquo;t have screens. I&rsquo;ve tried and failed to develop the eye-hand coordination necessary to make efficient use of them. It turns out I just want to draw as if on paper. The only real answer has always been Wacom, for better or worse.</p> <p>It all started with a <a href="http://www.ruggedpcreview.com/3_slates_motion_ls800.html">Motion Computing LS800</a>, which I paid a lot of money for, and which ended up being mostly useless. It ran Windows XP Tablet Edition, badly. It also overheated frequently, making the handheld device difficult to use while holding it in your hand.</p> <p>Lenovo helpfully released the <a href="https://www.thinkwiki.org/wiki/Category:X41_Tablet">ThinkPad X41 Tablet</a> just as I got fed up with the LS800. This thing also shipped with Windows XP Tablet Edition, but as a bonus it was also capable of running Linux (and later, <a href="http://osx.stanleylieber.com">Mac OSX</a>), where I quite happily drew entire comic books in Manga Studio and Photoshop. Eventually, I even got the <a href="http://openbsd.stanleylieber.com/hardware/thinkpad/x41t/1866-9mu/linuxwacom/">tablet function working in OpenBSD</a>.</p> <p>Problem was, none of this was happening in 9front. Mainly because it didn&rsquo;t yet exist.</p> <h2>Hardware</h2> <h3>Lenovo ThinkPad X41 Tablet, X60 Tablet, X61 Tablet</h3> <p>Fast forward a few years, and I sent the X41 Tablet to aiju, who wrote a <code>bcm</code> driver for its Ethernet, and made the tablet function work in 9front. This code also worked for the X60 and X61 Tablets, which kept me in business for several more years (in fact, I still draw using an X60 Tablet to this day). The Wacom in all three of these ThinkPads is a serial device, which 9front arranges to interpret as a mouse. Here&rsquo;s how you set them up.</p> <p>Add the following to to your <a href="http://man.9front.org/8/plan9.ini">plan9.ini</a> to setup the serial port at boot time:</p> <pre><code> uart2=type=isa port=0x200 irq=5 </code></pre> <p>Run the following to enable the Wacom as a mouse device. I put it in <code>$home/lib/riostart</code>:</p> <pre><code> ; aux/wacom ; aux/tablet &amp; </code></pre> <p>Note: There exists <a href="https://inbox.vuxu.org/9front/3BB4C362-D2BC-4406-A829-5C792A8BAB97@stanleylieber.com/T/#t">a bug</a> in the driver that results in occasional spurious readings of the x and y coordinates from the Wacom. The result when trying to draw is unintentional straight lines all over your drawing. I tried to fix this myself, and succeeded at eliminating the symptoms by simply ignoring the spurious coordinates with this <a href="http://plan9.stanleylieber.com/hardware/thinkpad/x60t/tablet.patch">patch to tablet.c</a>, but I do not understand how to fix the underlying problem with the driver, and nobody else showed any interest, so as of this writing 9front still ships glitchy code.</p> <h3>Lenovo ThinkPad X230 Tablet, X380 Yoga, X1 Yoga Gen 3, X1 Titanium Yoga</h3> <p>Some modern ThinkPads come with an integrated USB Wacom tablet. They generally &ldquo;just work,&rdquo; with both the touchscreen and pen being treated as a mouse. They&rsquo;re also usually recognized as separate devices, so it&rsquo;s possible to disable one or the other simply by killing the associated <a href="http://man.9front.org/4/nusb">nusb/kb</a> process. Trial and error is required to figure out which is which. On my machines, the first <code>kb</code> proc is usually the touchscreen.</p> <p>Machines with USB Wacom are not subject to the bug that causes glitching on serial Wacom tablets.</p> <h3>Lenovo ThinkPad X280, et al</h3> <p>Many modern ThinkPads have a touchscreen option. No pen. Some of these are not even Wacom touchscreens, but every one I&rsquo;ve tried has been detected as a USB mouse, and &ldquo;just works.&rdquo; These are less useful than a full Wacom with pen because 9front has no mechanism for palm rejection.</p> <h3>Other companies besides Lenovo have made machines with integrated tablets</h3> <p>I just haven&rsquo;t tried any of them with 9front.</p> <h2>Software</h2> <h3>paint(1)</h3> <p><img src="http://img.stanleylieber.com/src/24437/img/small.1720394916.png" alt="paint(1) 2012" /></p> <p>I&rsquo;ve never put in the work to become a competent C programmer. Too busy reading comic books, foreign literature, and the complete <a href="https://9fans.topicbox.com">9fans</a> and <a href="http://sam.cat-v.org/sam-fans/">sam-fans</a> archives several times over. To say nothing of writing my own books, recording music, and working a full-time job that does not involve programming. Around the time <code>aux/wacom</code> and <code>aux/tablet</code> first appeared, aiju wrote me a toy drawing program, which I fiddled around with ineptly until cinap_lenrek finally lost his patience and dashed off <a href="http://man.9front.org/1/paint">paint(1)</a>, the original 9front drawing program.</p> <p>It&rsquo;s great.</p> <p><img src="http://img.stanleylieber.com/src/24438/img/small.1720394970.png" alt="paint(1) 2015" /></p> <h3>dpaint</h3> <p><img src="http://img.stanleylieber.com/src/24440/img/small.1720395074.png" alt="dpaint" /></p> <p><a href="http://shithub.us/thedaemon/dpaint/HEAD/info.html">dpaint</a> is a gently modified version of paint(1) by <a href="https://hj.9fs.net/thedaemon">thedæmon</a>. Its chief benefit is a greatly expanded color palette, which comes in handy for obvious reasons. I&rsquo;ve been trying to get him to add a spraypaint tool.</p> <h3>uxn</h3> <p><a href="https://wiki.xxiivv.com/site/uxn.html">uxn</a> is a virtual macine with 32 instructions. It runs just about everywhere, including on 9front. It boasts several drawing programs, more than one of which already has a spraypaint tool.</p> <h3>noodle</h3> <p><img src="http://plan9.stanleylieber.com/uxn/img/20210918.noodle.png" alt="2021.09.18" /></p> <p><a href="https://wiki.xxiivv.com/site/noodle.html">noodle</a> was the first <code>uxn</code> program I tried. It seems largely inspired by the original <a href="http://macpaint.org">Macpaint</a>, and offers some neat features like native <a href="https://wiki.xxiivv.com/site/chr_format.html">.chr</a> format and support for rudimentary animations. Unfortunately, on 9front&rsquo;s port of <code>uxn</code>, most of its actual drawing tools exhibit a strange bug where the pointer lags severely behind the movement of the pen. Especially strange because the bug <em>only</em> manifests in <code>noodle</code>, and not in any other <code>uxn</code> program.</p> <h3>oekaki</h3> <p><img src="http://img.stanleylieber.com/src/24441/img/small.1720395965.png" alt="oekaki" /></p> <p><a href="https://wiki.xxiivv.com/site/oekaki.html">oekaki</a> is similar to <code>noodle</code>, but comes with better tools, and doesn&rsquo;t exhibit any bugs on 9front. Recently, it has grown support for <code>uxn</code>&rsquo;s <a href="https://wiki.xxiivv.com/site/theme.html">theming system</a>, which allows the user to define custom palettes. Unfortunately, this change also reduced the number of default patterns, disrupting my established workflow. I&rsquo;m sticking with an <a href="http://plan9.stanleylieber.com/uxn/roms/ooekaki.rom">older version</a> for now.</p> <p><img src="http://img.stanleylieber.com/src/24138/img/small.1709607201.png" alt="sl's dining room w/ mnt reform laptop" /></p> <h3>minivmac</h3> <p><img src="http://img.stanleylieber.com/src/24442/img/small.1720396428.png" alt="minivmac" /></p> <p>Another option involving virtualization is to install <a href="https://git.sr.ht/~ft/minivmac">minivmac</a> and literally run ancient Macintosh graphics applications, such as Macpaint, Macdraw, Photoshop, etc. This works surprisingly well, and even though this stuff is old, it&rsquo;s worth noting that most of it is newer than the cutting edge of what was available back when I started dreaming about drawing comic books on computers. <a href="https://en.wikipedia.org/wiki/Mike_Saenz">Mike Saenz</a> from 1984 would definitely be jealous.</p> <h3>tweak(1), spred(1), et al</h3> <p>Before we complete our tour of drawing software, I should probably mention that 9front also ships a couple of primitive image editors that operate on a programmatic, rather than a gestural drawing basis. Over the years they&rsquo;ve mainly been used to revise fonts and simple graphics such as mouse pointers, message alerts, and <a href="http://man.9front.org/6/face">face(6)</a> files. For example, <a href="http://man.9front.org/1/mothra">mothra(1)</a>&rsquo;s <code>moth mode</code> cursor was designed using <a href="http://man.9front.org/1/tweak">tweak(1)</a>. A later program, <a href="http://man.9front.org/1/spred">spred(1)</a>, was mainly intended for editing sprite sheets for video games.</p> <p><code>tweak(1)</code>&rsquo;s man page acknowledges:</p> <pre><code> For a program written to adjust width tables in fonts, tweak has been pushed unreasonably far. </code></pre> <p><code>uxn</code> offers a handful of similar utilities. <a href="https://wiki.xxiivv.com/site/nasu.html">nasu</a>, for example, is a very capable sprite editor.</p> <h3>Draw the Owl</h3> <p>Possibly this article is mistitled. No one can teach you how to write, paint, draw, or <a href="https://bujinkan.com">fight</a>. The best I can do is leave my toolbox unlocked while I wander around the job site avoiding work, trying to look busy.</p> <p>You know what to do.</p> <p><img src="http://img.stanleylieber.com/src/24443/img/small.1720396755.png" alt="draw the rest of the fucking owl" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2023/12/02/0/ http://helpful.cat-v.org:80/Blog/2023/12/02/0/Sat, 16 Nov 2024 20:57:11 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p><img src="http://img.stanleylieber.com/src/23470/img/small.1666883920.png" alt="Jack Kirby illustration of The Thing" /></p> <p>Comics piracy is a shambles. Bloated websites filled with malware, staffed by scan groups who delete perfectly good scans of actual comic books in favor of lazy rips from digital services that offer only modern computer recolorizations and high-contrast restorations of books originally printed on toilet paper before <a href="http://www.michael-deforge.com/ant-colony-1">Michael DeForge</a> was even born. Oh, and they love RAR archives (even RAR archives mislabeled as ZIP archives [and vice versa]). Luckily for us, the popular comics formats CBZ and CBR are literally just compressed folders of image files.</p> <p>Which <a href="http://man.9front.org/1/page">page(1)</a> fully supports.</p> <h2>obtaining comics</h2> <p>The easiest way to obtain a comic book is to write and draw one during your free time. If you do it on 11" x 17" bristol board using india ink it will take you about a month and cost you about thirty bucks. That&rsquo;s a dollar a day, which if you&rsquo;re reading this you can almost certainly afford. If you lack the talent and drive to produce your own comic books, or maybe you can&rsquo;t even afford the $1 cover charge, there are plenty of comic book scans everywhere on the Internet. They&rsquo;re not all great quality, but then again neither are many of the issues and collections foisted on the public by publishers.</p> <p><img src="http://img.stanleylieber.com/src/22573/img/small.1623298628.png" alt="Stanley Lieber's amazon.com review of the LEGION OF SUPER-HEROES: FIVE YEARS LATER OMNIBUS" /></p> <h2>normalizing comics</h2> <p>You probably scanned your 11" x 17" bristol boards into a <a href="http://img.stanleylieber.com/src/23335/img/1658415022.jpg">Mac</a> and archived them as a CBR/RAR file. You may have even committed heresies such as putting spaces in your file names. This kind of crap complicates life on Plan 9.</p> <p>Years ago I wrote my own naive hack to fix file names for Plan 9 file systems, called <a href="http://plan9.stanleylieber.com/rc/crip">crip</a>. It&rsquo;s not a great program, but over time I&rsquo;ve tweaked it so that nowadays it handles most everything I throw at it:</p> <pre><code> ; crip -n # fix all file names in this directory </code></pre> <p>Plan 9 doesn&rsquo;t have any native tools for handling RAR archives, but it handles ZIP just fine. Someone wrote a small <a href="https://go.dev">Go</a> program called <code>unrar</code> (<a href="http://plan9.stanleylieber.com/src/unrar.tgz">src</a>, <a href="http://plan9.stanleylieber.com/src/6.unrar">amd64 binary</a>) that works well enough. I added logic to <code>crip</code> for automatically converting CBR files to CBZ:</p> <pre><code> ; crip -c # convert every CBR in this directory </code></pre> <h2>read the fucking comic book</h2> <p>This is the easy part:</p> <pre><code> ; page -w Love_and_Rockets_014_2023_digital_Lil-Empire.cbz </code></pre> <p>Read the <a href="http://man.9front.org/1/page">page(1)</a> man page to learn how to navigate, zoom, etc.</p> <p><img src="http://img.stanleylieber.com/src/20055/img/small.1525220814.png" alt="a comic book printed on toilet paper before Michael DeForge was born" /></p> <h2>bookmarks</h2> <p>You can create bookmarks by selecting <code>snarf</code> from <code>page(1)</code>&rsquo;s mb2 menu and pasting the resulting string into a file. Add a plumbing rule to your <code>$home/lib/plumbing</code> like so:</p> <pre><code> # handle page(1) bookmark strings type is text data matches '(([a-zA-Z!0-9_\-.,/]+)\.(ps|PS|eps|EPS|pdf|PDF|dvi|DVI|doc|DOC|epub|EPUB|cb[tz]|CB[TZ]))!(.+)' arg isfile $1 data set $file attr add addr=$4 plumb to none plumb start page -wij $0 $file </code></pre> <p>then <code>cp</code> it to <code>/mnt/plumb/rules</code>, and you&rsquo;ll be able to open your bookmark by plumbing the string.</p> <p><img src="http://img.stanleylieber.com/src/24034/img/1701568032.png" alt="plumbing a page(1) bookmark from the sam(1) text editor" /></p> <h2>holding your heavy laptop sideways</h2> <p><img src="http://img.stanleylieber.com/src/24037/img/small.1701569082.png" alt="reading LOVE AND ROCKETS V4 #14 on sl's MNT Reform" /></p> <p>It&rsquo;s really not so bad. Rotate <code>page(1)</code> and Use the arrow keys to navigate.</p> <p><img src="http://img.stanleylieber.com/src/24038/img/1701569175.png" alt="sl navigates a comic book in page(1) using the arrow keys" /></p> <h2>value proposition</h2> <p>The above method is indeed a bit complicated and obnoxiously labor intensive, but what I love about it most is the fact that it does not require another device or operating system besides a random laptop running 9front in order to read selections from my 512GB comic book collection, in this case stored on a tiny USB thumb drive that is easily maneuvered between systems while on the go.</p> <p>Your mileage may vary!</p> <p><img src="http://img.stanleylieber.com/src/24039/img/small.1701574217.png" alt="MNT Reform with SanDisk USB thumb drive" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2023/06/03/0/ http://helpful.cat-v.org:80/Blog/2023/06/03/0/Sat, 16 Nov 2024 20:57:10 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p><img src="http://img.stanleylieber.com/src/23793/img/small.1685844600.png" alt="Intel 6205" /></p> <p><em>Updated: 2023.07.13</em></p> <p>The <a href="http://fqa.9front.org/fqa3.html#3.2.3.2.3">9front FQA</a> brazenly declares that the following Intel WiFi cards are supported by the <code>iwl</code> driver: 100, 1000, 2200, 2230, 3160, 4965, 5100, 5300, 5350, 6000, 6205, 7260, 8260, 8265, 9260, with the following supported by the <code>wpi</code> driver: 3945. Various users have reported over time that they do all work. But some of them seem to work better than others (the WiFi cards, not the users). Specifically, older cards exhibit far greater throughput than newer cards exchanging packets over the same networks.</p> <p>Because I move between so many different machines, it has taken me a while to realize the intermittently bad WiFi performance conforms to a pattern.</p> <p>What gives?</p> <h2>mPCIe cards are faster than M.2 cards</h2> <p>I&rsquo;ve tested most of these cards in many different machines. Without exception, for reasons I don&rsquo;t understand, I&rsquo;ve observed that all known working mPCIe cards are much faster than all known working M.2 cards (save for one! See below), regardless of host machine or network.</p> <p>What follows is an ad hoc demonstration wherein two different machines are connected to the Internet via WiFi sharing from my mobile phone. In both cases, the same remote OpenBSD box is mounted over <a href="http://man.9front.org/4/sshfs">sshfs(4)</a>, and the same files from that box are moved across the network, capturing throughput statistics with the <a href="http://man.9front.org/1/tput">tput(1)</a> utility.</p> <p><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x60t/6366-l6u/">ThinkPad X60 Tablet</a> w/ mPCIe Intel 3945:</p> <pre><code> ; cat /n/rachael/usr/bin/* | tput 0.00 B/s 28.00 KB/s 36.78 KB/s 47.59 KB/s 52.47 KB/s 58.39 KB/s 61.48 KB/s 64.79 KB/s 67.37 KB/s 70.23 KB/s 72.58 KB/s 71.81 KB/s 74.29 KB/s 76.41 KB/s 78.25 KB/s 80.36 KB/s 80.18 KB/s 80.62 KB/s 80.05 KB/s 81.25 KB/s 82.33 KB/s 83.31 KB/s 84.21 KB/s 85.04 KB/s 86.12 KB/s 86.80 KB/s 87.44 KB/s 88.32 KB/s 88.21 KB/s 87.36 KB/s 86.35 KB/s 86.15 KB/s 86.69 KB/s </code></pre> <p>Wow, so slow. Let&rsquo;s see what happens if we use a much more powerful computer with a much newer Intel WiFi card:</p> <p><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x1/yoga/g3/">ThinkPad X1 Yoga 3rd Gen</a> w/ M.2 Intel 9260:</p> <pre><code> ; cat /n/rachael/usr/bin/* | tput 0.00 B/s 0.00 B/s 10.67 KB/s 16.00 KB/s 19.20 KB/s 19.72 KB/s 21.48 KB/s 23.79 KB/s 23.82 KB/s 24.63 KB/s 25.30 KB/s 25.86 KB/s 26.33 KB/s 26.74 KB/s 27.09 KB/s 27.40 KB/s 28.61 KB/s 28.80 KB/s 28.96 KB/s 29.12 KB/s 28.87 KB/s 29.02 KB/s 29.49 KB/s 29.60 KB/s 29.37 KB/s 29.47 KB/s 29.57 KB/s 29.06 KB/s 28.33 KB/s 28.19 KB/s 28.57 KB/s 28.43 KB/s 28.54 KB/s </code></pre> <p>Uh&hellip; what?</p> <p>These results are consistent with all of my previous A/B comparisons between mPCIe and M.2 cards on myriad different computers and WiFi networks.</p> <h2>Why this sucks</h2> <p>9front WiFi is arbitrarily capped at 54mbps. This is in no way fast, but has proven sufficient for my own use case of running VNC over SSH (documented way back in <a href="http://helpful.cat-v.org/Blog/2020/05/06/0/">Free Carrots #1</a>). However, the above results for M.2 cards, which effectively means all mainstream laptops you can still get batteries for, are resoundingly insufficient to this and many other common tasks. <a href="http://9p.cat-v.org">9P</a> suffers with increased latency, souring the whole experience of using Plan 9.</p> <h2>Workaround</h2> <p>Update 2023.07.07: I told an inadvertent lie above, claiming that no M.2 cards are as fast as mPCIe in 9front. In fact, the Intel 6235 is an M.2 NGFF card, and turns out to be pretty fast. Years ago I had <a href="http://plan9.stanleylieber.com/hardware/thinkpad/t431s/20aa-000bus/sysinfo">recorded this fact</a> after installing one in my ThinkPad T431s, and then we even <a href="http://9front.org/releases/2017/02/21/0/">bragged about it</a> in the body of a 9front release announcement. At some point I forgot it existed. One day, after writing the original version of this post, I was perusing old <code>sysinfo</code> entries and re-noticed the designation. I acquired another example, installed it in my ThinkPad X1 Yoga 3rd Gen, and it observed that it performs similarly to the mPCIe cards examined above. That is to say, it exhibits much faster throughput than any opther M.2 card I&rsquo;ve tried.</p> <p>Update 2023.07.13: 9front recently <a href="http://git.9front.org/plan9front/plan9front/f1a32c955360268a7bc901de057e6e451c979853/commit.html">added support</a> for the Intel 3160 (unlike the 6235, a member of the newer, 7000 family). This is also an M.2 NGFF card. I don&rsquo;t have one, so I haven&rsquo;t been able to test it yet. My tentative hypothesis is that it will perform badly, just like its similarly modern siblings.</p> <p>So far, I&rsquo;ve failed to find any other Intel M.2 cards besides the 6235 that are older than the 7260. So I guess we can recommend precisely one rare card to our users for their modern machines.</p> <h2>Workaround for the workaround</h2> <p>If you have a machine with an M.2 slot, need faster speeds, and don&rsquo;t have an Intel 6235, or, in lieu of actual code fixes that add support for higher transfer rates to the existing <code>iwl</code> and <code>wpi</code> drivers, it&rsquo;s always possible to fall back to an <a href="http://fqa.9front.org/fqa3.html#3.2.3.2.1">Ethernet to WiFi bridge</a>. One major benefit of this approach, even on machines with the right combination of &ldquo;fast&rdquo; cards, is vastly greater speeds in general. For example, the IOgear GWU637 supports 300mpbs on 2.4GHz and works fine with every WiFi network I&rsquo;ve tested it on. Just velcro it or something similar onto your machine and try not to trip over the cables.</p> <p><a href="http://plan9.stanleylieber.com/hardware/thinkpad/x1/yoga/g3/">ThinkPad X1 Yoga 3rd Gen</a> w/ IOgear GWU637 Ethernet to WiFi bridge:</p> <pre><code> ; cat /n/rachael/usr/bin/* | tput 406.34 KB/s 406.86 KB/s 433.90 KB/s 392.23 KB/s 411.39 KB/s 426.37 KB/s 412.73 KB/s 405.03 KB/s 415.13 KB/s 419.22 KB/s 418.93 KB/s 418.68 KB/s 420.32 KB/s 415.44 KB/s 420.81 KB/s 426.01 KB/s 427.78 KB/s 431.57 KB/s 435.38 KB/s 438.81 KB/s 440.77 KB/s 441.46 KB/s 441.40 KB/s 442.68 KB/s 443.21 KB/s 444.32 KB/s 446.82 KB/s 448.58 KB/s 449.94 KB/s 451.21 KB/s 452.39 KB/s 453.76 KB/s 454.07 KB/s </code></pre> <p><img src="http://img.stanleylieber.com/src/20020/img/1525128980.jpg" alt="Lo-res cats" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2022/07/12/0/ http://helpful.cat-v.org:80/Blog/2022/07/12/0/Sat, 16 Nov 2024 20:57:09 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p><img src="http://img.stanleylieber.com/src/23292/img/small.1655700454.png" alt="MNT Reform running 9front" /></p> <p><em>Updated: 2023.07.07</em></p> <p><a href="https://mntre.com/media/reform_md/2020-05-08-the-much-more-personal-computer.html">MNT Reform</a> is an 1.) expensive laptop that 2.) doesn&rsquo;t spy on you. It doesn&rsquo;t even have to run <a href="https://www.theregister.com/2022/07/07/lennart_poettering_red_hat_microsoft/">Linux</a>, which, nowadays, can help with 2.). I bought one of these things last year, and suffered the indignity of running Linux regularly for the first time since the Clinton administration. (OpenBSD was <a href="https://community.mnt.re/t/any-news-on-openbsd/646">not available</a> for comment.)</p> <p>9front developer <a href="http://git.9front.org/plan9front/plan9front/HEAD/log.html">cinap_lenrek</a> also bought a MNT Reform, and so within a couple of months we had a mostly functional port of <a href="http://9front.org">9front</a> to the device (<a href="http://plan9.stanleylieber.com/hardware/mnt/reform/sysinfo">sysinfo</a>), which is featured in the <a href="http://9front.org/releases/2022/10/31/0/">current release</a>.</p> <p>Working: Graphics, Audio, Ethernet, WiFi, USB, PCIe, trackball.</p> <p>Previously: Before WiFi was working, I used an <a href="https://amzn.to/3w4UYrP">IOgear GWU637 Ethernet to WiFi N adapter</a>. This may still be preferable if <a href="http://helpful.cat-v.org/Blog/2023/06/03/0/">9front&rsquo;s current 54MBps hard limit on WiFi is unacceptable</a>.</p> <h2>Boot from sdcard</h2> <p>Occasional sdcard images are uploaded here:</p> <p><a href="http://9front.org/iso/">http://9front.org/iso/</a></p> <p>Unzip the image and use <a href="http://man.9front.org/1/dd">dd(1)</a> to write the <code>.img</code> file directly to your sdcard. This image provides a full running system on the <a href="http://man.9front.org/4/hjfs">hjfs(4)</a> file system.</p> <h2>Install to NVMe</h2> <p>If you&rsquo;ve installed a <a href="https://community.mnt.re/t/confirmed-working-nvme-drives/224">compatible NVMe drive</a> in your MNT Reform, one of the above images may also be used to <a href="http://fqa.9front.org/fqa4.html">install 9front directly</a> to the NVMe. During the <code>partdisk</code> step, be sure to choose your NVMe drive as the install target.</p> <p><strong>Be careful not to accidentally overwrite your eMMC.</strong> Your nVME should be detected as <code>sdN0</code>, but if <code>/dev/sdN0/linux</code> exists, this may actually be your eMMC. Figure out what&rsquo;s going on before you brick your Reform.</p> <p>Note: You&rsquo;ll still need to boot the kernel from the sdcard. Update <code>plan9.ini</code> on the sdcard&rsquo;s DOS partition to point <code>bootargs</code> at your NVMe.</p> <h2>sysupdate</h2> <p>Update the source code on your running system via the usual <a href="http://man.9front.org/1/sysinfo">sysupdate(1)</a> command. <a href="http://fqa.9front.org/fqa5.html#5.2.2">Build from source</a> to update your binaries.</p> <h2>Install new kernel</h2> <p>Slightly different than other platforms:</p> <pre><code> ; cd /sys/src/9/imx8 ; mk clean; mk install ; cd /sys/src/boot/reform ; mk ; 9fs dos ; fcp /arm64/9reform.u /n/dos/ ; fcp /sys/src/boot/reform/boot.scr /n/dos/ </code></pre> <p>Strictly speaking, installing a new <code>boot.scr</code> every time is not always necessary; but doing so will avoid gotchas when something important changes and nobody warned you ahead of time.</p> <h2>Build your own sdcard .img</h2> <p>After updating your source and building a new kernel (see above), do the following:</p> <pre><code> ; cd /sys/lib/dist ; mk /tmp/9front.reform.img </code></pre> <p>This can be especially useful if you don&rsquo;t want to compile things on your Reform (although, really, building 9front is not that slow even on this machine).</p> <h2>Configuring keyboard, screen, audio, etc.</h2> <p>Continuously updated, 9front-specific instructions on daily use:</p> <p><a href="http://plan9.stanleylieber.com/hardware/mnt/reform/">http://plan9.stanleylieber.com/hardware/mnt/reform/</a></p> <h2>MNT Reform links</h2> <p>What is this thing, etc.? See:</p> <p><a href="https://shop.mntmn.com/">buy</a>, <a href="https://community.mnt.re/">community</a>, <a href="https://community.mnt.re/t/mnt-reform-faq-common-first-questions-and-little-problems">faq</a>, <a href="https://www.ifixit.com/Device/MNT_Reform">ifixit</a>, <a href="http://sciops.net/information/technology/reform_school/">reform school</a>, <a href="http://mnt.stanleylieber.com/reform/">sl&rsquo;s reform page</a></p> <p><img src="http://img.stanleylieber.com/src/23324/img/small.1657676297.png" alt="this cat is not stuck thank you" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2022/04/22/0/ http://helpful.cat-v.org:80/Blog/2022/04/22/0/Sat, 16 Nov 2024 20:57:09 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p>How does one perform incremental backups of the files stored on a Plan 9 file system? Haha, why would anyone ever need to do <em>that?</em></p> <p>Many years ago, as I contemplated migrating from UNIX to Plan 9, I needed a replacement for <a href="https://rsync.samba.org">rsync</a>. Fortunately, my transition was taking place while those of us trying to get 9front off the ground were doing some work on the <a href="http://fqa.9front.org/fqa4.html">installer</a> and <a href="http://9front.org/iso/">ISO</a>, and I found myself face to face with an existing utility that covered about 90% of what I needed from <code>rsync</code>.</p> <p><a href="http://man.9front.org/8/mkfs">mkfs(8)</a> copies files from one tree to another, copying only the files that are out of date (literally, when the timestamps don&rsquo;t match), and of those, only the files that are included in the specified <a href="http://man.9front.org/2/proto">proto(2)</a> file.</p> <p>For example, this is how <a href="http://git.9front.org/plan9front/plan9front/HEAD/rc/bin/inst/copydist/raw">copydist</a> in the 9front installer copies files from the install media to the user&rsquo;s disk:</p> <pre><code> ; disk/mkfs -z 16372 -U -s /n/dist -d /n/newfs /sys/lib/sysconfig/proto/allproto </code></pre> <p>This particular proto file contains only <code>+</code>, which copies every single file in the source tree to the destination tree. (This will be useful later.)</p> <p>Perhaps more instructive is the proto file used to build the 9front ISO, <a href="http://git.9front.org/plan9front/plan9front/HEAD/sys/lib/sysconfig/proto/distproto/raw">/sys/lib/sysconfig/proto/distproto</a>. It follows the same simple format, starting at the root of the tree and working its way down, specifying owner, group, and permissions at an arbitrarily granular level, like so:</p> <pre><code> mode=ug+rw mode=o-w uid=sys gid=sys adm d775 adm adm uid=adm gid=adm timezone d775 * cfg d775 pxe d775 cron d775 lib d775 * audio d775 icon d775 * cmap d775 * dict d775 * face d775 + </code></pre> <p>And so on.</p> <p>It turned out that for my purposes, simply copying everything was enough. This is my one-line <code>rsync</code> replacement,</p> <pre><code> ; disk/mkfs $args -v -z 4096 -s $1 -d $d &lt;{echo +} &gt;[2=1] | tee -a $log </code></pre> <p>extracted from my fully-operational, and very site-specific script:</p> <p><a href="http://plan9.stanleylieber.com/rc/backup">http://plan9.stanleylieber.com/rc/backup</a></p> <p>I&rsquo;ve been using some variation of this script for going on ten years. Launched from <a href="http://man.9front.org/8/cron">cron(8)</a> or executed manually for &ldquo;quick&rdquo; copying. It&rsquo;s not exactly fast (see also: <code>copydist</code>), but it has served reliably for backing up website, mailing list, and other important data, preserving continuity over the years through several catastrophic server failures, and other, unnamed calamaties.</p> <p>I agree. Slow is not great. Much faster is this third-party program written by <a href="https://git.sr.ht/~kvik">kvik</a>:</p> <p><a href="https://git.sr.ht/~kvik/clone">https://git.sr.ht/~kvik/clone</a></p> <p>which uses parallel processes, similar to Plan 9&rsquo;s existing <a href="http://man.9front.org/1/cp">fcp(1)</a> command, but unlike <code>fcp</code> it also knows how to copy directories. Unfortunately, it does not yet know how to compare timestamps.</p> <p>Help?</p> <p>Update:</p> <p><a href="http://nopenopenope.net">qwx</a> has written a shell script that uses <a href="http://man.9front.org/1/derp">derp(1)</a>, <a href="http://man.9front.org/1/awk">awk(1)</a>, and <a href="http://man.9front.org/1/tar">tar(1)</a> to copy changed files. The bonus here is that it also removes files that have been deleted from the source directory:</p> <p><a href="http://shithub.us/qwx/rc/HEAD/bin/syncab/raw">http://shithub.us/qwx/rc/HEAD/bin/syncab/raw</a></p> <p><img src="http://img.stanleylieber.com:80/src/23220/img/small.1650686006.png" alt="cat vs carrot toy" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2022/02/11/0/ http://helpful.cat-v.org:80/Blog/2022/02/11/0/Sat, 16 Nov 2024 20:57:08 -0500 <p>Previously: <a href="http://helpful.cat-v.org/Blog/2020/03/05/0/">Concealed Carry</a>, <a href="http://helpful.cat-v.org/Blog/2021/08/04/0/">Concealed Carry Redux</a></p> <p>This blog has gone downhill. I used to write helpful posts, now I just brag about my gear. Over the past while I&rsquo;ve adjusted my carry to reflect the ever increasing amount of tools, gadgets, and implements I carry around with me everywhere I go. It all makes writing posts like these possible, wherever I happen to be. Can you spot the error?</p> <h2>Backpack</h2> <p><img src="http://img.stanleylieber.com/src/23107/img/small.1644632928.png" alt="5.11 Tactical Rush24 2.0" /></p> <p><a href="https://www.511tactical.com/rush24-2-0-backpack.html">5.11 Tactical Rush24 2.0</a></p> <p>I needed an even bigger bag. Yes, I said I was trying to consolidate. But this thing fits my very thick new computer (see below), all my books, folders, pens, brushes, cables, wires, radios, tools, etc., with plenty of room to spare. Thirty-seven liters. I&rsquo;ve given this company hundreds of dollars over the years and only two zipper pulls have ever broken off. They&rsquo;re well ahead of the game.</p> <p>Main pouch contents:</p> <p>I said all that stuff about switching to earbuds last time. I really tried. After an extended period of testing many different alternatives, I stumbled across these relatively reasonably priced, over-ear, open-back headphones. I know, it sounds stupid; open-back headphones are transparent to external noise. But these really are the best sounding headphones I&rsquo;ve ever heard. Thanks to my new backpack I was able to make room for them.</p> <ul> <li><a href="https://en-us.sennheiser.com/hd-560-s-audiophile-headphone-high-end-over-ear">Sennheiser HD 560S</a></li> </ul> <p>Similar story with the computer. That is to say, I&rsquo;m once again carrying one around in my backpack. After a period lugging a 15" ThinkPad T60p (my favorite computer ever) from location to location, I bought this:</p> <p><img src="http://img.stanleylieber.com/src/23108/img/small.1644632957.png" alt="MNT Reform" /></p> <ul> <li><a href="http://mnt.stanleylieber.com/reform">MNT Reform</a>, an open laptop that ships with schematics and a parts list.</li> </ul> <p>Unchanged since last time:</p> <ul> <li><a href="http://www.ibmfiles.com/pages/scrollpoint.htm">IBM Scrollpoint</a> mouse</li> <li><a href="http://rem.stanleylieber.com/rm102/">reMarkable RM102</a> eink Linux (<em>not</em> Android) tablet</li> <li><a href="https://amzn.to/3CjVsMo">LITENERGY Portable A4 LED light board</a></li> <li>stiff box from Hahnemühle FineArt GmbH paper for carrying loose comic books</li> <li>in-progress pages of my latest comic, <a href="">SONIC v2</a></li> <li>in-progress pages of my latest zine, <a href="http://massivefictions.com/fuck_computers">FUCK COMPUTERS #3</a></li> </ul> <p>Front pouch contents (top):</p> <ul> <li><a href="http://rf.stanleylieber.com/hardware/icom/ic-r6/">Icom IC-R6</a> communications receiver</li> <li><a href="http://rf.stanleylieber.com/hardware/icom/ic-91a/">Icom IC-91A</a> 2M/70CM transceiver</li> </ul> <p>Front pouch contents (bottom):</p> <ul> <li>Folding stand for my <a href="http://uh.stanleylieber.com/titan/">Unihertz Titan</a></li> </ul> <p>Side pouches:</p> <ul> <li><a href="http://rf.stanleylieber.com/hardware/whistler/ws1040/">Whistler WS1040</a> police scanner</li> <li><a href="https://amzn.to/34R0ZxA">Weller 4.5W cordless soldering iron</a></li> </ul> <h2>Rolling Case</h2> <p><img src="http://img.stanleylieber.com/src/23109/img/small.1644632973.png" alt="Pelican 1510 Protector" /></p> <p><a href="https://www.pelican.com/us/en/product/cases/carry-on-case/protector/1510">Pelican 1510 Protector</a></p> <p>I have to store my legitimate work tools somewhere.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2021/08/04/0/ http://helpful.cat-v.org:80/Blog/2021/08/04/0/Sat, 16 Nov 2024 20:57:07 -0500 <p>Previously: <a href="http://helpful.cat-v.org/Blog/2020/03/05/0/">Concealed Carry</a></p> <p>Be advised, things change. <em>Prince</em> <a href="http://inri.net/2018/05/01/0/">became a Jehovah&rsquo;s Witness</a>. <em>Metallica</em> <a href="https://www.ultimate-guitar.com/news/interviews/mike_portnoy_bob_rock_ruined_metallica.html">met Bob Rock</a>. <em>I</em> needed to carry more stuff while at the same time reducing the overall bulk and weight of my carry (my back is junk). Following is an incomplete list of changes to all the stuff I somehow manage to haul around with me every day.</p> <h2>Backpack</h2> <p><img src="http://img.stanleylieber.com/src/22637/img/small.1628134966.png" alt="5.11 Tactical Rush12" /></p> <p><a href="https://www.511tactical.com/rush-packs.html">5.11 Tactical Rush12</a></p> <p>All those scary patches I used to have on my bag? Nobody took the bait. And maybe that&rsquo;s okay.</p> <p>One security guard keeps asking me if these examples of old Bell System flare are Boy Scout patches.</p> <h2>Messenger Bag</h2> <p><img src="http://img.stanleylieber.com/src/22636/img/small.1628134481.png" alt="5.11 Tactical Rush Delivery Lima" /></p> <p><a href="https://www.511tactical.com/rush-packs.html">5.11 Tactical Rush Delivery Lima</a></p> <p>The Mike was too small to carry real books. (Did I mention something about reducing bulk and weight?) Enter the Lima, exactly the same design, but with larger internal dimensions. These are good, but I think they&rsquo;ve been discontinued.</p> <p>Right pouch contents:</p> <p>Over-ear headphones were a luxury that took up too much space in my backpack. In-ear monitors (IEMs) are a reasonable compromise. Because Bluetooth is a goat circus, I&rsquo;ve switched to a wired alternative.</p> <ul> <li><a href="https://en-us.sennheiser.com/ie-300">Sennheiser IE 300</a></li> </ul> <p><img src="http://img.stanleylieber.com/src/22635/img/small.1628131095.png" alt="Apple iPad Pro 11&quot; (2021)" /></p> <p>Back pouch contents:</p> <p>Yeah, I know. My crazy <a href="http://51nb.stanleylieber.com/x210/">51nb ThinkPad X210</a> ended up being impractical to carry. I tried to replace it with a fourth-party <a href="http://51nb.stanleylieber.com/x62/">51nb ThinkPad X62</a>, which arrived DOA from an unsympathetic Chinese seller. Which is just as well, since it wasn&rsquo;t going to save me much in the way of size and weight, anyway. For maximum flexibility with my current multimedia and not-always-within-WiFi range activities, I&rsquo;ve once again resorted to an iPad with an internal &ldquo;5G&rdquo; radio. To my surprise, I&rsquo;ve managed to get a three-button USB mouse, and VNC+SSH to my 9front system working well enough to compose this post with same. Maybe by the time the <a href="https://www.pine64.org/pinetab/">Pine Tab</a> is available again it will be able to boot a <a href="http://9front.org">real operating system</a>. In the meantime, I&rsquo;m recording music again.</p> <ul> <li><a href="https://www.apple.com/ipad-pro/specs/">Apple iPad Pro 11" (2021)</a></li> </ul> <p><img src="http://img.stanleylieber.com/src/22628/img/small.1627685198.png" alt="5.11 Tactical Rush Delivery Lima - interior" /></p> <p>Interior contents:</p> <ul> <li><a href="http://www.ibmfiles.com/pages/scrollpoint.htm">IBM Scrollpoint</a> mouse</li> <li><a href="http://rem.stanleylieber.com/rm102/">reMarkable RM102</a> eink Linux (<em>not</em> Android) tablet</li> <li><a href="https://amzn.to/3CjVsMo">LITENERGY Portable A4 LED light board</a></li> <li>stiff box from Hahnemühle FineArt GmbH paper for carrying loose comic books</li> <li>in-progress pages of my latest comic, <a href="">SONIC v2</a></li> <li>in-progress manuscript of my latest novel, <a href="http://massivefictions.com/no_memory/">no_memory</a></li> </ul> <p><img src="http://rem.stanleylieber.com/rm102/img/rm102.png" alt="ReMarkable RM102" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2021/01/27/0/ http://helpful.cat-v.org:80/Blog/2021/01/27/0/Sat, 16 Nov 2024 20:57:07 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p>For once, application development on 9front is outpacing OS development. It can be hard to keep up, especially if, like myself, you hardly ever find yourself sitting in front of a computer. The following is a list of interesting recent projects by 9front users that are not currently included with the 9front distribution.</p> <p><a href="http://9p.zone">9pzone</a> - Public registry service for 9p services, OS agnostic.</p> <p><a href="https://git.sr.ht/~ft/bar">bar</a> - Displays battery, date and time in a small, auto-topping bar placed in a corner of the screen.</p> <p><a href="https://git.sr.ht/~julienxx/castor9">castor9</a> - Surf gemini pages in a GUI.</p> <p><a href="https://git.sr.ht/~ft/gemnine">gemnine</a> - Surf gemini pages in a text window.</p> <p><a href="https://git.sr.ht/~ft/minivmac">minivmac</a> - Boot a Mac on 9front instead of booting 9front on a Mac.</p> <p><a href="https://git.sr.ht/~ft/neindaw">neindaw</a> - DAW as a file system (use with orca).</p> <p><a href="https://github.com/netsurf-plan9/nsport">netsurf</a> - APE port with Plan 9 native frontend. Works.</p> <p><a href="https://git.sr.ht/~ft/orca">orca</a> - <a href="https://github.com/hundredrabbits/Orca">ORCΛ</a> for Plan 9.</p> <p><a href="https://git.sr.ht/~ft/picker">picker</a> - Color picker.</p> <p><a href="https://git.posixcafe.org/~moody/rc-gemd">rc-gemd</a> - Serve gemini pages.</p> <p><a href="https://ftrv.se/14">rio live theming with /dev/theme</a> - It&rsquo;s not treason (see below).</p> <p><a href="https://git.sr.ht/~ft/riow">riow</a> - Virtual desktops and window management (like dwm).</p> <p><a href="https://git.sr.ht/~ft/treason">treason</a> - Video player. Can be used to view <a href="http://docs.9front.org/youtube">YouTube</a> videos.</p> <p><a href="https://git.sr.ht/~amavect/whiteboardfs">whiteboardfs</a> - Collaborative drawing.</p> <p><a href="https://git.sr.ht/~ft/zuke">zuke</a> - Music player. Like <a href="http://man.9front.org/7/juke">juke(7)</a>, but good.</p> <p><img src="http://img.stanleylieber.com/src/22373/img/1611798664.jpg" alt="cat playing with a carrot" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2020/05/13/0/ http://helpful.cat-v.org:80/Blog/2020/05/13/0/Sat, 16 Nov 2024 20:57:06 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p>Picture it: My desk, some years ago.</p> <p><img src="http://fqa.9front.org/x301.jpg" alt="Lenovo ThinkPad X301" /></p> <p>I didn&rsquo;t really feel comfortable leaving my data lying around where it might be confiscated, but at the same time I wanted to <a href="http://9front.org">9front</a> while I was supposed to be working. Fortunately I had remembered to bring my <a href="http://fqa.9front.org/fqa4.html#4.2.2">bootable USB stick</a>, and some helpful soul had plugged a WiFi router into the U-Verse in the break room.</p> <p>Back then 9front didn&rsquo;t have TLS booting over WiFi, but it does now. The following explains how to set it up, obviating the need for all the crazy-ISO-tricks I used to pull, back in the day.</p> <p>First, <a href="http://fqa.9front.org/fqa7.html#7.3.3">configure your file server to listen for network connections</a>. This will cause the machine to listen on port 564 (by default, the system is already running a <a href="https://code.9front.org/hg/plan9front/file/35459627f401/rc/bin/service/tcp17020">TLS listener</a> that bounces incoming TLS connections to port 564).</p> <p>Next, your client (the machine that is TLS booting over WiFi) needs only a few alterations to its <code>plan9.ini</code>:</p> <pre><code> bootargs=tls ether0=type=YOUR_WIFI_DRIVER_HERE essid=YOUR_WIFI_AP_HERE wpapsk=YOUR_WIFI_PASSWORD_HERE auth=8.8.8.8 fs=8.8.8.8 </code></pre> <p><strong>Note:</strong> Your <code>auth</code> and <code>fs</code> machines are not really Google DNS servers.</p> <p>The boot scripts will attempt to authenticate to the WiFi access point specified, and then obtain an IP address via DHCP. The <code>auth</code> and <code>fs</code> servers listed will be used to access the remote environment.</p> <p>To bypass DHCP, arguments to <a href="http://man.9front.org/8/ipconfig">ipconfig(8)</a> may be entered on the <code>bootargs</code> line:</p> <pre><code> bootargs=tls!-g 192.168.0.1 ether /net/ether0 192.168.0.23 255.255.255.0 </code></pre> <p>That&rsquo;s all there is to it, but curiously for some reason I never actually tried it until this week.</p> <p>Anyway, it works.</p> <p><img src="http://img.stanleylieber.com/src/21911/img/small.1589427771.png" alt="Free Carrots #2: TLS boot over WiFi" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2020/05/06/0/ http://helpful.cat-v.org:80/Blog/2020/05/06/0/Sat, 16 Nov 2024 20:57:05 -0500 <p>Free Carrots <em>is an ongoing series of helpful tips for using Plan 9.</em></p> <p>The canonical teaching tool for demonstrating Plan 9&rsquo;s <a href="http://doc.cat-v.org/plan_9/4th_edition/papers/names">private name spaces</a> and file interfaces is this:</p> <pre><code> deckard; bind /net/tcp /proc deckard; ps qin 0 0:00 0:00 0K 0 Listen qin 1 0:00 0:00 0K 0 Listen qin 2 0:00 0:00 0K 0 Listen qin 3 0:00 0:00 0K 0 Listen qin 4 0:00 0:00 0K 0 Listen qin 5 0:00 0:00 0K 0 Established qin 6 0:00 0:00 0K 0 Established qin 7 0:00 0:00 0K 0 Established qin 8 0:00 0:00 0K 0 Established qin 9 0:00 0:00 0K 0 Finwait1 </code></pre> <p>The value of this example is not that the result itself is especially useful, but that the design of the system almost inevitably produces tools that can be reused in new and surprising ways, sometimes without modification.</p> <p>In Plan 9, you get a lot for free.</p> <p>Another popular demonstration is borrowing the network stack of a remote machine:</p> <pre><code> deckard; cat /net/iproute 0.0.0.0 /96 192.168.1.254 4 dhcp 0 192.168.1.0 /120 0.0.0.0 /96 192.168.1.254 4 dhcp 0 192.168.1.230 /128 192.168.1.0 /120 192.168.1.0 4i ifc 0 0.0.0.0 /96 192.168.1.0 /120 192.168.1.0 4i ifc 0 192.168.1.230 /128 192.168.1.0 /128 192.168.1.0 4b ifc 0 192.168.1.230 /128 192.168.1.230 /128 192.168.1.230 4u ifc 0 0.0.0.0 /96 192.168.1.255 /128 192.168.1.255 4b ifc 0 192.168.1.230 /128 255.255.255.255 /128 255.255.255.255 4b ifc 0 192.168.1.230 /128 deckard; rimport mars2.inri.net /net deckard; cat /net/iproute 0.0.0.0 /96 216.126.196.33 4 none 0 216.126.196.32 /123 0.0.0.0 /96 216.126.196.33 4 none 0 216.126.196.35 /128 216.126.196.0 /128 216.126.196.0 4b ifc 0 216.126.196.35 /128 216.126.196.32 /123 216.126.196.32 4i ifc 0 0.0.0.0 /96 216.126.196.32 /123 216.126.196.32 4i ifc 0 216.126.196.35 /128 216.126.196.32 /128 216.126.196.32 4b ifc 0 216.126.196.35 /128 216.126.196.35 /128 216.126.196.35 4u ifc 0 0.0.0.0 /96 216.126.196.63 /128 216.126.196.63 4b ifc 0 216.126.196.35 /128 216.126.196.255 /128 216.126.196.255 4b ifc 0 216.126.196.35 /128 255.255.255.255 /128 255.255.255.255 4b ifc 0 216.126.196.35 /128 fe80:: /64 fe80:: 6i ifc 0 fe80::5054:ff:fe09:9935 /128 ff02:: /16 ff02::1 6m ifc 0 fe80::5054:ff:fe09:9935 /128 ff02::1 /128 ff02::1 6m ifc 0 fe80::5054:ff:fe09:9935 /128 fe80::5054:ff:fe09:9935 /128 fe80::5054:ff:fe09:9935 6u ifc 0 fe80::5054:ff:fe09:9935 /128 ff02::1:ff09:9935 /128 ff02::1:ff09:9935 6m ifc 0 fe80::5054:ff:fe09:9935 /128 </code></pre> <p>Now, any network connections leaving <code>deckard</code> from within this namespace will be routed through the encrypted connection to <code>mars2</code> before they hit the outside world.</p> <p>Many tools in <a href="http://9front.org">9front</a> have been rewritten or otherwise created from scratch to satisfy user (read: developer) requirements, including a modern <a href="http://man.9front.org/1/ssh">SSH client</a>. The peculiar features of the operating system as described above suggest an opportunity to combine facilities in such a way that enables a more-or-less free capability to borrow the network stack of operating systems <em>other than Plan 9</em>.</p> <p>Enter <a href="http://man.9front.org/4/sshnet">sshnet(4)</a>, which, you guessed it, allows for importing the network stack of another operating system over SSH.</p> <pre><code> deckard; sshnet rachael.inri.net # borrow network stack from openbsd machine deckard; ls /net # iproute not implemented, but needed files are present /net/cs /net/tcp deckard; window -m vncv 192.168.1.22:0 # vnc to host behind rachael </code></pre> <p>Note that any other program on the system can also take advantage of this makeshift VPN without having to know anything at all about the SSH tunnel.</p> <p>Together, <code>ssh.c</code> and <code>sshnet.c</code> comprise less than 3,000 lines of code.</p> <p><img src="http://img.stanleylieber.com/src/21886/img/small.1588813618.png" height="500" alt="Free Carrots #1"></p> Aquileo | http://helpful.cat-v.org:80/Blog/2020/03/05/0/ http://helpful.cat-v.org:80/Blog/2020/03/05/0/Sat, 16 Nov 2024 20:57:05 -0500 <p>Everything I use I have to carry with me. That means paper books are usually out of the question. But I do manage to lug around quite a lot of other useful tools, toys, and materials. It helps to conceal it all inside socially <a href="https://en.wikipedia.org/wiki/Stealth_technology">low observable</a> prop gear. No one questions this stuff because either they believe I&rsquo;m on <a href="https://www.nybooks.com/articles/2020/03/26/trolls-4chan-gamergate-lulz/">their side</a>, or they&rsquo;re afraid I&rsquo;ll <a href="http://indiana.gop">mention politics</a>. Owing to differences in geography and climate, YMMV.</p> <p>It all adds up to only two bags, which I can actually lift, even with my compromised back. This is my roving office, from which I create comics, zines, and write blog posts such as the one you&rsquo;re reading right now.</p> <h2>Backpack</h2> <p><a href="https://amzn.to/2wwLl9C">5.11 Tactical 56892</a></p> <p><img src="http://img.stanleylieber.com/src/21825/img/small.1583449833.png" alt="5.11 Tactical 56892" /></p> <p>Upper pouch contents:</p> <ul> <li>fiber light meter</li> <li>fiber light meter adapters (LC, SC, etc.)</li> </ul> <p><img src="http://img.stanleylieber.com/src/21828/img/small.1583449996.png" alt="5.11 Tactical 56892 - lower pouch" /></p> <p>Lower pouch contents:</p> <ul> <li><a href="https://amzn.to/2VSzCg3">Belkin computer tool kit</a></li> <li><a href="https://amzn.to/2TszLoS">Moleskine pocket notebook</a></li> <li><a href="https://amzn.to/38rSNQz">45W USB/USB-C power brick</a></li> <li>cigarette lighter USB power adapter</li> <li>sewing kit</li> <li>scissors</li> <li>keychain flashlight</li> <li>spray bottle of isopropyl alcohol/distilled water mix</li> <li>extra pliers</li> <li>extra ink pens</li> <li>spare velcro stick-ons, cable ties, zip ties</li> <li><a href="https://amzn.to/2wxMu0F">Sony WI-1000X wireless BlueTooth earphones</a> (not pictured)</li> </ul> <p><img src="http://img.stanleylieber.com/src/21826/img/small.1583449901.png" alt="5.11 Tactical 56892 - top pocket" /></p> <p>Top pocket contents:</p> <ul> <li>safety glasses</li> <li>eye drops</li> <li>fingernail clippers</li> <li>first aid kit</li> </ul> <p><img src="http://img.stanleylieber.com/src/21827/img/small.1583449947.png" alt="5.11 Tactical 56892 - interior" /></p> <p>Interior contents:</p> <ul> <li>laptop computer (employer supplied)</li> <li>clipboard</li> <li><a href="https://amzn.to/2uZwoMI">Fluke T552 Pro</a> butt set</li> <li>tool pouch with tools on pistol belt</li> <li>tone box</li> <li>tone wand</li> <li>fiber cleaning kit</li> <li>misc. spare <a href="https://en.wikipedia.org/wiki/Small_form-factor_pluggable_transceiver">SFPs</a></li> <li>misc. spare fibers, cords, and wires</li> </ul> <h2>Messenger Bag</h2> <p><a href="https://amzn.to/32RClIf">5.11 Tactical 56176</a></p> <p><img src="http://img.stanleylieber.com/src/21830/img/small.1583450109.png" alt="5.11 Tactical 56176" /></p> <p>Left pouch contents:</p> <ul> <li>misc. USB cables and adapters</li> </ul> <p>Right pouch contents:</p> <ul> <li><a href="https://us.astellnkern.com/products/a-norma-sr15?variant=12182530981947">Astell &amp; Kern A&amp;norma SR15</a></li> </ul> <p><img src="http://img.stanleylieber.com/src/21829/img/small.1583450047.png" alt="5.11 Tactical 56176 - back" /></p> <p>Back pouch contents:</p> <ul> <li><a href="https://amzn.to/39qSrec">Amazon Fire HD 10 2019 release 10.1"</a></li> </ul> <p><img src="http://img.stanleylieber.com/src/21832/img/small.1583450268.png" alt="5.11 Tactical 56176 - interior" /></p> <p>Interior contents:</p> <ul> <li>Lenovo ThinkPad X250 with AC adapter - <a href="http://plan9.stanleylieber.com/hardware/thinkpad/x250/20cm-cto1ww/">9front</a>, <a href="http://openbsd.stanleylieber.com/hardware/thinkpad/x250/20cm-cto1ww/">OpenBSD</a></li> <li><a href="https://amzn.to/3bNPRQl">Lenovo N700</a> bluetooth mouse w/ builtin laser pointer</li> <li>masonite drawing lapboard</li> <li>folders</li> <li><a href="https://amzn.to/2TDmSHs">Amazon Kindle Paperwhite</a></li> <li><a href="https://amzn.to/2TszLoS">Moleskine pocket notebook</a></li> <li><a href="https://amzn.to/2Iowu3E">GPD XD</a> portable handheld game system</li> <li>cork pouch full of pens, markers, scissors, blades, glue sticks, etc.</li> <li>hard plastic pencil box full of dip pens, nibs, etc.</li> <li>iPhone XS Max (no SIM card) for taking photos and vidoes</li> </ul> <p>Side pocket contents:</p> <ul> <li>various adapters, wires, cables, etc.</li> <li>one tiny bottle of <a href="https://amzn.to/39HJVre">Winsor &amp; Newton black indian ink</a></li> </ul> Aquileo | http://helpful.cat-v.org:80/Blog/2020/02/19/0/ http://helpful.cat-v.org:80/Blog/2020/02/19/0/Sat, 16 Nov 2024 20:57:04 -0500 <p>I bought a <a href="https://www.unihertz.com/shop/product/titan-pre-order-39">unihertz Titan</a> to replace my <a href="https://en.wikipedia.org/wiki/Blackberry">BlackBerry</a> <a href="https://en.wikipedia.org/wiki/BlackBerry_Passport">Passport</a>. Nagging complaints about the Passport included: short battery life, flaky <a href="https://en.wikipedia.org/wiki/Qi_(standard">Qi charging</a>, terrible cameras. Complaints about the Titan include: <a href="https://en.wikipedia.org/wiki/Android_(operating_system">Android</a>, the unit itself is heavy (with sharp edges around the case), and also, Android. I&rsquo;m not sure yet which is worse. The Titan does offer some pleasing upgrades: <a href="https://en.wikipedia.org/wiki/IP_Code">IP67</a> dust/water resistant, good battery life, Qi charging works well, wider range of working/performant Andoid apps. But it&rsquo;s still Android.</p> <p>I&rsquo;m documenting my experience. I&rsquo;ve posted some tips on the device&rsquo;s quirks and workarounds <a href="http://unihertz.stanleylieber.com/titan/">here</a>.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2019/12/05/0/ http://helpful.cat-v.org:80/Blog/2019/12/05/0/Sat, 16 Nov 2024 20:57:03 -0500 <p>The <a href="https://lists.w3.org/Archives/Public/www-talk/">World Wide Web</a> is a wretched hive of scum and villainy, a fact all too familiar to refugees from the <a href="https://www.eternal-september.org/">old Internet</a>. September merged with IRL, and now everyone who was busy telling you to go outside and play for the past twenty-five years can&rsquo;t be convinced to put down their phones. Sorry, teacher&rsquo;s pets, but <a href="https://en.wikipedia.org/wiki/Total_Information_Awareness">government</a> and <a href="https://en.wikipedia.org/wiki/Surveillance_capitalism">big business</a> are both in on the scam. Dangers abound, and navigation is <a href="https://nvd.nist.gov/vuln/search/results?form_type=Basic&amp;results_type=overview&amp;query=browser&amp;search_type=all">fraught with opportunities for disaster</a>. Fortunately, some browsers don&rsquo;t support Javascript or CSS.</p> <h2>mothra(1)</h2> <p>Enter <a href="http://man.9front.org/1/mothra">mothra(1)</a>. Written in 1995 as a toy for the <a href="http://doc.cat-v.org/plan_9/2nd_edition/papers/panel/">2nd edition of Plan 9</a>, <code>mothra</code> doesn&rsquo;t support <code>&lt;div&gt;</code> tags, color attributes, or even fonts beyond <strong>bold,</strong> <em>italics,</em> <u>underline</u>, and <code>fixed width.</code> When 9front developers discovered it tucked away on the old Bell Labs server (<a href="http://9p.io">mirror</a>), it was no longer even shipped with Plan 9. Since that time, some work has been done on it.</p> <p>First was stopping it from printing the HTML version at the top of each document. Haha. The first <em>fundamental</em> change was to rip out all the network code (sorry, <code>ftp://</code> lovers), and cause it instead to rely upon <a href="http://man.9front.org/4/webfs">webfs(4)</a>, which brought it into line with all the other HTTP-eating programs in 9front. Next was implemented <em>moth mode</em>, empowered by the addition of a generic text entry box to <a href="http://man.9front.org/2/event">event(2)</a>, which allowed for nibbling chunks out of web pages and saving them with arbitrary file names in arbitrary locations on the file system. Finally, text selection and copy/paste was added. Future improvements are planned to include a <a href="http://man.9front.org/1/plumb">Plumb</a> menu option, and easier customization of the browser&rsquo;s <a href="http://img.stanleylieber.com/src/21438/img/1555364580.png">default appearance</a>.</p> <h2>webfs(4)</h2> <p>9front&rsquo;s <a href="http://man.9front.org/4/webfs">webfs(4)</a> was re-written from scratch. The program is a <a href="http://doc.cat-v.org/plan_9/4th_edition/papers/names">file server</a> that takes requests from local programs (yes, even <a href="https://code.9front.org/hg/plan9front/file/77938288732a/rc/bin/hget">shell scripts</a>), contacts remote HTTP serveres, and returns the results. Its <a href="https://www-archive.mozilla.org/build/user-agent-strings.html">user-agent</a> string is configurable. You&rsquo;re probably already thinking of uses for it.</p> <p><code>mothra</code> sends requests to <code>webfs</code> and renders the results as a graphical web page.</p> <h2>Honestly</h2> <p><code>mothra</code> does a pretty good job of rendering basic HTML, but many web pages have such wonky formatting, or otherwise rely so heavily upon CSS for layout, that sometimes quite a lot of vertical scrolling is required to get past the initial burst of <a href="http://plan9.stanleylieber.com/mothra/img/lenovo.com.jpg">banners, affiliate links, and menus</a>. While some sites are irretrievably shitted up with <a href="http://plan9.stanleylieber.com/mothra/img/instagram.com.png">mandatory Javascript</a>, many still fall back to a relatively sane presentation via an RSS feed, which it turns out is the most efficient conduit for spraying web content onto your 9front screen.</p> <h2>hget(1)</h2> <p>Sidebar: Maybe you don&rsquo;t really need to see images or click on interactive links. Ever heard of <a href="https://curl.haxx.se/">curl(1)</a> or <a href="https://www.gnu.org/software/wget/">wget(1)</a>? 9front&rsquo;s re-written <a href="http://man.9front.org/1/hget">hget(1)</a> offers a similar bag of tricks. Using <code>hget</code> and its companion tools, it&rsquo;s even possible to fill out web forms from the command line. That&rsquo;s right, say it again: <a href="https://code.9front.org/hg/plan9front/file/77938288732a/rc/bin/webpaste">everything is scriptable</a>.</p> <h2>RSS/Atom</h2> <p>Anyway. Through some extended acrobatics it&rsquo;s feasible to pull RSS feeds and deposit them into a format <code>mothra</code> can handle. A conveniently extant <a href="http://golang.org">Go</a> program called <a href="http://plan9.stanleyliebere.com/rrss/">rrss</a> runs independantly of <code>webfs</code> (the <a href="https://github.com/SlyMarbo/rss">RSS parsing library</a> it uses handles HTTP requests all by itself), and translates them into either human readable plain text, or a blog format compatible with <a href="http://werc.cat-v.org">werc</a> (via its third-party <a href="https://code.9front.org/hg/barf">barf</a> plugin).</p> <p>9front ships with most of what you need to build this self-contained RSS feed reading setup. The rest is easily installed. You can run everything on one machine, or you can pull the feeds to a remote 9front server and then surf to them from anywhere you want in whatever browser you choose. Do all of this:</p> <ul> <li><p>Read the entirety of this document, and the relevant documentation for all the software listed below, <em>before</em> you type any commands into your computer.</p></li> <li><p>Configure <a href="http://man.9front.org/8/rc-httpd">rc-httpd(8)</a>.</p></li> <li><p>Install <a href="https://code.9front.org/hg/werc">werc</a> for <a href="http://werc.cat-v.org/docs/web-server-setup/rc-httpd">rc-httpd</a>.</p></li> <li><p>Install <a href="https://code.9front.org/hg/barf">barf</a>.</p></li> <li><p>Install <a href="http://fqa.9front.org/appendixl.html">Go</a>.</p></li> <li><p>Install <a href="https://code.9front.org/hg/rrss">rrss</a>.</p></li> </ul> <p>That&rsquo;s everything you need.</p> <p>Configure <a href="http://man.9front.org/8/cron">cron(8)</a> to periodically run <code>rrss</code> against a list of RSS feeds. This, too, is best customized with a shell script. It looks like I haven&rsquo;t made significant changes to my script in over over four years so it must be doing something right.</p> <p>Put something like <a href="http://plan9.stanleylieber.com/rc/rrss.barf">rrss.barf</a> in your <code>$home/bin/rc/</code>:</p> <pre><code> #!/bin/rc # Dump RSS feeds into werc/apps/barf entries. # Run from cron. rfork en name=$1 names=(read tumblr) log=$home/lib/$name.err root=$home/www/werc/sites/$name.stanleylieber.com urls=$home/lib/$name if(! ~ $name $names){ echo guess again. &gt;[1=2] exit usage } rm $log &gt;$log chmod +at $log # +t so this file isn't copied to the dump. # go used to hang a lot, so we erect a safety net. { while(){ sleep 30 if(ps | grep -s -e 'Broken[ ]+rrss'){ {date; echo Kill Broken rrss} &gt;&gt;$log Kill rrss | rc } } } &amp; ofs=$ifs ifs=' ' { for(i in `{cat $urls}){ ifs=$ofs { j=`{echo $i} url=$j(1) tag=$j(2-) } alarm 60 rrss -f barf -r $root -t $"tag -u $"url &gt;&gt;[2]$log echo $"url $"tag &gt;&gt;$log } } for(i in `{f $root/src}){ chgrp www $i } {date; echo Kill rrss.barf} &gt;&gt;$log Kill rrss.barf | rc </code></pre> <p>And in <code>/cron/$user/cron</code>:</p> <pre><code> 1 1,3,5,7,9,11,13,15,17,19,21,23 * * * local rrss.barf read 1 2,4,6,7,8,10,12,14,16,18,20,22 * * * local rrss.barf tumblr </code></pre> <p>The files <code>$home/lib/read</code> and <code>$home/lib/tumblr</code> are lists of RSS feed URLs (one per line), and <code>$home/lib/read.err</code>, etc., contain any errors encountered when the script is run by <code>cron</code>.</p> <p>When you surf to your <code>barf</code> page (in <code>mothra</code> or otherwise) a convenient heading will indicate the total number of feed items pulled. After logging in to <code>barf</code>, each item will likewise be accompanied by a button you can clicked to delete the item from your disk.</p> <h2>Conclusions</h2> <p><em>Voila.</em> I&rsquo;ve been getting by this way for several years. Surviving, if not living (as my mother used to say). Obviously, <code>mothra</code> is no one&rsquo;s conception of an ideal browser, but then again the web is no one&rsquo;s conception of an ideal mechanism for delivering content. At the end of the day at least I&rsquo;ve imposed these usability constraints upon myself.</p> <p>Pros:</p> <ul> <li><p>It works pretty well for a surprising number of sites.</p></li> <li><p>There&rsquo;s not much to exploit because frankly <code>mothra</code> does almost nothing (most ads and malware rely on Javascript and CSS to self-actualize).</p></li> <li><p>The code is small enough for a human being to read and understand.</p></li> </ul> <p>Cons:</p> <ul> <li><p>An increasing number of sites require Javascript even to render plain text.</p></li> <li><p><code>user-agent</code> and browser sniffing fuckery (somewhat mitigated by <code>webfs</code>&lsquo; features).</p></li> <li><p>Some sites do not provide RSS feeds, or provide only truncated content in their feeds (like, maybe just a headline, or no images, or sometimes only the first few lines of a long article).</p></li> </ul> <p>I used to be able to track Twitter and Instagram via RSS. Both have resorted to repeated and extensive measures to prevent humans from interacting with their services without first logging in via an approved client running on an approved operating system. Which obviously is the exact opposite of what I&rsquo;m trying to do here. Only one of the several reasons <a href="http://stanleylieber.com/soc.exit/you_will_not_understand_this">I gave up on these services</a>. Tumblr, and some other failed extraction operations, still offer RSS feeds.</p> <p>Maye some of this is a blessing in disguise.</p> <h2>You Surrender</h2> <p>I know, this sounds like a lot of trouble to go through just to end up with diminished functionality on an operating system you&rsquo;re probably only <a href="http://fqa.9front.org/fqa3.html#3.3">running in a virtual machine</a> anyway.</p> <p>If by some unlikely confluence of irregular events you are actually running 9front on bare metal, and you just can&rsquo;t take it anymore, and life is starting to look bleak without access to 8chan&rsquo;s AI-training captcha, you can always install <a href="http://www.openbsd.org">OpenBSD</a> or <a href="http://google.com">Linux</a> in <a href="http://man.9ront.org/1/vmx">vmx(1)</a>.</p> <p>I understand. At least <a href="http://9front.org/buds.html">you&rsquo;re trying</a>.</p> <p><a href="http://fqa.9front.org/disclaimer.ms">I won&rsquo;t tell</a> if you don&rsquo;t.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2019/12/03/0/ http://helpful.cat-v.org:80/Blog/2019/12/03/0/Sat, 16 Nov 2024 20:57:03 -0500 <h2>Background</h2> <p>Hi, I&rsquo;m <a href="http://stanleylieber.com">SL</a>. You may remember me from my classic appearances in <a href="https://9fans.topicbox.com/groups/9fans/Tf27e6479d8812712-Mf5d76f728866828465e3e33e/9fans-is-the-vanilla-plan-9-still-alive">contentious 9fans threads</a>, or maybe you&rsquo;ve read <a href="http://massivefictions.com">one of my books</a>.</p> <p>I&rsquo;m a veteran UNIX admin of 20+ years. I produced a bunch of multimedia stuff on a Macbook in the mid-2000s. I ran <a href="http://9front.org">9front</a> on all my production servers and on my personal laptop (my main personal computer) almost exclusively from 2011 to 2017. In early 2017 I moved to a new job that involved a lot of traveling and infrequent access to WiFi. It also turned out that carrying a second laptop (besides my work laptop) added too much bulk/weight to all the stuff I already had to carry everywhere I went. I bought one of those early iPad Pros equipped with an LTE connection and did most of my necessarily mobile computing via that device for the better part of two years. I was able to rig up a command line connection to 9front using a native iOS SSH client and <code>drawterm -G</code>. I explained how this was accomplished in a <a href="http://helpful.cat-v.org/Blog/2018/03/08/0/">previous blog post</a>. Infrequently, I carried a <a href="http://fqa.9front.org/fqa3.html#thinkpad_x230t_3434-db7">ThinkPad X230 Tablet</a>, and later a ThinkPad X250 along with me, piggybacking off the iPad&rsquo;s WiFi tethering.</p> <p>The experience sucked. Replacing a general purpose computer with a jacked-up surveillance sensor package is not my idea of solving the problem of mobile computing. Lugging around extra pounds put a lot of strain on my already compromised back. Something had to give.</p> <p>No pun intended.</p> <p>Recently, I acquired a used <a href="http://openbsd.stanleylieber.com/hardware/thinkpad/x1t/g1/">ThinkPad X1 Tablet (1st Gen)</a>. This thing is small enough to fit in my bag, works well with both OpenBSD and 9front, and weighs almost as little as my iPad Pro with it&rsquo;s folding keyboard cover. Finally, I&rsquo;m back in business.</p> <h2>What Plan 9 Does For Me</h2> <p>Plan 9 excels at text manipulation. Conveniently, the entire system is controlled via text interfaces. <a href="http://doc.cat-v.org/plan_9/4th_edition/papers/names">Private namespaces</a> ratchet this up into something even an idiot like me can use to construct efficient workflows.</p> <p><em>I can&rsquo;t understand something presented to me that&rsquo;s very complex.</em> &ndash; Ken Thompson</p> <p>With the exception of multimedia and the modern web, all my needs are met. Pretty much anything people do with traditional UNIX terminals can be done at least as efficiently from a Plan 9 window. Even one accessed over SSH from an inferior operating system.</p> <p>Is there support for playing audio (MP3, FLAC, etc.)? Yes.</p> <p>Is there support for playing video? No.</p> <p>Read this incomplete list of commonly requested software that ships with 9front: <a href="http://fqa.9front.org/fqa1.html#1.8">http://fqa.9front.org/fqa1.html#1.8</a></p> <p>Watch this introductory video: <a href="https://youtu.be/6m3GuoaxRNM">https://youtu.be/6m3GuoaxRNM</a></p> <p>Any more questions?</p> <p><strong>Spoiler:</strong> If you don&rsquo;t care about my personal experience you can skip this blog post and proceed directly to the 9front Frequently Questioned Answers (FQA) section on using 9front, here: <a href="http://fqa.9front.org/fqa8.html">http://fqa.9front.org/fqa8.html</a>. The information is more technically informative but lacks the endearing flavor of my personal bullshit.</p> <h2>Text Editing</h2> <p>I started trying to use Plan 9 in 2009. I had been editing tons of PHP code in OpenBSD using <a href="https://man.openbsd.org/vi">vi(1)</a>. A lot of fighting with cut and paste. In the midst of this gargantuan project at work I was reading my way through <a href="http://cat-v.org">http://cat-v.org</a> for the first time. I decided to give <a href="http://sam.cat-v.org">sam(1)</a> a try.</p> <p>It was love at first sight. I never wanted to go back, and consequently I didn&rsquo;t. Here was the solution to my distaste with <code>ex</code>: <a href="http://doc.cat-v.org/bell_labs/structural_regexps/">structural regular expressions</a>. I started out running the (at that time) very old portable version of <code>sam</code> in the OpenBSD ports tree, then ended up installing Plan 9 in QEMU, using the entire operating system as a glorified IDE. Wait, <code>vi</code> <em>who?</em></p> <p><em>I&rsquo;m tired of using vi.</em> &ndash; Bill Joy</p> <p>Me too, buddy.</p> <h2>IRC</h2> <p>Programming from within Plan 9 naturally led to me wanting IRC and my text editor on the same screen at the same time. Luckily, there were several IRC clients to choose from. The simplest of which, <a href="http://code.9front.org/hg/plan9front/file/f4f9414878e1/rc/bin/ircrc">ircrc</a>, was a <em>shell script.</em> Remember that for later. Owing to Plan 9&rsquo;s file interfaces, private namespaces, and modular design, much of the system is effectively built out of shell scripts.</p> <p><strong>Note:</strong> This would be a good time to familiarize yourself with Brian Kernighan and Rob Pike&rsquo;s seminal <a href="http://books.cat-v.org/computer-science/unix-programming-environment/">The UNIX Programming Environment</a>. I re-read it at about this time, and felt like I was really starting to <em>understand</em> it for the first time. Unlike modern UNIX, Plan 9 satisfies all the demands made by <em>TUPE.</em></p> <p><code>ircrc</code> was fine, but eventually I wanted a persistent client, something that better approximated <code>irssi</code> running in <code>tmux</code> on a remote shell server. This desire coincided nicely with my first attempts to setup a permanent Plan 9 server. I found what I was looking for in <a href="http://plan9.stanleylieber.com/src/irc7.tgz">irc7</a>, a client split into its own client/server components, with one part holding open a persistent connection to an IRC server on an always-up Plan 9 machine, and the other part serving as my interface to IRC on my personal machine, whenever and wherever I happened to be located.</p> <h2>E-mail</h2> <p>I found that I was spending more and more time in my Plan 9 installation in QEMU, and less and less time in UNIX proper. The next natural desire was getting e-mail into the mix. At this point I was still using Google&rsquo;s gmail product, which I was able to <a href="http://fqa.9front.org/fqa8.html#8.4.1.1.1">access over IMAP</a> using Plan 9&rsquo;s native <a href="http://fqa.9front.org/fqa8.html#8.4.1">upas</a> mail subsystem. I was shocked to discover that <code>upas</code> dated from 1984. (<strong>Footnote:</strong> It was not susceptible to the Morris worm.)</p> <p>After a while I decided I didn&rsquo;t want to be used by gmail anymore, so after many years I resumed hosting my own e-mail using the aforementioned <code>upas'</code> SMTPD and SMTP mechanisms. Yes, I&rsquo;m still able to access my mailboxes over IMAP from whatever computer or device is readily at hand, or by simply logging in to the remote Plan 9 server and running <a href="http://man.9front.org/1/mail">mail(1)</a> like a normal human being. One benefit of receiving mail on Plan 9 is that I&rsquo;m able to configure spam filtering, mailing list sorting, autoresponders, etc., using the same kind of <a href="http://man.9front.org/1/filter">simple shell scripts</a> that control the rest of the system. Here, again, learning the fundamentals pays dividends throughout the experience. It&rsquo;s almost as if time spent learning one part of the system can be profitably applied elsewhere. As a heavy computer user for over thirty years, this still strikes me as suspiciously sensible.</p> <h2>WWW</h2> <p>9front ships with two web browsers, both written as jokes and abandoned by their authors in prior decades. Neither of them support Javascript, CSS, or anything beyond a meager subset of HTML. Of the two, 9front&rsquo;s evolution of <a href="https://en.wikipedia.org/wiki/Tom_Duff">Tom Duff&rsquo;s</a> <a href="http://fqa.9front.org/fqa8.html#8.4.5.1">mothra(1)</a> is perfectly usable if the aforementioned Rube Goldberg extensions are not required. Trying to use Plan 9 but still needing a modern web browser is a conundrum that has inspired many fledgling Plan 9 users to give up hope and <a href="http://9front.org/buds.html">retreat</a> to the safety of their Macbooks. (<strong>See also:</strong> <a href="https://9fans.topicbox.com/groups/9fans/Tf27e6479d8812712-Mf5d76f728866828465e3e33e/9fans-is-the-vanilla-plan-9-still-alive">9fans</a>)</p> <p>By the time I was ready to ditch the host operating system and install Plan 9 on bare hardware, my desire for the modern web experience had ebbed to an all time low. I went several years only touching a featureful browser when absolutely necessary. Which always felt gross. Your mileage may vary.</p> <h2>Torrents</h2> <p>9front ships with a <a href="http://man.9front.org/1/torrent">native torrent client</a> that works very well but does not support magnet URLs. For a long time this didn&rsquo;t bother me because magnet links were (unlike today) not often required, and in any case, I could always just use a UNIX machine to perform the download. At some point the sheer inadequacy of this excuse began to wear thin. Why did I want to be forever tethered to UNIX? I finally got rid of the modern web browser, and now <em>this?</em> Usefully, Plan 9 became a first class citizen in the <a href="http://golang.org">Go programming language</a> community. Some Go torrent clients <a href="https://github.com/anacrolix/torrent">actually work on Plan 9</a>.</p> <p><strong>Note:</strong> Plan 9 may not be used to download legally encumbered material without the express permission of the rights holder.</p> <h2>Making Books</h2> <p>At the end of the day, what do I actually do with my computer?</p> <p>I&rsquo;m a writer. I write books. I use Plan 9 to type, format, collate, and prepare camera ready output for those books. Just like Brian Kernighan with his <a href="http://doc.cat-v.org/unix/typesetting/digital-restoration-and-typesetter-forensics/">Linotron 202</a> (and, I should add, using many of the same software tools.)</p> <p>Some examples of the build process include:</p> <p><a href="https://code.9front.org/hg/fqa.9front.org">https://code.9front.org/hg/fqa.9front.org</a></p> <p><a href="https://code.9front.org/hg/1oct1993">https://code.9front.org/hg/1oct1993</a></p> <p><a href="https://code.9front.org/hg/thrice_great_hermes">https://code.9front.org/hg/thrice_great_hermes</a></p> <p>Start by reading each <code>mkfile</code>.</p> <h2>Is That It? I Gotta Go.</h2> <p>Seriously, what do you do with your computer?</p> <p>Over time 9front sanded off its rough edges. I can do just about everything I need to do from a bare metal install. Today, we even have <a href="http://man/9front.org/1/vmx">vmx(1)</a> for hosting OpenBSD or Linux virtual machines (just in case you need to interface with the U.S. government via the now-required modern web browser). A previous release of the <a href="http://9front.org/propaganda/books">9front DASH1 manual</a> was created entirely on a ThinkPad running 9front (and <a href="https://www.gimp.org/">Gimp</a> running inside OpenBSD running inside <code>vmx(1)</code>). 9front now even ships with a primitive <a href="http://man.9front.org/1/paint">Microsoft Paint clone</a>, several native <a href="http://man.9front.org/1/sega">Sega</a> and <a href="http://man.9front.org/1/nintendo">Nintendo</a> emulators, and a full port of <a href="http://man.9front.org/1/games">DOOM</a>. I never would have dreamed anything like this was possible back in 2009. As time goes by, there is less and less reason to boot anything else.</p> <p>For what I do, I&rsquo;m perfectly happy with it.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2018/09/24/0/ http://helpful.cat-v.org:80/Blog/2018/09/24/0/Sat, 16 Nov 2024 20:57:02 -0500 <p><img src="http://img.stanleylieber.com:80/src/21083/img/small.1537463413.png" alt="Hermes Rocket, 1952" /></p> <p>Typewriters can be useful. Specifically: lightweight, portable typewriters such as the <a href="https://type-writer.org/?p=2828">Hermes Rocket</a> provide a convenient, reliable alternative to computers. Type and file.</p> <p>They may also ship with unique <a href="http://typewriter.boardhost.com/viewtopic.php?id=784">baggage</a>:</p> <blockquote><p>The man who owned this typewriter was a US Air Force officer and engineer, who was principal designer of the SR-71 spy plane engines. Threaded up around the platen of this machine when I received it was a seemingly blank sheet of paper that revealed, upon careful inspection with a bright desk lamp, the imprint of some official military correspondence.</p></blockquote> <p><strong>Update, 2019:</strong></p> <p>Sold the old (1952) model, and bought a slightly newer (1955) model. It&rsquo;s in better condition.</p> <p><img src="http://img.stanleylieber.com/src/21127/img/small.1541035257.png" alt="Hermes Rocket, 1955" /></p> Aquileo | http://helpful.cat-v.org:80/Blog/2018/04/16/0/ http://helpful.cat-v.org:80/Blog/2018/04/16/0/Sat, 16 Nov 2024 20:57:01 -0500 <p><img src="http://img.stanleylieber.com/src/19879/img/small.1523919442.png" alt="Lenovo ThinkPad T430 with T420 keyboard" /></p> <blockquote><p>This guide will explain exactly how to replace your xx30&rsquo;s keyboard with an xx20 Classic keyboard.</p></blockquote> <p>Read more <a href="http://www.thinkwiki.org/wiki/Install_Classic_Keyboard_on_xx30_Series_ThinkPads">here</a>.</p> <p>Additional information <a href="http://www.instructables.com/id/ThinkPad-T430T430sX230-Classic-Keyboard-Mod/">here</a>.</p> <p>Even more information <a href="https://forum.thinkpads.com/viewtopic.php?f=69&amp;t=120776&amp;hilit=t431s">here</a>.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2018/03/23/0/ http://helpful.cat-v.org:80/Blog/2018/03/23/0/Sat, 16 Nov 2024 20:57:01 -0500 <blockquote><p>This is the bare minimum necessary to configure Firefox so that it behaves in a reasonable manner. This document was last updated on 27 January 2017 and was tested with a clean install of Firefox 57. Verify these steps each time Firefox is updated.</p></blockquote> <p>Read more <a href="http://sciops.net/information/technology/firefox">here</a>.</p> Aquileo | http://helpful.cat-v.org:80/Blog/2018/03/08/0/ http://helpful.cat-v.org:80/Blog/2018/03/08/0/Sat, 16 Nov 2024 20:57:00 -0500 <h2>Help, my phone is my only Internet access</h2> <p>This article describes how a mobile phone (in this case, an iPhone) may be used to quickly and easily access a Plan 9 computer. Note: The path to victory is littered with compromises of necessity that terminate in reasonable functionality. Your mileage may vary.</p> <h2>SSH client</h2> <p>Any SSH client will do.</p> <p>For iOS, there exists an app called <a href="https://www.panic.com/prompt/">Prompt 2</a> by Panic, Inc., whose features are sufficient to the task. Prompt 2 may be configured for one-click connection to a remote server, including the ability to automatically run a command once the connection is established (see below).</p> <h2>Remote UNIX SSH server</h2> <p>The following platforms are recommended: OpenBSD, FreeBSD, Solaris, MacOS. Other UNIX-like systems may also be able to compile and run <a href="http://drawterm.9front.org">drawterm</a> (see below).</p> <h3>Terminal multiplexer</h3> <p>A terminal multiplexer such as <a href="https://man.openbsd.org/tmux">tmux(1)</a> may be used to sustain a drawterm connection across numerous SSH sessions. For convenience, create a script to re-attach your session that may be executed by the SSH client:</p> <pre><code> #!/bin/sh tmux -u attach </code></pre> <h2>drawterm -G</h2> <p>The <a href="http://9front.org">9front</a> project has forked and updated Russ Cox&rsquo;s original drawterm:</p> <p><a href="http://drawterm.9front.org">http://drawterm.9front.org</a></p> <p>adding (among other things) support for a non-graphical, text-based command line mode:</p> <pre><code> drawterm -G -h $host -a $auth_server -u $user </code></pre> <p>The drawterm command is likewise suitable for being run from a script.</p> <h2>Go!</h2> <p>All the pieces in place, configure your SSH client to connect to the remote UNIX SSH server and re-attach to your tmux(1) session.</p> <p><img src="http://img.stanleylieber.com:80/src/19765/img/1520563838.png" alt="Prompt 2 running on an iPhone 7 Plus" /></p> <p>Related: <a href="http://9front.org">9front</a>, <a href="http://9p.io/plan9/">Plan 9</a></p> Aquileo | http://helpful.cat-v.org:80/Blog/2017/11/29/0/ http://helpful.cat-v.org:80/Blog/2017/11/29/0/Sat, 16 Nov 2024 20:56:59 -0500 <p>Mother is an <a href="http://man.9front.org/1/rc">rc(1)</a> script that provides a similar experience to <a href="http://man.9front.org/1/nedmail">nedmail(1)</a>. Note: saved messages are copied manually to the mbox <em>directory</em> in <a href="http://www.quanstro.net/plan9/nupas.pdf">mdir</a> format (the default used by Erik Quanstro&rsquo;s nupas and 9front&rsquo;s upas). All other interactions between mother and mail messages occur via <a href="http://man.9front.org/4/upasfs">upasfs(4)</a>.</p> <p>Read more <a href="http://plan9.stanleylieber.com/mother/">here</a>.</p> <p>Related: <a href="http://9front.org">9front</a>, <a href="http://9p.io/plan9/">Plan 9</a></p>