Please note that this post contains content not suitable for those who give no craps about the way a Linux box can be set up for an end-user. I do not blame you, those who give no craps.
So leaving Puppet after 18mo (on great terms! hi friends!) I find myself in need of my own real development machine. I begrudgingly find myself admiring macs after all, but after two minutes of looking at craigslist and finding $700 MBPs from five years ago, concluded that that Just Isn’t Going To Happen, much as I love iTerm2. I’ll buy myself a new computer soon but in the mean time a friend of mine had an Ubuntu 12.04 ThinkPad X220 she said I could borrow for a bit, and oh my god, I am in LOVE. This machine is great and zippy and POWERFUL. I might.. I might just buy a clone when I’ve got the bucks, even though you can pretty much only get them used at this point.
Rather than jump back into Ubuntu which is pretty familiar ground, I wanted something slightly different and my friend Amy has been extolling Fedora’s virtues for years. Further, at Puppet, we virtualized nearly all our testbeds in CentOS using the amazing, moooostly internal (but totally available!) Puppet Debug Kit created & maintained by my brilliant former coworker who is still doing phenomenal work over there. Ok, so I will definitely miss my buds there!
So because I spent about half my time on the job in CentOS & Fedora is the closest end-user version of that with a UI (sorry I’m not hardcore enough to only run a server for my dev box haha!), I grabbed the instructions & made a Fedora-specific bootable usb drive with their (prev linked) docs. After formatting the drive, writing the .iso to it, and plugging it in, I had to fiddle with the BIOS, which on the x220 was incredibly easy – first, on bootup it tells you EXACTLY how to get into BIOS, and it gives you the option to do a one-time boot via USB, rather than having to muck around with boot order! Fabulous!! Then with a bit of wiggling (had to get into a babby command line rq to tell it to choose the
Linux0 option which kicked off the install, please, friends, do not ask me why) the installation went off without a hitch, with LITERALLY NONE HITCHES.
It was after rebooting that I started to learn how powerful this little machine really is. It’s fast, despite having 1/4 the memory of my old work MBP (though I really don’t know how that scales), and the trackpad uses all the gestures I’m used to from working on macs.
Then I set up my prompt, and without wanting to get toooo too deep into the oogly bits of bash formatting, I had to try and test and try and test and finally settled from:
export PS1='\[\e[0;36m\]rk\[\e[m\] \[\e[1;37m\@ \w \[\e[m\] \n $ '
which threw a non-ASCII character, and when I fiddled, lost the ability to shut off the bold white text, haha, to:
export PS1='\[\e[0;36m\]rk\[\e[m\] \[\e[1;37m\@ \w \e[m\] \n $ '
Huh. That’s only one
[ different. Just bless ya, monospace blog draft.
Anyway, then I got ambitious. I wanted to see if I could run Spotify outside a webapp, because that makes it IMMEDIATELY less likely to be used and I rely pretty heavily on it, during and outside the workday. Using these set of instructions which state a requirement of RPM Fusion as installable here, I got going. These are for Fedora 20 & I’m on 23, but I knew I could get it going. I was so excited for this, I LOVE a new Linux system’s first
sudo yum(or whatever) update, so I ran that & a few minutes later tried to get RPM Fusion itself installed with the following command:
su -c ‘yum localinstall –nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm’
But it griped at me about there being no
localinstall user – it was griping because we’d told it to perform a command with a specified user with the
su command, but it had received no user. Usually this should result in its just using root, so it’s close to the same as just using
sudo in front of important things you run in the terminal, but my bash version 4.3.42 was having none of it. So I peeled out the
su -c (the
-c just means you’re passing it a command to execute immediately, then return to the normal user after execution, rather than switching wholly into the specified user). The issue I ran into thereafter was still
localinstall, which my machine still couldn’t find. I made a few attempts at installing
localinstall (so meta) but it escaped me. I found this Stack Overflow-ish post asking about basically the same difficulty I was having, and more or less someone says that
yum install and
yum localinstall accomplish the same thing and the only reason the other still exists is for backwards compatibility. So I changed localinstall to install, removed the
su -c ' ', added a sudo since the
yum install would want it, and BAM, RPM Fusion on Fedora 23!
sudo yum install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
Then, all there was to do was run the lil commands to actually get Spotify since RPM Fusion’s installed! The “dnf” of the Fedora package manager command cracks me up – sounds a lot like “do not f****ng” before “install blahblahpackage”, and I refuse to look up what it means because I laugh every time.
dnf config-manager --add-repo=http://negativo17.org/repos/fedora-spotify.repo dnf install spotify-client
And that’s all it actually took, which, haha, looking back at what I’ve written, I guess is slightly more complicated than “that’s all it took” might warrant.
Next I need to find a terminal I’m happier with! I seriously miss iTerm2 so if you have any Fedora-flavored terminal loves let me know in the comments. I need tabs, man. I need ’em.
I like that I know we are both highly competent computer users, yet reading this feels like gobbledegook, and if I were to write a similar post about my forays into learning assembly for XMOS’s XE216 processor in xTimeComposer, you’d feel the same way :).
That was highly interesting even though I didn’t fully get the specifics of everything; it’s always nice customizing a fresh new system!
Haha, oh I know, isn’t it fun to lift the veil on another person’s work? Setting up a new computer is always fun, and Linux in particular brings its own challenges! You’re basically in the deep-down of PCs and Windows at your job, right? Assembly sounds really cool and pretty straightforward in its complexity (lol), maybe some day I can check it out. Cheers!!
I was before really into the Windows side of things; I’m now diving heavily into embedded chip programming and working on some real low level stuff.
Assembly is like relearning basic arithmetic but you already know all the calculus and algebra. Especially when you take a function in C and transform it into its assembly equivalent. A simple statement like: “sample = bitrev(temp << 8) turns into a good 4 or 5 lines of assembly as you have to load everything into and out of registers.
Also, I only have 11 variables to work with, so I'm constantly juggling what is in which one and it's a crazy parade of macros redefining things! For example, I only really have two temp variables available out of those eleven in something I just finished, and I had to constantly be loading in new port addresses and sending data out and receiving data back in from those, and bitshifting and reversing them all the time. It makes me so appreciative of what the compiler does for me :P.
It's been a lot of fun and really interesting; it's nowhere near in the same scope of use as something like C++, so I have to do a lot more hunting through documentation to figure out how things work, or posting on the xcore exchange forum.
What's awesome about learning assembly is that when we start debugging things and need to look at what's happening, I can now read the dis-assembly and know exactly what it's talking about. I can be like: "Oh you can see it doing a LDW here with registers r0 and r5, and that's preparing it to send an OUT on port xyz"
I haven’t settled on a terminal GUI I really like yet. Note that gterm does, in fact, have tabs, but they’re not very customizable. They used to be more so, but for some brain-dead reason the gterm maintainers decided to remove a bunch of the configuration options.
I’ve been using konsole, the old KDE terminal a bit, which has much better tab features, but otherwise it’s pretty ugly & clunky, especially if you’re used to iTerm2. I just installed ROXterm, which looks better, but haven’t used it enough to recommend it.
I’ve heard about Konsole too, it seems like it’d at least fit the bill for now. LMK how ROXterm goes! thanks josh!