Posts Tagged ‘free software’

Ruby on Rails Workshop for Women

Wednesday, October 21st, 2009

When I first heard about the Ruby on Rails workshops for women organized by Sarah Mei and Sarah Allen in San Francisco, I was jealous that they were on the opposite coast. But lo and behold — the very same event came to Boston last weekend! (Yet another reason why Boston is awesome — the academic/technical community is conducive to cool events like this.)

The event was targeted at women (though some men attended, too) who were either new to programming or new to Ruby; I volunteered as a TA to help answer students’ questions (along with a bunch of super friendly and knowledgeable people from the Boston Ruby community, which is awesome; too bad their meetups generally conflict with improv classes for me). The whole thing was awesome! I loved getting to meet/know better people in the Ruby community and meeting new people who were just getting started with Ruby. There were people from a wide variety of backgrounds there — i loved helping people get their code to do stuff! Some of the students I worked with were clearly smart enough to follow the install instructions and workshop handout on their own, but they just needed some hand-holding and moral support as a motivation to actually do it — which is why events like this are so key to getting people involved in Ruby/programming. I also loved when students got really excited about their code doing stuff — a reminder of why I got into programming in the first place, because I love the high that comes from seeing code you’ve been tweaking suddenly work.

Teacher Sarah and organizer/TA Liana both blogged about how well the event went. A lot of the students, TAs, and organizers tweeted about it too, mostly saying great things!

Unfortunately, I can’t attend the followup Open Source Code Crunch activity organized by Liana, because I’m already involved with a project at the Free Software Foundation on Wednesday nights. (Why yes, I am a huge nerd!)

Facebook Data Store API Ruby Client

Thursday, October 1st, 2009

Through Parallactic, I was commissioned to work on a Ruby project with the Facebook Data Store. As far as I could find, there wasn’t already a client in Ruby for this (the official Facebook-provided client is in PHP, and the useful Facebook Ruby client facebooker hasn’t added support for the Data Store), so I wrote one!

This is the first (but hopefully not the last!) piece of potentially-useful code that I’m publishing under an open-source/free software license, so I’m pretty psyched. You can download the code on GitHub! It’s licensed under the MIT license — which means you can do pretty much whatever you want with it — and it doesn’t require Rails.

Enjoy! And drop me a line if you find it useful :).

Software Freedom Day

Wednesday, September 30th, 2009

A couple weeks ago I attended Boston’s Software Freedom Day event — a day-long meetup/conference for local free software users, developers, and supporters.

I’ve been using and thinking about and talking about and installing and writing about free software for a few years now, but this was my first experience meeting up with a group of people who I could already assume subscribed to the free software philosophy, understood the motivations behind it, and used free software in their daily lives. Which was awesome! The feeling of community in the room was quite cool.

The event was set up so that pretty much anyone who had something to say could give a short talk at some point; there were also pre-planned longer speeches and a keynote by RMS (which was pretty ranty and non-technical, and included a characterization of using “their” as a gender-neutral third-person singular as “absolutely disgusting” — I’ve been losing some respect for RMS lately). Most of the speeches were super-interesting; there was a talk about antifeatures, with some pretty egregious examples from a variety of fields, and I learned about OpenLibrary — psyched to have an API to access book info without being forced to use Amazon’s API!

There were also a heartening number of women there &mdash about 20% of the audience, and a few of the speakers (only about 1.5% of F/OSS participants in general are women — way fewer than even the small number of female programmers in general). I got to talk to FSF membership coordinator Deb Richardson about some of the interesting initiatives being taken to increase women’s participation and comfort in F/OSS, which I definitely hope to get involved in!

No Sound in Firefox in Jaunty — SOLVED!

Sunday, April 26th, 2009

I upgraded to the new Ubuntu, Jaunty Jackalope, on the day it came out. “At last!” I thought. “Time to solve the problems I created for myself by upgrading to a non-Long-Term-Support release last fall!” Dreaming of a world in which pulseaudio didn’t randomly need to be restarted every few hours, I started the upgrade running… only to load Firefox and discover an even worse fate — no sound in anything Flash-based! No Pandora!! PANIC TIME!!!

Anyway, it turned out to be super easy to fix. Just go to Adobe’s website and download the .deb of the latest Flash, then install, restart Firefox, good to go. Now I can get my Sarah Haskins1 fix complete with sound!

1Feminism in one breath, from an interview with Haskins:
The core issue “how do I fight bias against me because of my gender” is still there but has gotten more complicated and wrapped into all kinds of identity issues about how you present yourself as a woman and I pretty much think it’s your choice and fuck pantyhose.

Windows Vista and Ubuntu Dual-Boot (Gateway T-1628; resolving install error 0×80070017)

Thursday, March 12th, 2009

So Internet Explorer 7 has been out for a while now, and I finally caved — I can’t get it to work using the wonderful ies4linux, so I need to have a copy of Windows available to test sites in action.

Fortunately I still had the re-installation disc from the copy of Vista I wiped from the laptop when I got it. Here’s how I set up my dual-boot:

  1. Burn an Ubuntu Live CD; boot from that CD, and launch the GParted partition editor from the System > Administration menu.

    Note: This step is where I ran into the most issues. I tried to create a new partition for Windows, following the instructions from this guide — but the Windows install would freeze at “expanding files 0%”, and later give me error # 0×80070017. Googling suggested that this error might have been a problem with the disc, but that didn’t really make sense since this was a factory disc. Eventually I figured out that it just meant there was some problem communicating between the disc and the hard drive — Vista didn’t like the partition I’d set up after my Ubuntu partition.

    Here’s how I solved this issue: I used GParted to move my Ubuntu install forward on the disk, then created a partition (without formatting it) for Vista at the beginning of the drive. Then — since Ubuntu’s bootloader was still at the beginning of the drive, and Vista gets confused when it sees that trace of another operating system — I needed to zero out the new partition, with dd if=/dev/zero of=/dev/sda1 where sda1 is the new partition. Warning! If you try to use that command without knowing what you are doing, you may well zero out your whole drive!! ALWAYS HAVE BACKUPS.

  2. Put in Windows CD; choose “Custom Install”; select the new partition as the destination (it should be called “Unallocated” or something — it was pretty recognizable after my work with GParted); click through until it starts installing; wait a LONG LONG time.
  3. Boot into Windows! Plug in ethernet cord; reboot to install drivers, etc. that allow me to have nice things like correct screen resolution and wireless internet.
  4. Use the Ubuntu Live CD and these instructions to restore my bootloader and set up dual-boot
  5. Happily choose between Ubuntu and Vista every time I boot up!

In general, this install would have gone a lot smoother had Vista been able to peacefully coexist with another bootloader. Different versions of Linux have no problem living on different partitions, and when you have an existing Windows install, you can easily install Linux in a separate partition without any confusion. But then, I guess that’s because Linux is designed to be used the way its users want to use it, and Windows is designed to be used the way Microsoft wants you to use it.

Using Vista a little bit gave me a better appreciation for people who try Linux and don’t care for it — I found myself disliking things about Vista just because it was unfamiliar and didn’t come set up the way I like it. But even though I know I could customize it and get more comfortable with it, I’ll still stick with Ubuntu for most of my computing, since I know it’s what ultimately gives me the most flexibility.

New Blog Software!

Monday, October 27th, 2008

This blog is now powered by Wordpress! I switched over from Blogger in part because Wordpress offers more features and extensibility — like that tasty tag cloud over there — and also in part because I keep the free-as-in-beer-and-speech Wordpress code on my own server, where I can read and modify it, or not, to my heart’s content. Ah, delicious freedom!

Plus, Wordpress was not only super-easy to install and set up, but importing all my old Blogger posts and implementing redirects from the Blogger page addresses and feeds to the new versions took just a few minutes. It’s not surprising that Wordpress is considered the best blogging platform out there!

It’s sporting the default Wordpress theme for now, but expect an exciting redesign of both this blog and my portfolio site in the coming weeks!

Familiarity Now vs. Effectiveness Later

Monday, May 26th, 2008

It’s a familiar adage that an effective user interface is designed to be familiar; users don’t like to encounter systems that make them think on the first try, which usually means they like to encounter interfaces that are as close as possible to the ones they’ve encountered before. This is on my mind because I’m currently learning the interface for a new music player; it has quite a learning curve, based in large part on its unfamiliarity (not that “File” is the most reasonable choice, in hindsight, for a menu name, but is “Engage” really any better?). But the more I dig into Amarok, the more I realize that it’s incredibly full-featured, and it’s just not possible to display every feature in a commonly-understood way; once I learn the basic operations, they seem straightforward and natural.

I’m reminded that the high learning curve is a common criticism of Linux — you’ll have to learn the command line, or my favorite text editor (of course! Ctl-@ Ctl-n Ctl-n Ctl-w Ctl-y to copy and paste a couple lines!), or the Gimp, or any number of unfamiliar solutions to familiar problems. But many people, once they learn these solutions, realize that the initially tricky solution can be more efficient in the long run, and that difficult-to-figure-out interfaces are often so because there are so many things you can do with them (Photoshop’s advanced features aren’t too intuitive to figure out, either).

Building a familiar interface will allow quicker adoption of your product; but a lot of the software people are loyal to the longest doesn’t necessarily have the most intuitive interface, but the one that helps you get things done once you’ve learned it.

Command Line Magic

Monday, May 19th, 2008

Using the command line rather than a graphical interface is one of the things that a lot of people find most intimidating about the idea of using Linux. While (my last post notwithstanding!) you can accomplish most things without ever opening up the Terminal, I’ve grown more and more enamored of using the command line whenever possible.

I found gaining fluency with the command line to be like apprenticing to a magician; at first, you utter the magic incantations syllable by syllable knowing only what will result from the whole. But the more spells you learn, the easier it becomes to notice that each part has meaning, eventually acquiring the knowledge to recombine them in ways you’ve never seen and feel confident that you can predict what will result. Once you gain experience, it’s simply faster to rattle off a handful of magic words than to navigate through the space of the graphical desktop.

If you have a Linux or Mac OS X machine, you can try this at home (Windows has a command line too, but it’s not as integrated with the rest of the system and uses different syntax). Open the “Terminal” application and give it a try:

echo 'hello world'

will print the phrase ‘hello world’

pwd

will give you the name of the directory you’re currently in

ls

will list all the files in your directory

cat groceries.txt

will print the contents of groceries.txt (if groceries.txt is a text file) to the screen

man grep

will print the manual page for the command grep

Commands can have arguments that modify their functions:

ls -l

will list all the files in your directory, in a longer format

firefox &

will launch firefox in the background

The output from a command can be piped into another command:

cat groceries.txt | grep apples

will grep (search) for the phrase ‘apples’ in the printed text of groceries.txt

ls | grep groceries

will search for ‘groceries’ in the list of files in the current directory

echo 'bananas' >> groceries.txt

will append the line ‘bananas’ to the bottom of the file groceries.txt

Not only that, but commands can be used to search for other commands:

man -k search

will give you a list of the names and short descriptions of all the commands whose short descriptions include the phrase ’search’

Share folders between two Ubuntu computers on the same LAN with NFS

Saturday, May 17th, 2008

While most things about Ubuntu work pretty much the way you want/expect the first time, one exception is sharing folders between two computers on the same LAN (”Local Area Network” — in this case, multiple computers in the same house sharing an internet connection via a router). Surprisingly, it’s easier/more intuitive to do this between an Ubuntu computer and a Windows computer! I wish Ubuntu would make a more intuitive, graphical way for non-technical users to do this — though I certainly have fun tinkering with these things and learning more about networking (or what-have-you) as I go.

Through some command-line magic, I’ve gotten my laptop to be able to access the music folder on my desktop — right now I’m playing music on my laptop that’s actually stored on my desktop’s much bigger hard drive. Sweet! How did I manage this?

Say you have two computers, both running Linux (in this case they’re both running Ubuntu and I can’t vouch that this will work on any other distro, but I suspect it would) — the server, which has the folder you want to share on its physical media, and the client, which will connect to the server and access its data.

On the client:
1. In a Terminal window, run

sudo apt-get install nfs-common

— this installs the software you’ll need.
2. Run

ifconfig

to find your IP on the local network; it should look something like

inet addr:192.168.1.101

(If you see more than one instance of “inet addr” in the output of ifconfig, choose the address that doesn’t begin with 127.)

On the server:
3. In a Terminal window, run

sudo apt-get install nfs-kernel-server

4. Edit the

/etc/hosts

file and add a line that looks like this:

neuron 192.168.1.101

where “neuron” is replaced with the hostname or a nickname for your client (in this case, “neuron” is the name of my laptop) and “192.168.1.101″ is replaced with the IP you found in step 2.
5. Test this — in a Terminal, run

ping -c 1 neuron

(or whatever name you used) and see if you get a response. If you get a response like “unknown host”, something is wrong — re-check your work from the previous steps (and check that the two computers are really on the same network!). If you get a response like “… 64 bytes from neuron… 1 packets transmitted, 1 received … ” then everything is hunky-dory so far and you are ready to move on!
6. Edit the

/etc/hosts.allow

file and add a line that looks like this:

ALL: 192.168.1.101

(again, use the IP that you found in Step 2).
7. Edit the

/etc/exports

file and add a line that looks like this:

/home/music 192.168.1.101(rw,sync,subtree_check,no_root_squash)

where again 192… is replaced with the IP from step 2, and “/home/music” is replaced with the full path to the folder you want to share. Note that for some reason it is important that the parenthesized arguments don’t have a space between them.
8. Run

sudo /etc/init.d/nfs-kernel-server restart

9. Run

ifconfig

and get the IP of your server, the same way that you found it for the client.

Back on the client!
10. Edit

/etc/hosts

and add a line like

192.168.1.103 boffin

where “192.168.1.103″ is replaced with the IP of your server (from step 9) and “boffin” is replaced with the hostname/nickname of your server (”boffin” is the name of my desktop).
11.

ping -c 1 boffin

to check that this worked, just like in Step 5.
12. Make a mountpoint for your shared directory — in my case, I used

mkdir /media/boffin-music

13. Mount the shared directory at the mountpoint, like this:

sudo mount -t nfs boffin:/home/music /media/boffin-music

replacing “boffin” with your server’s name, “/home/music” with the location on the server of your shared folder, and “/media/boffin-music” with the mountpoint you created in step 12.
14. Now you should be able to browse to the mountpoint and see your shared files, and open them, and use them. Awesome!

Gateway T-1628 and Ubuntu Linux

Wednesday, May 14th, 2008

I posted recently about buying a new laptop — how is it working out, you may wonder?

Pretty well overall. The screen has remarkable clarity, the keyboard is comfortable, and the battery life is okay; on the other hand, the speakers are the quietest and tinniest-sounding speakers of any computer I’ve ever owned/used extensively. At 14.1″ for the screen, it’s just a little bulkier than I’d like (the 12″ iBook was a perfect size; how come computers that small now seem to be a luxury item?), and I’d prefer a slot-loading drive to the tray DVD drive it has. But overall it meets my needs, for now.

Judging by a quick Google search, I’m probably one of the first people to install Linux on this particular machine. It was a little tricky to find an install disk that would boot correctly; it’s a 64-bit machine, but the Hardy 64-bit installer had a problem with xorg and the Gutsy 64-bit disk had a problem with the installer. The Gutsy x86 disk worked fine — though I had to use the partitioner to wipe the entire disk rather than creating a partition alongside the Windows partition, since this computer came with a hidden partition with a “backup” install of Windows Vista. This seems like a particularly egregious invasion of the user’s freedom to use the computer as they wish — fortunately, blanking an entire hard drive still works!

Wireless and sound didn’t work right away; I used Ndiswrapper to install the RTL8187B Realtek driver, which I was able to download from the internet. To get sound to work, I needed to install linux-backports-modules-generic, run alsamixer and turn everything to unmuted/full volume, and reboot.

I did the installation process the day before Hardy’s official release; on release day, I used the updater to install the new release, and everything that had been working before still worked fine. I still haven’t gotten around to fixing suspend/hibernate, which didn’t work out-of-box, but I’m optimistic that I’ll get it going when I have more time to tinker.