I’ve spent a lot of time over the last few months recovering from a knee surgery and getting back into work so I haven’t had much time on my computer recently. Now that the year is coming to and end and things are beginning to get back on track, I’m going to try to begin posting more. More updates should be on the way soon, I just wanted to check in and let everyone know I’m still here. Thank you for reading!
I recently re-discovered a laptop left for dead a few years ago. Originally I couldn’t figure out the problem and it sat on my shelf for a few years. With my knee surgery leaving it painful to sit in a chair for very long I decided now would be a great time to get that old laptop working so I can use it while laying down.
After booting it up for the first time in years, the problem was apparent. The hard drive was on it’s way out, and also sounded strangely in need of an exorcism. Immediately when the drive began to spin up I heard a horrible combination of ripping, screeching along to a series of clicks and clacks not quite like anything I’ve heard before. Removing the drive to save my ears from the beast, I decided an Ubuntu LiveCD would be the best environment until I could get a new drive for the machine. I was using an extra USB key I have as a holding point for any storage I may need. At some point I rebooted the computer, forgetting to remove the USB key. Sure enough, the laptop gave me disk errors as it tried to boot off of USB. This set the wheels in my head in gear.
Knowing that I could boot off of USB, I needed to find some form of storage to use for such a purpose. The original USB key would be off limits, I didn’t feel 512mb would be enough for an ArchLinux install with Xorg and Fluxbox installed. Looking through my closet of parts, I came across an unopened 2GB MicroSD card. It was almost as if it was waiting for this moment. Coupled with a USB adapter, I booted into the Arch LiveCD and saw it picked up as /dev/sda. I was good to go!
Starting up the install process I went through like normal, setting the time and so on. Once I got to the disk setup stage I attempted to create only a 32MB /boot partition and the remaining space for /, root. I decided to go against swap space just because it seems highly unpractical for such a minimal system. Once I attempted to write the partitions, cfdisk error’ed out saying something along the lines of the drive didn’t exist. Doing a bit of Googling, I couldn’t turn out a definite answer, so I attempted to manually create the partitions in fdisk. I was successful in creating them via fdisk, and re-entered setup to finish things up.
This time cfdisk actually opened up with no problem, I’m going to assume the MicroSD may have had some sort of weird partition that caused cfdisk to choke until I formatted the drive myself. Having the disks set up, I selected my packages and let the install begin. The install finished in maybe twenty minutes, so I was about to begin configuring the system when out of nowhere the laptop died.
Oh that’s right, I had forgot to leave it plugged in and during my lengthy install the battery must have died. Luckily by this time I had worked out all the kinks and just did a quick re-install followed by the configuration and and initial boot-up. Following is the standard ArchLinux install process. Adding users, updating pacman, etc. I did spend a bit of trouble tracking down the right firmware version for the wireless card, a Broadcom of some sort using the b43 driver.
That all finished, I installed Xorg, the open-source ATI drivers, Flubox and Chromium. Not one hiccup has been felt since. After checking the disk space, it looks like the whole thing fits into 1.6GB of space. Not bad at all, I’m actually very impressed by the fact that I have my entire system contained on a MicroSD card. The access speed seems to be a little slow, and Chromium runs out of memory if I get too crazy on the tabs, but it works. Amazing what can be done with technology these days.
I came and logged in to The Archist this morning to check for any new comments and was very surprised by what I saw. Normally I would check the comments by just looking at the post for the comment link, today after logging in I saw a much higher number of comments than I knew of. Turns out I had quite a few in the spam filter.
Looking through those comments, I found several comments which appear to be real marked as spam. I’m not sure how they got marked, they all seemed perfectly normal and on-topic to me. Marking them as Not Spam will hopefully train the filter better. Until then, I’ll have to make sure I check these things more in-depth from now on.
That all said, if your comment was caught in the filter, I apologize for not releasing them sooner. I’ll certainly be checking things here more to make sure this doesn’t happen again.
The last month has been fairly painful for me. My leg currently sits wrapped in several layers of gauze with an immobilizer surrounding it all to keep me from moving it. This is because of the surgery I recently went through to repair a torn meniscus. For the last few days it has felt like there is hot lava pouring out of my leg through the incisions and my arms feel like they’re going to fall off from walking on crutches. But the worst (I think) is now over. I’m very thankful to say everything feels like it’s healing properly, I’m just waiting for the doctor to see it tomorrow and tell me exactly how long I’ll be like this.
Due to the fact that I cannot at all bend my left knee, it gets very painful to sit at my computer for more than about fifteen minutes at a time. About all that I’ve done on my computer recently is watch my computer bust out Folding@Home workunits and mess around with Google+. I’ve also decided to move on from xmonad in search of something a little more casual. I’ve since fallen in love with Fluxbox & conky. I like the more casual approach to computing. It almost feels more fun. It almost feels more natural to size and place windows all over the desktop, as opposed to the tiling I’ve done over the last few months.
Aside from all of that, I’ve been thinking I want to get back into programming. I don’t really want to learn something new, just expand my current knowledge. I figure let’s go back to the basics, my first real interest in programming was with C++. I already have a great grasp over the basics and a decent understanding up to pointers and object oriented programming, so why not go for broke? I want to master C++ by the time I recover from this injury.
I’d like to ask you, reader, what are your favorite C++ programming resources? I would like to do some touch-ups to my basic skill set and then delve into more advanced articles and examples. Do you have any recommendations for projects, articles, chat rooms, anything? Does anyone have some words of wisdom for staying on track with projects? I’ve noticed in the past many times I would start off a project great and just burn-out or lose interest. How do you combat that?
To be honest, when I first installed xmonad, I didn’t think I would like it. I felt it had too high of a learning curve and wouldn’t be worth my initial investment. I was quite wrong, I think my search for the “perfect window-manager” may be over, at least for now.
Xmonad is a dynamic tiling window manager. It’s basic job is to manage placement of your windows, however, it can be extended to incorporate many other features such as virtual desktops, transparency and panels. By default Xmonad comes with a very minimal install, you will have no window decorations or status bars. Most users will require some level of customization to reach the desired level of functionality.
Xmonad is configured using a haskell configuration file, which you will recompile and then reload (on-the-fly, no logout required). Rinse & repeat as necessary. I’ve personally always been a bit afraid of haskell’s syntax, and still don’t really understand any of it, but I’ve figured enough out to properly configure my setup. I spent the better part of a few weekends deep in the documentation for xmonad and pulling different bits from any other xmonad.hs file I could find online. Many times this resulted in a non-working configuration, but sure enough I figured it out. Right now my configuration is working, is somewhat documented and (I think) has a decent framework to add extra functionality later on.
Most users would also like to have a panel, or even a place for status icons to sit. Following the minimalistic approach, Xmonad does not include these features in it’s core. When there is a will, there’s a way though. Xmobar is the software I am using to provide a system panel. Trayer is the software I use to provide a status icon area. Both pieces of software are very well documented, and in my experience, very easy to integrate with your Xmonad configuration
As far as performance and stability, I don’t recall having any issues whatsoever. Even at the times when my system is under a full load, xmonad still performs quickly and reliably. I also don’t think xmonad has ever actually crashed on me, except for a few botched config files of my own doing. It definitely puts your mind at ease when you feel like the system is rock solid beneath you.
Going back to the extra functionality, I haven’t found anything more I could want. Sure, I spent a week or two adding all the bells & whistles to mess around. And sure enough, I’d end up removing them to clear some of the clutter. I’ve decided to take a bare-bones approach to window-management from now on.
In my previous post I mentioned a knee injury and that I would like to be able to view my own MRI images on my desktop. After some googling and experimentation, I have done it.
To start off with, I’m going to mention that the images provided to me were in the DICOM format. It also appears there is a windows executable on the cd, possibly for viewing the images natively, but I didn’t check into that much so your mileage may vary if you choose that route. I managed to find a hardware accelerated OpenGL MRI viewer, however, it reads images in the NIfTI image format, so I had to convert. I used a program called dcm2nii to convert everything. It features a command line interface, as well as a GUI, I personally used the GUI with no issues.
After the conversion, I found myself with about 15 different images of varying resolution, angle and depth. Not being a doctor, I really had no idea what to look for in terms of diagnosing the injury. That really wasn’t my goal though. My goal was simply to see the inside of my knee, finding the injury myself would be a plus. On that hand, I think I may have found the spot on the meniscus that was torn, just bragging points if I got it right I suppose. Either way, it was still very cool to have a 3D image of my knee which I could freely move around, rotate or pull individual frames from. I highly recommend looking at your own MRIs if you have any. Just for the coolness factor of looking inside your own body.
The website which acted as a portal to all the MRI information I needed is on Chris Rorden’s web page. There are links to all of the software I mentioned as well as additional software and image format information. None of the programs I used are in the Arch Repositories or AUR, so I may package them at some point if there is a demand.
In a very unfortunate turn of events two nights ago, I managed to tear my meniscus (bucket-handle on the lateral). After meeting with my orthopedic, he recommended an MRI to get a better idea of whether or not I will require surgery to repair it, I’ll be going in for that later on tonight. I also understand that the imaging center will give me a CD containing the images for me to bring to the doctor. I fully intend on at least viewing the images myself as opposed to the two weeks until my follow-up appointment.
Now I’m on the search for some way to visualize this data on my computer. I really have no knowledge on actual MRI data formats, so that will be my research project for today. What I would like to know, is there any great MRI visualization software for Arch? How can I view these images on my computer as a 3D model as opposed to the 2D slices I see sometimes?
A few months ago, back while getting ArchLinux set up on my main system, I stumbled across a very nice piece of software. It is a DNS server proxy which will cache it’s results for near instant DNS lookups after the first. The software I am speaking of is pdnsd. The arch wiki has a very detailed guide to installing and configuring the software, a link is provided at the bottom.
After using this software for some time, I can say it seems to make my internet access a little snappier. Of course actual download speeds aren’t effected, but once a site is in the DNS cache I can sometimes get almost a quarter of a second quicker on the DNS lookup. It just makes the internet feel a little more responsive and leaves me overall feeling pleased with it’s performance.
One thing I do have to mention. I use network manager to access my wireless network and I had pdnsd set up properly for a while, but network manager was setup to use whatever dhcp provided. The issue wasn’t totally apparent at first, but all remaining bits of lag in Firefox seemed to disappear after I changed that setting.
Is there anyone else who regularly uses pdnsd, or another dns cache system? I’ve tried a few others without satisfactory results as with pdnsd so any feedback would be interesting to hear.
The CPU governor is a piece of software in the kernel which splits up your processors speed into time-based slices and then distributes these slices to the processes running on your system. In reality things are much more complicated than that, but an in-depth knowledge of their function is not required.
The BFS, or Brain Fuck Scheduler, is an alternative to the CPU governor included by the linux kernel by default. It is currently available as a set of patches to the linux kernel, or possibly as a pre-compiled kernel for your architecture/distribution. I haven’t had much luck installing the kernel packages. My first issue was with getting the proper packages installed, which took slightly longer than it should have due to a simple type that took me all day to catch. The next issue I ran into was with upgrades, it just didn’t seem to work properly. I kept running into circular dependencies and version mismatches and such. The main packages giving me issues would have been ‘nvidia-ck-k8′ and the VirtualBox ck-k8 kernel modules.
For the week or so that everything worked though, it was wonderful. BFS seemed to virtually eliminate lag. I was finally able to go tab-crazy in firefox, play minecraft and run a folding@home client without any noticeable lag. BFS does its job very, very well right out of the box. I felt no need to tweak anything at all.
In the end it was continued issues with the nvidia driver upgrades that caused me to go back to the stock kernel packages and thus the stock CPU governor. The difference is hardly noticeable as long as I keep the folding@home client closed and keep the number of tabs down in firefox.
I’ll probably be trying out the packages again in another week or two, just to see how things are coming along. I’d really enjoy using this cpu governor as my default. You probably will too, go give it a try!