Letters to My Congressman

My local congressman, Buddy Carter, sends out a weekly newsletter and this week’s was a doozy. I don’t normally write to him, because I’m not sure it does any good, but I had to in this case.

Here’s what I wrote. Feel free to use it and write to your representatives.


In your latest newsletter you say the following: “I believe committing this horrific act removes all civil liberties and they should be investigated in whatever way is necessary. This is now an issue of national security and it is ridiculous that Apple is not participating in the investigation of known murderers and terrorists.”

This paragraph shows an amazing lack of understanding of the Constitution and our fundamental civil rights, and a failure to grasp the most basic facts of not just what the FBI is asking Apple to do, but the FBI’s own actions that led to where we are right now.

I’ll leave the constitutional questions to someone else, but the technical ones are simple:

  1. Creating a backdoor, ANY backdoor, for the FBI means that Apple will have to give that backdoor to any government in any country they do business in. Submitting to this request of our government means that they have to give that back door to repressive regimes in China, the middle east, etc.
  2. Creating a back door, ANY back door, in encryption or security means that back door can be exploited by any one – good guys, bad guys, terrorists, etc.
  3. The FBI wouldn’t be in this situation if they hadn’t asked local law enforcement to change the suspects’ Apple ID password. If they’d left it as is, Apple could have gotten into their account and given the FBI whatever they wanted – as they have done in many many cases.

This isn’t a simple case, but just demanding that Apple do what the FBI asks denies the complexity of the issues and weakens security for everyone.

We need strong encryption, unfettered by ill-informed and ill-advised government demands, for ALL of us to be safer. Any weakness at all can be exploited by the bad guys just as easily as the good – and like people are so fond of using the 2nd amendment as a “check against unchecked tyranny” – strong encryption is an even better check against that tyranny, and not just in the US.

I ask that the government get smarter, that our representatives gets smarter, about thinking about how to perform their duties and catching criminals than asking the innovative companies that drive our economy to get dumber.

Thank you for your time,

Kevin Lawver

Some Huck Hacking

I used to work on a big search product at AOL and still love search, even though that’s not what I do anymore. So, when I saw that IndexTank and Heroku were having a contest to build a cool app with IndexTank’s search-in-a-box, I couldn’t resist. I knew I had to keep it simple since I don’t have a lot of time for hacking outside of work, but I knew I had to do something.

I had two ideas, and went with the simpler one: What would happen if you broke a book down into individual sentences and made it searchable? Would it be useful at all? I decided to try Huckleberry Finn by Mark Twain, since it’s not too long, is public domain, is quotable and full of vernacular that can screw up indexers, and I knew it was available from Project Gutenberg.

I grabbed the text file, cut and pasted each chapter into individual text files and then wrote a Ruby parser to split it up into paragraphs and sentences, which were then written to javascript files. After that was done, I wrapped it in a simple Rails app to display each chapter and paragraph, and then fired all the sentences at IndexTank.

I call the result… Huck Smash, and I think it’s pretty cool.

It was a lot of fun to write an app without a database or ORM, just a bunch of javascript files that Ruby can read and an extremely limited scope. I know it probably won’t win, but it was a lot of fun to write and only took a few hours to put together. Writing the text parser was a lot of fun, and figuring out how to navigate the book and build out the HTML so you can link to an individual sentence was cool.

I’m going to try to spend more time outside of work playing with single-purpose sites and fixing Ficly up. I need to keep things constrained so I don’t bite off more than I can chew or over-commit, but this was so much fun I want to do it again.

I’d love to hear what you think of Huck and any ideas you have for improvements.

Thank You, Open Source!

Thank you
“Thank You” by Darwin Bell

I read Zed Shaw’s blog post on the decline of open source participation last week and it got me thinking about just how much open source software we use at work and how we’re (mostly not) giving back to those communities. So, here’s the first step in me becoming more involved and giving something back, even if it’s just a huge “thank you”. I am trying to be more involved, especially in the MongoDB and MongoMapper communities. I’m probably not going to be contributing code to either, but I’m fairly active on the mailing lists, have reported bugs and am committed to help with the MongoMapper documentation project.

Excuses aside, here’s a list of the big open source things we use on a daily basis and why we love them:

  • Apache – The webserver that holds everything together. It’s used by most of the web, and we use it too.
  • Ruby on Rails – Rails lets us do more faster. We also use a bunch of gems that I’ll list later on.
  • Sinatra – When you don’t need everything that Rails has (a simple API, for example), then Sinatra is perfect.
  • Passenger – Deploying Rails apps used to be a pain. Not anymore! Thank you, Passenger!
  • MySQL – Need an RDBMS? Well, we use this one. And it works pretty darned well.
  • Memcached – We cache everything we can, and memcached helps us do that.
  • MongoDB – We use it because it’s web scale! (if you get that joke, then you’re in the club!) Seriously, we first started using MongoDB just to collect our stats because we’d maxed our poor MySQL instance. Then, I looked deeper and realized it’s perfect for the big top secret thing I’m working on now. Atomic updates and super-fast inserts make it perfect for collecting a lot of data quickly. And it’s now slouch on the query side either. There’s also a great community behind MongoDB. The updates and improvements are frequent and the community is always willing to jump in and help.\
    It’s a nice hybrid between the new school document store databases and a traditional RDBMS.
  • Beanstalkd – A super-fast queue server. It just works, which is why I love it. We queue everything we can. Why? It’s a great way to meter load. If you can only handle 3 jobs running at once, then you only run 3 workers. If you can handle more, you run more. It’s great!
  • And of course, all of our servers are Linux and run hundreds of open source packages that I don’t even worry about.\
    Since our strength lies in Ruby, we try to do everything in Ruby that makes sense. I’m not going to list all the gems we use, but here are a few of my favorites – the ones that make life easier and make programming all day more fun.
  • MongoMapper – Makes working with MongoDB even more fun. I’m on the MongoMapper mailing list, and it’s one of the most supportive and helpful communities I’ve been a part of. It makes using it more fun.
  • memcache-client & beanstalk-clent – they’re how we talk to memcached and beanstalkd
  • hashie – Allows you to very easily create classes built around hashes. Great for wrapping around API’s.
  • typhoeus – My favorite of the many HTTP clients for Ruby.
  • will_paginate – Now I don’t need to do all the horrible gymnastics needs to add “previous” and “next” links to things! THANK YOU!
  • hpricot – My favorite way to parse HTML – with CSS selectors!
  • aws-s3 – A great interface to Amazon S3 (where we store a bunch of stuff)

There you go. That’s pretty much our entire stack. I left out a bunch of gems – most of them we don’t use directly – or that just provide one or two things.

So, thank you to all of the creators and contributors to open source projects out there, especially the ones we use to make our work easier. The web would be a much smaller place if there weren’t dedicated geniuses out there making this stuff, and the world would be a poorer place for it. I promise to be a better member of the community and contribute where I can!

Murray Wilson Is Awesome

My pal Murray Wilson does great things – he and AWOL take kids the system doesn’t want and teaches them to take apart, clean and refurbish computers the system doesn’t want – computers that would otherwise go to the landfill.

They then put linux on them and put them out into the community with families that need them. He’s one my absolute favorite people in Savannah (nay, the world) and I’m proud to know him.

The computers will, of course, end up in the landfill eventually, but the “Goon Squad” gives them easily another 2-5 years of life, and the kids learn useful and marketable skills. It’s a win-win, and an amazing program and Murray and AWOL built from the ground up.

If you can spare it, AWOL can always use some help. Every little bit helps, and every kid they help is one that’s not in the juvenile justice system or out on the street by themselves.

Murray is awesome in the best sense of the word.

Hello, Ficlets

It’s been a very long day, and it’s not over yet, but I couldn’t let the day be done until I posted about this. Today, we took the covers off of the project that I’ve been working on for the past three months: ficlets. It started as this little thing I was going to do all by myself to learn Rails, and ended up what you can see over on the site.\
I don’t even know what to say about it, really. Cindy, Jason and I have been dancing around it so long on twitter, calling it Ape Shirt, that talking about it now in the open feels kind of weird. But, here we are. There’s more information about what it all means on the ficlets blog.\
Ficlets is very much an experiment (we like to call it “a prototype we just happened to launch”), and this is our very first release (we’re the first product in AOL to roll out on Rails, so we’ve still got stuff to learn about it…). So, things may go weird and wonky from time to time. Just give it a minute, and then reload.\
I am truly fortunate to work at a company where I can get away with stuff like this. This started as my own little thing to do on the side. When I realized that it was actually a pretty cool idea and that I didn’t have the time or talent to do it all myself, I presented it at a meeting, and the next thing I know, I’m working on it full time with a small team of amazingly talented people. It was a pirate project in the best sense of the word. We didn’t really do a project plan or start with a big committee. It was four people in a room, working towards something we were all geeked about. From the beginning, we treated it like we were in a startup, very few rules, no defined roles (except that I got two votes, and Kerry got three). It worked so well, and we had too much fun designing and building it.\
I never imagined it would look so good, or be so much fun. For that, I have to thank the designers who worked most closely on it: Cindy Li, Ari Kushimoto, Jenna Marino, and Jason Garber, who did 99% of the markup (all the good stuff), the CSS and most of the javascript (I worked on it some, I swear). We make such a great team, and I’m so proud of the work we did. We had lots of other help too, from folks who helped design the stickers, buttons and shirts for SxSW: Shadia Ahmed and Jayna Wallace, to the folks who played around with concepts early on: Elisa Nader, Elsa Kawai, Tom Osborne and Justin Kirk.\
There are tons of people to thank, and a lot of people helped out. We had tons of support and “air cover” from Kerry and text and language help from John, Amy, Suzie, Nancie and Erin. My pal Tony was an immense help figuring out how to deliver everything in working order to the Greatest Ops Guy in the World, Dan, and Kelly helped us bend a few rules to get all the other opsy bits in order at the last minute. We had legal help from Holly and Regina. And my bosses let me steal Jason, and go work on it, so big thanks to Alan and Bert too.\
This has been so much fun, I think we should do it again. I have big plans for our little story site…\
One last thing… if you’re going to be at SxSW Interactive this weeked, come find me. We’ve got some lovely stickers and buttons to hand out (while supplies last). I should be pretty easy to spot. I’ll be the big fat guy with the ficlets shirt on (well, for two days… ).\
Now I have to go finish packing!

Must-Have Apps for OS X

Since Steve just got himself a shiny new Powerbook, and asked for a list of apps he should throw on it, I decided to blog the list. Here is my “must-have” list of apps for OS X (unless otherwise noted, everything is either freeware or open source):

  • Adium – multi-service IM client. Themes, plugins, icon sets – everything you could ever want to customize your IM experience (and it’s faster than AIM).
  • Azureus – Best torrent client for OS X, even if it is Java.
  • BBEdit – If you can’t afford BBEdit, you can download TextWrangler for free. not free
  • BookIt – Keep your bookmarks synced up across all the browsers you’ve got installed on your machine. not free
  • Chicken of the VNC – Nothing else needs to be said. It is the chicken of the VNC world – light on the calories, long on possibilities.
  • Conversation – My favorite IRC client for OS X.
  • Instiki – Best wiki out there, period, especially on OS X.
  • MarsEdit – For to be editing your blog. not free
  • NetNewsWire – Best newsreader on any platform. Pay for it, because it’s friggin’ worth it (and so you can use the beta). not free (although there is NNW Lite)
  • NVu – I use it as a word processor when I don’t feel like writing documentation in HTML or on my wiki (you know, when you have to use an existing template). HTML editing goodness that just keeps getting better.
  • OmniOutliner – Why don’t other platforms have decent outlining software? Before Instiki, I couldn’t live without OmniOutliner. Even now, it’s great for brainstorming, taking notes during meetings, and making lists. not free
  • OnyX – A must-have for Powerbooks; OnyX runs all those BSD maintenance scripts that are supposed to run at 3 A.M., but never do because your laptop is sleeping.
  • SubEthaEdit – The first and best collaborative text editors. Great for taking notes at conferences, in meetings (with other people smart enough to have Powerbooks and bring them to meetings), etc. semi-not free
  • Tigerlaunch – Nice little menu item that has all your applications in it. Great when you don’t have something in your dock, but need to start it up.
  • Transmit – A great FTP Client with right-click editing of text files in your favorite text editor. Very cool. not free (check out Fugu or Cyberduck if you’re a cheap bastard).
  • VLC – For watching all the TV shows you download with Azureus. It plays everything, and plays it well.\
    There you have it (and I can’t believe I kept it alphabetical). I didn’t include stuff that should have come with the machine, like iPhoto (even though it’s amazing) or Safari. Am I missing anything?

Pondering the Present

I wrote a very long post about the people I work with and what I think of them. I just deleted it and am starting over.\
Today, I got to spend four hours in the latest “search summit”, where all the business owners and non-technical people get together and talk about what they do. I got to speak up and talk about open source and open source projects that work. It was interesting getting to talk about something I love at work. I like what I do, but I don’t think I love it as much as I used to. I think Open Source is fascinating, and, while I haven’t actually written any code for any, I support and use a bunch of open-source software. I submit bug reports, use them, compile stuff, etc. I’m a good little open source consumer.\
h4. Open Source Stuff Worth Using:

  • AOLserver: Yes, it’s open source! The server that runs the hardest hit sites on the web. It’s fast, cool, has a tightly integrated Db interface and is as open as you want it to be.
  • Mozilla: Fight Microsoft. Whatever you do… and I know this sounds weird coming from a guy who’s a whore to bad guy #2, but just do it. Any browser that works on all the OS’es I use and makes my pages look the same on all of them is something worth using.
  • Ximian GNOME: They’re the company arm of GNOME, but they’re one of the reasons I use Linux. They make the hard stuff a little easier for those of us who don’t want to get up to our elbows in debugging conflicts.
  • PostgreSQL: An open-source database that’s close enough to Oracle to make people think twice. It’s easy to set up, and thanks to the folks at OpenACS, works great with AOLserver.
  • OpenACS: I don’t use the software, but anything that gets people using AOLserver is a good thing. A solid community infrastructure platform. And the people behind it are cool too.\
    I forget that what I do is unique. There aren’t many people who are the only frontend developer on a site that gets 19+ million hits a day and generates millions of dollars in revenue every year. I forget that I’ve been doing this longer than anyone else in my company. It’s strange that I get so caught up in the day-to-day drudge that I don’t sit back and realize that less than three years ago, I was welded to a headset in Tucson, talking to small businesspeople without a clue and helping them set up websites. I was paid by the hour. Now, I’m the guy people talk to, even when they shouldn’t, about searching and how to build them. It’s scary. It makes me proud.\
    Now, if only I could start combining my work with this whole open source thing… Gotta work on that.