Let me make sure I have this straight: 65 million years ago a meteorite slammed into a box containing a cat and a small amount of radioactive material. The cat and the radioactive material exploded and caused the Big Bang, which turned the cat into multicats and “dark matter” (and, with cats, I think we all know what that is!). It was then this endless army of visible, semi-visible, invisible, and possibly dead cats, drunk on red wine, attacked and killed all the dinosaurs, who are secretly trying to clone themselves using the small wrenches, screwdrivers, drills and other tools used in quantum mechanics. Is that close enough for Einstein, or does there have to be some math involved?

TomHughes1

Feminism for Men →

Feminism is going to make it possible for the first time for men to be free.

At present the ordinary man has the choice between being a slave and a scoundrel. That’s about the way it stands.

While on one hand, I am concerned about taking a philosophy and a movement that is about raising the status of women in our society and making it all about us (men) again. On the flip side, if this convinces people that feminism isn’t as simple as people make it out to be, then maybe it’s worth something.

What Kindergartners Might Teach Us About Test-Based Accountability →

I generally really like Matt Di Carlo and the Shanker Blog. They do a good job of explaining a lot of the problematic math behind test-based accountability. However, even from the “moderates” in this debate, the thing missing are the actual kids. Nowhere in the discussion is whether it’s worthwhile for kindergarteners to spend their time TAKING A TEST (and all the test prep that goes along with it).

This post is part of the thread: Testing & Standards in Education – an ongoing story on this site. View the thread timeline for more context on this post.

Installing btrfs as boot drive on Ubuntu 14.04

I recently upgraded my home server; it was previously running Ubuntu 12.04, but it was kind of a mess. I had a 1TB internal drive with 3 separate external drives, running on a HP ProLiant G7 N54L MicroServer. I wanted to accomplish a few things in one fell swoop:

  1. Upgrade to Ubuntu 14.04 LTS.
  2. Switch to a RAID11 set up with btrfs.
  3. Rearrange my directory set up more logically.

One of the interesting things about btrfs is you can convert an ext4 filesystem to btrfs non-destructively. btrfs maintains a subvolume with the old ext4 data that you can revert to if something goes wrong. Additionally, you can change RAID levels on a live system without any downtime, as well as add or remove drives to your array that way as well.

So after doing some research, I decided I had two options:

  1. Upgrade my current system to 14.04, convert the ext4 filesystem to btrfs, add 2 4TB drives, convert to RAID1 and balance the data, rearrange the directory structure, and remove the original 1TB drive.

    Reason I didn’t go with this: I had some concerns about upgrading to 12.04 “live”, which is required because btrfs wasn’t available in that version.2 I wouldn’t have any backup or way to revert to my old system if something went wrong. Additionally, I had some software installed on my old system that I didn’t really need (MySQL, Apache, plus some drivers for scanners and other things), and a clean install would give me a chance to wipe and reconfigure everything over again.

  2. Clean install 14.04 and reinstall/reconfigure everything

    This would take a heckuva lot longer than the first option, but would leave me with a new clean setup after I was finished.

Installation Process

Step 1

Start off by installing Ubuntu 14.04 Server the normal way, with a normal partition structure. A lot of places suggest separating out the /boot partition, but this is no longer necessary. The standard installer will install GRUB to the MBR, so we can boot from there without an issue.

I left off all the software except OpenSSH when I got to the tasksel step. Feel free to do what you’d like there.

Step 2

Once installed, boot into the system and make sure everything is working as expected. Run sudo apt-get update && sudo apt-get upgrade to make sure your software is updated completely. You’ll probably have to reboot afterwards.

Step 3

Boot from a LiveCD and follow these instructions to convert the ext4 system you currently have to a btrfs system. The only thing you should note is the line you prepend with the hash looks a little different:

if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi

Step 4

After you’ve converted to btrfs, boot up. Fingers crossed, everything should boot fine. I ran into an issue where I updated my Linux headers after booting and grub was giving me issues. I had to rerun grub-install and update-grub before it would boot properly.

Step 5

To add the second drive, run the same commands to partition the whole drive as btrfs, then run sudo fdisk -l to get the device name. In my case, it was /dev/sdb, so you’ll see that used in the commands below. Make sure you sub out your device name.

sudo btrfs device add /dev/sdb /
sudo btrfs filesystem show /

You’ll get this result:

Label: none  uuid: 2b182d08-ae86-423c-8825-22f10554fdca
Total devices 2 FS bytes used 60.68GiB
devid    1 size 3.64TiB used 3.64TiB path /dev/sda2
devid    2 size 3.64TiB used 0.00 path /dev/sdb

Btrfs v3.12    

I don’t know why it shows up as full after the initial mount, but that problem was fixed when I ran the balance command.

I also fiddled with getting them to mount correctly before successfully adding it to the root drive. A lot of tutorials keep telling you to add to /mnt, but don’t listen to them – we’re using it as our main drive so add to /.

After its been added, balance the drives:

sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /

dconvert converts the data stories to RAID1, mconvert manages the metadata.

The balance command is where a lot of the magic happens. btrfs is able to rearrange the data into whatever setup you’d like.

Converts to:

dreedle@pianosa:~$ sudo btrfs fi show /
Label: none  uuid: 2b182d08-ae86-423c-8825-22f10554fdca
Total devices 2 FS bytes used 59.97GiB
devid    1 size 3.64TiB used 62.03GiB path /dev/sda2
devid    2 size 3.64TiB used 62.03GiB path /dev/sdb

Btrfs v3.12

  1. Currently, btrfs doesn’t completely support RAID5/6, plus I only had two drives to work with, RAID1 was pretty much the only option. I could have gone with RAID0 for more space, but the point of switching to this set up was the redundancy, not the space, though I did end up with more space after I consolidated everything. 

  2. This is actually one of the big pluses of btrfs: for future upgrades, I can take a snapshot of the drive as it stands now, upgrade to 14.10 (whenever it arrives), and it if doesn’t work, I can boot from the snapshot, and it’s like nothing ever happened. 

This post is part of the thread: Project: Home Server – an ongoing story on this site. View the thread timeline for more context on this post.

If we expect tech to fix our society, who will fix our tech?

The other part of last week’s post that I didn’t touch on was the issues I have, often raised by Evgeny Morozov1, with the moral implications of any single piece of technology and more importantly, the collective impact of our technologies combined. In the particular case of the digital cup, the moral trade-off might be worth it.

A suggestion raised on Facebook was we as human may simply not have the cognitive bandwidth to gather all the information we need to eat healthy, and that offloading it to a device like this will confer more benefits than problems. I’m not sure if I’m convinced that’s better than reforming our food systems. It’s certainly easier, but if we believe our social obesity or health issues are solvable via individual technology, then we become incapable of dealing with problems on a social level. We can’t (or won’t) reform our food systems if we think better tracking solves the problem.

More generally, these are the questions we don’t ask ourselves when we adopt technology like this. What are we getting? What are we giving up? What cognitive and moral instruments get blunted when we make these trade-offs?

And I don’t mean the handwringing of concerned parents over their children’s use of social media, or the plight of the Disconnectionists, but the deeper loss of our own collective ability to solve problems when we turn over certain decision-making to devices. If we can’t decide for ourselves what food to eat or what to drink, how are we expected to tackle global warming, for example?

More importantly, when we expect technology to solve our bigger problems, the problems that get solved by technology are those experienced by a very particular group of people2. Technology is increasingly being used to the solve the problems of technologists. For all the talk of the web as a means of democratization, technology still comes embedded within it the power structures of society as a whole. It’s developed by white men for white men, and we’re not going to work on wider-impact problems if we turn that process over to this small elite group.

The experiences of the technorati are not the same as the rest of society. Who’s problems are being solved exactly?


  1. Who I quote and reference frequently here. 

  2. It’s the reason I included #whitepeopleproblems in the title of the previous post. #snark 

This post is part of the thread: Technology & Society – an ongoing story on this site. View the thread timeline for more context on this post.

Vessyl, #whitepeopleproblems, and Silicon Valley’s Insularity

Making the rounds today is this article from Valleywag, highlighting a video from Vessyl1 with “tech’s finest thought leaders” calling the cup “indistinguishable from magic.” Because that’s just how Silicon Valley rolls.

As I posted on Facebook, I basically have two problems with this device:

  1. The fact that some guy in Silicon Valley dedicated 7 years of his life to designing a technologically-enhanced cup is simply a colossal misplacement of time and resources when we have much more pressing issues to be dealing with as a society. It is increasingly becoming apparent to me that SV and the tech industry are focusing their t on #whitepeopleproblems.

  2. While I am very pro-technology generally, I don’t think we think enough about the mental processes that will atrophy as we outsource more of our moral/social thinking to technology like this. Like, if we can’t say no to soda because a machine didn’t tell us not to, we’re screwed in much more significant ways.

In this case, I had more of a visceral reaction to first.2 I’m frustrated that we’ve gotten to the point where our thought leaders in technology think a smart cup is a “revolution.” We have a group of people who are so insulated from the real, lived, day-to-day lives of people in the rest of this country

Don’t get me wrong: The people behind this cup are likely brilliant engineers, but therein lies the rub. The greatest minds of our generation think our biggest problem is not knowing how many calories are in a cup of soda, or coffee, or whatever. He spent seven years working on this thing. You have to be really divorced from the daily struggle if this is where you look when you’re trying to solve problems.

And so this becomes the narrative of tech and Silicon Valley generally. For them, all the “hard problems” are either solved or aren’t worth the time to investigate. Or something. Let’s not worry about hunger, poverty, lack of health care, or any of the myriad issues that we need to deal with.

This is not a revolution, people. This is not the world-changing technology you are looking for. This is a toy, a curiosity for wealthy techies who already have all their basic needs met, a solution to #whitepeopleproblems, not #realworldproblems.

And this is the culture we’re left dealing with. Silicon Valley doesn’t reify solutions to tough problems; it’s all flashy toys for the technorati.

That wouldn’t be a problem if they were to admit that’s all they’re doing, but Silicon Valley is the new Wall Street: a culture that’s primarily doing very mundane things that acts like it’s doing the Lord’s Work.

You’re not. Sorry.


  1. It’s basically a smart cup that tells you things about what you drink: calories, caffeine and the like. 

  2. The second is basically just channelling my inner Evgeny Morozov. 

This post is part of the thread: Technology & Society – an ongoing story on this site. View the thread timeline for more context on this post.

Behind the Machine’s Back: How Social Media Users Avoid Getting Turned Into Big Data →

This is interesting insofar as some of the more obtuse practices on social media does make it difficult for the algorithm to do its job, but framing that as the purpose, rather than a side effect, is simply wrong. Most people aren’t terribly conscious of their actions as it relates to algorithms, and these things, especially subtweets, are more akin to social markers (as someone who’s in-the-know) than deliberate attempts to avoid being tracked.

This post is part of the thread: Technology & Society – an ongoing story on this site. View the thread timeline for more context on this post.

ParseCSV and PHP Curling

One of the things that came out of the BatchYouTubeUploader was this nifty little object class, ParseCSV, which I use to manipulate the CSV file for uploading the videos. I know it’s going to find a lot of use, and in this case, I wrote this little script to loop through a CSV and download a bunch of images. Just note you have to have allow_url_fopen set to true, as per this StackExchange post.

require("ParseCSV.php");

$csv = new ParseCSV("youtube-images.csv");
$n = 1;
foreach($csv->data as $data) {
  if(false != file_put_contents("pics/{$data['filename']}.jpg", file_get_contents($data['url']))) {
    $log = "File {$n}: Downloaded {$data['filename']} from {$data['url']}\n";
  } else {
    $log = "File {$n}: Download from {$data['url']} failed\n";
  }
  print $log;
  file_put_contents("output.log", $log, FILE_APPEND | LOCK_EX);
  $n++;
}

This post is part of the thread: Project: BatchYouTubeUploader – an ongoing story on this site. View the thread timeline for more context on this post.

Test