<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="https://perrotta.dev/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Legacy on ¬ just serendipity 🍀</title>
    <link>https://perrotta.dev/</link>
    <description>Recent content in Legacy on ¬ just serendipity 🍀</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>serendipity@perrotta.dev (Thiago Perrotta)</managingEditor>
    <webMaster>serendipity@perrotta.dev (Thiago Perrotta)</webMaster>
    <copyright>© 2013 - 2026 Thiago Perrotta ·
  a fork of [hugo ʕ•ᴥ•ʔ bear](https://github.com/janraasch/hugo-bearblog/)
</copyright>
    <lastBuildDate>Sun, 29 Mar 2026 22:20:08 +0200</lastBuildDate>
    <atom:link href="https://perrotta.dev/tags/legacy/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Arch Linux on macbook installation notes
      </title>
      <link>https://perrotta.dev/2017/02/arch-linux-on-macbook-installation-notes/</link>
      <pubDate>Sat, 11 Feb 2017 18:36:02 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2017/02/arch-linux-on-macbook-installation-notes/</guid>
      <description>&lt;p&gt;♠ Imported from &lt;a href=&#34;https://gist.github.com/thiagowfx/&#34;&gt;thiagowfx&lt;/a&gt;@&amp;rsquo;s gist.&lt;/p&gt;&#xA;&lt;p&gt;Arch Linux Installation Notes (Macbook, UEFI, LVM ON LUKS, swap, btrfs root and home):&lt;/p&gt;&#xA;&lt;h2 id=&#34;references&#34;&gt;&#xA;  References&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2017/02/arch-linux-on-macbook-installation-notes/#references&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create an installation disk (USB Flash Drive):&#xA;&lt;a href=&#34;http://zanshin.net/2015/02/05/arch-linux-on-a-macbook-pro-part-1-creating-a-usb-installer/&#34;&gt;http://zanshin.net/2015/02/05/arch-linux-on-a-macbook-pro-part-1-creating-a-usb-installer/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Partitioning (EFI boot partition + LVM on LUKS partition):&#xA;&lt;a href=&#34;https://gist.github.com/jasonwryan/4618490&#34;&gt;https://gist.github.com/jasonwryan/4618490&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Naming conventions:&#xA;&lt;a href=&#34;http://www.pavelkogan.com/2014/05/23/luks-full-disk-encryption/&#34;&gt;http://www.pavelkogan.com/2014/05/23/luks-full-disk-encryption/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Support docs:&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS&#34;&gt;https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Bootloader: &lt;a href=&#34;https://wiki.archlinux.org/index.php/systemd-boot&#34;&gt;https://wiki.archlinux.org/index.php/systemd-boot&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Official Installation Guide:&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Installation_guide&#34;&gt;https://wiki.archlinux.org/index.php/Installation_guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;post-installation&#34;&gt;&#xA;  Post-installation&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2017/02/arch-linux-on-macbook-installation-notes/#post-installation&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Mac#Arch_Linux_only&#34;&gt;https://wiki.archlinux.org/index.php/Mac#Arch_Linux_only&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/yantis/instant-archlinux-on-mac&#34;&gt;https://github.com/yantis/instant-archlinux-on-mac&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Arch Linux on macbook installation notes&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux goodness in your Chromebook
      </title>
      <link>https://perrotta.dev/2016/09/linux-goodness-in-your-chromebook/</link>
      <pubDate>Thu, 01 Sep 2016 16:29:07 -0200</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2016/09/linux-goodness-in-your-chromebook/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://www.google.com.br/chromebook/&#34;&gt;Chromebooks&lt;/a&gt; are excellent for testing&#xA;and playing with Linux userland[1] stuff. And, even better, (almost) every&#xA;change you make to it can be reset back to its factory state — even in the worst&#xA;case of completely wiping ChromeOS from your computer. As long as you don&amp;rsquo;t mess&#xA;up with its &lt;a href=&#34;https://en.wikipedia.org/wiki/Firmware&#34;&gt;firmware&lt;/a&gt;, you can do&#xA;whatever you want and still be safe. Most models are cheap, battery life is&#xA;amazing for a cheap Linux laptop (8+ hours, depending on the device and on&#xA;usage)[2], Linux support is great (well, it ships with a Linux OS, right?) —&#xA;even for most touchscreen models [citation needed] — and it is simple (as in&#xA;KISS).&lt;/p&gt;&#xA;&lt;p&gt;Now, the previous paragraph sounded a little repetitive, but I&amp;rsquo;d like to focus&#xA;on two of my previous points here:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;You can do whatever you want and still remain safe.&lt;/strong&gt; Yes. Indeed, you can&#xA;reset your chromebook to its factory state with just a few clicks — this is&#xA;still hard to do with Windows and OS X, as far as I know. I think Windows 10&#xA;is introducing a feature to ease this process, however I am not sure about it&#xA;yet. This is super important (and convenient!) for people playing with a&#xA;ChromeOS device — like me. My usual way to reset the system back to &amp;ldquo;factory&#xA;state&amp;rdquo; was, usually, to install a Linux distro with the btrfs filesystem so I&#xA;could create a snapshot upon the installation was finished, and then revert&#xA;back to it at anytime I wanted. However, this solution is a little&#xA;cumbersome. The second usual solution would be to simply use a virtual&#xA;machine, but I don&amp;rsquo;t need to reiterate that this is slow and limited in many&#xA;ways.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Simple&lt;/strong&gt;. This is really important if you don&amp;rsquo;t want to have headaches in&#xA;the long run. For starters, simplicity is always a trade-off that involves&#xA;performance: it is hard to be simple with a core i7 CPU, so if you choose the&#xA;KISS path, you are deliberately sacrificing some of your performance. Once&#xA;you accept that, we can move forward: Chromebooks are very simple devices.&#xA;They&amp;rsquo;re almost directly comparable to a tablet with a keyboard. Sometimes&#xA;they feel like a full-featured arduino.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;These were some small highlights about my decision to get one. Now here&amp;rsquo;s the&#xA;good stuff:&lt;/p&gt;&#xA;&lt;h2 id=&#34;there-be-dragons&#34;&gt;&#xA;  There be dragons&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2016/09/linux-goodness-in-your-chromebook/#there-be-dragons&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer/Warning&lt;/strong&gt;: these will potentially void the warranty of your device,&#xA;and they are only recommended if you know what you&amp;rsquo;re doing. Be a good user and&#xA;research before messing up with your system. I will provide upstream links with&#xA;documentation as much as possible.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.chromium.org/chromium-os/poking-around-your-chrome-os-device&#34;&gt;Enable developer&#xA;mode&lt;/a&gt;&#xA;— it&amp;rsquo;s a must; however, it weakens the security of your device. Beware and&#xA;research! This can be totally reverted with a single keystroke (SPACE) at the&#xA;login screen that will appear in every subsequent boot of your system.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images&#34;&gt;dev_install&lt;/a&gt;&#xA;— to get fdisk, python, tmux, nano, emerge (for binaries), and so on. These&#xA;are just a few developer tools, they won&amp;rsquo;t scale and you won&amp;rsquo;t get whatever&#xA;package you want in your vanilla ChromeOS, however these might help a lot with&#xA;simple tasks. For example, you can format a SD card or an USB Flash Drive&#xA;directly from ChromeOS upon running this tool — otherwise, you&amp;rsquo;d usually have&#xA;to use another computer, with another OS to do it. It uses just a little space&#xA;(~100M+ or so), and it can be totally reverted with &lt;code&gt;devinstall --uninstall&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Switch to the &lt;a href=&#34;https://support.google.com/chromebook/answer/1086915?hl=en&#34;&gt;beta&#xA;channel&lt;/a&gt; if you&#xA;want to be slightly more into the bleeding edge — but not too much as in the&#xA;dev channel. In fact, at the time of this post, select devices in beta channel&#xA;have support for Android apps in ChromeOS.&lt;/li&gt;&#xA;&lt;li&gt;Open a new shell (crosh) with Ctrl + Alt + T. The default username is&#xA;&amp;lsquo;chronos&amp;rsquo;, without any password.&lt;/li&gt;&#xA;&lt;li&gt;User-writable locations are: /usr/local (in particular, /usr/local/bin is in&#xA;your PATH env variable out-of-the-box (echo $PATH)), /tmp and&#xA;/home/chronos/user/Downloads. There might be more, but these are enough.&lt;/li&gt;&#xA;&lt;li&gt;You can also insert removable media (USB flash drives, SD cards), which would&#xA;show up on /media. ChromeOS can read/write filesystems formatted as ext{2,3,4}&#xA;and FAT{,32} at least.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These are the basics. However, you will soon find out that you cannot do too&#xA;much with ChromeOS, even with these modifications. In this case, there are three&#xA;options, and all of them involve getting a Linux distribution in some way:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;(RECOMMENDED)&lt;/strong&gt; Install a Linux distro on either a SD card or an USB Flash&#xA;Drive and dual-boot from it. It is really easy to dual-boot, you just press&#xA;C-d to boot from the internal eMMC / SSD, or C-u to boot from external&#xA;storage. There&amp;rsquo;s no need to play with grub, EFI, or any (other) fancy&#xA;bootloader. If you change your mind later on, just format your SD card: there&#xA;is no need to change anything on ChromeOS.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;(NOT RECOMMENDED BY ME)&lt;/strong&gt; Completely wipe ChromeOS by installing another&#xA;Linux distribution on its place. Although it&amp;rsquo;s easy to revert this process&#xA;through &lt;a href=&#34;https://support.google.com/chromebook/answer/1080595&#34;&gt;recovery&#xA;media&lt;/a&gt;, it completely&#xA;defeats the purpose of getting a Chromebook in the first place, especially&#xA;now that Android apps are starting to become available on them (for&#xA;touchscreen devices, of course).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;(PROBABLY WOULDN&amp;rsquo;T RECOMMEND, BUT YOU MAY LIKE IT)&lt;/strong&gt; Install a chroot&#xA;alongside your ChromeOS, such as&#xA;&lt;a href=&#34;https://github.com/dnschneid/crouton&#34;&gt;crouton&lt;/a&gt;. I tried it however I hated&#xA;it. It is very buggy and opinionated, somewhat similar to oh-my-zsh: both of&#xA;them promise to deliver a good framework and they&amp;rsquo;re kinda large open source&#xA;projects, however they do lots of automatic things for you, and you end up&#xA;not knowing what is happening to your system. It opposes the Arch Linux&#xA;philosophy, being user-friendly rather than user-centered. Some people like&#xA;it, I won&amp;rsquo;t argue this, it can work for them; but not for me. An alternative&#xA;would be to install a chroot manually, without the help of crouton.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve chosen the first option, installing Arch Linux ARM on my Chromebook. So&#xA;far, so good: it&amp;rsquo;s working very well. Storage is easily shared between the two&#xA;OSes (by using the SD card). There&amp;rsquo;s more to get out of my system, and I intend&#xA;to share new findings in this blog. &lt;strong&gt;In particular, the most important one: to&#xA;find an easy way (not crouton!) of running whatever Linux-compatible application&#xA;I want from within Chrome OS, without dual-booting.&lt;/strong&gt; I have a few ideas (well,&#xA;it&amp;rsquo;s just a matter of creating a KISS chroot), I just want to polish them a&#xA;little more before trying them out.&lt;/p&gt;&#xA;&lt;h2 id=&#34;see-also&#34;&gt;&#xA;  See also&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2016/09/linux-goodness-in-your-chromebook/#see-also&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://imgur.com/BrVVyNi&#34;&gt;Generic Chrome OS Troubleshooter Chart v0.3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2016/09/linux-goodness-in-your-chromebook/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I wouldn&amp;rsquo;t say the same for kernel stuff though. It is not trivial to install&#xA;a bootloader (such as grub) or to boot a custom kernel in a Chromebook. It&amp;rsquo;s&#xA;possible indeed, it&amp;rsquo;s just not as nice or as easy as an average PC or Mac&#xA;laptop from today, especially if you have the intention of keeping the&#xA;upstream OS (Chrome OS) in the device.&lt;/li&gt;&#xA;&lt;li&gt;People probably would cite a Macbook, a Surface Pro, or something else&#xA;similar here. For starters, did you see how much they cost, in comparison to&#xA;an average Chromebook? Such a comparison wouldn&amp;rsquo;t be fair.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Linux goodness in your Chromebook&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Haiku from an existing linux
      </title>
      <link>https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/</link>
      <pubDate>Fri, 03 Apr 2015 17:20:19 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/</guid>
      <description>&lt;h2 id=&#34;what8217s-haiku-in-the-first-place&#34;&gt;&#xA;  What’s Haiku in the first place?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/#what8217s-haiku-in-the-first-place&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;It is an operating system, period. What might cause a small surprise is that it is not based either on Linux or on BSD — and yet it is (probably) runnable in your modern computer/laptop!&lt;/p&gt;&#xA;&lt;p&gt;What I most like on it is that the system is integrated with the GUI, so the end user gets a nice experience. This is not so common as it sounds: most Linux distributions are simply a collection of programs and utilities put together in one place, but they are not necessarily integrated — however, &lt;strong&gt;you&lt;/strong&gt; can integrate them. This makes all the difference between user-friendly and user-centered paradigms&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Anyway, Haiku is simple, so for me this post is more a hobby than something useful that I will use in the future; however, I find that knowing about more and more about different operating systems has its own advantages.&lt;/p&gt;&#xA;&lt;p&gt;For more, see &lt;a href=&#34;https://www.haiku-os.org/about&#34;&gt;https://www.haiku-os.org/about&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-haiku&#34;&gt;&#xA;  Installing Haiku&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/#installing-haiku&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; most of those instructions come from &lt;a href=&#34;https://www.haiku-os.org/guides/installing_haiku_image_disk_partition&#34;&gt;the Haiku installation guide&lt;/a&gt;. Also, thanks David Couzelis for kindly giving me some advice and pointing me out to them.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Get Haiku. You can do it either from &lt;a href=&#34;https://www.haiku-os.org/get-haiku&#34;&gt;the official download page&lt;/a&gt;, or get nightly releases from &lt;a href=&#34;http://download.haiku-os.org/nightly-images/x86_gcc2_hybrid/&#34;&gt;the nightly builds page&lt;/a&gt;. I personally recommend the nightly releases; I first installed the latest non-nightly one, but later on I discovered that is was very old (circa 2012): it didn’t even have a package manager.&lt;/li&gt;&#xA;&lt;li&gt;Which image should you download? In this post, I am assuming we’ll install Haiku directly to a (real) disk, so I’m downloading the &lt;strong&gt;raw&lt;/strong&gt; image. Actually, the &lt;strong&gt;anyboot&lt;/strong&gt; image can also be downloaded — and this is the one you will get if you opted for a non-nightly version; however, the anyboot image will be converted to a raw one in step 3 before we proceed. So, skip the next step if you downloaded the raw image.&lt;/li&gt;&#xA;&lt;li&gt;Got your anyboot image? Now, convert it to raw (run this from a bash compatible shell):&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ dd if=haiku-anyboot.image of=haiku.raw bs=1M skip=$(expr $(od -j 454 -N4 -i -A n haiku-anyboot.image) / 2048)&#xA;$ dd if=/dev/zero of=haiku.raw bs=1 seek=506 count=4 conv=notrunc&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update (2022)&lt;/strong&gt;: These days &lt;code&gt;dd&lt;/code&gt; supports &lt;code&gt;status=progress&lt;/code&gt; to display the image writing progress.&lt;/p&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;Now that we got a raw image, we are writing it directly to a disk partition. First things first: find 3GB or more of free space in your disk. Then create room for a partition in there (for example, with &lt;em&gt;fdisk&lt;/em&gt; or &lt;em&gt;gparted)&lt;/em&gt;. Got it? Now create a partition in there. I’ll assume the partition is &lt;code&gt;/dev/sda42&lt;/code&gt;. Please change 42 for the appropriate number in your case.&lt;/li&gt;&#xA;&lt;li&gt;Copy the raw image to the partition (this should be done as ROOT); &lt;strong&gt;WARNING&lt;/strong&gt;: double check the partition and the disk number, otherwise you might lose data.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ dd if=haiku.raw of=/dev/sda42 bs=1M conv=notrunc&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;Make the installation &lt;em&gt;bootable&lt;/em&gt;: you’ll need to compile and run the &lt;em&gt;makebootabletiny&lt;/em&gt; program, which can be downloaded from &lt;a href=&#34;https://www.haiku-os.org/guides/installing_haiku_image_disk_partition&#34;&gt;the Haiku installation guide&lt;/a&gt;. It is a simple C program, so:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ gcc makebootabletiny.c -o makebootabletiny&#xA;% ./makebootabletiny /dev/sda42  # this one: as ROOT&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;Make your bootloader know about Haiku. If you’re using &lt;code&gt;grub2&lt;/code&gt;z, you can add something such as the following lines to &lt;code&gt;/etc/grub.d/40_custom&lt;/code&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;menuentry &amp;#34;Haiku OS&amp;#34; {&#xA;    set root(hd0,42)&#xA;    chainloader &amp;#43;1&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;8&#34;&gt;&#xA;&lt;li&gt;Then run as root: &lt;em&gt;grub-mkconfig -o /boot/grub/grub.cfg&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;Done!&lt;/strong&gt; Now you should be able to boot into Haiku.&lt;/p&gt;&#xA;&lt;h2 id=&#34;now-what&#34;&gt;&#xA;  Now what?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/#now-what&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This post is not a review of Haiku, so I’m stopping here. However, if I write a review about Haiku, I’ll do that from Haiku 🙂.&lt;/p&gt;&#xA;&lt;p&gt;I’m just leaving this here: &lt;a href=&#34;https://www.haiku-os.org/slideshows/haiku-1&#34;&gt;https://www.haiku-os.org/slideshows/haiku-1&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;By the way, Arch Linux is user-centered, which means that you’re supposed to integrate the system as you wish. If you don’t wish that then you’re screwed anyway, so go away 🙂&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/04/installing-haiku-from-an-existing-linux/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Installing Haiku from an existing linux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[FAQFlow #3]: Hello, SaltStack (for Arch?)
      </title>
      <link>https://perrotta.dev/2015/03/faqflow-%233-hello-saltstack-for-arch/</link>
      <pubDate>Thu, 26 Mar 2015 19:48:15 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/faqflow-%233-hello-saltstack-for-arch/</guid>
      <description>&lt;p&gt;♠ Salt is what you want when you have to manage several servers. It looks like a&#xA;good option for open-source servers (Unix systems), so I&amp;rsquo;m giving it a try. A&#xA;common alternative is the community version of Puppet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;&#xA;  Motivation&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%233-hello-saltstack-for-arch/#motivation&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Historically, I&amp;rsquo;ve always used Arch on my notebook because it&amp;rsquo;s the machine I&#xA;use, customize, and play with the most. Arch is perfect for it—I&amp;rsquo;m always with&#xA;the latest software and always tinkering.&lt;/p&gt;&#xA;&lt;p&gt;But my desktop? I rarely use it compared to my notebook. I&amp;rsquo;ve tried installing&#xA;Arch on it, but always wiped it days later because I tend to over-customize Arch&#xA;boxes and didn&amp;rsquo;t want to duplicate work across machines.&lt;/p&gt;&#xA;&lt;p&gt;What distro is good for &amp;ldquo;non-mainstream&amp;rdquo; personal use but that you won&amp;rsquo;t use&#xA;much? Each has problems:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Funtoo/Gentoo&lt;/strong&gt;: Too many compilation times. You don&amp;rsquo;t want that for a&#xA;machine you don&amp;rsquo;t use often.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ubuntu/openSUSE&lt;/strong&gt;: Okay, but Ubuntu is often out-of-date; openSUSE&amp;rsquo;s zypper&#xA;packages are bloated.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fedora&lt;/strong&gt;: Changes releases too often. You don&amp;rsquo;t want to reinstall.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Alpine/grml&lt;/strong&gt;: Great for other purposes, not &amp;ldquo;my-quiet-desktop&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Maybe the problem is me. I got too strict about my personal environments. Then I thought: the problem is lack of automation. If you don&amp;rsquo;t want to touch machines you don&amp;rsquo;t use often, automate them. Upgrades, maintenance, etc. &lt;strong&gt;SaltStack&lt;/strong&gt; to the rescue!&lt;/p&gt;&#xA;&lt;h2 id=&#34;saltstack-hello-world&#34;&gt;&#xA;  SaltStack Hello World&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%233-hello-saltstack-for-arch/#saltstack-hello-world&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We begin with hello world. For network environments? A ping, of course.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m installing Salt on my Arch notebook (master) and my Arch desktop (minion).&#xA;Salt uses a master-minions hierarchy. My notebook is the master; my desktop is&#xA;the minion.&lt;/p&gt;&#xA;&lt;p&gt;Salt is cross-platform, so you can use different distros. You need to care about&#xA;your init program; systemd eases everything for me:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ systemctl enable salt-master # (in master)&#xA;$ systemctl enable salt-minion # (in minion)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Salt is now set up. After installing, you have to connect your machines. This is&#xA;well documented (RTFM). I connected them on the same LAN network and they&#xA;continue to recognize each other across reboots.&lt;/p&gt;&#xA;&lt;p&gt;Now the best part. From my master (notebook):&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;# root@arch /home/thiago # salt &amp;#39;*&amp;#39; test.ping&#xA;&amp;lt;$MYHOSTNAME&amp;gt;:&#xA;  True&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Everything is properly set up. Now what? I don&amp;rsquo;t know—I&amp;rsquo;ll discover!&lt;/p&gt;&#xA;&lt;p&gt;But I tried automating a system upgrade:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;root@arch /home/thiago # salt &amp;#39;*&amp;#39; pkg.install refresh=True sysupgrade=True feh&#xA;&amp;lt;$MYHOSTNAME&amp;gt;:&#xA;  ----------&#xA;  feh:&#xA;    ----------&#xA;    new:&#xA;      2.12-1&#xA;    old:&#xA;&#xA;  giflib:&#xA;    ----------&#xA;    new:&#xA;      5.1.1-1&#xA;    old:&#xA;&#xA;  imlib2:&#xA;    ----------&#xA;    new:&#xA;      1.4.6-3&#xA;    old:&#xA;&#xA;  libexif:&#xA;    ----------&#xA;    new:&#xA;      0.6.21-2&#xA;    old:&#xA;&#xA;  libid3tag:&#xA;    ----------&#xA;    new:&#xA;      0.15.1b-8&#xA;    old:&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Really nice! I can install or remove any package. This is all about automation.&#xA;I&amp;rsquo;ll see in the next days if I keep using Salt.&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%233-hello-saltstack-for-arch/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Why Salt? I just picked it first. I could use other technologies. I don&amp;rsquo;t&#xA;recommend it right now—just testing it. The choice was pure serendipity.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: [FAQFlow #3]: Hello, SaltStack (for Arch?)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recording screencasts on Linux
      </title>
      <link>https://perrotta.dev/2015/03/recording-screencasts-on-linux/</link>
      <pubDate>Sat, 21 Mar 2015 21:03:48 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/recording-screencasts-on-linux/</guid>
      <description>&lt;p&gt;♠ One-line self-documenting functions, put this into your shell init file:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;# ffmpeg x11 screencasting&#xA;# it will just record video: no audio&#xA;# dimensions of your screen are automatically calculated&#xA;_ffmpeg-screencast() {&#xA; ffmpeg -f x11grab -s $(xdpyinfo | awk &amp;#39;/dimensions:/ {print $2}&amp;#39;) -r 25 -i :0.0 -qscale 0 $HOME/ffmpeg-out-$(date &amp;#39;&amp;#43;%Y-%m-%d-%H-%M-%S&amp;#39;).mkv&#xA;}&#xA;&#xA;# ffmpeg x11 screencasting with audio&#xA;# it supersedes the previous function&#xA;# source of the audio is determined with `pavucontrol`: open it then go to the &amp;#34;recording&amp;#34; tab. You can select between the microphone or your computer as audio sources&#xA;_ffmpeg-screencast-audio() {&#xA; ffmpeg -f alsa -i pulse -acodec pcm_s16le -f x11grab -s $(xdpyinfo | awk &amp;#39;/dimensions:/ {print $2}&amp;#39;) -r 25 -i :0.0 -qscale 0 $HOME/ffmpeg-out-$(date &amp;#39;&amp;#43;%Y-%m-%d-%H-%M-%S&amp;#39;).mkv&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;observations&#34;&gt;&#xA;  Observations&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/recording-screencasts-on-linux/#observations&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;If you want to get this automatically, you might be interested in my&#xA;dotfiles repo. In particular, inspect the .alias file, where those functions&#xA;are located (at least at the time of this post; things change).&lt;/li&gt;&#xA;&lt;li&gt;Audio recording works best with Pulse Audio (citation needed). I haven&amp;rsquo;t&#xA;tested with alsa only.&lt;/li&gt;&#xA;&lt;li&gt;Pavucontrol is just a fancy interface for configuring pulseaudio, but there&#xA;are others.&lt;/li&gt;&#xA;&lt;li&gt;Tweak those parameters&amp;hellip;ffmpeg is a really powerful tool.&lt;/li&gt;&#xA;&lt;li&gt;I tested this on the i3 window manager, and it works beautifully. I tested&#xA;some GUI screencasting programs on it before and the results were poor.&lt;/li&gt;&#xA;&lt;li&gt;Source of this script: a merge of several ones on the web.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Oh yes, and you can stop the screen capturing with the &amp;lsquo;q&amp;rsquo; key or with a&#xA;classical Control-C.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; thanks Victor for a small improvement with &lt;code&gt;awk&lt;/code&gt; in the above&#xA;functions.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Recording screencasts on Linux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>★ [FAQFlow #2]: Android Upgrading/Rooting Notes
      </title>
      <link>https://perrotta.dev/2015/03/faqflow-%232-android-upgrading/rooting-notes/</link>
      <pubDate>Wed, 11 Mar 2015 22:41:06 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>bestof</category>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/faqflow-%232-android-upgrading/rooting-notes/</guid>
      <description>&lt;p&gt;♠ I successfully upgraded my Android phone from Jelly Bean (4.1.2) to Kit Kat&#xA;(4.4.2). Here are notes about my upgrade process.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-steps&#34;&gt;&#xA;  Key steps&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%232-android-upgrading/rooting-notes/#key-steps&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Backup your data&lt;/strong&gt; before trying anything! Make sure it&amp;rsquo;s available&#xA;elsewhere—cloud or computer.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Make screenshots&lt;/strong&gt; of installed apps: press Volume Down + Power buttons&#xA;together for a while. Save these screenshots!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Did you backup your data?&lt;/strong&gt; (Really!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Is your bootloader unlocked?&lt;/strong&gt; If not, unlock it first. See the XDA&#xA;Developer Forums.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Is your device rooted?&lt;/strong&gt; Maybe root it first. See the XDA Developer Forums.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;What do you want to do?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Upgrade Android version? Search for &amp;ldquo;OTA upgrade&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Customize it? Search for &amp;ldquo;custom ROM&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Get a decent recovery&lt;/strong&gt;. TWRP (Team Win Recovery Project) is one of the&#xA;best. CWM is another option. A recovery is useful for flashing ZIPs, wiping&#xA;cache, installing custom ROMs, and other maintenance.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Reboot into bootloader with adb&lt;/strong&gt;: &lt;code&gt;adb reboot-bootloader&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Or reboot into recovery&lt;/strong&gt;: &lt;code&gt;adb reboot recovery&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;While in fastboot&lt;/strong&gt;, you cannot use adb.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Get updated adb&lt;/strong&gt;: &lt;a href=&#34;https://perrotta.dev/2015/03/faqflow-%232-android-upgrading/rooting-notes/#ZgotmplZ&#34;&gt;ftp://ftp.mozilla.org/pub/labs/android-tools/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Upgrade from Windows or Linux&lt;/strong&gt;: Usually you can do both. Windows is&#xA;common among power Android developers. Use what&amp;rsquo;s available and recommended&#xA;by your tutorial.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t install blindly&lt;/strong&gt;: Read, read, and read before anything! Check&#xA;opinions of other users.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Need support?&lt;/strong&gt; Use:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;IRC (Freenode: #android-root channel)&lt;/li&gt;&#xA;&lt;li&gt;Facebook Groups&lt;/li&gt;&#xA;&lt;li&gt;Google+ Groups&lt;/li&gt;&#xA;&lt;li&gt;Reddit&lt;/li&gt;&#xA;&lt;li&gt;Search for groups about your phone model first&lt;/li&gt;&#xA;&lt;li&gt;XDA Forums (technical/advanced place—don&amp;rsquo;t ask newbie questions unless&#xA;there&amp;rsquo;s a specific section)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Debloating&lt;/strong&gt; is a good term to search for after installing/upgrading your&#xA;device.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Google Play&lt;/strong&gt; isn&amp;rsquo;t the only option. See F-Droid (contains FOSS software).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Only upgrade with a charger&lt;/strong&gt; connected.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Don&amp;rsquo;t install untested or poorly tested ROMs&lt;/strong&gt;. It&amp;rsquo;s better not to install&#xA;anything than install something that doesn&amp;rsquo;t work well. Use your head and&#xA;inspect context carefully.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;These items sum up key points. If you want to complement this post, feel free to&#xA;leave a comment. Happy hacking!&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%232-android-upgrading/rooting-notes/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Device: Motorola Razr I XT890, with Intel Atom (x86) CPU and 1GB RAM&lt;/li&gt;&#xA;&lt;li&gt;XDA Developer Forums: &lt;a href=&#34;http://forum.xda-developers.com/&#34;&gt;http://forum.xda-developers.com/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: [FAQFlow #2]: Android Upgrading/Rooting Notes&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/bestof/&#34;&gt;#bestof&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Ogre3d locally (without installing it)
      </title>
      <link>https://perrotta.dev/2015/03/running-ogre3d-locally-without-installing-it/</link>
      <pubDate>Mon, 09 Mar 2015 03:05:25 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/running-ogre3d-locally-without-installing-it/</guid>
      <description>&lt;p&gt;♠ Simple build systems, huh? Hello there. In this post we will run the &amp;ldquo;Basic 1&amp;rdquo;&#xA;example from the &lt;a href=&#34;http://www.ogre3d.org/tikiwiki/tiki-index.php&#34;&gt;Ogre3d wiki&lt;/a&gt;&#xA;without installing &lt;a href=&#34;http://www.ogre3d.org/&#34;&gt;ogre&lt;/a&gt; in the system. For that, I&amp;rsquo;ll&#xA;assume you&amp;rsquo;re using an Unix system. First things first: grab the latest ogre&#xA;version. At the time of this post, it is the 1.9 release, and you can find its&#xA;repository &lt;a href=&#34;https://bitbucket.org/sinbad/ogre/downloads&#34;&gt;on Bitbucket&lt;/a&gt;.&#xA;&lt;strong&gt;Note:&lt;/strong&gt; you want to download the 1.9 version using the tag download feature&#xA;from Bitbucket; &lt;strong&gt;do not&lt;/strong&gt; simply download the master branch. After that,&#xA;extract it, create a build directory inside its directory, cd into it, and do a&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/.lib -DOGRE_INSTALL_SAMPLES=TRUE -DOGRE_INSTALL_DOCS=TRUE -DOGRE_INSTALL_SAMPLES_SOURCE=TRUE -DCMAKE_BUILD_TYPE=Release&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This is a pretty much standard cmake build. If your system is missing some of&#xA;its dependencies, you will be warned and you should install them. Then:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;make OgreDoc install&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now it is a good moment to read &lt;a href=&#34;https://xkcd.com/303/&#34;&gt;xkcd&lt;/a&gt;. The usual&#xA;difference here is that we don&amp;rsquo;t do a normal &lt;strong&gt;make install&lt;/strong&gt;. Why? Because we&#xA;don&amp;rsquo;t want our stuff ending up on &lt;strong&gt;/usr/local&lt;/strong&gt;. Instead, we want it somewhere&#xA;where we have full access as a normal (non-root) user – in this example,&#xA;&lt;strong&gt;$HOME/.lib/ogre&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;basic-1&#34;&gt;&#xA;  Basic 1&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/running-ogre3d-locally-without-installing-it/#basic-1&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Now, head to the &lt;a href=&#34;http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic&amp;#43;Tutorial&amp;#43;1&#34;&gt;basic&#xA;1&lt;/a&gt; page of&#xA;the ogre wiki and download its example. You should try to build it, but take&#xA;care to change all ogre3d references from /usr/local to your new install&#xA;directory ($HOME/.lib/ogre). Yeah, that&amp;rsquo;s it. &lt;strong&gt;Note:&lt;/strong&gt; if the &lt;em&gt;basic 1&lt;/em&gt;&#xA;download doesn&amp;rsquo;t come with a CMakeLists.txt file, you can download it from &lt;a href=&#34;http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Building&amp;#43;Your&amp;#43;Projects&amp;#43;With&amp;#43;CMake&#34;&gt;the&#xA;Ogre CMake wiki&#xA;page&lt;/a&gt;&#xA;(clean ogre cmake project). You can use it verbatim; just put it in the same&#xA;directory as the basic 1 files &lt;strong&gt;and&lt;/strong&gt; – again – change any references to&#xA;&lt;em&gt;/usr/local&lt;/em&gt; to your new install directory. Also, copy the &lt;strong&gt;dist/&lt;/strong&gt; directory&#xA;too (if it is missing from the Basic 1 project), I&amp;rsquo;ll add a small observation:&#xA;in the case cmake complains about pkg-config, try adding this line to the top of&#xA;your CMakeLists.txt (but after the project version):&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-cmake&#34;&gt;set(ENV{PKG_CONFIG_PATH} &amp;#34;$ENV{HOME}/.lib/ogre/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}&amp;#34;)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Credits:&lt;/strong&gt; the build style I adopted here was derived from the &lt;a href=&#34;https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/ogre&#34;&gt;Ogre Arch Linux package&lt;/a&gt;. Thanks Sven for your excellent packaging skills! :) &lt;strong&gt;Update:&lt;/strong&gt; in your &lt;em&gt;plugins.cfg&lt;/em&gt; , &lt;strong&gt;do not&lt;/strong&gt; use &amp;ldquo;$HOME&amp;rdquo; as your PluginFolder. This seems to cause issues when you run your ogre app. Instead, expand $HOME manually (in my case, to &amp;lsquo;/home/thiago&amp;rsquo;). This is not much portable, I know, but there must be some workaround for this I haven&amp;rsquo;t discovered yet.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Running Ogre3d locally (without installing it)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mulheres na computação, cadê vocês?
      </title>
      <link>https://perrotta.dev/pt/posts/2015-03-08-mulheres-na-computacao-cade-voces/</link>
      <pubDate>Sun, 08 Mar 2015 16:26:42 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/posts/2015-03-08-mulheres-na-computacao-cade-voces/</guid>
      <description>&lt;p&gt;♠ 08 de março. Você sabe que dia é hoje. Muitos dizem que é um dia especial. Já&#xA;eu, pessoalmente, em geral sou indiferente para qualquer comemoração do tipo,&#xA;porque eu acredito que todos os 365,25 dias do ano são igualmente especiais.&#xA;Não é necessário tirar um único dia do ano (menos de 1%!!!) para dizer que as&#xA;mulheres são especiais&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/posts/2015-03-08-mulheres-na-computacao-cade-voces/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Mas bem, hoje resolvi aproveitar a deixa para fazer uma pequena divulgação. Como&#xA;você pode ler no título, eu restringi o post a &amp;ldquo;mulheres na computação&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Muito bem, pois é que existe um grupo bem bacana na comunidade do Arch Linux&#xA;chamado &lt;a href=&#34;https://archwomen.org/&#34;&gt;Arch Women&lt;/a&gt;, que no fundo é uma organização sem&#xA;fins lucrativos que visa incentivar a participação de (mais) mulheres no mundo&#xA;do Arch e de &lt;em&gt;open source&lt;/em&gt; em geral. Mais do que isso, no fundo é um grupo que&#xA;acredita na igualdade de gêneros e que quer enviar qualquer tipo de&#xA;preconceito para &lt;code&gt;/dev/null&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A organização é bem bacana, de vez em quando são organizadas algumas aulas pelo&#xA;IRC, também existem projetos de &amp;ldquo;estágio&amp;rdquo;, digamos assim (um exemplo típico é o&#xA;&lt;em&gt;Google Summer of Code&lt;/em&gt;) e, bem, é uma comunidade &lt;em&gt;open source&lt;/em&gt;, então as&#xA;possibilidades de interação são inúmeras.&lt;/p&gt;&#xA;&lt;p&gt;Adicionalmente, existem alguns encontros (encontro talvez não seja uma palavra&#xA;boa. Vamos dizer: reuniões) todo início do mês no IRC, onde são realizadas&#xA;algumas discussões sobre as coisas que eu falei aí em cima.&lt;/p&gt;&#xA;&lt;p&gt;Ah sim, esqueci de falar duas coisas: 1) não é uma comunidade só para mulheres;&#xA;na verdade, é uma comunidade que incentiva a participação de mulheres na&#xA;tecnologia. Então, existem vários rapazes por lá também. Se você quiser ajudar,&#xA;seja bem-vindo. 2) já falei de IRC umas duas vezes mas não disse onde: é no&#xA;irc.freenode.net, no canal #archlinux-women. É, o idioma é em inglês.&lt;/p&gt;&#xA;&lt;p&gt;Enfim, essa história de &amp;ldquo;mulheres na tecnologia&amp;rdquo; (computação, whatever) é&#xA;frequentemente tratada como um tabu, mas não precisa(va) ser assim. E eu&#xA;aproveito a deixa desse post para incentivar mais as pessoas a criar&#xA;organizações que incentivem a inclusão de mulheres no mundo digital. Não precisa&#xA;ser só a Arch Women, afinal.&lt;/p&gt;&#xA;&lt;p&gt;Até mais ver!&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;afinal, elas são &lt;strong&gt;especiais&lt;/strong&gt; &lt;strong&gt;sempre&lt;/strong&gt;, certo? ;)&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/posts/2015-03-08-mulheres-na-computacao-cade-voces/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Mulheres na computação, cadê vocês?&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with Ogre3d
      </title>
      <link>https://perrotta.dev/2015/03/getting-started-with-ogre3d/</link>
      <pubDate>Thu, 05 Mar 2015 16:46:49 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/getting-started-with-ogre3d/</guid>
      <description>&lt;p&gt;♠ I struggled a little to get started with Ogre3d graphics, so here are a few&#xA;notes. In this post we will be able to run some basic examples from the&#xA;framework.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;&#xA;  Installation&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#installation&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Get a distribution with a nice packaging system and install ogre from it. I can&#xA;cite two: Arch Linux family (pacman-based) or Gentoo family (portage-based). The&#xA;point is: &lt;strong&gt;DON&amp;rsquo;T&lt;/strong&gt; install the ogre package from &lt;strong&gt;deb-based&lt;/strong&gt; distros (Debian&#xA;and Ubuntu).&lt;/p&gt;&#xA;&lt;p&gt;They have a few problems:&lt;/p&gt;&#xA;&lt;h3 id=&#34;11-packages-are-usually-outdated&#34;&gt;&#xA;  1.1 Packages are usually outdated&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#11-packages-are-usually-outdated&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;In the case of ogre, this isn&amp;rsquo;t a super problem. Its current version is 1.9, and&#xA;Ubuntu offers 1.8. You can live with that.&lt;/p&gt;&#xA;&lt;h3 id=&#34;12-some-files-are-missing-from-the-packages&#34;&gt;&#xA;  1.2 Some files are missing from the packages&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#12-some-files-are-missing-from-the-packages&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I compared the upstream ogre tree (from Bitbucket) with files installed on&#xA;Ubuntu (&lt;code&gt;dpkg-query -L libogre-1.8-dev&lt;/code&gt;), and some files were missing. One&#xA;example: SDK Trays.&lt;/p&gt;&#xA;&lt;h3 id=&#34;13-some-files-are-installed-in-non-standard-locations&#34;&gt;&#xA;  1.3 Some files are installed in non-standard locations&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#13-some-files-are-installed-in-non-standard-locations&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;For example, &lt;code&gt;x86_64-linux-gnu&lt;/code&gt; being used as a directory. This is non-standard.&#xA;And what about &lt;code&gt;/usr/lib/ogre&lt;/code&gt;? This folder doesn&amp;rsquo;t even exist on Ubuntu, but&#xA;should!&lt;/p&gt;&#xA;&lt;p&gt;Worse yet: Ogre documentation assumes the default installation directory is&#xA;&lt;code&gt;/usr/local&lt;/code&gt;. This assumes you don&amp;rsquo;t use a package manager and used &lt;code&gt;make install&lt;/code&gt; after compiling, which requires &lt;code&gt;sudo&lt;/code&gt; rights. This is too restrictive.&#xA;Everything that ends up in &lt;code&gt;/usr/local&lt;/code&gt; (programs installed manually) eventually&#xA;becomes a mess.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I&amp;rsquo;m not trying to convince you not to use Ubuntu for ogre3d&#xA;development. I&amp;rsquo;m just stating I had an awful experience. If you can handle it,&#xA;please comment how you did that!&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using Arch for ogre3d development now; if forced to use Ubuntu (work, lab),&#xA;I&amp;rsquo;ll have to install ogre locally on the system.&lt;/p&gt;&#xA;&lt;h2 id=&#34;building-with-arch&#34;&gt;&#xA;  Building with Arch&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#building-with-arch&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;pacman -Syu ogre&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now see if you can run the most basic pre-example from Ogre. Download it. Files include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ogreapp&#xA;&lt;ul&gt;&#xA;&lt;li&gt;CMakeLists.txt&lt;/li&gt;&#xA;&lt;li&gt;BaseApplication.h&lt;/li&gt;&#xA;&lt;li&gt;BaseApplication.cpp&lt;/li&gt;&#xA;&lt;li&gt;TutorialApplication.h&lt;/li&gt;&#xA;&lt;li&gt;TutorialApplication.cpp&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;dist/ folder&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a &lt;code&gt;CMakeLists.txt&lt;/code&gt;, so the build should be straightforward. Create your&#xA;build directory, &lt;code&gt;cd&lt;/code&gt; into it, &lt;code&gt;cmake ..&lt;/code&gt; and &lt;code&gt;make&lt;/code&gt;. Copy the &lt;strong&gt;OgreApp&lt;/strong&gt;&#xA;executable into the dist folder manually.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The build system could be better. Just do it.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a warning: see the plugins.cfg config file. Change &lt;code&gt;/usr/local/lib/OGRE&lt;/code&gt;&#xA;to &lt;code&gt;/usr/lib/OGRE&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;basic-example-1&#34;&gt;&#xA;  Basic Example 1&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#basic-example-1&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Get it from Ogre Basic Tutorial 1. Uncompress it, move its files to a &amp;lsquo;basic1&amp;rsquo;&#xA;directory, and copy CMakeLists.txt and dist/ from the previous example. Copy and&#xA;paste the code from the wiki to &lt;code&gt;TutorialApplication::createScene&lt;/code&gt; in&#xA;TutorialApplication.cpp. Build as usual, and copy the OgreApp executable to the&#xA;dist/bin directory. Done!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: I&amp;rsquo;ll likely write another post about Ogre.&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/getting-started-with-ogre3d/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The problem isn&amp;rsquo;t cmake (I had experience with it). The problem is the&#xA;documentation. Ogre&amp;rsquo;s wiki is scattered. There should be one entry point for&#xA;&amp;ldquo;getting started with ogre&amp;rdquo;, but there are several. A typical beginner&#xA;struggles to decide which one to begin with. Documentation outside ogre3d.org&#xA;is poor—forums, Reddit, blogs are either inactive, old, or poor.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bias&lt;/strong&gt;: I love both Arch and Gentoo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PPAs?&lt;/strong&gt; Please don&amp;rsquo;t use them.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Getting started with Ogre3d&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Documented dotfiles
      </title>
      <link>https://perrotta.dev/2015/03/documented-dotfiles/</link>
      <pubDate>Thu, 05 Mar 2015 04:06:31 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/documented-dotfiles/</guid>
      <description>&lt;p&gt;♠ I just documented my dotfiles to make them easier to understand. &lt;a href=&#34;https://github.com/thiagowfx/dotfiles&#34;&gt;Check them out on GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Documented dotfiles&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[FAQFlow #1]: XMonad
      </title>
      <link>https://perrotta.dev/2015/03/faqflow-%231-xmonad/</link>
      <pubDate>Wed, 04 Mar 2015 21:45:47 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/faqflow-%231-xmonad/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;WTF is a FAQFlow?&lt;/strong&gt; See the footnotes at the end of this post.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;XMonad&lt;/strong&gt; is a window manager for Unix systems written in Haskell. This is an&#xA;introductory post on how to use it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;&#xA;  Getting started&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#getting-started&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;First, install XMonad. You can either install it manually or use your system&amp;rsquo;s&#xA;package manager.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re using X11 with a display manager, proceed normally. If you don&amp;rsquo;t use a&#xA;DM, put this at the end of your &lt;code&gt;~/.xinitrc&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;exec xmonad&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now run &lt;code&gt;startx&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;common-questions&#34;&gt;&#xA;  Common questions&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#common-questions&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-xmonad-is-lightweight-but-ghc-haskell-compiler-is-way-too-big-400mb-do-i-really-need-it&#34;&gt;&#xA;  1. XMonad is lightweight but GHC (Haskell compiler) is way too big (&amp;gt;400MB+). Do I really need it?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#1-xmonad-is-lightweight-but-ghc-haskell-compiler-is-way-too-big-400mb-do-i-really-need-it&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Yes, if you really want to get the most out of xmonad. This is part of the game.&#xA;If you already use Haskell, this won&amp;rsquo;t be a problem. Otherwise, read about GHC&#xA;in &amp;ldquo;The Architecture of Open Source Applications&amp;rdquo;—there&amp;rsquo;s a good reason it&amp;rsquo;s&#xA;that big.&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-i-just-started-xmonad-but-there-is-nothing-on-my-screenits-blank-all-over-the-place&#34;&gt;&#xA;  2. I just started xmonad. But there is nothing on my screen—it&amp;rsquo;s blank all over the place&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#2-i-just-started-xmonad-but-there-is-nothing-on-my-screenits-blank-all-over-the-place&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This is normal. XMonad is lightweight! There&amp;rsquo;s nothing fancy getting in your&#xA;way. If you think there should be lots of widgets and desktop icons, maybe you&#xA;should start with an easier tiling window manager first. i3 is a good choice.&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-how-do-i-open-a-terminal&#34;&gt;&#xA;  3. How do I open a terminal?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#3-how-do-i-open-a-terminal&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;Mod+Shift+Enter&lt;/code&gt;. Mod is usually Alt, but can be changed to the Windows key&#xA;later.&lt;/p&gt;&#xA;&lt;h2 id=&#34;bootstrapping&#34;&gt;&#xA;  Bootstrapping&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#bootstrapping&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Now you have a terminal. What&amp;rsquo;s next?&lt;/p&gt;&#xA;&lt;h3 id=&#34;how-to-change-workspaces&#34;&gt;&#xA;  How to change workspaces?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#how-to-change-workspaces&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Yes, xmonad has workspaces: &lt;code&gt;Mod-1&lt;/code&gt;, &lt;code&gt;Mod-2&lt;/code&gt;, etc.&lt;/p&gt;&#xA;&lt;h3 id=&#34;how-to-change-layouts&#34;&gt;&#xA;  How to change layouts?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#how-to-change-layouts&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;Mod-Space&lt;/code&gt;. It cycles through the three default available layouts.&lt;/p&gt;&#xA;&lt;h3 id=&#34;i-dont-like-xterm-its-way-too-ugly-can-i-change-the-default-terminal-emulator&#34;&gt;&#xA;  I don&amp;rsquo;t like xterm! It&amp;rsquo;s way too ugly! Can I change the default terminal emulator?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#i-dont-like-xterm-its-way-too-ugly-can-i-change-the-default-terminal-emulator&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Yes! Create a config file at &lt;code&gt;~/.xmonad/xmonad.hs&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;mkdir ~/.xmonad&#xA;cd ~/.xmonad&#xA;vim xmonad.hs&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Add this:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-haskell&#34;&gt;import XMonad&#xA;&#xA;main = xmonad default Config&#xA;  {&#xA;  -- set your terminal. Examples: konsole, gnome-terminal, urxvt&#xA;  terminal = &amp;#34;urxvt&amp;#34;&#xA;  }&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Lines beginning with &lt;code&gt;--&lt;/code&gt; are comments. Change &amp;ldquo;urxvt&amp;rdquo; to your favorite terminal&#xA;emulator and run:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;xmonad --recompile&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This makes GHC compile your xmonad.hs. Do &lt;code&gt;ls&lt;/code&gt; now and you&amp;rsquo;ll see the compiled&#xA;results (assuming compilation succeeded).&lt;/p&gt;&#xA;&lt;p&gt;Now restart xmonad:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;xmonad --restart&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Close your current terminal and open a new one (&lt;code&gt;Mod-Shift-Enter&lt;/code&gt;). Done—now you&#xA;have a pretty terminal!&lt;/p&gt;&#xA;&lt;p&gt;This post will have a continuation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/03/faqflow-%231-xmonad/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;FAQFlow&lt;/strong&gt;: A new way to document and teach introductory skills or tutorials.&#xA;The word is a portmanteau of &amp;ldquo;FAQ&amp;rdquo; (frequently asked questions) and&#xA;&amp;ldquo;workflow&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;Customizing xterm: You can customize &lt;code&gt;~/.Xresources&lt;/code&gt; to get a nice-looking&#xA;xterm, but most people either don&amp;rsquo;t know what a Xresources file is or don&amp;rsquo;t&#xA;bother creating one.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: [FAQFlow #1]: XMonad&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thoughts on Instagram
      </title>
      <link>https://perrotta.dev/2015/03/thoughts-on-instagram/</link>
      <pubDate>Mon, 02 Mar 2015 05:18:09 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/2015/03/thoughts-on-instagram/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;Note:&lt;/strong&gt; this is a brief article which exposes my opinion about a free web&#xA;service.&lt;/p&gt;&#xA;&lt;p&gt;For a long time I refrained myself from creating an Instagram account for some&#xA;reasons. Those reasons are not much different for the delayed birth of my&#xA;Facebook profile. Let&amp;rsquo;s talk a little about them and discuss if they were or not&#xA;valid:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;A. Too mainstream&lt;/strong&gt;: yeah, Instagram is pop. One of the top downloads of&#xA;smartphones app stores nowadays. So what, you just stop using a service just&#xA;because it is mainstream, and period? No, no, no. But&amp;hellip;for every mainstream&#xA;service, caution is needed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;A.1 Privacy&lt;/strong&gt;: Most accounts from people I currently follow on Instagram are&#xA;public by default (neverthless, this is the default setting of Instagram). Not&#xA;cool, dude, not cool. This is a short essay and you probably know what I would&#xA;talk here, so let&amp;rsquo;s be &lt;strong&gt;brief&lt;/strong&gt; : most of those people are either not concerned&#xA;or don&amp;rsquo;t know what the problem of this deliberate practice might cause them a&#xA;day.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;A.2 Did you read its terms of service?&lt;/strong&gt; Photos are stored forever in there&#xA;(in principle), even after you delete them. And what one person – for example,&#xA;either a complete stranger or the company behind Instagram itself – could to&#xA;with them? So many things. The most common underrated example is: selling them&#xA;&amp;ndash; plus information associated with them – to other companies, so they can (for&#xA;example) better target ads to you. This is not simply a matter of ads: it also&#xA;creates a bigger and bigger bubblein which you get stuck.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m just posting random photos in there, so I don&amp;rsquo;t care. But hey, look at other&#xA;people profiles. They post photos about themselves all the time. $$$$oooooo many&#xA;data&amp;hellip;one more thing, remember: Instagram was created exactly for this purpose:&#xA;you are encouraged to use it just from your phone (not from the web), and there&#xA;is a big &amp;ldquo;shoot photo&amp;rdquo; button. While you can upload photos to it manually&#xA;(instead of shooting and submitting them there directly), this is not encouraged&#xA;&lt;strong&gt;by design&lt;/strong&gt;. So hey, a big database of public photos of Bob and Alice,&#xA;available 24/7.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;: when the service is free, &lt;strong&gt;YOU&lt;/strong&gt; are the product (author needed).&lt;/p&gt;&#xA;&lt;p&gt;So, is maintreamness a problem? That depends on you.&lt;/p&gt;&#xA;&lt;p&gt;**B.**A social network &lt;strong&gt;represents&lt;/strong&gt; what &lt;strong&gt;most&lt;/strong&gt; of its users make from it.&#xA;And&amp;hellip;what most (I repeat: most) users use Instagram for? For &lt;strong&gt;bragging&lt;/strong&gt;.&#xA;That&amp;rsquo;s it. You might try to argue it is different, but it is not. One could say&#xA;this is human nature, but if it is, then I find it pretty sad. I always had this&#xA;suspicion, but only after creating an Instagram account I could confirm it. So&#xA;what? Pretty simple: I&amp;rsquo;ll just delete the app from my smartphone. I won&amp;rsquo;t delete&#xA;my account because I may need it in the future (don&amp;rsquo;t forget: people post data;&#xA;data might become valuable anytime later on). However, if you find bragging cool&#xA;(I&amp;rsquo;m not judging, just stating that I don&amp;rsquo;t like this), then Instagram is&#xA;probably the perfect social network for you. It is even better than Facebook&#xA;(actually, it supersedes it; you can automatically make every new photo of yours&#xA;appear on Facebook automatically, yay!) in this sense.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;C. Design&lt;/strong&gt;: despite the previous item, I have to say something: I appreciate&#xA;the engineering and the design of the service. Engineering? Well, I previously&#xA;said the service is consumed by many people, millions of them, and yet it has a&#xA;very good response time. Design? Yeah, the app and the service are very well&#xA;written and conceived. UX is amazing, the app is pretty much intuitive and easy&#xA;for newcomers to learn it. And it follows the Unix philosophy as a bonus: &amp;ldquo;do&#xA;one thing and do it well&amp;rdquo; ==&amp;gt; photo sharing. ATM I don&amp;rsquo;t know about the&#xA;team, but I would probably be very happy if I worked in a successful service&#xA;and ecosystem like it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; : of course I generalized a few things&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/03/thoughts-on-instagram/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, but I believe they&#xA;are not far from the truth. This was a brief overview about Instagram, there are&#xA;no right or wrong conclusions: you think what you want and use it as you wish.&#xA;Have a nice day.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Just bragging? Oh no. There are some artists and brands out there. They&#xA;win real money from their visibility on the $ocial network.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/03/thoughts-on-instagram/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Thoughts on Instagram&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Account deletion request
      </title>
      <link>https://perrotta.dev/2015/03/account-deletion-request/</link>
      <pubDate>Sun, 01 Mar 2015 14:15:20 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/03/account-deletion-request/</guid>
      <description>&lt;p&gt;♠ There is a fact that is not usually much publicized about accounts in the web:&#xA;in general, if a given web service doesn&amp;rsquo;t have a &lt;strong&gt;delete&lt;/strong&gt; button, you can&#xA;instead request manually the deletion of your account, by e-mailing the&#xA;administration of the service. Usually the e-mail you want to contact is&#xA;localized somewhere on the &amp;lsquo;contact&amp;rsquo; or &amp;lsquo;about&amp;rsquo; page of the service, or even in&#xA;the homepage. If not, you can try to make educated guesses:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:admin@example.org&#34;&gt;admin@example.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:contact@example.org&#34;&gt;contact@example.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:support@example.org&#34;&gt;support@example.org&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Through the last months I occasionally deleted some of my accounts and I confirm&#xA;that this method usually works all the time. (&lt;strong&gt;Bias:&lt;/strong&gt; )Well, at least if you&#xA;subscribed to services with good admin/policies in the first place&amp;hellip; But&#xA;really, even when my account couldn&amp;rsquo;t be deleted for&amp;hellip;er&amp;hellip;bad design in the&#xA;database, I got nice replies from real people (not robots :-P (yet)). There are&#xA;a few exceptions for this. One is when it isn&amp;rsquo;t an advantage for the service to&#xA;have you gone. Example? Facebook. You can only deactivate your account; there is&#xA;no option to permanently delete it. And don&amp;rsquo;t you even try to contact&#xA;Zuckerberg&amp;hellip;other exceptions I have yet to experience. If you have any good (or&#xA;bad) experience about &lt;strong&gt;account deletion requests,&lt;/strong&gt; don&amp;rsquo;t hesitate to share it&#xA;in the comments. Have a nice day.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Account deletion request&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thoughts and notes on deploying Wikimedia
      </title>
      <link>https://perrotta.dev/2015/02/thoughts-and-notes-on-deploying-wikimedia/</link>
      <pubDate>Mon, 23 Feb 2015 14:23:33 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>selfhosted</category>
      <guid>https://perrotta.dev/2015/02/thoughts-and-notes-on-deploying-wikimedia/</guid>
      <description>&lt;p&gt;♠ Wikimedia is the most full-featured wiki software out there and powers&#xA;Wikipedia. Let me talk about what you may not know yet.&lt;/p&gt;&#xA;&lt;p&gt;I tried to deploy it on Debian. While Debian tries to set everything up for you,&#xA;pulling dependencies like Apache and MySQL, this doesn&amp;rsquo;t necessarily reflect&#xA;what you want.&lt;/p&gt;&#xA;&lt;p&gt;First, Apache creates a new process for every connection, which doesn&amp;rsquo;t scale&#xA;(see the c10k problem). While probably the most used web server nowadays, I&#xA;prefer something more lightweight. Two good options are nginx and lighttpd.&lt;/p&gt;&#xA;&lt;p&gt;Second, PostgreSQL is better than MySQL. This is not something I can fully argue&#xA;about, but most people I know agree on that.&lt;/p&gt;&#xA;&lt;p&gt;Conclusion: if you use Debian, either you&amp;rsquo;ll struggle to get the packages and&#xA;software you want working together, or a sub-optimal solution will be deployed.&#xA;I prefer a KISS operating system. For familiarity, I chose Arch Linux.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Be aware that some people discuss using Arch as a server, mainly for&#xA;stability reasons. The point is: choose an OS that doesn&amp;rsquo;t get in your way.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;&#xA;  Installation&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/02/thoughts-and-notes-on-deploying-wikimedia/#installation&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Get php: &lt;code&gt;pacman -S php&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Get a CGI program for php. I like fastcgi: &lt;code&gt;pacman -S fcgi&lt;/code&gt; (alternative:&#xA;php-fpm)&lt;/li&gt;&#xA;&lt;li&gt;Get a database server. PostgreSQL: &lt;code&gt;pacman -S postgresql&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Get a web server. Lighttpd: &lt;code&gt;pacman -S lighttpd&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Get wikimedia and optional dependencies: &lt;code&gt;pacman -S wikimedia php-gd php-intl php-pgsql imagemagick&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Now it&amp;rsquo;s a matter of configuration. I advocate using &amp;ldquo;/srv/http&amp;rdquo; instead of&#xA;&amp;ldquo;/var/www&amp;rdquo; for storing web files. However, wikimedia gets installed to&#xA;&amp;ldquo;/usr/share/webapps/wikimedia&amp;rdquo;, so you have to either create a symlink or use&#xA;lighttpd&amp;rsquo;s mod_alias to create an alias to this path. I prefer the last option&#xA;so wikimedia gets placed in a specific directory—for example, &amp;ldquo;/wiki&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Consult the Arch Wiki or lighttpd doc pages for configuration details. After&#xA;configuring lighttpd with fastcgi and wikimedia, configure php (enable&#xA;extensions and fix cgi path info to 1) and PostgreSQL.&lt;/p&gt;&#xA;&lt;p&gt;After everything is properly configured, start the services. Arch uses systemd:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;% systemctl enable lighttpd&#xA;% systemctl enable postgresql&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;That&amp;rsquo;s it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/02/thoughts-and-notes-on-deploying-wikimedia/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;c10k problem: &lt;a href=&#34;http://www.kegel.com/c10k.html&#34;&gt;http://www.kegel.com/c10k.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Arch Wiki — Server: &lt;a href=&#34;https://wiki.archlinux.org/index.php/Server&#34;&gt;https://wiki.archlinux.org/index.php/Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Arch Linux forum discussion: &lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?id=162434&#34;&gt;https://bbs.archlinux.org/viewtopic.php?id=162434&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Reddit discussion:&#xA;&lt;a href=&#34;https://www.reddit.com/r/archlinux/comments/1wqpdw/do_you_use_arch_for_production_servers/&#34;&gt;https://www.reddit.com/r/archlinux/comments/1wqpdw/do_you_use_arch_for_production_servers/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Thoughts and notes on deploying Wikimedia&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/selfhosted/&#34;&gt;#selfhosted&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ksnctf
      </title>
      <link>https://perrotta.dev/2015/02/ksnctf/</link>
      <pubDate>Sat, 21 Feb 2015 21:38:13 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>security</category>
      <guid>https://perrotta.dev/2015/02/ksnctf/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;CTF&lt;/strong&gt;: &lt;a href=&#34;http://ksnctf.sweetduet.info/&#34;&gt;http://ksnctf.sweetduet.info/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Write-ups&lt;/strong&gt;: &lt;a href=&#34;https://manhhomienbienthuy.github.io/&#34;&gt;https://manhhomienbienthuy.github.io/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: ksnctf&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/security/&#34;&gt;#security&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>From orgmode to asciidoc (OR: ditching emacs)
      </title>
      <link>https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/</link>
      <pubDate>Fri, 20 Feb 2015 14:42:16 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/</guid>
      <description>&lt;p&gt;♠ Hello people, I&amp;rsquo;m back. The portal will open in 3…2…1..&lt;strong&gt;.&lt;/strong&gt; OK, here are some&#xA;&lt;em&gt;updates&lt;/em&gt;. After taming the beast for two long years, I&amp;rsquo;m now slowly ditching&#xA;&lt;strong&gt;emacs&lt;/strong&gt; from my life.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;_# archers, don&#39;t struggle yourselves!_&#xA;sudo pacman -Rnsc $(pacman -Qdt emacs)&#xA;_# *ntoo users, don&#39;t lose opportunity cost regarding precious compiling time!_&#xA;sudo emerge -vC emacs &amp;amp;&amp;amp; sudo emerge -avuDN @world &amp;amp;&amp;amp; sudo emerge --depclean -a&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Emacs doesn&amp;rsquo;t simply go out and we are done here. No, no, no. Rehab, guys.&#xA;Org-mode was a fellow companion, now what? I even moved out of wordpress just to&#xA;blog with org files&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. &lt;strong&gt;Orgmode&lt;/strong&gt; is the most amazing to-do / organizing /&#xA;planning / tracking tool I&amp;rsquo;ve ever used, however it is completely tied up to&#xA;emacs. The only thing we can do about that is to get all the knowledge and&#xA;&lt;strong&gt;discipline&lt;/strong&gt; that orgmode teached to us, and then move on.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;And I moved on.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I&amp;rsquo;m now slowly converting my text formatting habits to Asciidoc. It is an oldie&#xA;(2002+) thing, but people are still using it, and very well, by the way.&#xA;Asciidoc is not a replacement for markdown&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, but rather a full-featured text&#xA;formatting tool — markdown is KISS. I also found a nice&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; tool to blog from an&#xA;asciidoc file directly to Wordpress; and it is called…blogpost, you are right.&#xA;It was created by the same author of asciidoc, so you can probably conclude it&#xA;is reliable. OK, goodbye for now, till next time.&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;now you realize this was useless, since I moved back to Wordpress. But at&#xA;least I learned some Hakyll and Haskell in the process.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;neither the other way around.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;not sure if it is really nice, but if you can see this footnote, then I can&#xA;guarantee you the tool still works. &lt;strong&gt;Update&lt;/strong&gt; : actually, the tool works&#xA;indeed, but it doesn&amp;rsquo;t play nice with footnotes.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/02/from-orgmode-to-asciidoc-or-ditching-emacs/#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: From orgmode to asciidoc (OR: ditching emacs)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Games: index of
      </title>
      <link>https://perrotta.dev/2015/02/games-index-of/</link>
      <pubDate>Thu, 12 Feb 2015 14:03:36 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/2015/02/games-index-of/</guid>
      <description>&lt;p&gt;♠ I am a huge fan of games in general, although nowadays I&amp;rsquo;m more of a casual&#xA;player. Today I realized I never wrote a blog post about them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;social-networks-for-gaming&#34;&gt;&#xA;  Social networks for gaming&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/02/games-index-of/#social-networks-for-gaming&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Social networks of games never really existed or worked at all. Steam is the&#xA;closest to one today, but in practice you become stuck in their platform. What&#xA;would one expect from a social network of games?&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;See what your friends have been playing → serendipity + you can play together&lt;/li&gt;&#xA;&lt;li&gt;Track the games you have played → gamification + organization&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In this sense, Kongregate satisfies those properties, although it has the same&#xA;problems as Steam: its network comprises only games on their platform. To be&#xA;successful, a potential new social network should separate metadata from&#xA;games—track only information about games, not host the games themselves.&#xA;Unfortunately, I don&amp;rsquo;t know one today, so I decided to create my own list of&#xA;games. I will track comments about my gaming styles, preferences, and games I&amp;rsquo;ve&#xA;played from now on.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Games: index of&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; man pages
      </title>
      <link>https://perrotta.dev/2015/01/c-man-pages/</link>
      <pubDate>Thu, 15 Jan 2015 13:00:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/01/c-man-pages/</guid>
      <description>&lt;p&gt;♠ Today I stumbled upon across a project called &lt;code&gt;cppman&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, which I believe has&#xA;a very suggestive name indeed. Manual pages for the C programming language are&#xA;almost always available on Unix systems. Don&amp;rsquo;t you remember the signature of the&#xA;&lt;code&gt;qsort&lt;/code&gt; function? No problem, a &lt;code&gt;man 3 qsort&lt;/code&gt; will refresh your memory. What&#xA;about &lt;code&gt;printf&lt;/code&gt;? What about &lt;code&gt;stdlib.h&lt;/code&gt;? &lt;strong&gt;Man&lt;/strong&gt; won&amp;rsquo;t disappoint you. However,&#xA;what about C++ man pages? I first discovered that they weren&amp;rsquo;t available by&#xA;default about three years ago. Okay, so what do I do? A simple google search&#xA;will probably lead you to Stack Overflow&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. At the aforementioned time, there&#xA;weren&amp;rsquo;t really useful answers in there. Okay, some of them pointed out to&#xA;&lt;code&gt;libstd++&lt;/code&gt; docs, but using them wasn&amp;rsquo;t much convenient. The best documentation&#xA;sources you could find were cplusplus.com and cppreference wiki&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. You can&#xA;live with these on-line references, but you will quickly get bored with them.&#xA;Now, back to &lt;code&gt;cppman&lt;/code&gt;, the boredom killer and time saver.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cppman--quick-reference&#34;&gt;&#xA;  cppman — quick reference&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/c-man-pages/#cppman--quick-reference&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;installing-it&#34;&gt;&#xA;  Installing it&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/c-man-pages/#installing-it&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If you&amp;rsquo;re an user of Arch Linux, it is available in the AUR at the time I&amp;rsquo;m&#xA;writing this post.&lt;/li&gt;&#xA;&lt;li&gt;Otherwise, you can install it using python&amp;rsquo;s &lt;code&gt;pip&lt;/code&gt; – ya know, &lt;code&gt;pip install cppman&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It doesn&amp;rsquo;t really matter the method you choose, just make sure to add it to your&#xA;&lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;using-it&#34;&gt;&#xA;  Using it&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/c-man-pages/#using-it&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;cppman sort&#xA;cppman map&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Don&amp;rsquo;t cry, it is real. You can optionally cache all of its man pages, but I&#xA;don&amp;rsquo;t find this strictly necessary for me. The default option (no cache)&#xA;downloads manual pages on-demand. Oh, it uses &lt;code&gt;vim&lt;/code&gt; as its default pager, so you&#xA;can search for keywords with &lt;code&gt;/&lt;/code&gt;. Also, hyperlinks are everywhere, so you can&#xA;use &lt;code&gt;K&lt;/code&gt; or &lt;code&gt;C-]&lt;/code&gt; to follow them. To go back, use &lt;code&gt;C-t&lt;/code&gt;. By the way, it is&#xA;compatible with &lt;code&gt;man&lt;/code&gt;, so if you decide to cache its man pages, you can view&#xA;them later with &lt;code&gt;man&lt;/code&gt; (instead of &lt;code&gt;cppman&lt;/code&gt;). Happy &lt;del&gt;hacking&lt;/del&gt; reading!&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;footnotes&#34;&gt;&#xA;  Footnotes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/c-man-pages/#footnotes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;cppman — you don&amp;rsquo;t need to read the whole article; if you&amp;rsquo;re in a hurry,&#xA;just open the project page and forget me!&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;As always, huh? Stack Overflow thread.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;The last one is &lt;strong&gt;by far&lt;/strong&gt; much better maintained.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Wait, since when reading manual pages is a source of happiness?&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/c-man-pages/#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: C++ man pages&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Eudyptula Challenge
      </title>
      <link>https://perrotta.dev/2015/01/the-eudyptula-challenge/</link>
      <pubDate>Wed, 07 Jan 2015 12:54:40 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2015/01/the-eudyptula-challenge/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;Update: I stopped at task 06 on February. Little seems to have stopped responding e-mails. Which is sad, because I was liking those tasks =/&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I am participating in the &lt;a href=&#34;http://eudyptula-challenge.org/&#34;&gt;Eudyptula Challenge&lt;/a&gt;, which is not something exactly new, but it is as able to get you out of your comfort zone as if it were&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It puts you into the mind of a Linux Kernel developer, where you are required to write and submit patches and to complete some tasks.&lt;/p&gt;&#xA;&lt;p&gt;Subscribing to the challenge is a mini challenge itself&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;: you must write to &lt;em&gt;little&lt;/em&gt; (the superuser behind the thing) an e-mail in plain text. This means: NO HTML. This looks like a silly requirement, but it’s the way how the (real) Linux developers work, and it is actually slightly fancier than you probably imagine. &lt;em&gt;Little&lt;/em&gt; himself recommends that the participants don&amp;rsquo;t use either the Gmail web interface or Outlook.&lt;/p&gt;&#xA;&lt;p&gt;I intend to document here my own experiences with Eudyptula&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setting-up&#34;&gt;&#xA;  Setting up&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#setting-up&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The first thing I went after was a decent and updated Linux distro; doing the challenge within a Linux rather than anything else offers a better experience. Zero effort here, as I’ve already had Arch Linux&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; installed.&lt;/p&gt;&#xA;&lt;p&gt;Next: a good text editor. Wait…why not two? I am using vim to compose e-mails, and emacs to write code.&lt;/p&gt;&#xA;&lt;p&gt;What’s next? Oh yes…a decent &lt;code&gt;sendmail&lt;/code&gt; program. It is not mandatory to have one of those, but it eases a lot the process of writing e-mail in plain text. I grabbed &lt;code&gt;msmtp&lt;/code&gt; plus its MTA. Writing a config file for it is pretty straightforward.&lt;/p&gt;&#xA;&lt;p&gt;And now I was ready: I subscribed to the challenge.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-task-01&#34;&gt;&#xA;  The task #01&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#the-task-01&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Hours later, &lt;em&gt;little&lt;/em&gt;&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; acknowledged my e-mail and sent me the instructions for the first task.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I should write my first module for the Linux Kernel.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;A good start. &lt;em&gt;I didn’t even know how to begin, oh no!&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;The task was to write a module that would write ‘Hello World’ to the debug level log of the running kernel when loaded.&lt;/p&gt;&#xA;&lt;p&gt;First, I had to install some dependencies to be able to compile a couple of C programs. Actually, the &lt;code&gt;base-devel&lt;/code&gt; group from Arch already contained most of the things I would need. &lt;code&gt;linux-headers&lt;/code&gt; and &lt;code&gt;bc&lt;/code&gt; were also relevant.&lt;/p&gt;&#xA;&lt;p&gt;My first module, written in C&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;, looked like this in the end:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-c&#34;&gt;#include &amp;lt;linux/init.h&amp;gt;;&#xA;#include &amp;lt;linux/kernel.h&amp;gt;;&#xA;#include &amp;lt;linux/module.h&amp;gt;;&#xA;&#xA;MODULE_AUTHOR(&amp;#34;Thiago Perrotta&amp;#34;);&#xA;MODULE_DESCRIPTION(&amp;#34;A gentle Hello World module&amp;#34;);&#xA;MODULE_LICENSE(&amp;#34;GPL&amp;#34;);&#xA;&#xA;static int __init hello_init(void)&#xA;{&#xA;  printk(KERN_DEBUG &amp;#34;Hello world!\n&amp;#34;);&#xA;  return 0;&#xA;}&#xA;&#xA;static void __exit hello_cleanup(void)&#xA;{&#xA;  printk(KERN_DEBUG &amp;#34;Goodbye World!\n&amp;#34;);&#xA;}&#xA;&#xA;module_init(hello_init);&#xA;module_exit(hello_cleanup);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I didn’t get it right in my first trial, of course. In particular, I wrote ‘Hello World’ to the INFO log level, using &lt;code&gt;KERN_INFO&lt;/code&gt;, instead of &lt;code&gt;KERN_DEBUG&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;And I also needed a &lt;code&gt;Makefile&lt;/code&gt; to be able to compile it:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-make&#34;&gt;obj-m &amp;#43;= hello.o&#xA;KERNEL ?= /lib/modules/$(shell uname -r)/build&#xA;&#xA;all:&#xA;    make -C $(KERNEL) M=$(PWD) modules&#xA;&#xA;clean:&#xA;    make -C $(KERNEL) M=$(PWD) clean&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The &lt;code&gt;Makefile&lt;/code&gt; wasn&amp;rsquo;t right in my first trial, either. Another requirement of this task was that this file should provide an environment variable, as an alternative location for the build directory of the kernel, opposed to being a hard coded value. I provided one from the beginning, but the way I wrote it was slightly wrong.&lt;/p&gt;&#xA;&lt;p&gt;Now, this code didn&amp;rsquo;t just pop out of my head out of nothing. Although I know how to program in C, I never did kernel programming before. I had to look up for some documentation about how to write a module. It wasn&amp;rsquo;t super straightforward, because I found many documentation sources about writing modules for the Linux 2.6.x version, which is outdated now&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;, and the modern version of writing modules is a bit different from it.&lt;/p&gt;&#xA;&lt;p&gt;Also, I was careful not to accidentally find a solution for this task directly. Of course, some people have already done it, and they could have written something about their experiences, as I am doing right now.&lt;/p&gt;&#xA;&lt;p&gt;Anyways, after writing those two files and testing that they really worked as expected, I loaded my freshly built module. And yay, a simple &lt;code&gt;dmesg&lt;/code&gt; would reveal my hello message out there. It was really cool to see it worked:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;thiago@archpad ~//01 % sudo modinfo hello.ko&#xA;filename:       /home/thiago//01/hello.ko&#xA;license:        GPL&#xA;description:    A gentle Hello World module&#xA;author:         Thiago Perrotta&#xA;depends:&#xA;vermagic:       3.17.6-1-ARCH SMP preempt mod_unload modversions&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After that, I’ve sent everything I should to &lt;em&gt;little&lt;/em&gt;, and today I got its reply, about the second task. So, let’s go…&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-have-i-learned-with-this-task&#34;&gt;&#xA;  What have I learned with this task?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#what-have-i-learned-with-this-task&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;how to write a Makefile to compile a kernel module&lt;/li&gt;&#xA;&lt;li&gt;how to execute shell commands within a Makefile&lt;/li&gt;&#xA;&lt;li&gt;how to use an environment variable within a Makefile&lt;/li&gt;&#xA;&lt;li&gt;how to write e-mails in plain text and send them with msmtp&lt;/li&gt;&#xA;&lt;li&gt;how to send attachments &lt;strong&gt;without&lt;/strong&gt; base64 encoding&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;li&gt;how to load, unload and get information about modules&lt;/li&gt;&#xA;&lt;li&gt;modules are so dynamic and easy to load, huh? Like USB devices. I would never imagine that.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;It is also a excuse for me to write something here :-)&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Pun intended.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;I can’t write this in one shot. Really. Eudi←yptull←a. &lt;strong&gt;EUDYPTULA&lt;/strong&gt;.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;The distro that will conquer the &lt;a href=&#34;https://wiki.archlinux.org/index.php?title=DeveloperWiki&amp;amp;oldid=293327#Organization&#34;&gt;moon&lt;/a&gt;.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:5&#34;&gt;&#xA;&lt;p&gt;Which turned out to be a bot.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:6&#34;&gt;&#xA;&lt;p&gt;Damn, everything will be written in C from now on. That’s what we get with kernel programming, I guess.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:7&#34;&gt;&#xA;&lt;p&gt;Only lazy or paranoid Linux sysadmins will tell you otherwise 😉&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:8&#34;&gt;&#xA;&lt;p&gt;This turned out to be the hardest thing of this task, yet it wasn’t even part of it.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2015/01/the-eudyptula-challenge/#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: The Eudyptula Challenge&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>★ 2014 - Small review of a really nice year
      </title>
      <link>https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/</link>
      <pubDate>Wed, 24 Dec 2014 04:51:52 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>bestof</category>
      <category>legacy</category>
      <category>meta</category>
      <guid>https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;Disclaimer&lt;/strong&gt;: I haven&amp;rsquo;t reviewed this post. It was written in one shot. I hope&#xA;it is understandable.&lt;/p&gt;&#xA;&lt;p&gt;This is possibly the last post from me on this platform. However, I&amp;rsquo;ve said that&#xA;a thousand times before. I&amp;rsquo;ve tried many platforms: Google Sites, Jekyll, nanoc,&#xA;and Octopress.&lt;/p&gt;&#xA;&lt;p&gt;Last year I wrote a similar post. Now, here I will register some small changes,&#xA;tidbits, and bits I&amp;rsquo;ve learned and discovered this year. I won&amp;rsquo;t create&#xA;links—just pure text.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-actual-post&#34;&gt;&#xA;  The actual post&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#the-actual-post&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Detailing everything would be tough, so I present this as lists, trying to be&#xA;chronologically organized and reasonably brief.&lt;/p&gt;&#xA;&lt;h3 id=&#34;campus-party&#34;&gt;&#xA;  Campus Party&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#campus-party&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This was my first great event. In particular:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I participated in a hackathon for the first time. It was from Mozilla, and my&#xA;code is on GitHub in the &amp;ldquo;Riddlefox&amp;rdquo; repository. It&amp;rsquo;s a riddle game for&#xA;Firefox OS.&lt;/li&gt;&#xA;&lt;li&gt;I participated in my first Capture the Flag (CTF) competition, without knowing&#xA;it was a CTF. Promoted by CERT.br, I won a Kindle Paperwhite 2, ending in&#xA;second place. Today, the Kindle is one of the devices I use most.&lt;/li&gt;&#xA;&lt;li&gt;I opened my eyes to communities thanks to open source communities at this&#xA;event. Today, I&amp;rsquo;m an active member of the Arch Linux community.&lt;/li&gt;&#xA;&lt;li&gt;I opened my eyes to web development. I&amp;rsquo;m not a super fan yet, but it&amp;rsquo;s on my&#xA;planning list.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;arch-linux&#34;&gt;&#xA;  Arch Linux&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#arch-linux&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I was searching for a community to settle on for two years. The Arch&#xA;Linux community is perfect for me. I learned:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Communities&lt;/li&gt;&#xA;&lt;li&gt;MediaWiki syntax/style&lt;/li&gt;&#xA;&lt;li&gt;IRC for open source projects&lt;/li&gt;&#xA;&lt;li&gt;The importance of the command line&lt;/li&gt;&#xA;&lt;li&gt;The importance of &amp;ldquo;do it yourself&amp;rdquo; and not feeding help vampires&lt;/li&gt;&#xA;&lt;li&gt;Sometimes user-centered &amp;gt; user-friendly&lt;/li&gt;&#xA;&lt;li&gt;The feeling of knowing intelligent people and becoming more intelligent with them&lt;/li&gt;&#xA;&lt;li&gt;Tiling window managers are awesome (currently using i3)&lt;/li&gt;&#xA;&lt;li&gt;Mailing lists&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;programming-languages&#34;&gt;&#xA;  Programming languages&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#programming-languages&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;One of my goals this year. Languages I learned include, in order: emacs lisp,&#xA;cmake, golang, javascript/node.js, ruby, haskell, Matlab, and R.&lt;/p&gt;&#xA;&lt;p&gt;The most important things are the paradigms:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Haskell: functional programming&lt;/li&gt;&#xA;&lt;li&gt;Golang: systems programming&lt;/li&gt;&#xA;&lt;li&gt;Ruby: dynamic programming&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My goal for next year is more depth-first than breadth-first. I want to improve&#xA;my knowledge in some of these languages, probably digging deeper on Haskell.&lt;/p&gt;&#xA;&lt;h3 id=&#34;moocs&#34;&gt;&#xA;  MOOCs&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#moocs&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I became more interested in them month by month. Coursera is my preferred&#xA;platform, though I learned to like edx. The best MOOC this year was on&#xA;Functional Programming using Haskell, conducted by Erik Meijer.&lt;/p&gt;&#xA;&lt;h3 id=&#34;presentations&#34;&gt;&#xA;  Presentations&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#presentations&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;LaTeX + beamer became my de facto standard. For collaborative editing, Google&#xA;Docs/Slides continues to be the best. LyX is my preferred tool.&lt;/p&gt;&#xA;&lt;h3 id=&#34;books-and-reading&#34;&gt;&#xA;  Books and reading&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#books-and-reading&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This year was great. My Goodreads profile tells me I read 50 books this year,&#xA;almost double from last year (26 books). Most were technical.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I can&amp;rsquo;t live without Goodreads anymore.&lt;/li&gt;&#xA;&lt;li&gt;You don&amp;rsquo;t need to buy books on Amazon for a Kindle. I&amp;rsquo;ve never bought one.&#xA;Epub and mobi are the best formats.&lt;/li&gt;&#xA;&lt;li&gt;I can&amp;rsquo;t live without Calibre anymore.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;operating-systems&#34;&gt;&#xA;  Operating systems&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#operating-systems&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I learned more about FreeBSD, grml (a nice distro for system administrators),&#xA;and other Linux distros. Now I try to say Unix and *nix instead of just Linux.&lt;/p&gt;&#xA;&lt;p&gt;Docker and containers are simply amazing. They will be the future. I also played&#xA;with filesystems like btrfs and xfs.&lt;/p&gt;&#xA;&lt;h3 id=&#34;games&#34;&gt;&#xA;  Games&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#games&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Not a great year for games. The only one worth playing was Tom Clancy&amp;rsquo;s Splinter&#xA;Cell: Conviction. Kongregate is slowly dying.&lt;/p&gt;&#xA;&lt;h3 id=&#34;music&#34;&gt;&#xA;  Music&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#music&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Spotify was my best discovery of the year. I&amp;rsquo;m trying to listen to different&#xA;music genres. I also discovered blockify for blocking audio ads on Spotify&#xA;(though I don&amp;rsquo;t recommend it—Spotify is a great service offered for free).&lt;/p&gt;&#xA;&lt;p&gt;The podcasts I most like is Bad Voltage (presented by Jono Bacon, Jeremy Garcia,&#xA;Bryan Lunduke and Stuart Landridge).&lt;/p&gt;&#xA;&lt;h3 id=&#34;computer-graphics&#34;&gt;&#xA;  Computer graphics&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#computer-graphics&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I created a game (repository &amp;ldquo;cg-sokoban&amp;rdquo;) and developed a ray-tracer. OpenGL&#xA;wasn&amp;rsquo;t the most exciting thing I learned, but I got interested in game engines&#xA;and image processing/computer vision.&lt;/p&gt;&#xA;&lt;h3 id=&#34;vim-and-emacs&#34;&gt;&#xA;  Vim and Emacs&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#vim-and-emacs&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;The epic battle continues. I switched to vim for most daily text editing needs&#xA;this year. However, I&amp;rsquo;m not done with emacs. My personal rule: if your editing&#xA;task takes less than an hour, vim is better; otherwise emacs is better.&lt;/p&gt;&#xA;&lt;h3 id=&#34;hackathons&#34;&gt;&#xA;  Hackathons&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#hackathons&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I participated in my first hackathon with a team; my team got best place in a&#xA;specific category (HackPuc).&lt;/p&gt;&#xA;&lt;h3 id=&#34;android&#34;&gt;&#xA;  Android&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#android&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;I learned tricks to optimize it. I have the same device (Motorola Razr I) for&#xA;almost 2 years, and it&amp;rsquo;s still fast. Root is necessary for maintenance.&lt;/p&gt;&#xA;&lt;h3 id=&#34;privacy&#34;&gt;&#xA;  Privacy&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#privacy&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Privacy becomes a concern more and more. I became an adopter of OpenPGP and I&amp;rsquo;m&#xA;trying to move away from the Gmail web client. I&amp;rsquo;m using msmtp for sending&#xA;emails, but I still need a more complete stack.&lt;/p&gt;&#xA;&lt;h3 id=&#34;social-networks&#34;&gt;&#xA;  Social networks&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#social-networks&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Facebook is becoming deprecated. My news feed is blocked from the web. Most of&#xA;my contacts are boring, narcissistic, and futile.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Twitter&lt;/strong&gt;: Better as a news feed than Facebook, though I never interacted&#xA;with most people I follow.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tumblr&lt;/strong&gt;: Now using it for sharing links instead of Facebook.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Flickr&lt;/strong&gt;: My preferred place for photos. Flickr is the best place for&#xA;sharing photos, though this may change.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reddit and Hacker News&lt;/strong&gt;: Still the best sources of serendipity I know.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;RSS feeds&lt;/strong&gt;: Using Inoreader now. XKCD is probably the best RSS feed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;podcasts&#34;&gt;&#xA;  Podcasts&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#podcasts&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This year was huge for podcasts. I have 47 podcast feeds, a ridiculous number. I&#xA;listen regularly to ~15 of them. I&amp;rsquo;m adapting to listening at 2x speed. Some I&#xA;listen at 2.5x.&lt;/p&gt;&#xA;&lt;h3 id=&#34;languages&#34;&gt;&#xA;  Languages&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#languages&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;One of the best things I did was write in this blog in English. This improved&#xA;much the way I think in English. What&amp;rsquo;s next? I&amp;rsquo;m thinking about studying French&#xA;or German.&lt;/p&gt;&#xA;&lt;h3 id=&#34;orgmode&#34;&gt;&#xA;  Orgmode&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#orgmode&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;The best TODO/agenda/organizer I discovered. Both for discipline and structuring&#xA;your thoughts and plans.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-future-starts-with-you&#34;&gt;&#xA;  The future starts with you&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/2014-small-review-of-a-really-nice-year/#the-future-starts-with-you&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This was probably the largest post I written in this blog. I&amp;rsquo;m pretty satisfied.&#xA;I covered most of the things I thought. I haven&amp;rsquo;t talked about&#xA;everything—programming contests, hackergroup, bookmarks, dotfiles, repositories,&#xA;what I hated and loved to learn, professors, and the GPA system.&lt;/p&gt;&#xA;&lt;p&gt;In this year, more than halfway through my college degree, several things became&#xA;clear about my next steps. The next year I&amp;rsquo;ll probably study more computer&#xA;graphics, computer networks, programming languages, and algorithms.&lt;/p&gt;&#xA;&lt;p&gt;What is the future of this place? I don&amp;rsquo;t know. However, I tried to stop several&#xA;times. This means something. I&amp;rsquo;m not 100% comfortable with using Wordpress. I&amp;rsquo;m&#xA;getting bored of this format/style.&lt;/p&gt;&#xA;&lt;p&gt;For all of this, I&amp;rsquo;m migrating to &lt;a href=&#34;https://thiagowfx.github.io/archive&#34;&gt;https://thiagowfx.github.io/archive&lt;/a&gt;. I&amp;rsquo;ll&#xA;change the way I post too. If you follow by RSS, keep it in your feed list for a&#xA;while until the new blog gets its own feed. The best way to get in touch with me&#xA;is by following me on Twitter (@thiagowfx).&lt;/p&gt;&#xA;&lt;p&gt;I wish you a good New Year. Let&amp;rsquo;s move on.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Observation&lt;/strong&gt;: I&amp;rsquo;m on vacation. I&amp;rsquo;m open to study groups or business. If you&#xA;want to study something with me or want me to work for you, this is a nice&#xA;moment.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: 2014 - Small review of a really nice year&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/bestof/&#34;&gt;#bestof&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/meta/&#34;&gt;#meta&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux: a gentle introduction
      </title>
      <link>https://perrotta.dev/2014/12/tmux-a-gentle-introduction/</link>
      <pubDate>Sun, 14 Dec 2014 03:00:38 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/12/tmux-a-gentle-introduction/</guid>
      <description>&lt;p&gt;♠ There are plenty of tutorials and insights about tmux on the web. This post&#xA;isn&amp;rsquo;t another tutorial. Instead, I&amp;rsquo;m listing four purposes of why you should use&#xA;tmux. I&amp;rsquo;m not here to convince you to use any tool; just read and create your&#xA;own judgment about it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;okay-tmux&#34;&gt;&#xA;  Okay, tmux&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#okay-tmux&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Observation:&lt;/strong&gt; You should probably install and open &lt;code&gt;tmux&lt;/code&gt; to follow this&#xA;mini tutorial. After executing &lt;code&gt;tmux&lt;/code&gt;, you&amp;rsquo;ll probably notice nothing fancy&#xA;happens—it just feels like opening a new terminal.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;purpose-1-terminal-multiplexing&#34;&gt;&#xA;  Purpose #1: Terminal multiplexing&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#purpose-1-terminal-multiplexing&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Tmux is a terminal multiplexer. If you are used to opening several windows of&#xA;your favorite terminal emulator (terminator, gnome-terminal, xfce4-terminal,&#xA;konsole), you should probably stop that now.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Observation:&lt;/strong&gt; &lt;code&gt;&amp;lt;prefix&amp;gt;&lt;/code&gt; denotes your tmux prefix key. The default is&#xA;&lt;code&gt;C-b&lt;/code&gt;, but it can be changed—for example, vim users tend to dislike this&#xA;setting because &lt;code&gt;C-b&lt;/code&gt; is frequent in vim (it scrolls one page up, like Page&#xA;Up). &lt;code&gt;C-a&lt;/code&gt; is a common alternative.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s how you open a new tab (window in tmux terminology) on tmux: &lt;code&gt;&amp;lt;prefix&amp;gt; c&lt;/code&gt;. No mouse; no need to play with two windows. To switch between windows:&#xA;&lt;code&gt;&amp;lt;prefix&amp;gt; n&lt;/code&gt; for next and &lt;code&gt;&amp;lt;prefix&amp;gt; p&lt;/code&gt; for previous.&lt;/p&gt;&#xA;&lt;p&gt;Now for multiplexing: to create a new horizontal split, use &lt;code&gt;&amp;lt;prefix&amp;gt; &amp;quot;&lt;/code&gt;. To&#xA;create a new vertical split, use &lt;code&gt;&amp;lt;prefix&amp;gt; %&lt;/code&gt;. To switch between splits:&#xA;&lt;code&gt;&amp;lt;prefix&amp;gt; o&lt;/code&gt;. This subset of keystrokes is sufficient to boost your terminal&#xA;productivity.&lt;/p&gt;&#xA;&lt;h3 id=&#34;purpose-2-pair-programming&#34;&gt;&#xA;  Purpose #2: Pair programming&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#purpose-2-pair-programming&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Suppose you want to share a terminal session with a friend. What is a terminal&#xA;session? Think of it as an analog to desktop sharing in the GUI world. However,&#xA;it is more than simple sharing—the observer has full control over the terminal,&#xA;just like you.&lt;/p&gt;&#xA;&lt;p&gt;Therefore, a terminal session is suitable for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pair programming&lt;/li&gt;&#xA;&lt;li&gt;Remote support (from a technical person)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What do you do? Open &lt;code&gt;tmux&lt;/code&gt;. Tell your friend to SSH into your machine. They run&#xA;&lt;code&gt;tmux attach-session&lt;/code&gt;. This assumes you only have one active session. That&amp;rsquo;s it.&#xA;To quit, execute &lt;code&gt;exit&lt;/code&gt; or type &lt;code&gt;Ctrl+D&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;purpose-3-highly-configurable&#34;&gt;&#xA;  Purpose #3: Highly configurable&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#purpose-3-highly-configurable&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Tmux is very configurable and can be scripted to do almost anything concerning&#xA;shell organization. Look at other people&amp;rsquo;s &lt;code&gt;.tmux.conf&lt;/code&gt; files, merge them, and&#xA;create your own reasonable configuration.&lt;/p&gt;&#xA;&lt;h3 id=&#34;purpose-4-ideprogramming-workspace&#34;&gt;&#xA;  Purpose #4: IDE/programming workspace&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#purpose-4-ideprogramming-workspace&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Tmux can be used as an &amp;ldquo;IDE&amp;rdquo; or programming workspace. This becomes really easy&#xA;with &lt;code&gt;tmuxinator&lt;/code&gt;. The idea is to center all your workflow into one place: tmux.&#xA;No need to swap windows.&lt;/p&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;&#xA;  Conclusion&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/tmux-a-gentle-introduction/#conclusion&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Stop hitting alt-tab and using the mouse. Use tmux—but only if it would boost&#xA;your productivity. Otherwise, stick to your habits.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Observation&lt;/strong&gt;: What about GNU screen? I haven&amp;rsquo;t tried it. Most sources I&#xA;read and most people I know prefer tmux, finding it more modern and powerful.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Bonus&lt;/strong&gt;: Detaching from a terminal, then re-attaching to it later is useful&#xA;for monitoring servers, though there are better solutions for that.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Tmux: a gentle introduction&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using proxy servers on Linux
      </title>
      <link>https://perrotta.dev/2014/12/using-proxy-servers-on-linux/</link>
      <pubDate>Tue, 09 Dec 2014 02:48:45 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>security</category>
      <guid>https://perrotta.dev/2014/12/using-proxy-servers-on-linux/</guid>
      <description>&lt;p&gt;♠ There are some times when you need to connect your PC to an access point which&#xA;requires you to route your connections through a web proxy. No panic! It is&#xA;really simple to config your linux desktop (or server, for that matter) to do&#xA;it. You just have to modify your &lt;code&gt;http_proxy&lt;/code&gt; and &lt;code&gt;https_proxy&lt;/code&gt; environment&#xA;variables.&lt;/p&gt;&#xA;&lt;p&gt;For example:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;export http_proxy=http://1.2.3.4:3128&#xA;export https_proxy=http://1.2.3.4:3128&#xA;export HTTP_PROXY=http://1.2.3.4:3128&#xA;export HTTPS_PROXY=http://1.2.3.4:3128&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After that, just execute your favorite web browser then test your new settings.&#xA;Beware! You have to execute your web browser through the command-line, in the&#xA;same shell that you have exported those environment variables. For example:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ export HTTP_PROXY=http://1.2.3.4:3128 &amp;amp;&amp;amp; chromium &amp;amp;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Starting the &lt;code&gt;.desktop&lt;/code&gt; application of your web browser, for example, wouldn&amp;rsquo;t&#xA;work, unless you store those environment variables in a system wide directory&#xA;(good recommendations include &lt;code&gt;/etc/profile&lt;/code&gt; and &lt;code&gt;/etc/profile.d/_&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;However, from my experience, this is limited in the sense that it would be the&#xA;default proxy of your system, which isn&amp;rsquo;t what you probably want – the common&#xA;use case is: connect to some AP, switch to its proxy, and after a while&#xA;disconnect from it &lt;em&gt;and&lt;/em&gt; throw away its proxy.&lt;/p&gt;&#xA;&lt;p&gt;Simple, isn&amp;rsquo;t it? If you want to automate this task a little more, please refer&#xA;to the &lt;a href=&#34;https://wiki.archlinux.org/index.php/Proxy&#34;&gt;Arch Wiki&lt;/a&gt; – from&#xA;where this post was originally inspired.&lt;/p&gt;&#xA;&lt;p&gt;Also, I needed to apply this setup in a real world situation and I can confirm&#xA;it works really well.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Using proxy servers on Linux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/security/&#34;&gt;#security&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi Overview - Part #0
      </title>
      <link>https://perrotta.dev/2014/12/raspberry-pi-overview-part-%230/</link>
      <pubDate>Sat, 06 Dec 2014 01:11:54 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/12/raspberry-pi-overview-part-%230/</guid>
      <description>&lt;p&gt;♠ Hello people,&lt;/p&gt;&#xA;&lt;p&gt;In the next days I&amp;rsquo;m gonna begin a new mini series here in the style of my last&#xA;one, about&#xA;&lt;a href=&#34;https://perrotta.dev/2014/07/here-be-dragons-free-bsd-overview-part-i/&#34;&gt;FreeBSD&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;&#xA;  Motivation&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/raspberry-pi-overview-part-%230/#motivation&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I always wanted to have an opportunity to test a &lt;a href=&#34;http://www.raspberrypi.org/&#34;&gt;Raspberry&#xA;Pi&lt;/a&gt;. I still remember my enthusiasm when I first&#xA;heard about it (probably by a podcast or a Linux BBS). Okay, those small devices&#xA;tend to attract people anyways, however the Pi always got a special place in my&#xA;head. Although other projects such as Arduino, Galileo and Beaglebone ask for&#xA;some attention, none of them is comparable to a Pi in the sense of upstreamness.&lt;/p&gt;&#xA;&lt;p&gt;Now, after a little bit of serendipity and other factors, &lt;a href=&#34;http://www.poli.ufrj.br/noticias/noticias.php?numnews=2032&#34;&gt;me and some friends&#xA;won&lt;/a&gt; two Raspberry&#xA;Pis on a recent hackathon. This was a complete surprise (I believe almost all&#xA;prizes and/or competitions of my life always were one) and I thought it was&#xA;(is!) the perfect opportunity to review one of them. So, let&amp;rsquo;s do it, shall we?&lt;/p&gt;&#xA;&lt;h2 id=&#34;hello-pi&#34;&gt;&#xA;  Hello, Pi&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/12/raspberry-pi-overview-part-%230/#hello-pi&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;What are the first impressions after you see a Raspberry Pi? Well, you&amp;rsquo;ll&#xA;probably say: &amp;ldquo;whoa, it is very small for a computer!&amp;rdquo;. Maybe you won&amp;rsquo;t get too&#xA;impressed in our &lt;strong&gt;modern&lt;/strong&gt; days of modern smartphones and phablets, but let&amp;rsquo;s&#xA;forget them for a moment.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Raspberry Pi Overview - Part #0&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>M-x review-this-blog
      </title>
      <link>https://perrotta.dev/2014/11/m-x-review-this-blog/</link>
      <pubDate>Fri, 28 Nov 2014 15:19:08 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>meta</category>
      <guid>https://perrotta.dev/2014/11/m-x-review-this-blog/</guid>
      <description>&lt;p&gt;♠ Dear reader, this place reached more than a year of existence, and this is a&#xA;milestone I never dreamed of. I always thought that I would only blog for a few&#xA;months. However, here I still am.&lt;/p&gt;&#xA;&lt;p&gt;I always emphasize that this is a &lt;strong&gt;personal&lt;/strong&gt; blog, therefore its posts are not&#xA;necessarily optimized to please you—they are optimized to be clear, reflecting&#xA;my thoughts as precisely as possible. Yet here are almost 10k views.&lt;/p&gt;&#xA;&lt;p&gt;Views are not super important because I don&amp;rsquo;t win anything with ads (on&#xA;purpose), but they of course motivate me to continue writing here. Now, as you&#xA;are with me, I decided it would be a good idea to listen to you. There is a&#xA;Google Docs form where you can say things you like and dislike on this blog, and&#xA;also suggest future topics.&lt;/p&gt;&#xA;&lt;p&gt;If you have some time, please respond. Thanks!&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: M-x review-this-blog&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/meta/&#34;&gt;#meta&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matlab debootstrapping #1
      </title>
      <link>https://perrotta.dev/2014/11/matlab-debootstrapping-%231/</link>
      <pubDate>Tue, 18 Nov 2014 21:45:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/11/matlab-debootstrapping-%231/</guid>
      <description>&lt;p&gt;♠ Alternative title: &amp;ldquo;Matlab, second impressions&amp;rdquo;. I am trying to learn Matlab&#xA;super fast for prototyping purposes. Fast learning isn&amp;rsquo;t my preferred style for&#xA;approaching a new programming language. However, this is necessary at the&#xA;moment.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is not a tutorial. Just annotations and notes. Information&#xA;is not necessarily correct, so consume it at your own risk.&lt;/p&gt;&#xA;&lt;h2 id=&#34;matlab-paradise&#34;&gt;&#xA;  Matlab Paradise&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/matlab-debootstrapping-%231/#matlab-paradise&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Everything is optimized for matrices and vectors. Matlab means &amp;ldquo;matrix laboratory&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;A number is treated as a 1x1 matrix. This is really interesting and has nice implications and syntactic sugar.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Matrix manipulation&lt;/strong&gt;: &lt;code&gt;A = [1,2,3]&lt;/code&gt; is a row vector; &lt;code&gt;B = [1;2;3]&lt;/code&gt; is a column vector; &lt;code&gt;C = [1,2;3,4]&lt;/code&gt; mixes them together.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Slicing&lt;/strong&gt;: Python style, but with different syntax. &lt;code&gt;1:10&lt;/code&gt; means &lt;code&gt;range(1,10)&lt;/code&gt; and &lt;code&gt;1:2:5&lt;/code&gt; means &lt;code&gt;range(1,5,2)&lt;/code&gt; but Matlab is inclusive (5 is present).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Indexing vectors&lt;/strong&gt;: &lt;code&gt;A(1,2)&lt;/code&gt;, &lt;code&gt;A(2,1)&lt;/code&gt;. Beware: indexes begin from 1, not zero.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;: slow, slow, slow. See benchmarks on Julia&amp;rsquo;s homepage.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;matlab -nodesktop&lt;/code&gt; for command-line prompt. Self-contained, and you can still browse help with &lt;code&gt;doc lu&lt;/code&gt; or &lt;code&gt;help lu&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Introspection #1&lt;/strong&gt;: &lt;code&gt;whos&lt;/code&gt;. Know everything about your variables.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Workspace view&lt;/strong&gt;: Really nice. Save variables with &lt;code&gt;save out.mat&lt;/code&gt;. Load them with &lt;code&gt;load out.mat&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Some Unix goodness is available: &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;pwd&lt;/code&gt;, &lt;code&gt;ls -l&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;However, &lt;code&gt;mkdir&lt;/code&gt; and &lt;code&gt;rmdir&lt;/code&gt; work differently.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hello, world!&lt;/strong&gt;: &lt;code&gt;fprintf(&#39;string here&#39;)&lt;/code&gt; or &lt;code&gt;display(&#39;hello, world!&#39;)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Strings are enclosed with single quotes, not double. Why?&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Functions&lt;/strong&gt;: C/C++/Java style. &lt;code&gt;f(a,b,c,d,e)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Some functions have more than one return value: &lt;code&gt;ret1, ret2 = f(a,b,c)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Clear screen: &lt;code&gt;C-l&lt;/code&gt; or &lt;code&gt;clc&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Beware!&lt;/strong&gt; &lt;code&gt;clear&lt;/code&gt; deletes your variables. &lt;code&gt;clear var&lt;/code&gt; is more specific. &lt;code&gt;clear all&lt;/code&gt; is even more destructive.&lt;/li&gt;&#xA;&lt;li&gt;Auto-completion with TAB. No &lt;code&gt;C-Space&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Need help? &lt;code&gt;lu(&lt;/code&gt; then F1. Hints? &lt;code&gt;C-F1&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Matlab hotkeys seem optimized for emacs users. See &lt;code&gt;C-y&lt;/code&gt; (yank/paste), &lt;code&gt;C-k&lt;/code&gt; (kill/copy), &lt;code&gt;C-a&lt;/code&gt; and &lt;code&gt;C-e&lt;/code&gt; (navigation), &lt;code&gt;C-s&lt;/code&gt; (search), &lt;code&gt;C-_&lt;/code&gt; (undo).&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;open file.m&lt;/code&gt; to open files without the fancy GUI.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;delete file.m&lt;/code&gt;. Not &lt;code&gt;rm&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Comments with percent sign (%). Why not hashes?&lt;/li&gt;&#xA;&lt;li&gt;Run a Matlab script: &lt;code&gt;cd&lt;/code&gt; into its directory then type &lt;code&gt;file&amp;lt;CR&amp;gt;&lt;/code&gt; in the prompt.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;version&lt;/code&gt;! R2014a == 8.3.0.x&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;C-c&lt;/code&gt; for long computations.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;rand(2,2)&lt;/code&gt; if you ran out of creativity for numbers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;v = [1 2]&lt;/code&gt; equals &lt;code&gt;v = [1,2]&lt;/code&gt;. Who needs commas?&lt;/li&gt;&#xA;&lt;li&gt;Element-wise operators are preceded with a dot. Example: &lt;code&gt;.*&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Love intelligent prompts: &lt;code&gt;C-p&lt;/code&gt;, &lt;code&gt;M-p&lt;/code&gt;, &lt;code&gt;C-n&lt;/code&gt;, &lt;code&gt;M-n&lt;/code&gt;, &lt;code&gt;&amp;lt;UP&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;DOWN&amp;gt;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Miss your shell? &lt;code&gt;system(&#39;echo Hello world!&#39;)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;File handling: &lt;code&gt;fid = fopen(&#39;file.txt&#39;,&#39;w&#39;); fprintf(fid,&#39;...&#39;); fclose(fid);&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introspection&#34;&gt;&#xA;  Introspection&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/matlab-debootstrapping-%231/#introspection&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;which lu.m&lt;/code&gt;, &lt;code&gt;which lu&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;edit lu.m&lt;/code&gt;, &lt;code&gt;edit lu&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;help &amp;lt;command&amp;gt;&lt;/code&gt; spits output&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;doc &amp;lt;command&amp;gt;&lt;/code&gt; opens help browser&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;whos&lt;/code&gt; shows your variables and symbols and functions&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;type &amp;lt;command&amp;gt;&lt;/code&gt;. Like Unix&amp;rsquo;s &lt;code&gt;cat&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Try double-clicking on a variable in your workspace&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;path&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;internals-functions-variables-types-control-flow&#34;&gt;&#xA;  Internals: Functions, variables, types, control flow&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/matlab-debootstrapping-%231/#internals-functions-variables-types-control-flow&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;sum(a), min(a), max(a), median(a), var(a), prod(a), mean(a), size(a), mode(a), std(a)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;false&lt;/code&gt; is 0. &lt;code&gt;true&lt;/code&gt; is 1. Case sensitive!&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;isvector(a), isempty(a)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Not is a tilde &lt;code&gt;~&lt;/code&gt;, not &lt;code&gt;!&lt;/code&gt; (C-style)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Matrix indexing&lt;/strong&gt;: Column 2: &lt;code&gt;a(:,2)&lt;/code&gt;; Line 2: &lt;code&gt;a(2,:)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;inv(a)&lt;/code&gt; for inverse&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;find (a &amp;lt; 3)&lt;/code&gt; filter&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;2^3 == 8&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Quick matrix generation: &lt;code&gt;zeros, ones, eye, magic, rand&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Math: &lt;code&gt;cos(pi), sin(pi), tan(pi), tanh(pi)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;More math: &lt;code&gt;rad2deg(pi) == 180, deg2rad&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;det(m), rank(m), trace(m), a,b = lu(m)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;if, elseif, else, end&lt;/code&gt;. No parenthesis required.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;for k=1:10; display(&#39;hey&#39;); end&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;while&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;switch b; case 1; display(&#39;one&#39;); end&lt;/code&gt;. No colon after cases.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;symbolic-math-librarytoolbox&#34;&gt;&#xA;  Symbolic math library/toolbox&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/matlab-debootstrapping-%231/#symbolic-math-librarytoolbox&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;syms x y z&lt;/code&gt; shorthand for &lt;code&gt;x = sym(&#39;x&#39;)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;x = sym(&#39;x&#39;, [2 1])&lt;/code&gt; for a symbolic column vector&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;f = x + y^2&lt;/code&gt; symbolic function&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;subs(f, [x y], [1 2])&lt;/code&gt; evaluates the function&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;gradient(f), hessian(f), ccode(f)&lt;/code&gt; magic functions!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fancy-stuff&#34;&gt;&#xA;  Fancy stuff&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/matlab-debootstrapping-%231/#fancy-stuff&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;diary on&lt;/code&gt;, &lt;code&gt;diary off&lt;/code&gt;, &lt;code&gt;help diary&lt;/code&gt; to record terminal sessions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Matlab debootstrapping #1&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>★ i3 window manager
      </title>
      <link>https://perrotta.dev/2014/11/i3-window-manager/</link>
      <pubDate>Mon, 17 Nov 2014 02:35:49 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>bestof</category>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/11/i3-window-manager/</guid>
      <description>&lt;p&gt;♠ I&amp;rsquo;m a huge fan of the &lt;a href=&#34;http://i3wm.org&#34;&gt;i3&lt;/a&gt; tiling window manager. It was the&#xA;first &amp;lsquo;simple&amp;rsquo; window manager I tried, and it is still my favorite one. It eases&#xA;the management of your windows, is optimized for keyboard control, and maximizes&#xA;all the space you have available, thus being a nice option for laptop users. i3&#xA;is packaged for most Linux and BSD distributions. You just have to install it&#xA;through your package manager, then enjoy simplicity and agility. In this post&#xA;I&amp;rsquo;ll share a couple of configurations and tweaks I use for my day-to-day&#xA;computing and programming tasks on i3. First thing: the &lt;strong&gt;statusbar&lt;/strong&gt;. My&#xA;preferred one is &lt;a href=&#34;https://github.com/vivien/i3blocks&#34;&gt;i3blocks&lt;/a&gt;. A statusbar&#xA;should be easy to config and tweak, and should not be bloated. Only the&#xA;information you really care about should be displayed on it. Colors are also&#xA;welcome, as they are a good design practice. Essential blocks include the&#xA;battery of your laptop, the system load, the current date and time, and whether&#xA;you are connected to the web or not. I also like to have a block which displays&#xA;my current network speed (download/upload) and another one for system memory and&#xA;swap. Optional things include volume and the currently playing song. Second&#xA;thing: the background of your desktop. You&amp;rsquo;ll rarely see it, but it is nice to&#xA;have something other than a black background fill color. &lt;strong&gt;feh&lt;/strong&gt; is the best&#xA;wallpaper setter for i3. A simple&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;feh --bg-scale &amp;#39;/home/thiago/Pictures/wallpaper.jpg&amp;#39;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;sets your background image, and creates a &lt;code&gt;$HOME/.fehbg&lt;/code&gt; shell script, which you&#xA;can run to reload your wallpaper later on. Third thing: a i3lock which blurs the&#xA;current view of your desktop is very nice. I like &lt;code&gt;i3lock-wrapper&lt;/code&gt; from&#xA;i3-extras repository by ashinkarov, available on&#xA;&lt;a href=&#34;https://github.com/ashinkarov/i3-extras&#34;&gt;GitHub&lt;/a&gt;. There are other interesting&#xA;things there. &lt;code&gt;j4-make-config&lt;/code&gt; is great for managing i3-themes, in the case you&#xA;dislike the default one. It is available on &lt;a href=&#34;http://www.j4tools.org/&#34;&gt;http://www.j4tools.org/&lt;/a&gt;. Workspace&#xA;management should be simple, so I don&amp;rsquo;t use names for them. Just numbers. When&#xA;you use names, it becomes annoying when a given window is not in the proper&#xA;workspace. While you can force them to go its proper place in your i3 config&#xA;file, this process is more automatic than I need and it keeps getting in my way,&#xA;so I decided it is better not to give names to my workspaces. If you use dual&#xA;monitors, &lt;code&gt;xrandr&lt;/code&gt; is your best friend. I like to have the following aliases in&#xA;my shell rc file:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;alias xrandr-t-hdmi-connect=&amp;#34;xrandr --output LVDS1 --primary --output HDMI1 --auto --left-of LVDS1&amp;#34;&#xA;alias xrandr-t-hdmi-disconnect=&amp;#34;xrandr --output HDMI1 --off&amp;#34;&#xA;alias xrandr-t-hdmi-mirror=&amp;#34;xrandr --output LVDS1 --primary --auto --output HDMI1 --auto --same-as LVDS1&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;arandr&lt;/code&gt; also helps when you need something a bit more advanced. Those set of&#xA;configs makes me happy on i3. There are several more i3 customizations you can&#xA;do, and I&amp;rsquo;ll leave a couple of references here. Other ones were already&#xA;mentioned through the post.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/index.php/I3&#34;&gt;https://wiki.archlinux.org/index.php/I3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://i3wm.org/docs/&#34;&gt;https://i3wm.org/docs/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Having a good window manager, the next step is to achieve a good shell&#xA;environment (urxvt + tmux + zsh). More on that later.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: i3 window manager&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/bestof/&#34;&gt;#bestof&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim shortcuts everywhere
      </title>
      <link>https://perrotta.dev/2014/11/vim-shortcuts-everywhere/</link>
      <pubDate>Thu, 13 Nov 2014 12:03:07 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>vim</category>
      <guid>https://perrotta.dev/2014/11/vim-shortcuts-everywhere/</guid>
      <description>&lt;p&gt;♠ Recently I&amp;rsquo;ve been switching my mind and workflow from emacs keybindings to vim&#xA;ones, so there is nothing better than being able to use those shortcut keys on&#xA;as many applications as possible. Currently ones I&amp;rsquo;m trying include:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;vim itself&lt;/li&gt;&#xA;&lt;li&gt;emacs with evil-mode&lt;/li&gt;&#xA;&lt;li&gt;firefox with vimperator (there&amp;rsquo;s an Arch package for it)&lt;/li&gt;&#xA;&lt;li&gt;chromium with vimium&lt;/li&gt;&#xA;&lt;li&gt;luakit (KISS web browsing)&lt;/li&gt;&#xA;&lt;li&gt;tmux&lt;/li&gt;&#xA;&lt;li&gt;i3 window manager&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Edit: forgot this one:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;zathura (PDF/PS/DJVU viewer)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;And I&amp;rsquo;m pretty sure there is plenty more to find out.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Vim shortcuts everywhere&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/vim/&#34;&gt;#vim&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>btrfs trouble, trouble, and troubleshooting
      </title>
      <link>https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/</link>
      <pubDate>Thu, 06 Nov 2014 00:01:43 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/</guid>
      <description>&lt;p&gt;♠ The last weekend I lost more than &lt;strong&gt;8 hours&lt;/strong&gt; trying to recover from a serious&#xA;bug that reached the btrfs filesystem in recent days. This bug was relatively&#xA;specific: it would only affect Linux users running a specific kernel version&#xA;(3.17.1, if I recall correctly), a specific version of the btrfs-progs package,&#xA;&lt;strong&gt;and&lt;/strong&gt; systems with read-only snapshots — yeah, I&amp;rsquo;ve been using the snapshot&#xA;feature of the btrfs filesystem extensively.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-symptom&#34;&gt;&#xA;  First Symptom&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/#first-symptom&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;After a &lt;code&gt;pacman -Syu&lt;/code&gt;, my entire filesystem became read-only. I couldn&amp;rsquo;t save&#xA;anything. So I rebooted it.&lt;/p&gt;&#xA;&lt;p&gt;Then I found myself directly in the initramfs rescue prompt. I&amp;rsquo;ve always had&#xA;nightmares with this prompt. I wouldn&amp;rsquo;t have access to all my files until I got&#xA;rid of it.&lt;/p&gt;&#xA;&lt;p&gt;A few Google searches alerted me that this was a &lt;strong&gt;severe/critical&lt;/strong&gt; bug.&#xA;However, fortunately (or unfortunately&amp;hellip;), other beta and enthusiastic people&#xA;also had it. The Arch Linux bug tracker and its discussion forums contained&#xA;mentions about it. They served as an initial &amp;ldquo;what am I supposed to do now,&#xA;besides screaming?&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-recovery-process&#34;&gt;&#xA;  The Recovery Process&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/#the-recovery-process&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I had backups, but they were a few weeks old. During this process, I fell in&#xA;love with the &lt;strong&gt;grml Linux distribution&lt;/strong&gt;. It is amazing for recovery processes&#xA;and inspired the creators of Arch (the other inspiration is CRUX, which I still&#xA;haven&amp;rsquo;t tried). It&amp;rsquo;s based on Debian/testing.&lt;/p&gt;&#xA;&lt;p&gt;From grml, I logged into Hexchat (an IRC client) in the #btrfs channel, and&#xA;within less than five minutes I got help and orientation from a guy who had the&#xA;same problems. He told me what I was supposed to do, and it really worked! Now I&#xA;have my system back.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-took-8-hours&#34;&gt;&#xA;  Why It Took 8+ Hours&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/#why-it-took-8-hours&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;It wasn&amp;rsquo;t that straightforward. Mainly because I was downloading several distros&#xA;and dd&amp;rsquo;ing them onto USB Flash Drives from a grml virtual machine inside the&#xA;Windows 8 desktop from my parents&amp;rsquo; house. I did this several times until I&#xA;realized (well, the #btrfs guy realized) that I needed a recent Linux kernel to&#xA;do the recovery process.&lt;/p&gt;&#xA;&lt;p&gt;What Linux distribution has a recent kernel? Arch, of course. The actual&#xA;recovery process was done inside an Arch live medium.&lt;/p&gt;&#xA;&lt;p&gt;Grml taught me several things to expect from a recovery distribution designed&#xA;for system administrators. Unfortunately, its kernel was relatively old at the&#xA;time (it&amp;rsquo;s based on Debian, so I can&amp;rsquo;t blame it).&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-takeaway&#34;&gt;&#xA;  The Takeaway&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/#the-takeaway&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Although losing several hours, I:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Discovered a nice Linux distribution&lt;/li&gt;&#xA;&lt;li&gt;Was convinced (again) that IRC is still awesome&lt;/li&gt;&#xA;&lt;li&gt;Could post on the Arch forums confirming the solution I used&lt;/li&gt;&#xA;&lt;li&gt;Had fun in the process &lt;strong&gt;(YES. I love this sysadmin thing.)&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Moral of the story: BACKUP YOUR SYSTEMS!!!! And sleep well.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;I&amp;rsquo;m now using ext4 on my root partition and btrfs on my home partition. This&#xA;means I can hibernate my system now — I missed that for a while.&lt;/p&gt;&#xA;&lt;h2 id=&#34;references&#34;&gt;&#xA;  References&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/11/btrfs-trouble-trouble-and-troubleshooting/#references&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?id=188900&#34;&gt;https://bbs.archlinux.org/viewtopic.php?id=188900&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://bugs.archlinux.org/task/42563&#34;&gt;https://bugs.archlinux.org/task/42563&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: btrfs trouble, trouble, and troubleshooting&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>My last *nix setup
      </title>
      <link>https://perrotta.dev/2014/10/my-last-nix-setup/</link>
      <pubDate>Tue, 21 Oct 2014 12:19:04 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/10/my-last-nix-setup/</guid>
      <description>&lt;p&gt;♠ I&amp;rsquo;ve just completed my objective with this blog. Should I start a new one? After&#xA;looping through a BSD distro and dozens of Linux distributions, I&amp;rsquo;ve finally&#xA;decided to settle down and stay away from new test drives. This time should be&#xA;definitive—I really do not intend to replace my system anymore. The point is now&#xA;I have a stable configuration and a few preferences that I would like to share&#xA;with you.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-setup&#34;&gt;&#xA;  The Setup&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/my-last-nix-setup/#the-setup&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t intend this to take too long, so I&amp;rsquo;ll be brief:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Filesystem&lt;/strong&gt;: btrfs instead of ext4. Snapshots are awesome, and I also can&#xA;benefit from its SSD and compression performance.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Partition scheme&lt;/strong&gt;: split your root (/) and home (/home) partitions. Always.&#xA;Unless you&amp;rsquo;re in a hurry, or unless you do not intend to create a non-root&#xA;user. Since I&amp;rsquo;m using btrfs, I also split my 300-500MB ext4 /boot partition.&#xA;My preferred size for root is (30 ± 15)GB. /home takes up the rest. No LVM.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;UEFI&lt;/strong&gt;: I don&amp;rsquo;t use it now, but I would probably do that the next time I buy&#xA;a new computer. Just take care of your ESP partition and disable secure boot.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bootloader&lt;/strong&gt;: syslinux! GRUB2 is way too automatic. Syslinux is simpler and&#xA;faster. If you&amp;rsquo;re in a hurry, stick to GRUB2.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux Distro&lt;/strong&gt;: Arch Linux. Period. If you&amp;rsquo;re in a hurry, use a derivative&#xA;of Arch. If you&amp;rsquo;re even more in a hurry, use a derivative of Debian or Ubuntu.&#xA;Linux Mint is my preferred choice, but Xubuntu or Lubuntu are good lightweight&#xA;options.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BSD Distro&lt;/strong&gt;: FreeBSD. I love its documentation and traditional Unix&#xA;feeling. But it was the only BSD distro I&amp;rsquo;ve tested up to today.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiling window manager&lt;/strong&gt;: i3. KISS, KISS, KISS. And elegant. With i3blocks,&#xA;please.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Stacked window manager&lt;/strong&gt;: Cinnamon.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Full-featured file manager&lt;/strong&gt;: dolphin (or nemo, but only if you are using&#xA;Cinnamon).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lightweight file manager&lt;/strong&gt;: thunar.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Terminal/text editor&lt;/strong&gt;: vim.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;GUI text editor&lt;/strong&gt;: emacs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Shell&lt;/strong&gt;: zsh. With grml configurations, auto-completion and syntax&#xA;highlighting. It&amp;rsquo;s perfect. Oh-my-zsh is a common alternative.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Terminal emulator&lt;/strong&gt;: urxvt (rxvt-unicode). With tabs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Monospaced bitmap font&lt;/strong&gt;: terminus.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Monospaced scalable font&lt;/strong&gt;: Source Code Pro (from Adobe).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;System font&lt;/strong&gt;: either Bitter, Cantarell, Ubuntu or Droid Sans.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Plug-in manager for emacs&lt;/strong&gt;: el-get.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Plug-in manager for vim&lt;/strong&gt;: pathogen.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Display manager&lt;/strong&gt;: lightdm.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;&#xA;  Conclusion&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/my-last-nix-setup/#conclusion&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is the best Linux/BSD setup I&amp;rsquo;ve ever dreamed of, and I&amp;rsquo;m really happy. The&#xA;original purpose of this blog has been achieved. Through 2 years, what I most&#xA;posted here were concerns about Linux. The purpose was to share my own ignorance&#xA;and growing maturity towards this awesome subject area.&lt;/p&gt;&#xA;&lt;p&gt;Now my focus turns to &lt;strong&gt;Programming languages&lt;/strong&gt;. Today I feel the same&#xA;insecurity towards programming languages that I used to feel two years ago about&#xA;Linux. I want to be very good at a few programming languages, and at least know&#xA;a couple of them (maybe 5-10). I want to be part of a programming language&#xA;community and evangelize programming.&lt;/p&gt;&#xA;&lt;p&gt;This blog will still exist. I will probably keep posting here with the same rate&#xA;I post nowadays, but I will probably talk less about Linux and more about other&#xA;things. However, when I get into programming deeply, I might create a new space&#xA;for that purpose.&lt;/p&gt;&#xA;&lt;p&gt;If you are still reading here, thank you. I really appreciate the support of the&#xA;people that express interest in this blog. I also hope that others could learn&#xA;something during all this time.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: My last *nix setup&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Emacs to Vim – Chapter #2 – Philosophy
      </title>
      <link>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/</link>
      <pubDate>Sat, 18 Oct 2014 23:47:21 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>vim</category>
      <guid>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/</guid>
      <description>&lt;p&gt;♠ Previous post. Oh man, up to this point I am slightly disoriented about emacs shortcuts. It has been probably one month since I am using vim almost exclusively. I just use emacs to blog here and to use orgmode. Yes, I still know so many of Emacs shortcuts and keybindings that I can even recite them to you while I am dream. However, I am not practicing them so much as before, so they will probably fade away some time.&lt;/p&gt;&#xA;&lt;p&gt;But I have used emacs for two years, so I won&amp;rsquo;t forget the basic commands, terminologies, functions and shortcuts, so no problem at all. Okay, so I&amp;rsquo;ve just finished reading Practical Vim. I super encourage you to buy the book and support its author, because this was (is!) a fantastic book! I also thanks Jason Ryan, forums and wiki admin from the Arch Linux community, for recommending the book. It is one of the reasons that made me commit myself to learn (and stick to) vim.&lt;/p&gt;&#xA;&lt;p&gt;Now, in this post I&amp;rsquo;ll talk a little about the differences between emacs and vim. This is supposed to be an informal post, with information coming out of my head on-the-fly, so don&amp;rsquo;t expect much consistency or formality here. I&amp;rsquo;ll list a couple of topics/categories and tell you what text editor I most like in each of them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ide-vs-text-editor&#34;&gt;&#xA;  IDE vs text editor&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#ide-vs-text-editor&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Vim is not an IDE. I&amp;rsquo;ll repeat that. &lt;strong&gt;Vim is not an IDE&lt;/strong&gt;. Vim is just a text editor. Don&amp;rsquo;t even try to make it a IDE. If you want a solid text editor to behave like an IDE, use and stick to Emacs. Emacs is not &lt;strong&gt;just&lt;/strong&gt; a text editor; it is a &lt;strong&gt;full-featured&lt;/strong&gt; text editor. Theoretically, it might be anything you want. There are no limits about the customizations you can do to extend emacs. The limit is the sky (actually, the memory of your current hardware).&lt;/p&gt;&#xA;&lt;p&gt;I prefer &lt;strong&gt;vim&lt;/strong&gt; here. For two years I tried to make emacs the perfect IDE. You can achieve good results with it (yeah, &lt;strong&gt;good&lt;/strong&gt; ones!), however, it is best when you keep it simple. I like this aspect in vim, and now I understand why almost everyone of the Arch Linux community that I know prefer vim rather than emacs.&lt;/p&gt;&#xA;&lt;p&gt;Vim is KISS. It is kiss in text editing. For example, vim defaults are very good; I can survive without a .vimrc. However, emacs defaults are terrible (from my point of view, and considering that I know it can be better). I simply cannot use emacs for much time without my .emacs file.&lt;/p&gt;&#xA;&lt;h2 id=&#34;shortcuts--keystrokes--chords--modal-text-editor&#34;&gt;&#xA;  Shortcuts / keystrokes / chords / modal text editor&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#shortcuts--keystrokes--chords--modal-text-editor&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Emacs shortcuts mostly involve pressing &lt;code&gt;&amp;lt;Control&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;Meta&amp;gt;&lt;/code&gt;, plus a letter or number key. Sometimes you have to do this (which I&amp;rsquo;ll call a &lt;strong&gt;chord&lt;/strong&gt;) two or three times. For example, to quit emacs you press &lt;code&gt;&amp;lt;C-x C-c&amp;gt;&lt;/code&gt;. Vim shortcuts usually involve only a few chars, but you have to switch to normal mode to activate them (most of the time, at least).&lt;/p&gt;&#xA;&lt;p&gt;Now, which is better? That depends. From my point of view, emacs win in respect to speed. I usually issue a command faster in emacs than in vim. However, vim commands are better to navigate through text than emacs ones, because they are well integrated.&lt;/p&gt;&#xA;&lt;p&gt;Furthermore, an extensive use of Emacs can lead to RSI (repetitive strain injury). Even Richard Stallman had it once. Vim commands are slightly less aggressive (in respect to the keyboard), so the health of your hands and fingers will benefit from them.&lt;/p&gt;&#xA;&lt;p&gt;Some people also recommend the mapping of the caps lock key to &lt;code&gt;&amp;lt;Esc&amp;gt;&lt;/code&gt; in vim, or to &lt;code&gt;&amp;lt;Control&amp;gt;&lt;/code&gt; in Emacs. They claim that the caps lock key is not much used, so it is more useful when mapped to &lt;code&gt;&amp;lt;Esc&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;Ctrl&amp;gt;&lt;/code&gt;. Well, I personally never accustomed myself to this convention. It has a natural problem of compatibility: every new computer you use won&amp;rsquo;t be configured this way. So I don&amp;rsquo;t find this very portable, and I don&amp;rsquo;t want to bring a .Xmodmap file everywhere.&lt;/p&gt;&#xA;&lt;p&gt;So, who wins here? &lt;strong&gt;Emacs&lt;/strong&gt;. However, remember what I&amp;rsquo;ve said: Emacs is faster, but it will hurt your fingers if you use it for prolonged hours.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-line&#34;&gt;&#xA;  Command-line&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#command-line&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Emacs&lt;/strong&gt; command line wins. Sorry vim, that&amp;rsquo;s it. Short and clear. It is even more powerful with smex, ido and icomplete. At this point I don&amp;rsquo;t know any enhancement for the vim command line, but I have to say it is pretty good also. For now, I&amp;rsquo;m only using &lt;code&gt;wildmenu&lt;/code&gt;. But emacs wins, period.&lt;/p&gt;&#xA;&lt;h2 id=&#34;movement-of-the-cursor-through-a-buffer&#34;&gt;&#xA;  Movement of the cursor through a buffer&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#movement-of-the-cursor-through-a-buffer&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vim&lt;/strong&gt; is better. Period. Like I&amp;rsquo;ve said before, it is very well integrated in this respect. You can switch your cursor to almost anywhere in your buffer with just a couple of keystrokes.&lt;/p&gt;&#xA;&lt;p&gt;Now, in Emacs I am usually mechanical, and keep repeating myself. For example, if I want to go a few lines above, I&amp;rsquo;ll probably hit &lt;code&gt;&amp;lt;C-u C-p&amp;gt;&lt;/code&gt; a couple of times. In vim, currently I press &lt;code&gt;k&lt;/code&gt; a few times too, but this is due to lack of practice. There are faster ways of moving in vim than I am used to.&lt;/p&gt;&#xA;&lt;h2 id=&#34;buffer-management&#34;&gt;&#xA;  Buffer management&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#buffer-management&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The two editors are very decent in this regard. Since I am more used to Emacs, nowadays I find easier to manage emacs buffers; however, the vim way of navigating through them is pretty decent, so I won&amp;rsquo;t declare a winner in this category.&lt;/p&gt;&#xA;&lt;h2 id=&#34;gui-graphical-user-interface&#34;&gt;&#xA;  GUI (graphical user interface)&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#gui-graphical-user-interface&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;It is almost impossible to use emacs for a couple of minutes if you are not using its X version. Its console version is just awful. In contrast, vim is perfect on the console, but I find gvim pretty bad (well, at least, I feel like I am editing the console when I used it: no relevant differences).&lt;/p&gt;&#xA;&lt;p&gt;So the &lt;strong&gt;emacs&lt;/strong&gt; GUI is better. It is probably even better on OS X, however I cannot confirm that right now.&lt;/p&gt;&#xA;&lt;h2 id=&#34;books&#34;&gt;&#xA;  Books&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#books&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Emacs books will usually teach you emacs lisp. It is very hard to learn about emacs without learning what is actually happening under its hood. When you realize that everything you do in emacs is just Emacs Lisp, you really find that very beautiful. A functional language being used for the greater good.&lt;/p&gt;&#xA;&lt;p&gt;But this is also a problem: if you don&amp;rsquo;t care about elisp, you will probably get bored. Fast. Very fast.&lt;/p&gt;&#xA;&lt;p&gt;Now, vim books usually teach you how vim commands are integrated with themselves and with vim itself. At least the books I&amp;rsquo;ve read up to today. This is better on a practical basis, when you want to quickly become good with it (you see, I already feel fluent in vim with just one month usage – I felt fluent in emacs only about a couple of months, and part of this reason was bad out-of-the-box defaults).&lt;/p&gt;&#xA;&lt;p&gt;The point is: you don&amp;rsquo;t need to know about vimscript to actually get work done on vim. Therefore, &lt;strong&gt;vim&lt;/strong&gt; books are better in respect to being pragmatic; buuuuut &lt;strong&gt;emacs&lt;/strong&gt; books are better regarding teaching the inner workings of the editor, and how to program and extend it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;out-of-the-box-better-defaults&#34;&gt;&#xA;  Out-of-the-box, better defaults&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#out-of-the-box-better-defaults&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vim. vim. vim.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;ubiquity&#34;&gt;&#xA;  Ubiquity&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#ubiquity&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vim. vim. vim.&lt;/strong&gt; And vi. However, &amp;ldquo;micro emacses&amp;rdquo; such as mg (the program that Linus Torvalds uses) and zile are very good. But they are very basic, they are just micro text editors with emacs keystrokes; not much features.&lt;/p&gt;&#xA;&lt;h2 id=&#34;one-line-answers&#34;&gt;&#xA;  One-line answers&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#one-line-answers&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;color-themes--colorschemes&#34;&gt;&#xA;  Color themes / colorschemes&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#color-themes--colorschemes&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Emacs!&lt;/p&gt;&#xA;&lt;h3 id=&#34;plug-ins-and-extensibility&#34;&gt;&#xA;  Plug-ins and extensibility&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#plug-ins-and-extensibility&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Emacs is more extensible, but vim plug-ins give you less headache.&lt;/p&gt;&#xA;&lt;h3 id=&#34;communities&#34;&gt;&#xA;  Communities&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%232-philosophy/#communities&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;There are more people using vim than emacs, but the emacs community is still good today. …and my creativity ran away now. Which additional topics do you believe that vim or emacs is better than its counterpart in? Comment.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: From Emacs to Vim – Chapter #2 – Philosophy&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/vim/&#34;&gt;#vim&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How do I blog with org2blog?
      </title>
      <link>https://perrotta.dev/2014/10/how-do-i-blog-with-org2blog/</link>
      <pubDate>Sat, 11 Oct 2014 14:26:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>meta</category>
      <guid>https://perrotta.dev/2014/10/how-do-i-blog-with-org2blog/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;TL;DR&lt;/strong&gt;: Video link: &lt;a href=&#34;https://vimeo.com/108656001&#34;&gt;Vimeo&lt;/a&gt;. This is my blogging&#xA;workflow with &lt;strong&gt;Wordpress&lt;/strong&gt;, &lt;strong&gt;Emacs&lt;/strong&gt; and &lt;strong&gt;org2blog&lt;/strong&gt;. Example markup:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;* **bold**&#xA;* _italics_&#xA;* `code`&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Code:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;a-new-section&#34;&gt;&#xA;  A new section&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/how-do-i-blog-with-org2blog/#a-new-section&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Text in the new section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;another-section&#34;&gt;&#xA;  Another section&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/how-do-i-blog-with-org2blog/#another-section&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Text in another section. Those are usually the formatting and commands I most&#xA;use. There are others, of course, but this is usually a fast (and comfortable!)&#xA;way of writing. You should also notice that Emacs automatically break lines for&#xA;me! Now, let&amp;rsquo;s post this post. I&amp;rsquo;ll post the video link soon.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: How do I blog with org2blog?&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/meta/&#34;&gt;#meta&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Living on Ubuntu - Instance #2 - Creating a new package
      </title>
      <link>https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/</link>
      <pubDate>Sat, 11 Oct 2014 14:14:52 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/</guid>
      <description>&lt;p&gt;♠ These are &lt;strong&gt;notes&lt;/strong&gt; from a few weeks ago when I created a sample package for&#xA;Ubuntu. This article is written both as a guide and a timeline. There is no&#xA;explicit tutorial here, so get your feet wet by yourself, and make sure to&#xA;follow the references. &lt;strong&gt;Edit&lt;/strong&gt;: enumeration became a mess here. Sorry for that.&lt;/p&gt;&#xA;&lt;h2 id=&#34;initial-setup&#34;&gt;&#xA;  Initial setup&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#initial-setup&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Introduction; Packaging new software for Ubuntu; Debian Packaging Tutorial&lt;/li&gt;&#xA;&lt;li&gt;Get a couple of packages for packaging (duh):&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo aptitude install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file packaging-dev&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Make sure you have a PGP key.&lt;/li&gt;&#xA;&lt;li&gt;Send your PGP key to Ubuntu servers.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;gpg --send-keys --keyserver keyserver.ubuntu.com &amp;lt;KEY ID&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;5&#34;&gt;&#xA;&lt;li&gt;Make sure you have a SSH key.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;building-environment&#34;&gt;&#xA;  Building environment&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#building-environment&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;Create a clean build environment:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;pbuilder-dist &amp;lt;release&amp;gt; create&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;At the time of this post, I used &amp;rsquo;trusty&amp;rsquo; as the release name.&lt;/p&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;Make sure you have a Launchpad account.&lt;/li&gt;&#xA;&lt;li&gt;Update your Launchpad information &lt;strong&gt;and&lt;/strong&gt; upload both your SSH and your GPG key into there.&lt;/li&gt;&#xA;&lt;li&gt;Identify yourself with bzr.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;bzr whoami &amp;#34;Bob Dobbs [subgenius@example.com](mailto:subgenius%40example.com)&amp;#34;&#xA;bzr launchpad-login subgenius&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;creating-the-package&#34;&gt;&#xA;  Creating the package&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#creating-the-package&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol start=&#34;10&#34;&gt;&#xA;&lt;li&gt;Start a new package, and choose its type to create a new template.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;bzr dh-make hello 2.7 hello-2.7.tar.gz&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;11&#34;&gt;&#xA;&lt;li&gt;Explore and edit the files of your new template. In particular, see the&#xA;&lt;code&gt;debian&lt;/code&gt; directory.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;bzr add&lt;/code&gt; and &lt;code&gt;commit&lt;/code&gt; your changes. This is a DVCS such as &lt;code&gt;git&lt;/code&gt;, so this&#xA;should feel familiar.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;building-and-testing&#34;&gt;&#xA;  Building and testing&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#building-and-testing&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol start=&#34;13&#34;&gt;&#xA;&lt;li&gt;Building the package:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;bzr builddeb -- -us -uc&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The previous flags tell the system not to use GPG. &lt;code&gt;-nc&lt;/code&gt; might also be useful:&#xA;it tells the system not to start from scratch.&lt;/p&gt;&#xA;&lt;ol start=&#34;14&#34;&gt;&#xA;&lt;li&gt;To view the contents of a package:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;lesspipe *.deb&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol start=&#34;15&#34;&gt;&#xA;&lt;li&gt;To install / remove your new built package:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo dpkg -i *.deb # attention to the architecture of your package!&#xA;sudo dpkg -r &amp;lt;name-of-your-package&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;An alternative is to invoke &lt;code&gt;sudo debi&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ol start=&#34;16&#34;&gt;&#xA;&lt;li&gt;Check for errors.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;lintian *.dsc *.deb&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;optional-testing-with-chroot&#34;&gt;&#xA;  Optional testing with chroot&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#optional-testing-with-chroot&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol start=&#34;17&#34;&gt;&#xA;&lt;li&gt;Next (optional; just to test the package in the chroot you have set up before, with &lt;code&gt;pbuilder&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;bzr builddeb -S&#xA;cd ../build-area&#xA;pbuilder-dist trusty build *ubuntu*.dsc&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;upload&#34;&gt;&#xA;  Upload&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/living-on-ubuntu-instance-%232-creating-a-new-package/#upload&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol start=&#34;18&#34;&gt;&#xA;&lt;li&gt;Upload your package to Launchpad:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;dput ppa:&amp;lt;your-launchpad-username&amp;gt;/&amp;lt;your-ppa-name&amp;gt; *.changes&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you wanted to create a pull request instead:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;bzr push lp:~&amp;lt;launchpad-username&amp;gt;/&amp;#43;junk/hello-package&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And that&amp;rsquo;s it! Then just share your PPA with your friends and clients. I hope&#xA;this guide could serve to you as a quick reference of creating a new Ubuntu (or&#xA;even Debian) package.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Living on Ubuntu - Instance #2 - Creating a new package&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Everyday Podcasting - #2
      </title>
      <link>https://perrotta.dev/2014/10/everyday-podcasting-%232/</link>
      <pubDate>Fri, 10 Oct 2014 21:24:10 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/2014/10/everyday-podcasting-%232/</guid>
      <description>&lt;p&gt;♠ Continuation of &lt;a href=&#34;https://perrotta.dev/2014/09/everyday-podcasting-%231/&#34;&gt;this post&lt;/a&gt;. Nothing fancy, really. Just to say that &lt;a href=&#34;https://www.badvoltage.org/&#34;&gt;Bad&#xA;Voltage&lt;/a&gt; is the most awesome podcast in the planet.&#xA;Period. And goodbye.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Everyday Podcasting - #2&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compiling / Installing pacman on Ubuntu
      </title>
      <link>https://perrotta.dev/2014/10/compiling-/-installing-pacman-on-ubuntu/</link>
      <pubDate>Thu, 09 Oct 2014 23:20:52 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/10/compiling-/-installing-pacman-on-ubuntu/</guid>
      <description>&lt;p&gt;♠ No, this is not the classic game. Here are logs.&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;git clone git://projects.archlinux.org/pacman.git&#xA;cd pacman/&#xA;./autogen.sh&#xA;./configure LIBS=&amp;#34;-lpthread -larchive&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Attention here! &lt;code&gt;./configure&lt;/code&gt; without this parameter didn&amp;rsquo;t work on my machine.&#xA;The error was: &lt;code&gt;DSO missing from command line&lt;/code&gt;.&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;make&#xA;sudo checkinstall&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Attention here! You could simply (and näively) do a &lt;code&gt;sudo make install&lt;/code&gt;,&#xA;however, this wouldn&amp;rsquo;t create a &lt;code&gt;.deb&lt;/code&gt; package. Since we have good tools, we&#xA;should use them!&lt;/p&gt;&#xA;&lt;p&gt;Now, you can remove pacman anytime you want with &lt;code&gt;dpkg -r pacman&lt;/code&gt;. No need for&#xA;&lt;code&gt;make uninstall&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Why this post? Because of &lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?id=187942&#34;&gt;this forum&#xA;thread&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Compiling / Installing pacman on Ubuntu&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Emacs to Vim - Chapter #1 - Vim plug-ins
      </title>
      <link>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%231-vim-plug-ins/</link>
      <pubDate>Mon, 06 Oct 2014 01:50:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>vim</category>
      <guid>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%231-vim-plug-ins/</guid>
      <description>&lt;p&gt;♠ This is the continuation of the first post. As you get the feeling and overview&#xA;of &lt;strong&gt;vim&lt;/strong&gt;, the first thing you&amp;rsquo;ll probably miss as a&#xA;probable-soon-to-be-emacs-orphan (actually, not really, I&amp;rsquo;ve already told you&#xA;I&amp;rsquo;m not going to abandon emacs – for example, this post is being written within&#xA;it, with org2blog – (too many level of parenthesis, please help me!!)) are your&#xA;customizations and custom plug-ins and extensions. A couple of google searches&#xA;would bring me to projects like janus and vim bootstrap. Those look nice and I&#xA;would probably appreciate them if I were a beginner. However, as a super user –&#xA;if you read this statement as bragging, then you are probably not understanding&#xA;the purpose of this mini series –, I like to be in control of the&#xA;personalization and settings of my text editor. Right? So, I&amp;rsquo;ve chosen to&#xA;control my own plug-ins. In other words: bottom-up instead of top-down. Now,&#xA;the two state-of-the-art plug-in managers you&amp;rsquo;ll find out there to manage&#xA;your vimscripts are vundle and pathogen. I began using Vundle, but after a&#xA;few hours I realized that pathogen was KISS and superior. Period. Not that&#xA;Vundle is bad. It looks (works) okay too; in this case it was simply a&#xA;matter of personal choice. The way Vundle works is as follows: your &lt;code&gt;.vimrc&lt;/code&gt;&#xA;will be populated with several lines such as:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-vim&#34;&gt;Plugin &amp;#39;tpope/vim-surround&amp;#39;&#xA;Plugin &amp;#39;username-from-github/repository-name&amp;#39;&#xA;Plugin &amp;#39;matchit&amp;#39;&#xA;Plugin &amp;#39;vimscript-name-from-vim-dot-org&amp;#39;&#xA;Plugin &amp;#39;git://www.absolute-path-to-my-site-here.com/repository-name.git&amp;#39;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Then, you just have to install those plug-ins with a simple command:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-vim&#34;&gt;:Plugin Install&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Done. It is simple, yes, but I liked more the approach of &lt;strong&gt;pathogen&lt;/strong&gt;: you maintain a git repository with your plug-ins. Each new plug-in is a git submodule within your repository. Yay, this means it is super-easy to set up and share your plug-ins with other people. This is exactly what I&amp;rsquo;ve done: you can peek out my vim repository here. Now, there is one super good advantage here over emacs. The cost of adding a new plug-in is practically zero. This has two meanings, actually:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;vim start-up time is ridiculously fast. Even with a dozen plug-ins, I still&#xA;don&amp;rsquo;t notice it. With emacs, if I don&amp;rsquo;t run it as a daemon, it is a&#xA;nightmare: a couple of seconds (yeah, a couple of seconds is really a&#xA;nightmare, not kidding) of start-up time.&lt;/li&gt;&#xA;&lt;li&gt;I don&amp;rsquo;t even have to touch my &lt;code&gt;.vimrc&lt;/code&gt; to add a new plug-in. I just have to&#xA;clone a new repository into my &lt;code&gt;$HOME/.vim/bundle&lt;/code&gt; folder. Period. With&#xA;emacs, I have to continuously poke my &lt;code&gt;.emacs&lt;/code&gt; file to add, remove and&#xA;constantly tweak my extensions. Yeah, I&amp;rsquo;ve been doing that for a while, and&#xA;it &lt;strong&gt;does&lt;/strong&gt; provoke a lot of stress and anxiety. You already have to tolerate&#xA;a little bit of RSI with emacs, so you don&amp;rsquo;t need more problems.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Now, don&amp;rsquo;t undermine my (our) dear Emacs! Emacs Lisp will (and will always be)&#xA;superior to vimscript. I have no doubt of this fact and therefore I won&amp;rsquo;t even&#xA;discuss it here. Emacs is much more extensible than vim. Okay, then what? You&#xA;have to find a few plug-ins, right? In Emacs, most plug-ins with decent quality&#xA;you might find will be available either on MELPA or Marmalade and, of course, on&#xA;GitHub too. In vim, it looks like the home of scripts is the vim website itself&#xA;((1) and (2)) &lt;strong&gt;and&lt;/strong&gt; GitHub. I couldn&amp;rsquo;t find a central repo or website hosting&#xA;the majority of its plug-ins, as with emacs. However, there is vim-awesome,&#xA;which indexes existing ones (this concept is like the ruby toolbox, godoc.org&#xA;and Emacs paradox extension by Bruce Connor. I won&amp;rsquo;t discuss the plug-ins I&amp;rsquo;m&#xA;using right now, however here is a snapshot of my &lt;code&gt;$HOME/.vim/bundle&lt;/code&gt; directory&#xA;at the time of this post (19 plug-ins, yay):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You Complete Me&lt;/li&gt;&#xA;&lt;li&gt;ack.vim&lt;/li&gt;&#xA;&lt;li&gt;ag.vim&lt;/li&gt;&#xA;&lt;li&gt;ctrlp.vim&lt;/li&gt;&#xA;&lt;li&gt;delimit Mate&lt;/li&gt;&#xA;&lt;li&gt;nerdtree&lt;/li&gt;&#xA;&lt;li&gt;syntastic&lt;/li&gt;&#xA;&lt;li&gt;tagbar&lt;/li&gt;&#xA;&lt;li&gt;vim-airline&lt;/li&gt;&#xA;&lt;li&gt;vim-bufferline&lt;/li&gt;&#xA;&lt;li&gt;vim-commentary&lt;/li&gt;&#xA;&lt;li&gt;vim-easytags&lt;/li&gt;&#xA;&lt;li&gt;vim-fugitive&lt;/li&gt;&#xA;&lt;li&gt;vim-gitgutter&lt;/li&gt;&#xA;&lt;li&gt;vim-markdown&lt;/li&gt;&#xA;&lt;li&gt;vim-misc&lt;/li&gt;&#xA;&lt;li&gt;vim-repeat&lt;/li&gt;&#xA;&lt;li&gt;vim-sensible&lt;/li&gt;&#xA;&lt;li&gt;vim-surround&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Most of those have an emacs equivalent. Okay, I&amp;rsquo;m stopping here for now, until the next post :) Update: next post.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: From Emacs to Vim - Chapter #1 - Vim plug-ins&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/vim/&#34;&gt;#vim&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Emacs to Vim - Chapter #0
      </title>
      <link>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%230/</link>
      <pubDate>Sat, 04 Oct 2014 15:55:56 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>vim</category>
      <guid>https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%230/</guid>
      <description>&lt;p&gt;♠ Hi there. This will probably become a new mini series. I begin by quoting&#xA;Vanessa Da Mata:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;É só isso&#xA;Não tem mais jeito&#xA;Acabou, boa sorte&#xA;Não tenho o que dizer&#xA;São só palavras&#xA;E o que eu sinto&#xA;Não mudará&#xA;Tudo o que quer me dar&#xA;É demais&#xA;É pesado&#xA;Não há paz&#xA;Tudo o que quer de mim&#xA;Irreais&#xA;Expectativas&#xA;Desleais&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s it&#xA;There&amp;rsquo;s no way&#xA;It&amp;rsquo;s over, good luck&#xA;I&amp;rsquo;ve nothing left to say&#xA;It&amp;rsquo;s only words&#xA;And what I feel&#xA;Won&amp;rsquo;t change&lt;/p&gt;&#xA;&lt;p&gt;[&amp;hellip;]&lt;/p&gt;&#xA;&lt;p&gt;Tudo o que quer me dar / Everything you want to give me&#xA;É demais / It&amp;rsquo;s too much&#xA;É pesado / It&amp;rsquo;s heavy&#xA;Não há paz / There&amp;rsquo;s no peace&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Upstream URL with lyrics. Now, a little bit of context. Two or three weeks ago I&#xA;began learning &lt;strong&gt;vim&lt;/strong&gt;. This is due to a lot of reasons: one of them is that vim&#xA;is actively used by a lot of members of the &lt;strong&gt;Arch Linux community&lt;/strong&gt;, and I&#xA;usually am influenced about their tastes — what doesn&amp;rsquo;t mean that I will comply&#xA;with everything, it is just a matter of trying new things.&lt;/p&gt;&#xA;&lt;p&gt;Another reason is that I am actively learning new &lt;strong&gt;open source tools&lt;/strong&gt;, and vim&#xA;is definitely one of the most widespread and &lt;strong&gt;ubiquitous&lt;/strong&gt; ones. I don&amp;rsquo;t need to&#xA;provide statistical sources for that, do you agree? &lt;strong&gt;Vi&lt;/strong&gt; is present everywhere,&#xA;even on my Android. (Now, almost nobody uses vi anymore, however vi and vim are&#xA;too much similar that for simple and rapid tasks usually annoying differences&#xA;won&amp;rsquo;t even be noticed).&lt;/p&gt;&#xA;&lt;p&gt;Another reason is that I never became 100% satisfied with &lt;strong&gt;Emacs&lt;/strong&gt;. Hey, I like&#xA;emacs very much, don&amp;rsquo;t get me wrong, however there were always some piece of&#xA;completeness missing in it, so this puzzle never got finished. In particular,&#xA;orgmode (an emacs task-manager-note-taker-and-everything mode) is a tool that I&#xA;felt in loved with, and thanks to it I won&amp;rsquo;t completely remove emacs from my&#xA;system; you should notice that orgmode is something very specific to emacs.&lt;/p&gt;&#xA;&lt;p&gt;Although there are some tentatives on vim implementations, as far as I read, they&#xA;are not very good (at least not compared to a vanilla, emacs orgmode). Okay,&#xA;those are sufficient for now, but there are more reasons that will reveal&#xA;themselves along the next posts.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sslimgs.xkcd.com/comics/real_programmers.png&#34; alt=&#34;Real Programmers Comic&#34;&#xA;  loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Now, we should go back to the lyrics. I really love how this music is related to&#xA;emacs; in particular:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Tudo o que quer me dar / Everything you want to give me&#xA;É demais / It&amp;rsquo;s too much&#xA;É pesado / It&amp;rsquo;s heavy&#xA;Não há paz / There&amp;rsquo;s no peace&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;That&amp;rsquo;s is right. Emacs always was regarded to as the dinosaur, as the operating&#xA;system of your computer, as the I-want-to-rule-all-your-workstation program.&#xA;This has both its advantages and disadvantages, of course. The point with vim is&#xA;that is tries to Keep it Simple. It will &lt;strong&gt;never&lt;/strong&gt; be everything: it is only&#xA;your text editor. Nothing more.&lt;/p&gt;&#xA;&lt;p&gt;Well, although people will always try to write a Twitter Client for it and&#xA;similar things, I feel it is not natural. No, &lt;strong&gt;IT IS NOT&lt;/strong&gt;!! Now, with emacs,&#xA;those things are pretty natural. It was created to be extended! (Emacs is&#xA;described as the extensible text editor.)&lt;/p&gt;&#xA;&lt;p&gt;Along the last two years, I&amp;rsquo;ve tested more than a hundred of add-ons and&#xA;customizable pieces and bits for it: it is so cool how a functional language&#xA;(&lt;strong&gt;Emacs Lisp&lt;/strong&gt;) can improve a text editor. 2048 game, flappymacs, twitter&#xA;client, mediawiki client, xkcd browser, RSS reader, calendar application&#xA;(built-in), calculator (built-in), mail client … Yeah, emacs is everything!&#xA;Maybe &lt;strong&gt;too much&lt;/strong&gt; for me.&lt;/p&gt;&#xA;&lt;p&gt;Now, this is the part that makes me feel a little sad: &lt;strong&gt;&lt;em&gt;There&amp;rsquo;s no peace&lt;/em&gt;&lt;/strong&gt;.&#xA;Yeah, this is a problem. If you browse through my dotfiles repository on Github,&#xA;more specifically, through its commit history, you&amp;rsquo;ll see that my &lt;code&gt;_.emacs_&lt;/code&gt; file&#xA;is one of the files that &lt;strong&gt;most&lt;/strong&gt; changed through the days. I am always editing&#xA;something of it, and I am never completely 100% satisfied with the outcome.&lt;/p&gt;&#xA;&lt;p&gt;Because it is to easy to &lt;strong&gt;tweak&lt;/strong&gt; and &lt;strong&gt;customize&lt;/strong&gt; &lt;strong&gt;almost every aspect&lt;/strong&gt; of&#xA;Emacs, this means it is also possible to customize some aspects that I should&#xA;probably not even be bothering to (and I should probably not touch those ones).&#xA;Now, this proved to be a problem&amp;hellip;&lt;/p&gt;&#xA;&lt;h2 id=&#34;planned-topics&#34;&gt;&#xA;  Planned topics&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%230/#planned-topics&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;PROGRESS Emacs&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;PROGRESS introduction, motivations, and so on&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO org2blog&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO functional programming, REPL and Emacs Lisp&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO keybindings, keystrokes and hotkeys paradise (or nightmare)&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO more org-mode goodness&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO lessons and overall learned discipline&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO about the awesome emacs community&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO emacs blogs and RSS out there?&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO evil-mode&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO Emacs on X vs Emacs on Console&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO Books and study sources on Emacs&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO Vim&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO how a emacs user feels after being introduced to a modal text editor&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO keybindings and maps in different modes&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO gvim vs vim&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO vim community and resources?&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO editing text at the speed of thought, really?&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO books and study sources on vim&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO Conclusions&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;TODO Are text editors still relevant today, in a world of full-featured IDEs?&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Whoa. I hope you might like this mini series and want to see some (or all!) of&#xA;the above topics discussed. During it (please notice this comment won&amp;rsquo;t be&#xA;repeated further on), feel free to leave out any comments about your specific&#xA;experiences about vim or emacs. Also, you are encouraged to suggest me&#xA;additional topics about my experience with emacs (and my soon-to-be-born&#xA;experience with vim too), and even choose one of the above topics to I write&#xA;about next. Until the next post! (For now, read this.) &lt;strong&gt;Update&lt;/strong&gt;: &lt;a href=&#34;https://perrotta.dev/2014/10/from-emacs-to-vim-chapter-%231-vim-plug-ins/&#34; title=&#34;From Emacs to Vim – Chapter #1 – Vim plug-ins&#34;&gt;next post&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: From Emacs to Vim - Chapter #0&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/vim/&#34;&gt;#vim&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>My first ebuild
      </title>
      <link>https://perrotta.dev/2014/09/my-first-ebuild/</link>
      <pubDate>Sun, 28 Sep 2014 03:24:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/09/my-first-ebuild/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Ebuilds are not evil&lt;/p&gt;&#xA;&lt;p&gt;— &lt;em&gt;Larry, the Cow&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;del&gt;From now on, this will be my overlay repository: &lt;a href=&#34;https://github.com/thiagowfx/overlay&#34;&gt;https://github.com/thiagowfx/overlay&lt;/a&gt;&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;I might change its name in the future, however it will probably remain on GitHub. From my experience with this blog, I realized it would be better to leave a copy of this ebuild here:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;# Copyright 1999-2014 Gentoo Foundation&#xA;# Distributed under the terms of the GNU General Public License v2&#xA;# $Header: $&#xA;EAPI=&amp;#34;5&amp;#34;&#xA;&#xA;inherit font&#xA;&#xA;DESCRIPTION=&amp;#34;A font specially designed for comfortably reading on any computer or device&amp;#34;&#xA;HOMEPAGE=&amp;#34;http://www.huertatipografica.com/fonts/bitter-ht&amp;#34;&#xA;SRC_URI=&amp;#34;http://www.fontsquirrel.com/fonts/download/${PN}&amp;#34;&#xA;&#xA;LICENSE=&amp;#34;OFL&amp;#34;&#xA;SLOT=&amp;#34;0&amp;#34;&#xA;KEYWORDS=&amp;#34;amd64 ~arm ~arm64 ~ppc ~ppc64 x86&amp;#34;&#xA;IUSE=&amp;#34;&amp;#34;&#xA;HDEPEND=&amp;#34;app-arch/unzip&amp;#34;&#xA;&#xA;FONT_SUFFIX=&amp;#34;otf&amp;#34;&#xA;S=&amp;#34;${WORKDIR}&amp;#34;&#xA;&#xA;src_unpack() {&#xA;  mv &amp;#34;${DISTDIR}/${A}&amp;#34; &amp;#34;${DISTDIR}/${A}.zip&amp;#34;&#xA;  unpack &amp;#34;${A}.zip&amp;#34;&#xA;}&#xA;&#xA;src_install() {&#xA;  FONT_S=&amp;#34;${WORKDIR}&amp;#34; font_src_install&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;My &lt;strong&gt;conclusion&lt;/strong&gt;? Writing ebuilds is nice, very nice (yeah, more complex than writing PKGBUILDs, I know, but at least this complexity is justified).&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Edit&lt;/em&gt;: Thanks Buss for pointing me out a small error (&lt;code&gt;RDEPEND&lt;/code&gt;, instead of &lt;code&gt;HDEPEND&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: My first ebuild&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cool but obscure unix tools
      </title>
      <link>https://perrotta.dev/2014/09/cool-but-obscure-unix-tools/</link>
      <pubDate>Sat, 20 Sep 2014 15:42:06 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/09/cool-but-obscure-unix-tools/</guid>
      <description>&lt;p&gt;♠ An &lt;strong&gt;amazing&lt;/strong&gt; list! Yet another one which deserves a post just for its&#xA;usefulness. See &lt;a href=&#34;http://kkovacs.eu/cool-but-obscure-unix-tools&#34;&gt;http://kkovacs.eu/cool-but-obscure-unix-tools&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Cool but obscure unix tools&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Living on Ubuntu - Instance #1
      </title>
      <link>https://perrotta.dev/2014/09/living-on-ubuntu-instance-%231/</link>
      <pubDate>Mon, 15 Sep 2014 23:24:45 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/09/living-on-ubuntu-instance-%231/</guid>
      <description>&lt;p&gt;♠ As stated in my last post, I&amp;rsquo;m now using Ubuntu as my main linux distro. This is temporary and might even hurt a little, however I&amp;rsquo;m willing to keep going with this goal for a while.&lt;/p&gt;&#xA;&lt;p&gt;In this post I&amp;rsquo;m going to document some cleanups and tips/tricks/whatever that I find interesting and, sometimes, important too.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I am a heavily biased Arch Linux user. Anything related to it in this post is probably not a coincidence. This disclaimer won&amp;rsquo;t be repeated through other posts of this series. So, you have been warned. This is important to understand some of the motivations behind the changes I&amp;rsquo;ll list here.&lt;/p&gt;&#xA;&lt;p&gt;Now, just one thing: one of the reasons I&amp;rsquo;m using Ubuntu right now is so I won&amp;rsquo;t spend much time customizing it. So, I am deliberately cutting this list in more than a half. There are other things that I would usually do &lt;em&gt;but&lt;/em&gt; I simply won&amp;rsquo;t.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Enable the &lt;strong&gt;root&lt;/strong&gt; account – by default, the root account is disabled on&#xA;Ubuntu. This is great so newbies won&amp;rsquo;t harm the system; however, powerusers&#xA;don&amp;rsquo;t like that, this is simply annoying for them. You might do that as&#xA;follows:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ sudo passwd root&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Then just enter a password for it. Now you might become a superuser by invoking&#xA;&lt;code&gt;su&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Install &lt;code&gt;aptitude&lt;/code&gt;. And &lt;strong&gt;never&lt;/strong&gt;, I mean &lt;strong&gt;ever****ever&lt;/strong&gt; touch &lt;code&gt;apt-get&lt;/code&gt;.&#xA;&lt;code&gt;apt-get&lt;/code&gt; is evil and &lt;strong&gt;will&lt;/strong&gt; break your system sooner or later. Top used&#xA;&lt;code&gt;aptitude&lt;/code&gt; commands are probably &lt;code&gt;aptitude install&lt;/code&gt;, &lt;code&gt;aptitude upgrade&lt;/code&gt;,&#xA;&lt;code&gt;aptitude remove&lt;/code&gt; and &lt;code&gt;aptitude search&lt;/code&gt;. The &lt;code&gt;-y&lt;/code&gt; flag is useful sometimes,&#xA;too. So,&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ sudo apt-get install aptitude -y&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Then &lt;strong&gt;forget apt-get&lt;/strong&gt;!&lt;/p&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Install &lt;code&gt;unity-tweak-tool&lt;/code&gt; then change some annoying Unity defaults. What is&#xA;annoying depends on each user taste.&lt;/li&gt;&#xA;&lt;li&gt;I like to create a &lt;code&gt;Ramdisk&lt;/code&gt;. How? Arch Wiki Ramdisk. This also works for&#xA;Ubuntu.&lt;/li&gt;&#xA;&lt;li&gt;Install the &lt;code&gt;classicmenu-indicator&lt;/code&gt; package.&lt;/li&gt;&#xA;&lt;li&gt;I like using a clipboard manager. &lt;code&gt;clipit&lt;/code&gt; is a good choice and is well&#xA;integrated with the Unity panel.&lt;/li&gt;&#xA;&lt;li&gt;Add/activate workspaces. 4 of them is (usually) okay. Use &lt;code&gt;Ctrl + Alt + directional keys&lt;/code&gt; to cycle through them.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Super + D&lt;/code&gt; shows the desktop. (Super is usually the key with the windows&#xA;logo).&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Ctrl + Alt + L&lt;/code&gt; locks the screen.&lt;/li&gt;&#xA;&lt;li&gt;Install the &lt;code&gt;nautilus-open-terminal&lt;/code&gt; package.&lt;/li&gt;&#xA;&lt;li&gt;Improve your &lt;code&gt;.bashrc&lt;/code&gt;. How? See here. You&amp;rsquo;ll also find my &lt;code&gt;.bashrc&lt;/code&gt; there&#xA;(search for &lt;em&gt;thiagowfx&lt;/em&gt;).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Living on Ubuntu - Instance #1&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>What is taking much space on your Linux/BSD system?
      </title>
      <link>https://perrotta.dev/2014/09/what-is-taking-much-space-on-your-linux/bsd-system/</link>
      <pubDate>Sat, 13 Sep 2014 21:13:52 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/2014/09/what-is-taking-much-space-on-your-linux/bsd-system/</guid>
      <description>&lt;p&gt;♠ This program is so nice that I had to create a blog post just to tell people&#xA;about it: &lt;a href=&#34;http://dev.yorhel.nl/ncdu&#34;&gt;ncdu&lt;/a&gt;. It is the most awesome and&#xA;easiest (really easy! I would indicate it to any new Unix user as well) program&#xA;to detect which folders/files are eating too much disk space on your system.&#xA;Available for dozens of platforms. &lt;strong&gt;TL;DR &lt;em&gt;and&lt;/em&gt; tutorial: just install, then&#xA;type ncdu&lt;ENTER&gt; and wait for the best (worse?).&lt;/strong&gt; See&#xA;&lt;a href=&#34;http://dev.yorhel.nl/ncdu/scr&#34;&gt;screenshots&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: What is taking much space on your Linux/BSD system?&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
