Project Sputnik: Manual Installs

Dell promises that eventually Project Sputnik laptops will ship with:

Profile tool: a software management tool to go out to a github repository to pull down various developer profiles such as javascript, ruby, android.

The beta version of the laptop doesn't include this tool. I expect I'll end up wiping and reinstalling more than once, so I'm going to keep track here of what I end up installing by hand. When we get to the Big Rock Candy Mountain, I expect the profile tool to take care of all this for me.

Project Sputnik image

Firefox Nightly


sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa
sudo apt-get update
sudo apt-get install firefox-trunk

Firebug

Installed within Firefox from the 1.11 alpha build share.

Sublime Text 2


sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text

Dropbox


sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E
sudo add-apt-repository "deb http://linux.dropbox.com/ubuntu $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install nautilus-dropbox

The box does ship with git installed (good) but the ruby is fairly ancient (bad): 1.8.7p352.

libxml2

My main project needs nokogiri, which depends on libxml2 to build. So…


sudo apt-get install libxslt-dev libxml2-dev

libcurl

Required for the curb gem.


sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev

libsqlite

Dependencies, dependencies everywhere.


sudo apt-get install libsqlite3-dev

rvm

Change the default gnome terminal options

Pay attention to the rvm requirements output, and install them all before continuing. If you skip this, things will appear to work until you try to run irb and get readline errors.


curl -L https://get.rvm.io | bash -s stable --ruby
rvm pkg install zlib
rvm pkg install openssl

NOTE: Do not pkg install readline. This will bring pain.

NOTE: Install 1.8.7 under rvm before 1.9.3 to get readline support in irb.

This also brings in ruby 1.9.3-p194, which is what I'm using for most things these days. The ruby compilation was the first thing that kicked the fan on the XPS 13 into high gear.

MySQL

I prefer PostgreSQL, but my main project these days is on MySQL, so that's what I set up as client and server. Need to install the development libraries so I can compile the mysql2 gem later, too.


sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install mysql-workbench
sudo apt-get install libmysql-ruby
sudo apt-get install libmysqlclient-dev

Wuala

Where I store a lot of passwords and whatnot.

PhantomJS

For integration testing.


wget http://phantomjs.googlecode.com/files/phantomjs-1.6.1-linux-x86_64-dynamic.tar.bz2
sudo tar xvjf phantomjs-1.6.1-linux-x86_64-dynamic.tar.bz2 -C /usr/local
sudo ln -s /usr/local/phantomjs-1.6.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

Double Shot #951

The struggle this week is going to be getting work hours in between Scouting and new laptop.

Project Sputnik Report #1

Fedex dropped off my new Dell XPS 13 laptop today, courtesy of the Project Sputnik beta program. (Full disclosure: Dell gave me a 20% off coupon for the hardware when I was accepted to the beta program). Yes, dropped off: the driver left it on our doorstep and rang the bell. Amusingly, I got an automated call from Fedex an hour later telling me a signature would be required for the nine buck video dongle that was shipped separately.

I've got two primary reasons that I'm interested in this program. First, I'm tired of paying the Apple tax. Macs have been good machines, but they're high-priced (even higher when you add the mandatory Apple Care, because the hardware quality isn't really all that good) and increasingly locked down. Second, I'd love to have a laptop that knew how to install stuff for me, rather than wasting two days every time I need to rebuild.

The XPS 13 is a sexy little beast. Feels very solid, to the point where the iPad feels flimsy by comparison. As with just about any hardware today, there's next to no paperwork in the box, but there is fancy packaging that makes it clear the Dell guys opened a Mac or two on the way to designing the experience. The packaging weighs about three times what the computer does.

I opened it up, plugged it in, and peeled off and tossed the Dell and Windows 7 stickers. There's a permanent Windows 7 logo on the bottom, but I can live with that. Then I prepared to boot from the Project Sputnik USB key that I made on the Mac desktop box yesterday.

First hurdle: actually getting a bootable USB key with the Project Sputnik install image. Just about every computer I have running these days is a Mac, and Ubuntu says "Reversely, you can't create bootable USB flash drives for other platforms than Macs from withing Mac OS X" (the meaning is clear even if their proofreading is bad). Having discovered this, I cranked up my one old Windows test box with the slow network card, and a couple of hours later had a USB key that works. There was swearing involved, and apparently one of the USB keys I had will not be bootable no matter what. Anotehr appears to have random bad sectors. (Fortunately, none of this will be necessary with production systems, which will have the right disk image pre-installed.)

The "hard drive" is a SSD, so cold boot to login is fast - under ten seconds. That's nice. Next step was to start exploring. As far as I can see, it's a stock Ubuntu desktop. First thing I did was switch the trackpad over to two-finger scrolling so switching back and forth from Macs wouldn't drive me nuts. Even with that though the touchpad is clearly going to drive me nuts until I find some documentation; even selecting text is tough. Next was to update Firefox to Nightly and install Firebug, since that's where I spend much of my time. That was easy, as was the Sublime Text 2 install.

Somewhere in there the Update Manager popped up and wanted to update 148 packages, so I let it.

Of course, all of this involved grubbing around in Terminal and running sudo apt-get whatever commands for ages, which is decidedly not what Project Sputnik promises. But the tools for maintaining developer profiles and easily updating the box don't exist yet. So it looks to me like my testing will divide into two chunks. First, does the box have enough horsepower to handle my everyday development tasks, and hardware that won't drive me up the wall with poor ergonomics? Second, will the developer profile tools make Linux easy enough to use that I won't want to tear my hair out? Stay tuned. For the moment, I'm synching a bunch of stuff from my dropbox so I'll have things to work on.

Double Shot #950

Another one of those Tuesday-is-Monday sorts of weeks.

  • Heck Yes Markdown - Convert web pages to Markdown. It more or less works.
  • Fallen - Simple library for daemonizing ruby processes.

What's New in Edge Rails #36

Week of August 27 - September 2, 2012

  • A bunch of tinkering with ActionView internals is summarized with a doc commit at daa0ed3a. THis includes the deprecation of ActionView::RecordIdentifier and the deprecation of Template#mime_type, the latter in favor of type. The overall goal is to make it easier to extract ActionView from ActionPack in the future.
  • 810a50da splits up the CHANGELOG so that it's separate files on separate branches.
  • Rails bumps its bundler dependency to 1.2 in 5f99bdbe. Time to upgrade.

Double Shot #949

"Meetings" looms as the theme for this week.

  • Meny - Kinda spiffy 3D CSS menu concept.
  • pry-rescue: How to use pry for just-in-time debugging.
  • Knockback.js - A combination of Knockdown and Backbone that claims to be more RESTfully pure than either one used alone.
  • S3 for Poets - Reasonably simple introduction to getting files up and serving from Amazon S3.
  • Github Resumes - Cute. GitHub will automatically build a brag page from your repos.
  • App.js generator - Build together various bits of JavaScript that you might need in an Express.js application.

Double Shot #946

One thing's for sure, I'll never run out of work in this job.

What's New in Edge Rails #35

Week of August 20 - August 26, 2012

  • e6747d8 decouples eager loading from class caching.
  • 2801786e moves from config.preload_frameworks to config.eager_load_namespaces, allowing you to register any Ruby namespace from your application for the eager loading process.
  • As of 73c02220, ActiveRecord::SessionStore has been extracted from Rails into a separate gem.
  • The update_attribute saga continues. 50bdb924 reverts the commit that removed it, so as of right now it's back in Rails 4.0.

Double Shot #944

Poison ivy status: slowly healing.

Double Shot #943

And another week staggers into the weekend.

  • colResize - Easy jQuery table column-resizing plugin.
  • DJ Mon - Rails engine front end for Delayed Job with an iPhone client.
  • pow-debug - Hook pry, debugger, or ruby-debug into projects served by Pow.
  • Capture the Flag 2.0 - Learn about web security by breaking into deliberately-insecure sites.

Double Shot #942

Here's to another productive day.

  • Deface - Rails 3 plugin that allows you to customize views by supplying chunks of HTML that are applied by using Nokogiri-style CSS selectors.
  • Telehash - Protocol for any sort of distributed peer-to-peer network that wants to pass JSON around.
  • Airbrake - The art of fingerpointing - Announcing integration between Pivotal Tracker and Airbrake.
  • Polish Your Gems - Some code patterns that have proven to be useful in ruby gems.
  • Capybara 2.0 Upgrade Guide - It's in beta now, so time to start looking at it.
  • Immigrant - Generate missing foreign keys in your Rails application for use with foreigner.
  • Kibana - Spiffy-looking browser front end for logstash.

Double Shot #941

Insomnia, thy name is poison ivy.

Double Shot #940

Ordinarily I try to love all of God's creatures, but I'm not feeling it for deer ticks about now.

What's New in Edge Rails #34

Week of August 13 - August 19, 2012

Looks like there's some focus on ActiveRecord optimizations currently. That's work that many people will welcome.

  • DHH's routing concerns plugin gets merged to the main line at 0dd24728b - documentation is at 0bd7b07d. This lets you tidy up your routes.rb file by declaring common reusable resources.
  • 0d0d4622 adds Request#formats=(extensions) to let you set a prioritized list of multiple formats to use in response.

Double Shot #937

Today: Girl Scouts. Tomorrow: 12-mile hike. Somewhere in there: code.

  • Zapier - Integrations for various online services with a drag-and-drop trigger/action builder.
  • Cachex: tag based fragment caching on steroids - Another cache invalidation strategy for Rails apps with nested partials.
  • rack-attack - Middleware to handle whitelisting, blacklisting, and throttling.
  • Git Landscaping - How to clean up old remote feature branches.

subscribe via RSS