Justin Tyler Wiley

Work, Play, Thoughts

February 14, 2014 at 6:41pm
0 notes
Share & Bookmark
I just released a new gem, an implementation of the visitor pattern in Ruby named Vampire.

I just released a new gem, an implementation of the visitor pattern in Ruby named Vampire.

February 12, 2014 at 11:17am
0 notes
Share & Bookmark
High Scalability has an excellent, accessible article on Little’s Law, and how it fits into the threads vs. event-driven debate. 

High Scalability has an excellent, accessible article on Little’s Law, and how it fits into the threads vs. event-driven debate. 

November 21, 2013 at 7:00pm
0 notes
Share & Bookmark

Great Stats Reference →

sample bootstrap plot

I stumbled across NIST’s Engineering Statistics Handbook, a great applied introduction to exploratory data analysis, and a great alternative to wading through Wikipedia.  Need to know what an F-test is and how to interpret it in one page or less?  Look no further.

NIST is apparently in the process of updating the examples to use R instead of their somewhat obscure Dataplot software.

August 22, 2013 at 1:55pm
0 notes
Share & Bookmark

Linear Regression →

Nice discussion of mathematical foundations behind linear regressions.

May 31, 2013 at 10:10am
0 notes
Share & Bookmark

Task Lists to Fit a Doctor’s Mind

Rob Lamberts has an interesting article on the Health Care Blog about the steps a physician goes through when deciding the best course of treatment for a patient.  He discusses how the simple act of ordering lab results can lead to nine or more repeated steps a doctor has to stay on top of, for each patient they treat.

May 16, 2013 at 6:28pm
0 notes
Share & Bookmark

Assume for a moment that you’re watching a sports match involving a ball on a flat monitor, not in person. The monitor probably contains a million pixels, and the ball is represented by, say, a thousand pixels. In most sports, we’re concerned with the position of the ball at a given time. For your brain to follow what’s going on, you need to follow the position of the ball on the playing field. You do this naturally, without even thinking about it. Behind the scene, you’re converting the million pixels on the monitor into a three-dimensional image showing the ball’s position on the playing field, in real time. You’ve reduced the data from one million dimensions to three.


Peter Harrington, Machine Learning in Action

A great description of dimensionality reduction.

October 11, 2012 at 7:19pm
0 notes
Share & Bookmark

Changing of the Guard: From MacBook Pro to System 76 Gazelle Professional

Today I received my new work machine: A Gazelle Professional laptop created by System 76.  This system marks a big change in how I do software development for a number of reasons.  It replaces my existing Core2Duo based MacBook Pro with an Ivy Bridge based i7, and it marks my professional transition from Mac OS X to Ubuntu.  A number of factors influenced me to move to Ubuntu, but my primary considerations were the need for greater similarity between my development environment and my software applications production environment (also Ubuntu), and my growing disillusionment with Apple’s emphasis on proprietary, closed-source, un-upgradable technology.

System 76

Dell’s XPS-based Sputnik project initially seemed like a promising way to move to Ubuntu.  The selected XPS system unfortunately proved to be a little under-whelming, since it only included 4 GB of RAM, which was not upgradeable.  
Other alternatives, like Lenovo, seemed likely to work well with Ubuntu, but after spending hours of frustration trying to get Ubuntu working on a Dell Vostro and generic HP notbook a few years back (windows only trackpad drivers?), and bad experiences returning mail-order systems (Dell shipping me 2 systems with bad LCDs out of the box), I knew that I couldn’t afford the time and heartburn required to wrestle Ubuntu onto incompatible hardware.
Since System 76 is all about Ubuntu compatible systems, and since they offer hardware that is modern and user-upgradeable this didn’t seem like it would be an issue.  I had another trequirement however: fast, full-disk encryption (FDE).  Many projects I work on operate in an environment that falls under HIPAA regulations, which require protected health information (PHI) to be encrypted at every point possible.  Since I may come into contact with PHI I need FDE, but my daily software chores are IO intensive (running tests which thrash the database, building libraries), so I was concerned about the performance impact of running FDE using a software solution like TrueCrypt, and also concerned about installation hassles.
Intel 520 Full-Disk Encryption

It turned out System 76 laptops optionally ship with an Intel 520 solid-state drive.  The Intel 520 has FIPS-197 compliant AES-128 encryption baked into the drive controller, which operates transparently and with no (apparent) performance impact.  While I would have preferred a sub-15 inch form factor, I discovered that the Gazelle Professional was the only option that included the BIOS settings necessary for it to operate as of October 2012.
After evaluating a few different options, including a new 15’ MacBook Pro with Filevault 2, and a few months of hand-wringing, I eventually pulled the trigger and purchased a Gazelle.  I chose to bump up the stock i7 processor to the 2.6ghz i7-3720QM variant, add 4 Gb of RAM so it would have a total of 8GB, and swap out the default 500 GB drive with the Intel 520.  After consulting with the sales reps at System 76, I also added on the matte-screen to hopefully reduce glare.
Un-Boxing and Configuring the Gazelle
9 days later, the system arrived on my doorstep, amazingly enough in perfect condition.
The packaging is very functional, and entirely fails to live up to Apple’s package design wizardry.  Since I generally send the box straight to recycling / landfill, I’m not disappointed.
System 76 did provide a nice little “thank you for buying” message, which confirms that they are a small company, and still interested in making a good impression on their customers.
The system also came with two NVidia inside stickers…which was an exciting prospect since I had expected only the stock Intel 4000 display device.  This turned out to be totally in-accurate, no NVidia inside, only the Intel 4000.  The stickers were a surprising over-site, since System 76 sales people told me they had no laptops with dedicated GPUs, its rather mysterious as to how they ended up there at all.
Plug-in and power on all went as expected (it turned on).  The boot-up speed was incredible: I pressed the power button, saw the BIOS screen, took a sip of coffee…and it was waiting for me to enter my timezone.  I estimate 5 seconds?  I can safely say its fast enough.
Plug-in and power on all went as expected (it turned on).  The boot-up speed was incredible: I pressed the power button, saw the BIOS screen, took a sip of coffee…and it was waiting for me to enter my timezone.  I estimate 5 seconds?  I can safely say its fast enough.
The matte finish on the display worked as advertised.  It functioned well in a high-glare, broad-daylight environment, and seems to beat out out my elderly MacBook in terms of subjective view-ability at all angles.
Setup took around 10 minutes, including time spent doing software updates.  As pleasant a process as configuring a new OS install can be, possibly with a few more steps than a Mac.  Nothing onerous, no required Apple ID or Windows ID.
All the hardware: display, keyboard, trackpad, wireless, bluetooth worked out of the box as expected.  System76 installs their own driver package, which apparently handles all of this quite well.
Configuring Intel 520 Full-Disk Encryption
I did, however, run into problems setting up encryption on the Intel 520.  There was no indication in the BIOS that I could set a drive password, which is required to enable Intel 520 FDE.  After a few futile Google attempts, I contacted System 76 support, and got an answer from the support staff within around 45 minutes.
The solution was to update the BIOS firmware, which was a little complicated in that it required 2 USB keys.  One key was imaged with FreeDOS, the other with FAT32 and the BIOS drivers.  After power-cycling, selecting the FreeDOS USB as the boot device, and then switching to the other USB key and running the flash update batch file, it worked, however.  The BIOS now presented me with several new options, which allowed me to set a drive password.
It’s not clear why the stock system does not have this enabled in the BIOS, from what I can tell the version of the BIOS did not change after flashing.  I assume the build techs could handle this for you at order time if requested.  Unfortunately this wasn’t the turn-key process I hoped for, hopefully System 76’s process will improve as in-drive FDE becomes more common.  Support was fast, accurate, and did not require the multiple hour long phone calls, transfers, and support escalations that Dell and other larger vendors force you through.
The system racks up impressive Geekbench scores, comparing very favorably with mac systems costing $1000 more.
After several hours of use, and time spent typing up this blog post, the system is working well so far.  The transition from my MacBook Pro has been seamless in terms of ergonomics, the keyboard is roughly analogous (a few more keys), and the form-factor is basically the same (slightly large view area, about 0.25 inch greater width).  Like the MacBook pro, it’s uncomfortably warm, but in the keypad area, instead of on the bottom.  I find the track-pad somewhat inferior to the MacBook, in that the sensitivity can’t be adjusted (the GUI slider was by default set all the way to minimum, changing has no affect), but perfectly usable.  It is even larger than the old, pre-unibody MacBook Pro, but approximately the same weight.
All-in-all, the sales experience, support and the Gazelle itself have all been solid. I’m looking forward to setting up my development environment and seeing how the Gazelle performs.

You're settling for good when there's awesome.  Upgrade to Firefox 3.6!