Rhett's Nullhole

Where I put my stuff
January 29, 2015

Lensmob in 2015

I don’t talk about this much, but since shutting Harbor Labs back in 2013 (makers of such blockbusters as Retrosift), I’ve been quietly maintaining my favorite project Lensmob.

By quietly maintain, I mean I’ve basically just been paying the bills and keeping the server running. I still think Lensmob is a great product, and I’ve got a few dedicated users such as teachers, instructors and camps that aren’t comfortable just creating Facebook groups to share photos.

In my head I’ve always considered Lensmob my side project. It uses some nifty technologies behind that scenes. It’s cool to hack on. But in reality, I haven’t touched the code in about a year.

But then earlier this month, something changed:

To fully understand my excitement, it’s important to note that I’ve been follower of Lessig for quite a while. I’ve read his books, I donated to his MayDay PAC and had already been following the New Hampshire Rebellion. I’m such a nerd I spilled my scotch when while re-watching the West Wing I realized Christopher Lloyd plays him for a couple of episodes.

Of course I wanted to help in any way possible. There isn’t much in the way of user management features in Lensmob and mostly he just wanted to make sure they could contact users to get clearances for using photos.

Yeah sure, sounds simple enough. But then again, when was the last time I changed anything? How do I deploy code? I can’t even remember. Two years ago? Who wrote this shit? After dedicating a few evenings to exploring this long forgotten code base, I’m confident that Hell is my Own Old Code.

Ok, that’s probably an exaggeration, but I will say that there were some interesting lessons to be learned:

  • Lensmob is over-engineered. It does things in a rather complicated way. This makes it pretty difficult to just jump back into. Also, some of those complications means seemingly simple things like updating python libraries to version released in the last year or two is actually really difficult.
  • However, one side-effect of being over-engineered: It’s really scalable. It’s also pretty solid. Everything is still running perfectly fine after all this time of not touching it. My monitoring is still chugging away fine. This is part of the reason I haven’t touched the codebase in so long: I haven’t needed to, it just works.
  • Even relatively “good” python code written by myself, but 2 years ago, today looks like it was written by a mad man.

So, my conclusion in the end was I could easily write manual tools and dedicate some time to helping with this project anyway I could. But releasing new features or feeling really happy about the state of development for lensmob probably wasn’t going to happen in time. Making changes right before going to the big time is not a good idea.

So a week or so later:

The walk is over and so far lensmob has operated just great. The only issues I’ve seen is really a lack of features that make large albums like this more management. The 1400+ photos uploaded to this album perform fine from a system’s perspective, but is reaching limits of usability.

So now, more inspired, I think it’s time for me to dig back into it.