December 30, 2011

Top Files By Likes

Andy mentioned something about Imgur’s most popular files based on views, so I figured I could find something for MLKSHK.

So here are the top 20 files from this year based on number of likes received. Note that the first one was our full-page ad in Longshot Magazine that the members of MLKSHK paid for.

  1. MLKSHK ad for Long Shot Magazine


    Views: 1,804 Likes: 165

  2. best wedding pictures ever... scroll down


    Views:1,392,030 Likes: 144

  3. .______________________.


    Views: 1,261 Likes: 136

  4. NY Times Crossword


    Views: 35,752 Likes: 119

  5. I'm done.


    Views: 1,732 Likes: 118

  6. Lovers, not fighters.


    Views: 63,952 Likes: 117

  7. Teen TXT Lingo.jpg


    Views: 26,735 Likes: 102

  8. Beard Slap


    Views: 4,889 Likes: 101

  9. Trollin


    Views: 578 Likes: 100

  10. A Sunday Afternoon In The Park


    Views: 1,314 Likes: 98

  11. New Star Wars BluRay edit.gif


    Views: 90,934 Likes: 95

  12. Wearing my new favorite button


    Views: 2,085 Likes: 85

  13. Blue Screen of DEATH


    Views: 2,131 Likes: 85

  14. Epc Crstms Crd


    Views: 2,041 Likes: 84

  15. Whale Thing


    Views: 1,366 Likes: 82

  16. "Chevy wants to put some ads on MetaFilter, check out this mockup of what they had in mind"


    Views: 7,211 Likes: 81

  17. Anticipation


    Views: 554 Likes: 81

  18. Last one, I swear.


    Views: 2,209 Likes: 79

  19. the jesus


    Views: 29,936 Likes: 76

  20. Tavis Smiley and Cornel West hearing the news from Bill O’Reilly that nobody on Wall St. committed any crimes.


    Views: 583 Likes: 76

December 13, 2011

Yesterday’s Outage

So I had a problem yesterday where EC2 restarted all of my servers. They all came back except one which I rely heavily on for serving pages.

Normally there would be two machines there, which is why when this sort of thing happened in the past nobody really noticed. It has been our plan to have two machines EVERYWHERE. (Everywhere except the database which was our last big outage a few months back. That was a MySQL RDS issue that, even if we had two machines I don’t know if we would have avoided that problem.)

Now when this happened in the past I would freak out and go fix it and nobody would notice. But this time it happened while I was asleep and had the vibration alerts off. (We were on vacation last week, oops.)

The reason why I did this is simple: I needed to save money. Running redundant servers is great for avoiding headaches but not so good for the MLKSHK bank account. I can start up new servers as needed, but to keep one in reserve is more than our paid subscriptions can cover.

Another thing you might have noticed and I wanted to point out: this is the first post I’ve made here where I use the word “I” instead of “we”. That is because it is just me running MLKSHK now. This is a little bit of an uncharted territory for me, because friends have said I shouldn’t point this out, that the site is fine without anyone knowing what’s going on behind the scenes, but I think that faceless “we” is what leads people to think we’re some kind of funded startup.

We aren’t. We (my wife and I) built MLKSHK with our personal savings. But now we are going back into consulting because we couldn’t make the numbers work out right to keep spending all of our time on MLKSHK.

But I also want to point out MLKSHK isn’t going anywhere. In fact we have more people visiting the site than ever before. Without that redundant server we are well under the cost to keep the rest of them online, and there are further changes I can make.

So, please, if you have a free account, consider upgrading. If you enjoy the service and want to see your friends on it, please invite them to check it out. Every day is a FREAKING JOY to visit the site for me, and I hope all of you.

November 18, 2011

MLKSHK’s Ingredients

I mentioned on Twitter the other night about a hiccup we had on our server and someone asked if I could give a high-level view of what makes MLKSHK go.

First, we use the Tornado framework. It is fast, simple to learn, and best of all: non-blocking. The architecture for the originally planned MLKSHK called for a bit more use of this lovely asynchronicity, so we chose Tornado to do this.

The other reason we chose Tornado is that it’s actually enjoyable to read the source code. It’s small enough that if you are stuck on something, it’s easy to pop over to the source and see what’s going on. I feel this way about many Python projects, but never more with Tornado.

Using Tornado though, means you have to build or find some of the components that are common in bigger frameworks–specifically ORMs. We rolled our own that is just the right amount of thin-layer on top of MySQL. It’s called FlyingCow and does a great job inside of Tornado.

Nginx does two huge things for us: first, it’s a proxy for file downloads from S3. We use the X-Accel-Redirect header to tell nginx to proxy the file from another location. Second, it handles file uploads using the nginx-upload-module. If you are using nginx and are doing your own file uploads stop right now and use this module.

The thing that hiccuped the other night was RabbitMQ. This has been happening frequently, but I haven’t figured out exactly why. My first guess is some sort of memory issue but I haven’t been able to figure it out from the logs. Either way: it gets stuck. In front of that is Celery, we use queuing to handle some of the more lengthy processes like favoring files and saving to your shake so you get an immediate feedback on the front-end. Plus if we are getting hammered with requests you won’t notice it as much.

We use HAProxy to balance the load across multiple machines. At any time we can put new machines in rotation to lighten the load. Airbrake to notify us of errors. Postmark to send mail. Github, of course. And EC2 to host it all.

October 24, 2011

Early Morning Outage

…And How You Can Help

We had some downtime this morning after a maintenance process got out of hand and choked the database server. Because of this the front-end servers couldn’t serve content and backed up a lot of processes.

I was able to get the site back to normal very quickly, but there exists a lingering problem I haven’t been able to track down. Likes are intermittently not registering. If you could be on the lookout for a bug where liking a file doesn’t save the like on the image’s page that would really help us. If you see it happen, could you mail us* the page where the error occurred?

We’ve done a few things to help prevent this issue in the future, but I’m afraid the next step is ordering a bigger machine to handle the data. Hopefully recent changes to our architecture will save us enough money to spend on upgrading our DB.

*email address is at the bottom of every page on the site

September 29, 2011

State of the Shake

Hey! Another one. Let’s see:

  1. DNS outage this week: bad. New DNS server coming: good! That was unpleasant, but it was partly our service’s mistake, partly my own dumb mistake for setting the TTLs (time to live) so low. You can think of TTLs as a note to your browser* when it should update where to find our IP address. Normally you use a cached version and ask for an update every so often. We were doing some DNS work and I set it to such a short time that the second our service had a hiccup, nobody could find the site. On the plus side, with such low TTLs we were back quickly.

  2. Spam is still an issue. I thought I had them licked but they keep figuring things out. Onward!

  3. What is next: we have many things planned but are always interested in hearing what you have to say. Please let us know what’s important to you and what isn’t working.

We‘re adding people at the fastest rate since our launch. That means you guys are telling friends about us and sharing images on Twitter or Facebook. Thank you so much for that. We love you guys.

* I know. Easier to explain this way.

September 26, 2011

DNS Provider Outage (We’re back!)

Our DNS provider has gone offline. We can‘t even reach their admin console.

You can hit MLKSHK with this IP address:

http://50.19.100.254/

We‘re very sorry for this. I don‘t have an ETA yet but will keep you updated.

All systems are back to normal. I updated Twitter and my personal Twitter account but forgot to swing back here. We’d love to hear of your beloved DNS providers in the comments if you have the chance. Going to do some research this week…

September 10, 2011

State of the Shake

Hi Friends!

It’s been a while since we’ve posted, for that we apologize. We’ve been extremely busy the past month and a half as we had to return to consulting to pay some of the bills.

MLKSHK saw a tremendous amount of growth and traffic last month. Over 1 million unique visitors hit the site as the sheer size of our database of images means it’s very viral-friendly and usually there are a few images getting a ton of traffic.

We have pushed a few new features we’d like to tell you more about. Some you might have noticed, some you might not have.

First, we have become very attractive to spammers for obvious reasons. Because of that we’ve been spending time trying to knock them down. It’s not easy, especially with such a small team as ours, but I think we are doing a pretty good job of keeping the comments clean.

If you see something please report it. Either through the email address or hit us on Twitter with a link: @mlkshk.

Next is something we have been meaning to do for a while with the bookmarks:

You can now jump back to a previous bookmark and begin reading forwards. We’re still working out the kinks, and thinking about how to better present the experience, but we find it INCREDIBLY useful and we hope you will too.

Note that it won’t work for your old bookmarks, only new ones as they are created from this Saturday forwards.

June 27, 2011

State of the Shake

Here’s what we did last week.

  • Yearly subscriptions.
  • Significantly sped up page loading by generating summaries of counts. In short: perma-link pages went from 100ms to 20ms to load. What this also means is we can now present total views/likes/saves on your files. We’re doing that this week.
  • Speed. Oh yeah!
  • Release the API. GO GET IT.

Here’s what we’re doing this week:

  • Add Facebook sharing button. Did this in the morning. Seems to be working but if you have any feedback about it we’d appreciate it.
  • Bookmarklet. Finally, a way to share files and videos without a plugin. Also good for when you’re on a mobile device.
  • New user welcome pages, home page, and finding people and shakes to follow pages.
  • User counts: total likes, views, and shared files.
  • List of shakes on their user page.
  • Making it clearer on friend shakes where the file also lives (e.g, User shake)

I think I’m missing something. We’ll update this page if anything changes. We do still want to add the ability to rotate an image and auto-rotate if there is orientation data. The priority is just lower.

June 21, 2011

You Can Help Us

MLKSHK is a community that’s about sharing images and video for fun. It’s not Yet Another Photo Sharing Service, though of course you’re welcome to do that here, too. This post is about us, where we’re at, and how we need your help.

MLKSHK actually got its start about a year and a half ago when I quit my job at Federated Media. I’d been at FM from the beginning, saw it grow and become an amazing fountain of cash for some independent publishers who at the time had only been in it for the joy of publishing and creating. When John asked me to join that was my hope: we could build tools and an infrastructure to help lots of people (and friends) achieve editorial and financial independence.

And holy fuck did they. Some of that original lineup like Techcrunch and Gigaom graduated to being full fledged independent entities. Others continue to just kill it, like Dooce, BoingBoing, and Metafilter.

BOOM SUCCESS

I left FM for the boring reasons that people leave companies: FM was done for me. We started with four people in a garage and had exploded into this monster with HR policies. Great. I’m a smaller company kind of guy.

So naturally I thought: I want to do it again!

My darling and patient wife was nervous but I assured her I had enough contracts to pay bills for a few months and if that didn’t work out I could always find a job someplace. I’m a nice guy. I know how to get shit done. You’d probably like me.

The plan was (insert chuckle) I’d work for clients and slowly build a product and then go full-time with the product when it was ready (insert chuckle and a whimper).

A month or so in I realized that wasn’t going to happen, so we decided we would spend 2010 just working for people. One project was to build the backend for the AMAZING Gourmet iPad app and we got to work with some smart people at Condé Nast and Activate. Another was to build a stupid Twitter app conceived by someone who had never used Twitter and didn’t care about Twitter. So yeah, up and down. Whatever, it’s money. Gimme. By December 2010, we had finished up our contracts and decided to dive into MLKSHK full-time.

Here’s where MLKSHK is different from other sites where you can share pictures, and from “startups” in general: we didn’t take any money to do it. On a shoe string, we managed to build and ship and then keep shipping what you see today.

MLKSHK is an amazing product that I’m incredibly proud of and the community is growing quickly (we’ve been doing 50% growth each week for the last month) and using the site because they get that we can deliver a good, beautifully designed product with just the right features. Also there are pictures of cats.

Pertinent, I believe, side-note: I grew up relatively poor. My dad is a barber and my mom managed low-income housing for HUD. My parents were incredibly resourceful people who managed to keep us from realizing we were poor, and I think that’s what I inherited from them. Get Things Done without wasting money. Work hard. Do it yourself. Do a good job and you’ll be rewarded (did I mention I also grew up Catholic? Hah!)

Because of this I didn’t want to take someone else’s money for an idea that could only happen if I took full responsibility. My wife and I weren’t going to be able to do it our way without doing it with our money. Because if we had reached the end and the site just wasn’t there, the users just didn’t care, then we could say, “Fuck it” and shut it down. Happily that isn’t the case, and MLKSHK is doing quite well right now.

I am writing today because we need your help. About 3% of all users have purchased paid accounts, but we need much more than that to stay afloat. The site’s technical costs like bandwidth and servers are actually covered by that 3% but we need much more to be able to work on MLKSHK full time. We’re asking for your help because we can’t consult and work on MLKSHK at the same time. You can get a paid account here: http://mlkshk.com/account/upgrade.

For $24 a year you get a site and service run by people who care about their community. We’re people who care about delivering a good product and who are committed to building out the site for as long as there’s a community that cares about MLKSHK. We have an amazing list of places we want to take the site but we won’t be able to do it if we can’t devote all our time to it. And to be clear, we’re not against getting money or funding from the right people; we just want to be able to do MLKSHK the right way.

If you’ve been watching this blog, you’ll see that we ship features nearly every day. We are laser focused on making the site responsive and fun for our users. We want to keep doing this. Help us.

In summary:

  • Middle fingers to the over-funded pivoting startups.
  • We need you to create an account and upgrade to paid. Preferable a year for $24.
  • We need you to tell your friends. If you are under age get your parents’ credit cards and use those.

June 20, 2011

State of the Shake

Here's what we did last week:

  • Move friends to the front page, removing the dashboard view.
  • Ask to join shake. With all the notifications and messaging.
  • NSFW Flag and hiding
  • Deleting comments.

Here's what we're doing this week:

  • Yearly subscriptions.
  • Counts! Counts! Counts! Views, Favorites.
  • Speed. Speeding up some things after having a popular file on Twitter we had a flood of activity that caused some slowness. We hate that.
  • Some traffic growing alterations that we'll point out as we roll them out. There are a lot of them.

Still important:

  • Rotate image and auto-rotate if there is orientation data.
  • Release the API. Announce more API related stuff.
  • Popular, interesting, and trending files.