My New Linux Workstation – Pure Awesome

XignuxFinally after a months of hacking I have my workstation running great. There were a few problems that I had to addressed, but I got through them and came out triumphant.

I received the Xigmatek case on a Monday night and I started to tear into it as soon as I got it in the house. I like the case. It’s pretty nice. It has a huge fan in the front and some nice styling lines. The ports on the side are in the wrong place because they will be up against the wall where I’m putting it but that’s OK. I don’t need to use them often.

no-room-power-supplyAfter admiring the case for a while I take the power supply and shove it into the bay only to find out that it’s too big. It fits in but the modular cables don’t have room to plug-in. Oops. This isn’t going to work.

I figure that I’m probably never going to use the drive bays in front of the power supply so I took out my cut off wheel and went to work. I sliced it open so I could feed the wires through and plug them in. Not too bad. This will be fine.

asus-rage-ivThe motherboard is beautiful. I haven’t been in the game for about 10 years. I haven’t looked at any custom systems recently and all the computer’s I’ve bought up to now have been Mac. I was expecting the same ol of this motherboard as I saw 10 years ago. I put my 32GB of ram in and my i7 4930 CPU on. Then time for a test fit.

I place the motherboard in to find they shorted me one stand-off. No big deal I can work around that. I dig through my boxes for another stand-off that fits. Nothing. Well, I’m not playing football with it. Motherboard mounted.

You should see this CPU cooler! It’s HUGE! The Noctua NH-D14 is highly recommended by many vloggers in the tubes. And no kidding. This thing has great specs. This will keep everything nice and cool for a long time. If I can keep it from filling up with dirt/dust.

lots-of-coolingSo I put my gigantic CPU cooler on the board and slip the board into the case. It hits the CD-ROM tray! No problem. Who still uses CD-ROM’s? I’m not using that bay so out it comes. No more space issue. Mounted cooler and fans no problem.

I then get everything plugged in and ready to go live. I can finally press that shiny silver button on this really cool case…

Nothing.

No status, no beeps, nothing. I think I spent two days trying to debug why the MB would not boot or even light up. Finally after reading the entire Internet I found out that the board is not compatible with my CPU with the current BIOS installed.

This is no problem because you can flash the BIOS on this board even without a CPU in it. Awesome. So I dig out a USB key, put the software on it. Plug it into the port on the back. Do the magic and….nothing.

I try, and I try all night. As a last-ditch effort I find another, old, USB key and put the software on. Boom! It works perfectly. Now I have the new firmware loaded. I’m keeping this key around for when I need it later. Tape it to the inside of the chassis.

At this point I have the motherboard stripped all down to nothing. So I build it all back up. This time I just build up enough to do a test. It boots! Then I put it all back together and jam it all back into the case.

Crucial-Ballistic-RamNext problem. It only shows 24GB of my 32GB of RAM. Not sure why. After messing around with BIOS and software for a while I ended up finding the problem. I removed all the RAM and tested each one. They all worked. I put them all back in and there was all my 32GB of RAM. So I guess I didn’t have one seated all the way.

I booted the system and started installing the software. Right away I noticed that the Video Card fan was super loud. After a few days of really loud fan I found a way to silence it. I wrote a short Ruby program to check the temp and set the fan speed. At 20% speed it was pretty quiet. It would never need to get above 30% and that wasn’t too loud either. Not sure why this isn’t something built into the card.

bad-video-cardAfter a while the card would bite me again. I had constant issues with bad video performance. When I scrolled web pages it was awful screen tearing. Turning on the feature to help with that only gave me other problems with the card. Flickering screens when anything was moving. Running out of on-board RAM. Not a good experience with it.

nvidia-nvs-510Finally I broke down and got another Video card. This time a Nvidia card. 100 times better. The default open source drivers almost work perfect. But I opted for the tested proprietary drivers to get a little better performance. The fan is silent and auto-adjusting. No more problems.

dell-ips-22So far I’m not super happy with my screens. I purchased three of the Dell IPS 22″ monitors. I really like them but I wish the resolution was just a bit bigger. I’m super happy with the actual size of them. 22″ was a good call. I’m running them in portrait mode so I have really tall screens. I wanted this because I deal with web pages and code. So tall is better than wide. But at only 1080 wide I’m running into not enough pixels to show a lot of sites well. I might have to reconsider this in a year or so.

Screenshot from 2014-04-11 16:58:35I also need to get a better keyboard. This keyboard was super cheap. Like $10. It’s a good keyboard for the price. But I can feel that I’m starting to wear it out. I do really love the full size keyboard though. After being on a notebook/ultra-portable keyboard for so many years its super nice to stretch out my fingers. Having all the keys without having to monkey with Fn key combos is super nice. The next keyboard I get will either be a kit or the WASD Keyboards 87 key bare bones with a custom key caps package. Since I spend about 8 hours a day typing, I should spend the money on a good keyboard.

Overall the system is really, really fast. I can load everything up and only get to 75% RAM usage. The CPU is over-clocked to 3.9GHz and I could take it up to 4.5GHz if I wanted. During the summer I think I’ll keep it low and maybe run it a bit faster in the winter.

I’ve been working on this post for about 3 months. It’s finally time to just press Publish on it.

Auto Video Card Fan Control For AMD Radeon 7770

xfx_r7770_core_editionWhen I got my new PC I wasn’t very happy with how loud the fan was on the video card. I picked up the XFX R7770. It was about $100 on Amazon. It’s an all right video card save a few small issues. One of the biggest issues is that the fan is so loud by default.

After searching and trying to figure it out I came across a tool that could set the fan speed (and over-clock the board). After figuring out the controls I was able to set the board to 20% fan. Perfect!

But there is a problem. It’s a hard number and not dynamic. I needed the fan to change depending on the temp of the card. The same tool that sets the fan can also report the temp. So I created a daemon for it.

#!/usr/bin/env ruby
# encoding: utf-8

#
# Required Gems
#
# gem install fallen clap
#

require 'fallen'
require 'fallen/cli'

def get_temp
  temp_str = `aticonfig --adapter=0 --od-gettemperature`
  temp_str.scan(/Sensor 0: Temperature - (\d+\.\d+) C/)[0][0].to_i
end

def get_speed
  speed_str = `aticonfig --pplib-cmd "get fanspeed 0"`
  speed_str.scan(/Fan Speed: (\d+)/)[0][0].to_i
end

def set_speed(speed)
  `aticonfig --pplib-cmd "set fanspeed 0 #{speed}"`
end

module Azazel
  extend Fallen
  extend Fallen::CLI

  def self.run
    @thresholds = [ 40, 60, 65, 70, 80, 85 ]
    @speeds     = [ 10, 20, 25, 30, 45, 50 ]
    @speed  = 100 # default speed

    pid_file "/var/run/quiet-fan.pid"
    stdout "/var/log/quiet-fan.log"

    puts "#{Time.now} Started."

    while running?
      temp = get_temp

      @thresholds.each_with_index do |threshold, index|
        @speed = @speeds[index] and break if temp < threshold
      end

      set_speed(@speed) if @speed != get_speed

      puts "#{Time.now} Temperature: #{temp}°C / Fan speed: #{@speed}%"
      sleep 10
    end

    puts "#{Time.now} Ended."
  end

  def self.usage
    puts "Quiet-Fan Usage:\n"
    puts "  quiet-fan.rb [ start | stop ]\n\n"
    puts "start: starts quiet-fan in the background"
    puts " stop: stops the background running quiet-fan"
  end
end

case Clap.run(ARGV, Azazel.cli).first
when "start"
  Azazel.daemonize!
  Azazel.start!
when "stop"
  Azazel.stop!
else
  Azazel.usage
end

I run this daemon from init.d and all is good. It can possible work for other cards and you can tweak it to fit even more.

It’s also possible that the card has something built-in but I haven’t found it yet. This works for me.

Mechanical Keyboards

Screenshot from 2014-04-11 16:58:35I find myself longing for a Mechanical Keyboard.

I know, I know. I just got a new keyboard with my new system. It’s a fine keyboard. I was $15 on Amazon. I do actually like it for the most part. But I keep looking at a fancy pants Mechanical Cherry MX Red switch expensive keyboard.

After all, I do spend 8 hours a day typing in the codes to make the interwebs work. I should probably have the best keyboard I can find, right?

WASD Keyboards has a nice one. I’m looking at the 87 key bare bones with Cherry MX Blues and a key caps package. $150!!!

It’s a great keyboard.

I should have a great keyboard.

So I’m saving up.

Ubuntu Gnome 14.04 Beta 2

trustyI’m sitting here waiting for my backup to finish so I can install Ubuntu Gnome 14.04 Beta 2. I’m actually booted into it and testing it out while I’m doing my backup. So far I really want it on my system. I want to really put it through the test with all my daily software.

The main reason I want to use it is the improvements for high DPI screens. My laptop is somewhere around 350 DPI. 13.10 was awful at this resolution and I kept trying to figure out how to get everything to look right. I use my system mostly for work and I don’t do much if any gaming or graphics. I spend most of my time in a text editor and web browser.

The web browser is where it all goes wrong. I have to zoom up to 150% so I can read most web sites. If you are one of those web developers that force 10 point font on everyone then get stuffed. The problem with zooming is that borders and columns stop lining up right. Pixels from one element to another are out of whack. Padding is different. So before I push the web sites out I have to set my zoom to 100% so I can see if the pixels are lining up right. Then I tweak for an hour before I can ship it.

So far with the improved resolution of 14.04 I haven’t had that issue. I am zooming sites to see if I can find any issues with the alignments and so far it’s been fine. By the way, Google Chrome is the worst offender of the problem.

Squirrel… Why is Google Chrome getting worse at rendering sites? Chrome was the best for a long time. I’ve been using Firefox to test things, because people have reported rendering bugs in Firefox, and I’m finding a lot of sites just work better in Firefox. eBay is one of them. Try to post an item on eBay in Chrome. I don’t know if it’s just my setup but it’s impossible. Half the posting screen doesn’t render. Works great in Firefox. Same problems with the BofA home banking site. There are things that just don’t work in Chrome anymore, and I’m using the latest “stable” version. Digress…

I really like the new version with the high res screen improvements. It was one of the few things that bugged me about Gnome Shell. I can’t think of anything else that I would change at the moment.

Thumbs up to the Gnome dev team!

My New Rosewill Keyboard

rosewill-keyboardThe keyboard that I ordered for my new workstation is the cheap Rosewill $14.00 slim low profile full size keyboard in black. It’s actually not too bad. I like the look of the keys. They are square and low profile as well, but not as low profile as laptop keyboards. I wanted something with a little bit more travel and a better sound. This keyboard hits those marks.

I wish it was a bit lower on the table though. It’s about twice as high as my laptop keyboard. I was expecting something a bit more “low profile”. It’s pretty wide too. I haven’t been on a full size keyboard for probably 8 years. I’m going to have to get used to the mouse being way far away. I might just switch to my left for mousing.

I’m typing 58 words per minute on it so far. That’s pretty good. I didn’t check my speed on my old keyboard, but that Dell has a horrible keyboard. The space bar doesn’t always work and you have to mash the arrow keys (I know I shouldn’t use the arrows, lol). The thing that really bugs me about most laptop keyboards is the left CTRL key is too far away. I use that key a lot.

I’m not fully sure if I like it yet, but it was only $14 so it’s OK if I don’t. I would love to try out a Das Keyboard someday. I would have to really, really like it to justify the price. Those keyboards are pricey. But they are suppose to be the best thing out there. I’m not sure. But typing in a all black term would bring back some memories. Late night coding sessions might be a bit noisy when Jane is sleeping.

Thinking About a Linux Workstation

Xigmatek-AquilaI’ve been playing around with the idea of building a new Linux workstation PC. My XPS13 is starting to feel a little cramped and I’d really like to have a bit more speed. Also the screen on my WindowsQA testing system died a few weeks ago and I can’t use it now. It is pretty weak anyway. It was like $250 from Best Buy.

I stayed up late last night checking out reviews and searching for components. I found some pretty cool boards and cards. Things sure are faster than they used to be 15 years ago when I last built a PC. My goal was to get something that compares to the new Apple Mac Pro. I think I’ve found something that’s pretty good.

Here is what I have so far:

So this package is $2,220 and is pretty nice. I can clock it to 4.8GHz, has 32GB RAM and nice SSD. It has a pretty good graphics card.

I think I would be pretty happy with this setup. And with this much power I could get rid of my WindowsQA desktop and just run everything in VM’s. It should also be great for compiling Go code. I’m kinda looking forward to it.

Update: I decided to go with a slightly bigger option of the Micro-ATX that can go up to 32GB of ram. Had to go to a bigger case. Don’t really like the case but it’s the best I can find so far.

Update 2: I added the 6 port video card because it was the same price as the 4 port and has twice the memory. Might as well.

Update 3: When NewEgg says “With Power Supply: Yes” that really means “No, it doesn’t have a power supply inside.” So I added a power supply to the mix.

Guard – Why Won’t You Auto-Run My Tests! (Fixed!)

I’ve been having this problem recently. I can’t figure out why Guard will not auto-run my tests when I change a file. On old projects I could edit a file, save it, and Guard would run tests on that file. Worked great. Jump forward to my recent projects. I have to manually run my tests and it’s a PITA.

I’m running Ruby 2.1, Ruby 2.1.1, Rails 4.0.3.

New Rails project

rails new test-project

Gemfile:

  source 'https://rubygems.org'
  gem 'rails', '4.0.3'
  gem 'sqlite3'
  gem 'guard'
  gem 'guard-minitest'

Guardfile:

  guard :minitest do
    # with Minitest::Unit
    watch(%r{^test/(.*)\/?test_(.*)\.rb$})
    watch(%r{^lib/(.*/)?([^/]+)\.rb$})     { |m| "test/#{m[1]}test_#{m[2]}.rb" }
    watch(%r{^test/test_helper\.rb$})      { 'test' }

    # Rails 4
    watch(%r{^app/(.+)\.rb$})                               { |m| "test/#{m[1]}_test.rb" }
    watch(%r{^app/controllers/application_controller\.rb$}) { 'test/controllers' }
    watch(%r{^app/controllers/(.+)_controller\.rb$})        { |m| "test/integration/#{m[1]}_test.rb" }
    watch(%r{^app/views/(.+)_mailer/.+})                   { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
    watch(%r{^lib/(.+)\.rb$})                               { |m| "test/lib/#{m[1]}_test.rb" }
    watch(%r{^test/.+_test\.rb$})
    watch(%r{^test/test_helper\.rb$}) { 'test' }
  end

Output when I change a file:

  11:23:26 - DEBUG - Stop interactor
  11:23:26 - DEBUG - Hook :run_on_additions_begin executed for Guard::Minitest
  11:23:26 - DEBUG - Hook :run_on_additions_end executed for Guard::Minitest
  11:23:26 - DEBUG - Start interactor

Output when I press [ENTER]:

  11:31:27 - INFO - Run all
  11:31:27 - DEBUG - Hook :run_all_begin executed for Guard::Minitest
  11:31:27 - INFO - Running: all tests
  11:31:27 - DEBUG - Command execution: bundle exec ruby -I"test" -I"spec" -r bundler/setup -r minitest/autorun -r ./test/controllers/thisisatest_controller_test.rb -r ./test/helpers/thisisatest_helper_test.rb -r ./test/test_helper.rb -r /home/phill/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/guard-minitest-2.2.0/lib/guard/minitest/runners/old_runner.rb -e "" -- 
  Run options: --seed 3898

  # Running tests:

  .

  Finished tests in 0.047909s, 20.8730 tests/s, 20.8730 assertions/s.

  1 tests, 1 assertions, 0 failures, 0 errors, 0 skips

  11:31:28 - DEBUG - Hook :run_all_end executed for Guard::Minitest

Here is my GIST of the problem: https://gist.github.com/Phill/9215877

Update!

I found this thread https://github.com/guard/listen/issues/155 that solved my problem. It had nothing to do with Guard/Listen. It was my text editor. I’m using Sublime Text 3 and with Atomic Saves turned on it would not trigger Listen for changes. Turning it off in the config fixed the problems.

"atomic_save": false

Minitest and CouchDB

I ran into a problem recently where I needed to reset the DB when I ran my tests to avoid duplicate inserts. There are plenty of tools out there for other databases including MongoDB. But nothing for CouchDB using CouchRestModel. But it’s easy enough to just build something. After all, it’s just a DELETE/PUT http call to the db server.

In my test_helper.rb I added this:

def reset_test_db!
  puts "\n*** Reset Database\n\n"

  @host = 'localhost'
  @port = '5984'
  @path = "/[mydb]_test"

  # Delete database
  request = Net::HTTP::Delete.new(@path)
  response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }

  # Create database
  request = Net::HTTP::Put.new(@path)
  response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
end

reset_test_db!

That’s all I needed.

Yeah, I know, I need to abstract out the database name. I’ll figure that out the next time.

Firefox v30 (Nightly Build)

FireFox

I’m really enjoying Firefox v30. The new interface is pretty nice. And I’m finding that it is a lot faster than Chrome for a lot of sites. I’m going to try to switch over, but there are a few sites that just work better in Chrome (Google sites).

I’m also finding that Chrome isn’t working for a lot of sites recently. Like BofA and AT&T. Not the greatest examples, but I use them enough that it’s annoying. Like sometimes when I click things nothing happens or it reloads the same page. Might be a JavaScript bug but I don’t know. Another tid-bit is that Firefox passes the Acid test 100% and Chrome does not. Not sure if that means anything though.

What brings me to Firefox recently was reported bugs viewing some of the web sites I’ve build. Easy fixes usually but strange they display fine in Chrome/IE but not in Firefox. So I need to use it more anyway.

I think I’ll use it as my non-work browser for a few weeks. Time to find all the extensions I use and get them installed. The default theme is pretty good, but could be a tiny bit better. Fits my use case better than Chrome. I need to find a good ad blocker. FireFoxAdKiller doesn’t really seem to work all that well so far. Probably just me.

Anyway, I think I’ve typed enough words to be a decent size blog post. Back to my Chef server scripts…

New Chopper In The Works

I purchased a 1970 Harley Sportster a month ago to build as my next bike project. It’s pretty sweet and I got a great deal on it. I’ve already tore a bunch of stuff off and started mocking things on it. I purchased a narrow springer at the last Ace swap meet along with a nice mustang tank.

The plan is to put the springer on and frisco and dish the tank for it. I currently have the springer at Ace to be refurbished. I’ve also started on the tank. I’m going to get a new rear wheel with a disc setup.

I’m planning on having this done in March/April.

Finally a Kickstand

kickstandgangsta-leaning

Well, I finally got around to welding on a kickstand. Gesh, should have done this in June before I blew up my knee. I’m also able to kick my bike over now and ride a little bit. I should be riding next month just fine. Whoo hoo!

That Dang Knee

 

knee

So I was on my way to Born Free and before I even made it into CA I blew out my knee. It was so silly and totally my fault. Since I didn’t put a kickstand on my bike I’ve been using the kickstarter to lean my bike on when I park. So I pull in the clutch to release the motor and push the kickstarter down then lean it over. This was working out pretty well.

Pretty well until I blew up my knee because of it. I was at a gas station and just finished topping off my gas. I went to kick start it and in mid stride I pulled the clutch in. With a very strong kick and nothing behind it my knee just gave out. I couldn’t even walk. It sucked.

So now I’m hobbling around on crutches and can’t ride.

Problems with Cam Chain Guide

As I was riding I was hearing some grinding in the motor. Mostly likely the cam chain guide. Checked the oil filter and sure enough, full of filings. So I ordered up a new cam chain, guide, and filters.

Finished and Riding

Got it all running and it’s looking great. It is totally comfortable to ride now too.

 

Rebuilt Hardtail

Shortened

It’s been three months and two weeks since I dropped my bike off at Ace Cycles in Sparks. I dropped it off to have the hardtail redone. I wanted to take 4 inches out of it. We figured out it was an 8″ stretch. Wow, no wonder why I was having problems.

I didn’t get it back in time to do the EDR run in Mexico. But I’m planning on doing Born Free 5 in LA coming up in 5 weeks. So I need to get cracking on this to finish it up.

Things I have to do:

  • Mount new fender (half way done)
  • Mount tail light
  • Mount new seat
  • New footpeg mounts
  • New rear brake lever
  • Clean up all welds
  • Route wiring
  • Test everything for about 20 miles
  • Tear down
  • Paint frame

It’s going to be hard with working 80 hours a week, but I’ll get it done. I really want to have it done by next weekend so I can use it for the grand opening of Reno Collective. But I don’t think I’ll make it. Next deadline is for Street Vibrations. That’s on June 7th-9th.

I’ll keep ya up to date on my progress.

 

Back On Linux – Dell XPS 13 Developer Edition

It’s been a few days on my new Dell XPS 13 Developer Edition. I have to say, it’s a very nice computer. Linux runs great on it and it has plenty of system resources to run my applications.

The computer is a few inches smaller than the size of my MacBook Air, but the the screen size in pixels is much bigger. It has an HD screen that’s 1080px tall. Very nice. The screen is sharp and clear. The XPS is also very fast with Linux on it. I can scroll web pages without maxing out the CPU like on my MBA. There is also no delay in loading web sites in Chrome. I haven’t had any issues with compiling apps or running CPU intensive programs.

With the pre-installed 8GB RAM I was finally able to run my Linux server VM without memory warnings. Not only that but it runs really great. It opens fast and boots my Linux server image quickly. Very nice for testing my Chef scripts before committing my changes.

One of the first things I did after setting up the pre-installed Ubuntu was to go to Gnome.org and install the Gnome-Shell desktop. I like it much better than the Ubuntu Desktop. It’s more clean and easier to use with the default settings. I haven’t used Linux in 10 years and my last desktop was Enlightenment. I tried out E17 recently and I guess I’ve just outgrown it. These days I’m more into getting things done.

Linux. It’s nice to be back on Linux. Things are so fast and it’s easy to find apps that I need to do my work with. It’s also what my apps run on when I deploy them to my servers so it makes sense to run the same OS. I was also getting tired of the Apple decisions going into Mac OS X. The OS was getting slow and even more locked down than ever. I recommend all programmers to make the switch (or anyone else for that matter).

One thing I’m looking forward to after I finish my current side job is to start building some Linux apps. I see there is a few things that I would like to have that don’t exist yet. I miss my Divvy app from the Mac and there is also a need for something like Little Snitch. Those are only a few ideas but I have a ton. I want to bring a lot of the apps that I used on the Mac over to Linux. Can’t wait for spare time.

I’ll chime in with another report next month on how things are going. I’m sure things will be fine.

Narrowed It Down To These Three

I’ve narrowed my choices down to these three computers:

Computer CPU Memory Screen Drive Price
Dell XPS 13 DevEd 2.0 – 3.2GHz Dual-core i7 8GB 1920 x 1080 256 SSD $1550
Thinkpad X1 Carbon 2.0 – 3.2GHz Dual-core i7 8GB 1600 x  900 256 SSD $1860
MacBook Pro 13 Ret 3.0 – 3.7GHz Dual-core i7 8GB 2560 x 1600 256 SSD $1900

I’m leaning towards the Dell because it has a really nice screen, it’s cheap, and it comes with Linux pre-installed. The Mac does have better specs and probably a lot of nice features. Mostly things I will probably never use like Thunderbolt. I’m going to run Linux on it also, so I need something that will work well. Linux on the Mac isn’t the best experience. The XPS is almost the same thing as the Thinkpad but a much better screen and price.

So hard to pick a new computer. But I have the cash in hand and I’m ready to buy this week.

Great To Be Back On Linux

It’s been a few weeks on Linux and I’m finally getting used to things again. 10 years on Mac was a really long time. It doesn’t seem like much has changed on Linux, but I’m sure there is a lot I haven’t seen yet.

It’s much faster than OS X. Uses much less CPU for the things that used to max out my system. On the Mac just scrolling a web page would tweak it. Not anymore. Chrome runs much better (using the official Google package). Ruby is much easier to use too. I’ve switched to rbenv and I really like how simple it is.

I do miss some of the cool Mac tools I’ve been using for the last few years. But I think I’ll find replacements soon enough. I’m pretty sure that I’m not going back. Not sure what my next computer will be though. I’m still thinking about a MacBook Pro. I can’t find a better computer out there. And I’m sure Linux will run just fine on it. ;-)