<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <channel>
  <title>Posts tagged "Linux"</title>
  <description>Posts tagged "Linux"</description>
  <link>https://www.greghendershott.com/tags/Linux.rss.xml</link>
  <atom:link href="https://www.greghendershott.com/tags/Linux.rss.xml" rel="self" type="application/rss+xml"></atom:link>
  <lastBuildDate>Sun, 03 Jun 2019 00:00:00 UT</lastBuildDate>
  <pubDate>Sun, 03 Jun 2019 00:00:00 UT</pubDate>
  <ttl>1800</ttl>
  <item>
   <title>Linux Laptop</title>
   <link>https://www.greghendershott.com/2019/06/linux-laptop.html</link>
   <guid isPermaLink="false">urn:www-greghendershott-com:-2019-06-linux-laptop.html</guid>
   <pubDate>Sun, 03 Jun 2019 00:00:00 UT</pubDate>
   <dc:creator>Greg Hendershott</dc:creator>
   <description>
&lt;div&gt;
 &lt;article&gt;
  &lt;header&gt;
   &lt;h1&gt;Linux Laptop&lt;/h1&gt;
   &lt;p class="date-and-tags"&gt;
    &lt;time datetime="2019-06-03" pubdate="true"&gt;2019-06-03&lt;/time&gt; :: &lt;span class="tags"&gt;&lt;a href="/tags/Linux.html"&gt;Linux&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/header&gt;
  &lt;p&gt;For the first time, ever, I&amp;rsquo;ve been using Linux on raw hardware for a couple months. The experience has been utterly boring and wonderful.&lt;/p&gt;&lt;!-- more--&gt;
  &lt;p&gt;Sometime in the 1990s, I upgraded a desktop computer from something like Windows 3.1 to Windows 95. The result was&amp;hellip; not good. Some hardware wasn&amp;rsquo;t working well. I remember cursing Plug and Play. I figured out some things, but that computer never was fully right. Eventually I replaced it.&lt;/p&gt;
  &lt;p&gt;That experience left me feeling, I&amp;rsquo;d rather do any major operating system upgrade as a result of buying a new computer.&lt;/p&gt;
  &lt;p&gt;There was a time when many Windows laptops didn&amp;rsquo;t &amp;ldquo;just work&amp;rdquo; when it came to things like power management or wireless networking. Eventually that improved. But then Linux had a similar reputation for many years. And I really don&amp;rsquo;t want to spend time futzing with basics.&lt;/p&gt;
  &lt;p&gt;My previous dalliances with Linux include:&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;
    &lt;p&gt;Using Linux in a Virtual Box VM. Generally works, maybe slowly.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Using &lt;a href="https://github.com/dnschneid/crouton"&gt;crouton&lt;/a&gt; on a Chomebook Pixel. For awhile, this seemed like  the best of both worlds, to me. Rely on Chrome OS to have decent  drivers for power, networking, trackpad.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Using Windows Subsystem for Linux. This is actually what led me to  go all-in. Around New Year&amp;rsquo;s, I got a Windows laptop with the idea  that I&amp;rsquo;d test Racket Mode on Windows, that way. I got side-tracked  by playing with WSL. Then I got frustrated by WSL support for Emacs  getting worse not better over time.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;p&gt;About three months ago, I followed this &lt;a href="https://thornelabs.blog/posts/installing-ubuntu-1804-lts-on-a-lenovo-thinkpad-x1-carbon-gen-6.html"&gt;guide&lt;/a&gt;: &amp;ldquo;Installing Ubuntu 18.04 LTS on a Lenovo ThinkPad X1 Carbon Gen 6&amp;rdquo;.&lt;/p&gt;
  &lt;p&gt;Since then, I&amp;rsquo;ve hit a few &amp;ldquo;milestones&amp;rdquo; where I expected I might have my first bad experience:&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;
    &lt;p&gt;Suspend/resume? It worked.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Connecting an external 4K monitor via a USB-C cable? Both displays  working fine. Laptop getting charged.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Printing? It found the driver for the printer and printed. Yawn.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;p&gt;Maybe it&amp;rsquo;s beginner&amp;rsquo;s luck. Maybe I&amp;rsquo;m in the honeymoon phase. I keep waiting for the other shoe to drop.&lt;/p&gt;
  &lt;footer&gt;&lt;/footer&gt;&lt;/article&gt;&lt;/div&gt;</description></item>
  <item>
   <title>Chromebook Pixel</title>
   <link>https://www.greghendershott.com/2013/05/chromebook-pixel.html</link>
   <guid isPermaLink="false">urn:www-greghendershott-com:-2013-05-chromebook-pixel.html</guid>
   <pubDate>Tue, 28 May 2013 14:07:10 UT</pubDate>
   <dc:creator>Greg Hendershott</dc:creator>
   <description>
&lt;div&gt;
 &lt;article&gt;
  &lt;header&gt;
   &lt;h1&gt;Chromebook Pixel&lt;/h1&gt;
   &lt;p class="date-and-tags"&gt;
    &lt;time datetime="2013-05-28" pubdate="true"&gt;2013-05-28&lt;/time&gt; :: &lt;span class="tags"&gt;&lt;a href="/tags/Google.html"&gt;Google&lt;/a&gt;, &lt;a href="/tags/Linux.html"&gt;Linux&lt;/a&gt;, &lt;a href="/tags/Racket.html"&gt;Racket&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/header&gt;
  &lt;p&gt;I&amp;rsquo;m writing this blog post on a &lt;a href="http://www.google.com/chromebook/pixel"&gt;Chromebook Pixel&lt;/a&gt;. In Emacs. On Ubuntu, as a &lt;a href="http://en.wikipedia.org/wiki/Chroot"&gt;chroot&lt;/a&gt;, thanks to &lt;a href="https://github.com/dnschneid/crouton"&gt;crouton&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Why do I have a Chromebook Pixel? Google gave one to every Google I/O 2013 attendee.&lt;sup&gt;&lt;a href="#chromebook-pixel-footnote-1-definition" name="chromebook-pixel-footnote-1-return"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
  &lt;p&gt;Although I was happy to get such a cool new gadget, I honestly wasn&amp;rsquo;t sure what I&amp;rsquo;d &lt;em&gt;do&lt;/em&gt; with the thing. I really like my MacBook Pro Retina and wasn&amp;rsquo;t looking for an alternative. Also, although &lt;a href="http://www.greghendershott.com/2013/02/fucking-suggested-post-why-web-apps-matter.html"&gt;I love web apps&lt;/a&gt; and 45% of my day is in the web browser, another 45% is in Emacs using &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; &amp;mdash; what about that?&lt;/p&gt;&lt;!-- more--&gt;
  &lt;p&gt;Then I remembered you can run Linux on a Chromebook. Well, it&amp;rsquo;s &lt;em&gt;already&lt;/em&gt; running Linux; that&amp;rsquo;s what ChromeOS is built on. For &amp;ldquo;real&amp;rdquo; Linux, you have a choice:&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;
    &lt;p&gt;Dual boot ChromeOS and Linux.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Use chroot to run some other Linux userland on top of the ChromeOS&amp;rsquo; Linux kernel.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;
  &lt;p&gt;The advantage of the latter is that you can still run ChromeOS, and hit hotkeys to flip between it and the &amp;ldquo;real&amp;rdquo; Linux desktop.&lt;/p&gt;
  &lt;blockquote&gt;
   &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: In the rest of this blog post, keep in mind that my Linux experience has been limited to command-line environments like Amazon Linux on EC2. My &lt;em&gt;entire&lt;/em&gt; GUI desktop Linux experience consists of using Ubuntu on the Chromebook Pixel for the last 2 days. So if I write something stupid, keep that in mind and feel free to chime in with a nice comment below. ;)&lt;/p&gt;&lt;/blockquote&gt;
  &lt;h2 id="installing"&gt;Installing&lt;/h2&gt;
  &lt;ol&gt;
   &lt;li&gt;
    &lt;p&gt;Put the Chromebook into developer mode.&lt;sup&gt;&lt;a href="#chromebook-pixel-footnote-2-definition" name="chromebook-pixel-footnote-2-return"&gt;2&lt;/a&gt;&lt;/sup&gt; ~15 minutes.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;Download and install &lt;a href="https://github.com/dnschneid/crouton"&gt;crouton&lt;/a&gt;. ~30 minutes.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/dnschneid/crouton/wiki/Chromebook-Pixel"&gt;Configure Ubuntu&lt;/a&gt; to deal with the Chromebook Pixel&amp;rsquo;s insanely high DPI.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;
  &lt;h2 id="emacs"&gt;Emacs&lt;/h2&gt;
  &lt;p&gt;As I write this, the newest Emacs available from &lt;code&gt;apt-get&lt;/code&gt; is 23.3. On OS X, I&amp;rsquo;d grown used to 24.2, including its package manager. Otherwise, a simple &lt;code&gt;git clone&lt;/code&gt; of my &lt;code&gt;.emacs.d&lt;/code&gt; tree got everything working quickly.&lt;/p&gt;
  &lt;p&gt;I realize it&amp;rsquo;s possible to build a newer Emacs. Just haven&amp;rsquo;t gotten to that.&lt;/p&gt;
  &lt;h2 id="racket"&gt;Racket&lt;/h2&gt;
  &lt;p&gt;The &lt;code&gt;Linux x86_64 (Debian squeeze)&lt;/code&gt; build of &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; works great. The only issues I encountered were the following:&lt;/p&gt;
  &lt;h3 id="drracket"&gt;DrRacket&lt;/h3&gt;
  &lt;p&gt;Just crank the font size up &lt;code&gt;CTRL +&lt;/code&gt; a few notches. Bad news: Some UI elements like toolbar buttons will remain tiny. Good news: The main text in the editor is rendered cripsly (unlike on the MacBook Pro Retina display where it&amp;rsquo;s some 4x4 sub-pixel affair).&lt;/p&gt;
  &lt;h3 id="send-url-and-drracket-help"&gt;send-url (and DrRacket help)&lt;/h3&gt;
  &lt;p&gt;By default, &lt;code&gt;send-url&lt;/code&gt; from &lt;code&gt;net/sendurl&lt;/code&gt; doesn&amp;rsquo;t know how to start a browser. If it used &lt;code&gt;reasonable-browser&lt;/code&gt; or &lt;code&gt;xdg-open&lt;/code&gt; I think it would work. It looks like it&amp;rsquo;s possible to deal with this by changing the &lt;code&gt;external-browser&lt;/code&gt; parameter. For example, here&amp;rsquo;s a quick hack I put in my local build of &lt;a href="https://github.com/greghendershott/frog"&gt;Frog&lt;/a&gt; to get its preview feature working:&lt;/p&gt;
  &lt;div class="brush: racket"&gt;
   &lt;table class="sourcetable"&gt;
    &lt;tbody&gt;
     &lt;tr&gt;
      &lt;td class="linenos"&gt;
       &lt;div class="linenodiv"&gt;
        &lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;
      &lt;td class="code"&gt;
       &lt;div class="source"&gt;
        &lt;pre&gt;&lt;span&gt;&lt;/span&gt;  &lt;span class="c1"&gt;;; This is a bit of a hack: If `preview` fails on Linux, try again&lt;/span&gt;
  &lt;span class="c1"&gt;;; using the "sensible-browser" command.&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://docs.racket-lang.org/reference/exns.html#(form._((lib._racket/private/more-scheme..rkt)._with-handlers))" style="color: inherit"&gt;with-handlers&lt;/a&gt;&lt;/span&gt; &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/exns.html#(def._((quote._~23~25kernel)._exn~3afail~3f))" style="color: inherit"&gt;exn:fail?&lt;/a&gt;&lt;/span&gt;
                   &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://docs.racket-lang.org/reference/lambda.html#(form._((lib._racket/private/base..rkt)._lambda))" style="color: inherit"&gt;lambda&lt;/a&gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/exns.html#(def._((lib._racket/private/base..rkt)._exn))" style="color: inherit"&gt;exn&lt;/a&gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                     &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://docs.racket-lang.org/reference/match.html#(form._((lib._racket/match..rkt)._match))" style="color: inherit"&gt;match&lt;/a&gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/runtime.html#(def._((quote._~23~25kernel)._system-type))" style="color: inherit"&gt;system-type&lt;/a&gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="ss"&gt;os&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                       &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="ss"&gt;unix&lt;/span&gt;
                        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://docs.racket-lang.org/reference/parameters.html#(form._((lib._racket/private/more-scheme..rkt)._parameterize))" style="color: inherit"&gt;parameterize&lt;/a&gt;&lt;/span&gt; &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;external-browser&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sensible-browser "&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;
                          &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;preview&lt;/span&gt;&lt;span class="p"&gt;))]&lt;/span&gt;
                       &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;&lt;a href="http://docs.racket-lang.org/reference/stx-patterns.html#(form._((lib._racket/private/stxcase-scheme..rkt).__))" style="color: inherit"&gt;_&lt;/a&gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/Writing.html#(def._((quote._~23~25kernel)._eprintf))" style="color: inherit"&gt;eprintf&lt;/a&gt;&lt;/span&gt; &lt;span class="s2"&gt;"~a"&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/exns.html#(def._((quote._~23~25kernel)._exn-message))" style="color: inherit"&gt;exn-message&lt;/a&gt;&lt;/span&gt; &lt;span class="nb"&gt;&lt;a href="http://docs.racket-lang.org/reference/exns.html#(def._((lib._racket/private/base..rkt)._exn))" style="color: inherit"&gt;exn&lt;/a&gt;&lt;/span&gt;&lt;span class="p"&gt;))]))])&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;preview&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;p&gt;This is &lt;em&gt;not&lt;/em&gt; necessarily the right way to handle this; I might not even commit this code.&lt;/p&gt;
  &lt;p&gt;Also, this doesn&amp;rsquo;t fix DrRacket knowing how to start a browser to show documentation.&lt;/p&gt;
  &lt;h2 id="circ"&gt;CIRC&lt;/h2&gt;
  &lt;p&gt;When I searched the Chome store for &amp;ldquo;IRC&amp;rdquo;, strangely it did &lt;em&gt;not&lt;/em&gt; show me &lt;a href="https://chrome.google.com/webstore/detail/circ/bebigdkelppomhhjaaianniiifjbgocn?hl=en-US"&gt;CIRC&lt;/a&gt;. Fortunately I found it from regular Google search. Very nifty IRC client. Not as featureful as something like Colloqy on OS X, but neat. Of course if you want to run IRC on the Ubuntu chroot instead of the main ChromeOS, there are the usual choices.&lt;/p&gt;
  &lt;h2 id="prognosis"&gt;Prognosis?&lt;/h2&gt;
  &lt;p&gt;I spent a couple decades using DOS and then Windows. Only in the last few years have I seriously used OS X full-time, and used command-line Linux on EC2 instances. I&amp;rsquo;ve wanted to try a GUI Linux. Also, as I&amp;rsquo;ve grown grumpy lately about Apple and Google wanting to put us into AOL era walled gardens, I&amp;rsquo;ve thought more about using Linux as my main OS.&lt;/p&gt;
  &lt;p&gt;But I love laptops. And I hate screwing around with drivers. And I &lt;em&gt;really&lt;/em&gt; hate laptops where things like wi-fi, power management, and the touch pad don&amp;rsquo;t really work correctly. So I&amp;rsquo;ve never wanted to go down that road of finding some specific ThinkPad model from 2007, spending a week futzing with drivers, and spending years with the thing never quite working right. At least that&amp;rsquo;s the impression I get everytime I research this. I won&amp;rsquo;t get a hobbyist&amp;rsquo;s enjoyment from tinkering with the basic damn hardware functionality of my main working machine. I need it to work, so I can focus on the kind of tinkering I &lt;em&gt;do&lt;/em&gt; like.&lt;/p&gt;
  &lt;p&gt;So as far as I could tell, I&amp;rsquo;d probably never go down that road. And yet, hello, Chromebook Pixel. So far, it just-works the way I would want a Linux laptop to just-work. With a screen that&amp;rsquo;s even more beautiful than the MacBook Pro Retina (and, although it&amp;rsquo;s more of a novelty, for me, it&amp;rsquo;s a flipping &lt;em&gt;touch&lt;/em&gt; screen). This thing is sweet.&lt;/p&gt;
  &lt;p&gt;The irony is that this laptop is from Google, who I mentioned above is one of the reasons why I was interested in moving to Linux. Plus, it&amp;rsquo;s Google, which means in 2 years will the whole thing get kicked to the curb like Reader and the latest round of open standards? Even if ChromeOS survives, this weird and wondeful Pixel-class Chromebook might not. It feels like something for early-adopter developers, a happy accident that will get cleaned up someday in an orgy of strategory changing and focusing. I hope I&amp;rsquo;m wrong. I hope this hot mess survives.&lt;/p&gt;
  &lt;div class="footnotes"&gt;
   &lt;ol&gt;
    &lt;li id="chromebook-pixel-footnote-1-definition" class="footnote-definition"&gt;
     &lt;p&gt;Free? Well, the Google I/O fee was $999. Plus travel and hotel. So it wasn&amp;rsquo;t free for me in that sense. However the Pixel is $1299, Google&amp;rsquo;s COGS is probably ~$1000, and running Google I/O costs something. So it was at least free-ish, and certainly a very nice surprise from Google.&amp;nbsp;&lt;a href="#chromebook-pixel-footnote-1-return"&gt;↩&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
    &lt;li id="chromebook-pixel-footnote-2-definition" class="footnote-definition"&gt;
     &lt;p&gt;Otherwise known as &amp;ldquo;can&amp;rsquo;t watch the Bluths&amp;rdquo; mode. Literally the day after I flipped the Chromebook into dev mode, &lt;em&gt;Arrested Development&lt;/em&gt; premiered on Netflix. But Netflix disables video viewing for dev mode. Amazon Instant Video, interestingly, still works.&amp;nbsp;&lt;a href="#chromebook-pixel-footnote-2-return"&gt;↩&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
  &lt;footer&gt;&lt;/footer&gt;&lt;/article&gt;&lt;/div&gt;</description></item></channel></rss>
