My laptop uses Nvidia Optimus for video. This means the GPU built in to the CPU is for for 2D, and the Nvidia adapter is used for 3D. The idea I'm assuming is to save power. Great, who doesn't want their laptop battery to last longer?
In Linux land though, Optimus is problematic. The proprietary Nvidia drivers don't support it (licensing issues are getting in the way unfortunately). Given that's the case, I've been sticking to Nouveau, the open source driver for Nvidia cards that comes stock with Fedora. I haven't been able to play any 3d games on my laptop because of this, but do I have a Windows machine sitting around somewheres if I really need to scratch that itch.
Fedora 24 and Nouveau drivers turned out to be a whole different ball game however. After installing F24, I noticed my laptop was running really really hot. Lm sensors, a hardware monitoring tool for Linux, told me my idle CPUs were sitting at a little under 70 degrees Celsius. Yikes! Not good.
Bumblebee to the rescue! Bumblebee is an open source Linux project that lets you switch between the integrated GPU and the Nvidia adapter. With Bumblebee, by default graphics are handled by the integrated chip. You can manually run applications with the "optirun" or the "primusrun" commands though and then graphics will be handled by the more powerful Nvidia chip. Bumblebee supports the proprietary Nvidia drivers as well, so 3d games are not a problem.
So why have I been sticking with Nouveau? Well, setting up Bumblebee in the past has been a bit involved and didn't always turn out well. But it seems some Fedora folks have been busy making it all very simple. Following this guide I had Bumblebee installed and working in a matter of minutes. A quick reboot, and my CPU temperatures went down to under 50 degrees Celsius. So sure, things started out a bit rocky with Optimus, but give it time and the open source community does not disappoint. Looks like I will not be running Nouveau drivers again any time soon.
Wednesday, July 6, 2016
Sunday, July 3, 2016
Upgrading Fedora
I recently upgraded my laptop to Fedora 24 and took notes about the process. I'm collecting them here, mostly for future reference, but also for anybody else out there that maybe happens to stumble upon them.
First things first, before upgrading I make sure to do the following:
Why all the manual backing up of things? Well, for anything 'important' I mainly rely on Syncthing to distribute things around my network, and then rsnapshot to throw things onto a back up drive. But it definitely doesn't hurt to have a few extra copies of important stuff lying around. Everything else? Well, I'm a digital packrat and there's no way I'd be able to keep everything (not without spending a ton of money anyhow). I'm keeping enough mooc videos I'll probably never watch as it is. Upgrades always motivate me (well, make it necessary perhaps) to organize and cull both old and new data, so I do. I like to think it's a good thing.
I never have trusted the Fedora upgrade process. I've heard a lot of bad things, so I always perform a fresh install. Maybe this just means I'm making more work for myself? Anyhow, post upgrade, I did the following:
And that's how it's done on my end. I'm not saying this is what everyone should do, but it's what I do to get myself back up and running and productive again. If you're reading this, maybe you'll pick up some tricks? Or maybe just satisfy a bit of your curiosity. Cheers.
First things first, before upgrading I make sure to do the following:
- Push any git commits that need to be pushed. This includes dot files if I've changed them (haha, argh! Just got burned by this one actually).
- Make sure Syncthing is properly syncing the files I have under its control, and that everything is up to date everywhere.
- Go through ~/Applications and see if there's anything I want to save, and if so manually back things up.
- Manually back up my documents and projects.
- Manually back up any videos or other large files I happen to want to save
Why all the manual backing up of things? Well, for anything 'important' I mainly rely on Syncthing to distribute things around my network, and then rsnapshot to throw things onto a back up drive. But it definitely doesn't hurt to have a few extra copies of important stuff lying around. Everything else? Well, I'm a digital packrat and there's no way I'd be able to keep everything (not without spending a ton of money anyhow). I'm keeping enough mooc videos I'll probably never watch as it is. Upgrades always motivate me (well, make it necessary perhaps) to organize and cull both old and new data, so I do. I like to think it's a good thing.
I never have trusted the Fedora upgrade process. I've heard a lot of bad things, so I always perform a fresh install. Maybe this just means I'm making more work for myself? Anyhow, post upgrade, I did the following:
- Add the following to /etc/dnf/dnf.conf: "fastestmirror=True".
- Run "dnf update", and reboot.
- Change the desktop and lock screen backgrounds (I may do some of these while updates are running of course), which is in Gnome settings, under background.
- Turn off the terminal bell. Found on the terminal edit menu, under profile preferences.
- Disable screen lock. Found in Gnome settings, under privacy.
- Clone my dot files from git and copy them to where they need to be.
- dnf install hexchat p7zip vim-enhanced gnome-tweak-tool
- Enable Firefox sync.
- Configure my Gnome favorites.
- Import rpmfusion gpg keys: "gpg --keyserver pgp.mit.edu --recv-keys (ID)". IDs and more info are found on the site.
- Install rpmfusion free and non-free repos. The "localinstall" option isn't a thing anymore. Just download the rpms and run "dnf install rpmfusion.foo.rpm".
- Install fonts: "dnf install freetype-freeworld".
- Install media codecs: "dnf install gstreamer-plugins-bad gstreamer-plugins-bad-free gstreamer-plugins-bad-nonfree gstreamer-plugins-good-extras gstreamer-plugins-ugly gstreamer1-plugins-bad-free-extras gstreamer1-plugins-ugly gstreamer1-plugins-bad-free-fluidsynth gstreamer1-plugins-bad-freeworld gstreamer1-plugins-base-tools gstreamer1-plugins-entrans gstreamer1-plugins-fc gstreamer1-plugins-good-extras gstreamer-ffmpeg ffmpeg-libs ffmpeg x264 x264-libs h264enc lame lame-libs lame-mp3x twolame mpg123-plugins-extras mpg123 faad2 gstreamer1-libav"
- With Gnome Tweak tool enable the global dark theme, enable the date on the top bar, set font antialiasing to "rgba", set font hinting to "none", and set the window focus mode to "mouse".
- Add the following to /etc/X11/Xresources: "Xft.lcdfilter: lcddefault".
- Install whatever it is I'm working on at the moment, in this case: "dnf install octave qtoctave python2-matplotlib python3-matplotlib python-ipython-notebook python3-ipython-notebook python2-pandas python3-pandas python2-numpy python3-numpy python2-scikit-learn python3-scikit-learn python2-statsmodels python3-statsmodels"
- Install and set up Syncthing so I have my projects and data back.
- And finally save a list of available packages for future reference, so: dnf list available >& /root/available_packages
And that's how it's done on my end. I'm not saying this is what everyone should do, but it's what I do to get myself back up and running and productive again. If you're reading this, maybe you'll pick up some tricks? Or maybe just satisfy a bit of your curiosity. Cheers.
Saturday, July 2, 2016
Booting Fedora to RAM
So I installed Fedora 24 yesterday. And while not the only option, the default installation CD is a live CD that boots up a Gnome desktop, and from there gives you the option to either just play around with Fedora or to run the installer application and install Fedora to your hard disk.
As an aside, I chose the Gnome live CD because that will install Gnome. If another particular environment happens to be your thing, then you'll need to choose the appropriate live CD. In Fedora land these are called spins, and you can find out more about them here.
And as another aside, while I don't always do it, a lot of times upon a new release of Fedora I'll force myself to switch up from Gnome to something different, until the next Fedora release or until I tire of it. I suppose KDE might be the only environment I've actually stuck with for a full release cycle besides Gnome (I miss the more polished, integrated, and full featured applications too much I guess), but still, switching it up every now and again helps me not to stagnate I like to think. Speaking of which, I should probably give xmonad (a tiling window manager) or the like a try for once. Maybe I will this time around.
Anyhow, given my wealth of ram, it makes sense to me to, if at all possible, load my live CDs into RAM when I boot them. This is easy to do with Fedora, though not as simple as I'd like it to be, namely it being a menu item. But still pretty easy. When presented with the initial live CD menu, hit the 'e' key to edit the menu entry. Then append the kernel line with 'rd.live.ram'. Hit ctrl-x to boot and you're set. It will take a bit longer to boot of course as everything needs to be loaded into ram.
So what's the point? If you're simply wanting to give a particular desktop a go, loading things into RAM will make everything much more responsive and way closer to to what the true desktop experience would be like. But even if you're just performing an install, if you're like me you might need to fire up a terminal and do some low level pre-install or post-install tasks. Or you might just want to bring up a browser or the like while you wait for the installation to finish. Booting to RAM makes this so much more pleasant.
And a bit of trivia. Though it wasn't exactly a live CD, older versions of Solaris were the first perhaps, the first install CDs I ever encountered anyway, where you could use a browser while you were waiting for the installer. Quite neat back in the day.
As an aside, I chose the Gnome live CD because that will install Gnome. If another particular environment happens to be your thing, then you'll need to choose the appropriate live CD. In Fedora land these are called spins, and you can find out more about them here.
And as another aside, while I don't always do it, a lot of times upon a new release of Fedora I'll force myself to switch up from Gnome to something different, until the next Fedora release or until I tire of it. I suppose KDE might be the only environment I've actually stuck with for a full release cycle besides Gnome (I miss the more polished, integrated, and full featured applications too much I guess), but still, switching it up every now and again helps me not to stagnate I like to think. Speaking of which, I should probably give xmonad (a tiling window manager) or the like a try for once. Maybe I will this time around.
Anyhow, given my wealth of ram, it makes sense to me to, if at all possible, load my live CDs into RAM when I boot them. This is easy to do with Fedora, though not as simple as I'd like it to be, namely it being a menu item. But still pretty easy. When presented with the initial live CD menu, hit the 'e' key to edit the menu entry. Then append the kernel line with 'rd.live.ram'. Hit ctrl-x to boot and you're set. It will take a bit longer to boot of course as everything needs to be loaded into ram.
So what's the point? If you're simply wanting to give a particular desktop a go, loading things into RAM will make everything much more responsive and way closer to to what the true desktop experience would be like. But even if you're just performing an install, if you're like me you might need to fire up a terminal and do some low level pre-install or post-install tasks. Or you might just want to bring up a browser or the like while you wait for the installation to finish. Booting to RAM makes this so much more pleasant.
And a bit of trivia. Though it wasn't exactly a live CD, older versions of Solaris were the first perhaps, the first install CDs I ever encountered anyway, where you could use a browser while you were waiting for the installer. Quite neat back in the day.
Wednesday, June 29, 2016
Deep Learning
I'm currently reading a book on deep learning and I have to say, it's quite interesting. Apparently a lot of the machine learning methodology in use today has been around for a very long time, circa 1950 or so, and in fact some of today's methodologies have even been simplified compared to past models. Only with the advent of big data is there enough training data available to be able to train some models adequately.
And combine big data with the computational resources available currently, it's no wonder we're seeing a resurgence in AI research. Exciting times in the world of computer science to be sure. Now where's my self driving car???
And combine big data with the computational resources available currently, it's no wonder we're seeing a resurgence in AI research. Exciting times in the world of computer science to be sure. Now where's my self driving car???
Tuesday, June 3, 2014
Time to learn some Q
Ever since coming across this maddness I've found J and the APL family of languages quite interesting. To the unfamiliar the beginnings of the J interpreter look to be something akin to an IOCCC entry. But then how and why would brilliant sounding guys like Ken Iverson and Arthur Whitney be coding like this? Through a bit of research I've learned that this style can actually make code much simpler to read, almost like a book in fact. Or that's the claim at least. I've yet to really make any headway with that fragment, so I myself am not a yet a convert. Perhaps actually learning an APLish language will help.
I've briefly touched on J off and on over the years but never really buckled down. This time around I'm switching to one of it's successors, Q. A free 32 bit version of the interpreter (and kdb+) can be found here. On Linux, simply extract it to where you want it to reside, set $QHOME to that location, and put $QHOME/l32 in your shell's path. Run "q" and you're good to go. If your machine is running a 64 bit OS you will need 32 bit compatibility libraries however.
I've already started in on this tutorial. So far so good.
I've briefly touched on J off and on over the years but never really buckled down. This time around I'm switching to one of it's successors, Q. A free 32 bit version of the interpreter (and kdb+) can be found here. On Linux, simply extract it to where you want it to reside, set $QHOME to that location, and put $QHOME/l32 in your shell's path. Run "q" and you're good to go. If your machine is running a 64 bit OS you will need 32 bit compatibility libraries however.
I've already started in on this tutorial. So far so good.
Tracking progress through old code
It feels good to have a look at some older code you've written and see that you've most definitely improved. I'd urge everyone to try it.
I've recently been learning more Ruby by doing problems on Code Abbey. The very first problems involve summing integers that are passed in via standard input. My original solution turned out to be as follows:
And this is fine, in that it works. But were I to code this today it would simply read like this:
Of course it's the exact same thing conceptually, but Ruby-wise, it's a vast improvement.
So, have a look at some of your own code my friends. You may be pleasantly surprised at the progress you've made.
I've recently been learning more Ruby by doing problems on Code Abbey. The very first problems involve summing integers that are passed in via standard input. My original solution turned out to be as follows:
numbers = []
numberStrings = gets.chomp.split
numberStrings.each {|number| numbers << number.to_i}
sum = 0
numbers.each {|number| sum = sum + number}
print "#{sum.to_s}\n"
And this is fine, in that it works. But were I to code this today it would simply read like this:
puts readline.chomp.split.map(&:to_i).reduce(:+).to_s
Of course it's the exact same thing conceptually, but Ruby-wise, it's a vast improvement.
So, have a look at some of your own code my friends. You may be pleasantly surprised at the progress you've made.
Tuesday, September 18, 2012
Online courses
There's been quite a number of free online courses popping up recently, with the 3 major players being Coursera, Udacity, and edX. The amount and quality of content is really exciting. Not only am I personally able to take advantage of these programs but so are people all across the world, many of whom wouldn't otherwise have access to a university education.
Of the three, Udacity is definitely the most accessible. Not only does it have very entry level courses, but the lectures are split up in to very manageable chunks. On top of that the courses are self paced so there are no deadlines to worry about. And while all 3 platforms do it, Udacity really seems to shine in how it intersperses quizzes and exercises with the lectures. It keeps you very engaged with the courses. Almost all of Udacity courses are computer science courses however, so if computer science isn't what you're after then you're mostly out of luck.
Coursera material, from math to history, to art, varies widely. On the computer science end material seems a bit more rigorous and advanced than Udacity. This combined with the fact that courses are on a deadline makes things feel closer to an actual university. However one problem with Coursera, in my opinion, is the quality and quantity of what I guess could be called the homework. A lot of it seems far too simplistic and there isn't enough of it to really drive home the material. The programming projects though are not nearly so trivial so perhaps it all evens out.
edX, with its Circuits and Electronics course, seems closest of all to an actual university offering. There are both lectures and recitation videos, a full textbook is available, the homework is very appropriate, and there's even lab work in the form of a circuit simulator. Like Coursera, edX courses do have deadlines, so depending on your point of view this is one downside. Still, I have to say I'm very much enjoying their program and am definitely looking forward to edX's upcoming introduction to programming course. If it's going to be anything like the Abelson Sussman lectures it's going to be spectacular. The downside to edX is that it seems to suffer from a lack of content, but hopefully this will change in the future.
Considering the cost, namely free, all three sites are wonderful additions to the Internet. It's going to be a lot of fun watching them mature.
Of the three, Udacity is definitely the most accessible. Not only does it have very entry level courses, but the lectures are split up in to very manageable chunks. On top of that the courses are self paced so there are no deadlines to worry about. And while all 3 platforms do it, Udacity really seems to shine in how it intersperses quizzes and exercises with the lectures. It keeps you very engaged with the courses. Almost all of Udacity courses are computer science courses however, so if computer science isn't what you're after then you're mostly out of luck.
Coursera material, from math to history, to art, varies widely. On the computer science end material seems a bit more rigorous and advanced than Udacity. This combined with the fact that courses are on a deadline makes things feel closer to an actual university. However one problem with Coursera, in my opinion, is the quality and quantity of what I guess could be called the homework. A lot of it seems far too simplistic and there isn't enough of it to really drive home the material. The programming projects though are not nearly so trivial so perhaps it all evens out.
edX, with its Circuits and Electronics course, seems closest of all to an actual university offering. There are both lectures and recitation videos, a full textbook is available, the homework is very appropriate, and there's even lab work in the form of a circuit simulator. Like Coursera, edX courses do have deadlines, so depending on your point of view this is one downside. Still, I have to say I'm very much enjoying their program and am definitely looking forward to edX's upcoming introduction to programming course. If it's going to be anything like the Abelson Sussman lectures it's going to be spectacular. The downside to edX is that it seems to suffer from a lack of content, but hopefully this will change in the future.
Considering the cost, namely free, all three sites are wonderful additions to the Internet. It's going to be a lot of fun watching them mature.
Subscribe to:
Posts (Atom)