There's a certain smirk on my face now as I write this since I realize that it has been over a month and a half since I first began setting up Arch Linux. Much has changed for me in the last few weeks. I quit my job at Perka, I packed up all my possessions, and I moved to Israel where I am now and will be until June. More about this later. Right now, I want to talk about the first step in my life changes: ditching the beautiful MacBook Pro provided for me by Perka, to the cute Lenovo X220 which I find myself writing on at this very moment.

I ran my first Linux machine when I started Hacker School in Fall 2013. I ran Linux Mint because it came with the batteries but not too much of them. At least, that's what the Internet told me. Installation was a wonderfully easy single click process. I remember being amazed that it could be so easy to run Linux.

When I decided that I was going to quit Perka, I have to admit to going through a bout of laptop frenzy. I looked into the Mac Book Air. That was a particularly dark moment for me. Ha! Okay, enough trolling. In all seriousness, I realized that this was an opportunity for me to learn. In the Hacker School spirit, I decided not be intimidated and give Arch a try. When a friend offered to sell me his X220 for a bargain, I jumped for it. I downloaded a disk image, used the dd command for the first time, and met some friendly and terse supporters on #archlinux on freenode, especially Earnestly who has been a great help. For the first time, I randomly ran into a friend on IRC.

What follows is more or less a laundry list of happy moments I've had while installing and using Arch:

  1. I struggled for a long time with figuring out how to partition my disk. Turns out that a partition is exactly what the name indicates it is: a file that contains a table of starts and ends of parts of the disk which is "mutually exclusive and collectively exhaustive." I remember hearing about disk partitions from my dad when he was futzing with his MS-DOS computer but it was always quite mysterious.

  2. I learned that there are different file systems. The first file system for GNU/Linux was called the Extended File System (ext) and there are a number of versions for you to choose from: ext, ext2, ext3, ext4. Ext4 is a journaling file system. This means that it maintains some sort of log of all transactions with the disk. If something happens in the middle of a transaction, the log can always be replayed to get the system back into a consistent state. This should sound familiar to my readers who know something about distributed systems. That's pretty neat!

  3. I learned about the swap partition but decided not to make one. This is basically where the OS can go on disk if it runs out of RAM. I have 16GB of RAM and I learned that if I really wanted to create a swap partition later, i could always create a swap file which would serve the same purpose. Hmm, the computer crashed today for no reason that I can tell. Maybe it ran out of memory? Damn you all those open Chrome tabs.

  4. Someone on #archlinux instructed me about the difference between 'root' and '/root'. 'root' is a user whereas '/root' is the home directory of that user.

  5. It was a pleasure to have a zsh-like shell on the boot image. It's exactly what I wanted!

  6. kill really means signal. I realized this when I learned how to check the status of the dd command: kill -USR1 $DD_PID. More here.

  7. Mounting is like magic. Somehow all devices are mounted first onto root, which is itself the first mounted drive. During the installation process, you teach the machine which partitions (which already have installed file systems) you want mounted to which directories.

  8. Guess what, Julia the language installed in an instant. pacman -S julia. Boom chakalaka. What did I have to do to install it on my Mac? I don't even remember but it was annoying.

  9. There's some controversy in the Linux community about Linux fundamentals , namely, systemctl. I still don't completely understand what systemctl does and how it works, but some people seem to really despise it.

  10. I can't describe the thrill when I actually got a printer job to go through at my new job at a small NGO that works with African refugees in Tel Aviv.

In conclusion, I'm loving i3wm and am constantly waisting time on new key mappings and shortcuts. I'm addicted to the locate command and I am in awe of the Arch Linux docs as well as the ubiquitous shell programming mastery in them. I've spent a lot of time tinkering which I never spent with my Mac, but I think that this is making me a better programmer. I think. My system is only as opaque as I am lazy to learn more about it. I have a whole new appreciation for "platform independence." With that, I leave you.