Archive for July, 2011

Thursday, July 28th, 2011

Goodbye John!

Goodbye John (Felius), LibraryThing’s long-time sysadmin.

John’s been great to us. He took on a system under severe scaling strain, going down all the time and held together with string, and he sized it up and made it reliable. He moved the whole system from Portland to Boston, and made it both safer and faster (example, example). After almost four years with LibraryThing, John is moving on to Engine Yard, a Ruby-on-Rails cloud-hosting provider. His work and his company—John was a lot of fun to chat with at night—will be sorely missed. John promises to hang around as a member. He’s been one since 2005—long before we hired him.

We finished hiring John’s successor. More news soon.


PS: John managed to time his exit to System Administrator Appreciation Day. Believe me, we appreciate ’em.

Labels: sysadmin

Thursday, July 28th, 2011

The LibraryThing programming quiz!

Want to apply for one of the technical jobs at LibraryThing? Take the test below. If you can do it in under five minutes, let’s talk!

Background. I’ve been spending a lot of my time going through (read: “drowning in”) applications for our 2-3 open technical jobs. And I’ve been conducting a few interviews. The latter has demonstrated to me again the value of asking applicants to write code, especially simple code, during the interviews.

That interviews should involve simple code is now common wisdom in programming circles. The story is that a high percentage of programmers, even people with impressive resumes, “just can’t code.” Asked to do the simplest things—problems a good coders could solve as fast they could write—some spend ten or twenty minutes before they get an answer, or fail entirely. (See discussion by Jeff Attwood and Joel Spolsky.) I don’t go as far as others here. I think a lot of “slow coders” are probably excellent employees, making up for it in other areas. Some projects don’t need speed. Some people just need to spend more time programming; everyone was a slow programmer some time. But I know from experience that slow coders don’t work at LibraryThing. They don’t fit the LibraryThing development culture.

“Simple code” is critical. When I first started interviewing I’d ask people to solve hard problems. This didn’t work. As Spolsky’s famous “The Guerrilla Guide to Interviewing” argues, however, simple problems are just as good, or better. Simple problems test simple skills, and simple skills are the basis of complex ones. A programmer who struggles to loop through a bunch of words will be at sea performing far more complex tasks. If you can’t boil water your Toad in the Hole is likely to come out wrong.

Coding tests irritate a minority of people. One applicant said his resume should speak for itself. I have no time for that attitude—though I’m happy for the weeding help. Good programmers should welcome the opportunity to demonstrate they’re good at what they do. Heck, most programmers I know enjoy brain teasers anyway. They test themselves when no one’s looking.

The rules.

  • Time yourself.
  • Write this code in any language you want. Use your best language. If you can do many, PHP, Python and Javascript are preferred.
  • Write it out longhand or in a simple text editor.
  • I don’t care much about syntax. You can fix whether it’s isArray or is_Array later. If it has some obvious bug you’d fix in a second, fine.
  • This is not a trick question.
  • I’m not asking for some imaginary “best answer” that does everything in one line of self-writing code, or whatever.

The problem.

Input is a string—a paragraph of text. One of the paragraphs above would be fine.

Output is a report listing how many words there are with X letters, like:

10 words with 1 letter
20 words with 2 letters
7 words with 3 letters
15 words with 4 letters, etc.

How’d you do? Programmers employed by LibraryThing can do this in between 45 seconds and four minutes. We expect you to be in that range. If you’re applying for the sysadmin position you can be slower. (We think good sysadmins need to be able to program, but you don’t need to be a crackerjack programmer.)

If you’re in that ballpark in any language, go ahead and and apply!

UPDATE: We are NOT approving comments with the solution. We don’t want people to be exposed to it when they read this—it would defeat the purpose. We’ll approve them after the job is filled.

Labels: Uncategorized

Thursday, July 28th, 2011

Feature: Where did you get your books?

By popular demand, I’ve added a feature for members to keep track of where they got their books. “From where?” takes two answers, either venues from LibraryThing Local, including bookstores and libraries, or “free text.”

You can find the feature:

By default, members’ “From where?” data is public—unless their account itself is set to “private.” If you want to record the information but not share it, you can do so. The option is available on your account page and when you add a “From where?” location under “Privacy.”

Come talk about it here.

Labels: new feature, new features

Wednesday, July 20th, 2011

Legacy Libraries 2.0: lists, clouds, and more!

Thanks to some fantastic work by Chris Holland (conceptdawg) we’ve just launched a brand new homepage for the Legacy Libraries project, chock full of interesting features and data:

http://www.librarything.com/legacylibraries

It includes the ability to search the contents of Legacy Libraries (LLs) as a whole or by selected subsets; you can also browse LLs by category (like Authors or Signers of the Declaration of Independence), and see a whole series of clouds about the libraries.

For each category of Legacy Library, like Authors, we’ve added new status markers (complete, in progress, proposed, unitemized), and you can sort each list by status, name, date, or library size.

We’ve also integrated data about the Legacy Libraries into a slightly modified version of Common Knowledge, so each library, regardless of completion status, now has an LLCK profile (here’s John Adams’) containing data about the person and their library (largely for cloud-creation purposes, among other things). Feel free to augment this data, but please do read the help page first, since there are some differences between this and the way other CK edits are done. Any questions, just let me know (jeremy@librarything.com, or jbd1 on LT).

This LLCK data allows us to do some really interesting things, like display proposed and unitemized libraries well for the first time (example) and also keep better track of project status. We also, at long last, have a way to highlight the many members of LT who’ve worked so hard on these projects over the (nearly) four years we’ve been cataloging Legacy Libraries (see the contributors cloud at the bottom of the page).

You’ll also notice some integration of these new features on profile and author pages, and Chris has whipped up a handy “Featured Legacy Libraries” module for your homepage (by default at the bottom of the right column).

For more on this, see the Talk thread, and as always, let me know if you have data on a library we should add or further information about any one already on our radar. Submissions of library data are always welcomed and appreciated!

Labels: common knowledge, legacies, legacy libraries

Tuesday, July 19th, 2011

Technical jobs: Work for LibraryThing

IMPORTANT UPDATE July 28, 2011: Jobs are still open. Programmers should also look at The LibraryThing Programming Quiz.

LibraryThing is hiring! We’re looking for smart, fast, diligent and creative people to work in Portland, Maine or remotely.

There are four “jobs” out there, which we expect to be filled by 2–3 people.

  • LibraryThing.com programmer. Work primarily on LibraryThing.com. We have a lot planned. We need you to help us do it.
  • Library programmer. Work primarily on our library products, LibraryThing for Libraries and Library Anywhere. Both products are growing fast–already in over 400 library systems around the world. Library Anywhere is a technical marvel.
  • Designer-developer. Help spruce up LibraryThing and LibraryThing for Libraries.
  • Systems administrator. We recently advertised for a Systems Administrator. We may keep that a separate position or distribute responsibilities between old and new technical staff.

Technical skills.

  • Necessary. LibraryThing is made with PHP, mostly in non-OO code. You should be a sure-footed, experienced and rapid PHP coder.
  • Core. JavaScript (with JQuery, Prototype), CSS, MySQL.
  • Bonus. Python, Solr, library systems and formats (OPACs, MARC, etc). A library degree is a definite plus—we have three MLSs on staff now. Publishing or bookstore experience is also a plus.
  • Design. The standard software and a keen eye.
  • Systems administration. If you think you could help out here, see the systems administrator job for more details.

Intangibles.

  • We like to hire people who care about books and libraries, and believe in a open and humane vision of the future for both. We live to create technologies that make readers happy and keep libraries vital.
  • LibraryThing is an informal, high-pressure and high-energy environment. Programming is rapid, creative and unencumbered by process. We put a premium on speed and reliability, communication and responsibility.
  • Working remotely gives you freedom, but also requires discipline and internal motivation.
  • All LibraryThing employees interact with members and/or libraries.
  • We develop and refine ideas together. We need your ideas and your criticism as much as your labor.
  • We do so much and with so many technologies, learning is a job requirement. Mentoring is somewhat limited by distance, so you need to be able to learn on your own.

Location

LibraryThing is headquartered in Portland, Maine, but most employees are remote. We’d love to find someone local, but remote is fine. Unless you’re in Australia, we expect you to visit the office for group meetings from time to time.

Compensation

Salary plus gold-plated health and dental insurance. We require hard work but are flexible about hours.

Gustatory

An excellent recent hire forced us to rethink our cheese-lovers-only requirement, and as much as Abby and I might want requirements to love wine or coffee are probably illegal. So this is the first LibraryThing job post without any food requirements. However, if you are partial to any of these, we can, um, guarantee you’ll get what you want at the LT office.

How to apply

Send an email and resume to jobs@librarything.com. Instead of a cover letter, go through the blog post in your email, responding to it, especially the skills and intangibles part.

Labels: employment, jobs