Archive

Posts Tagged ‘smugmug’

Come see Batman on IMAX with SmugMug!

July 17, 2008 27 comments
Batman: The Dark Knight

Apparently it’s the best superhero movie ever made, and must be seen on IMAX. And you’re invited! We’re taking our company, family, customers and friends to Batman: The Dark Knight in IMAX! If you read my blog, that means you’re a friend – and eligible for a free ticket out of our block!

WHERE: Regal Hacienda Crossings Stadium 21 & IMAX, 5000 Dublin Blvd., Dublin, CA 94568
WHEN: 12:50pm on Friday, July 18th. Look for people in red SmugMug hats. 🙂

If you’d like a ticket, post in the comments, email me, Tweet me, something – I’ll reply to confirm we have enough tickets for you. If you want to bring your SO, friend(s), or family, let us know – we’ll try to accomodate as best we can.

Please arrive by 12:20pm so we can get you your ticket in time. We’ll give away any that aren’t there by the time all the SmugMuggers take their seats.

SmugShot for iPhone – Shoot, geotag, and upload.

July 10, 2008 24 comments
SmugVault

Man, to say I’m excited about this would be a major understatement. We’re huge Apple fanboys over here, so when we got accepted to the first wave of SDK developers at Apple, we were stoked. Shizam went to town almost immediately and after a few months of hard work, SmugShot was born. (And as I’m writing this, we’re #1 in “What’s Hot” on both iTunes and the iPhone interface!)

So what is it? Well, we knew early on we wanted something very simple and elegant that did only one thing – but did it extremely well. We didn’t want a kitchen-sink photo-sharing / -browsing / -taking application. We already have a fantastic iPhone application on Safari, so the obvious thing to tackle first was actually taking the photos on your iPhone and getting them up to SmugMug.

SmugVault

SmugShot makes it incredibly simple to simply whip your phone out at a moment’s notice and take as many snapshots as you’d like. The photos will be automagically geotagged with your location, should you wish it, and you can quickly and easily enter a caption and some keywords – or not. Your call. We’ll queue them up and send them along to the SmugMug gallery of your choice – over EDGE, WiFi, or 3G.

And that’s basically it. Simple, elegant, clean – just the way we like it. If you’re new to SmugMug, you can create a free trial account right from SmugShot. You can set up a default Caption and some default Keywords to make entering them a breeze. And you can even upload photos that are already in your Photo Library, rather than from your camera (and you iPod Touch users can do this, too). One big Apple bug with that, though – the SDK only give us access to 640×480 versions of photos in your Library. I’m hoping they’ll fix that soon.

SmugVault

The really wild thing is how much I actually use the app. I’m a bit of a snob when it comes to things like cameras and lenses, and lets face it – the iPhone’s lens can’t compare to some fabulous Canon glass. But as the app has spread throughout the office, everyone’s learned the same lesson I have: There’s an awful lot of value in convenience.

SmugShot is so shockingly convenient and easy to use, it trumps the limited image quality for almost all of my normal everyday shots.

So go grab it from iTunes, read more about it, or even get some answers. Definitely let us know if you like it and what we can improve on – we already have our own list but would love to hear yours!

Available on the iPhone App Store

Vote SmugMug at LifeHacker!

June 12, 2008 3 comments
SmugMug in LifeHacker's Best Photo Sharing Web Sites

I’m really honored that SmugMug made LifeHacker’s Five Best Photo Sharing Web Sites.

They have voting open to pick the best – go vote for your favorite!

SmugMug loves OAuth

June 11, 2008 10 comments
Caitlin Ann Parry

SmugMug’s API now supports OAuth! We actually rolled out support a few weeks ago, but our documentation has turned into such a mess, I delayed announcing it. Finally, though, I just couldn’t keep quiet – I’m so excited I just had to tell someone!

So I’m sorry the docs are all messed up – they’re in multiple locations and out of date. We’ve been working hard on re-writing them to make them easier to understand and more clear but we’re not quite done yet. David, though, has a great excuse for why we’re behind – you’re looking at her! His beautiful daughter, Caitlin Ann, was born at roughly the same time as our OAuth support shipped. He’s had his hands full. 🙂

So go read the new docs on OAuth, the old docs on the rest of the API, and the dgrin API forum so you can get cracking on your own OAuth services and apps. Hopefully lots of the 1200+ apps our awesome developers have already created will adopt it quickly.

For those who don’t know, OAuth is an open standard for secure authentication. It allows applications and services to authenticate to SmugMug and other OAuth-enabled APIs without needed to know or store the users’ sensitive login and password information. I imagine at some point OAuth might become the *only* way to authenticate to our API, so I’d at least start playing with it now.

Your photos are yours, not ours – long live open standards and data portability!

UPDATE: I should have noted that this is totally useable now, you don’t have to wait for the docs update. It’s just mildly painful to go between a few different locations to find all the documentation. This is on a new Beta API branch, 1.2.2, so you’ll need to use 1.2.2 endpoints.

iPhone SDK, NDA, and SmugMug

June 9, 2008 8 comments
SmugMug on iPhone

Getting lots of requests about an iPhone app for SmugMug. As you no-doubt know, we’re enormous Apple fans over here, and iPhone fans in particular. Most of the company camped out in line at the Palo Alto store (see stories here and here), we were the first photo sharing app with an iPhone optimized interface (and one of the first web apps anywhere), and we designed our awesome new video sharing service with iPhone in mind. So I think it’s no secret that we’d love to have rich, intuitive native iPhone applications for ourselves and our customers.

However, the iPhone SDK NDA is still in effect, so I can neither confirm nor deny that we have an iPhone app in the works, or even whether we’ve been accepted into the iPhone SDK program. I have no idea why so many companies have chosen to break the NDA and talk about their apps today, but that’s just not the way we roll around here – we like to maintain a great relationship with any partner companies, and Apple is a company we’re especially fond of. (Ok, ok, so I’m a fanboy 🙂 )

If / when we get to build an iPhone app or two, we’ll do our absolute best to make sure they’re intuitive to use and takes advantage of all the power the iPhone provides. As you can imagine, we’re especially excited about iPhone 3G. 🙂

(Thank goodness Michael Arrington stole the wrong iPhone from me this morning. Whew! 🙂 )

SkyNet Lives! (aka EC2 @ SmugMug)

June 3, 2008 53 comments
SkyNet Lives - EC2 at SmugMug

Everyone knows that SmugMug is a heavy user of S3, storing well over half a petabyte of data (non-replicated) there. What you may not know is that EC2 provides a core part of our infrastructure, too. Thanks to Amazon, the software and hardware that processes all of your high-resolution photos and high-definition video is totally scalable without any human intervention. And when I say scalable, I mean both up and down, just the way it should be. Here’s our approach in a nutshell:

OVERVIEW

The architecture basically consists of three software components: the rendering workers, the batch queuing piece, and the controller. The rendering workers live on EC2, and both the queuing piece and the controller live at SmugMug. We don’t use SQS for our queuing mechanism for a few reasons:

  • We’d already built a queuing mechanism years ago, and it hasn’t (yet?) hit any performance or reliability bottlenecks.
  • SQS’s pricing used to be outta whack for what we needed. They’ve since dramatically lowered the pricing and it’s now much more in line with what we’d expect – but by then, we were done.
  • The controller consumes historical data to make smart decisions, and our existing queuing system was slightly easier to generate the historical data from.

RENDER WORKERS

Our render workers are totally “dumb”. They’re literally bare-bones CentOS 5 AMIs (you can build your own, or use RightScale’s, or whatever you’d like) with a single extra script on them which is executed from /etc/rc.d/rc.local. What does that script do? It fetches intelligence. 🙂

When that script executes, it sends an authenticated request to get a software bundle, extracts the bundle, and starts the software inside. That’s it. Further, the software inside the bundle is self-aware and self-updating, too, automatically fetching updated software, terminating older versions, and relaunching itself. This makes it super-simple to push out new SmugMug software releases – no bundling up new AMIs and testing them or anything else that’s messy. Simply update the software bundle on our servers and all of the render workers automatically get the new release within seconds.

Of course, worker instances might have different roles or be assigned to work with different SmugMug clusters (test vs production, for example), so we have to be able to give it instructions at launch. We do this through the “user-data” launch parameter you can specify for EC2 instances – they give the software all the details needed to choose a role, get software, and launch it. Reading the user-data couldn’t be easier. If you haven’t done it before, just fetch http://169.254.169.254/latest/user-data from your running instance and parse it.

Once they’re up and running, they simply ping the queue service with a “Hi, I’m looking for work. Do you have any?” request, and the queue service either supplies them with work or gives them some other directive (shutdown, software update, take a short nap, etc). Once a job is done (or generated an error), the worker stores the work result on S3 and notifies the queue service that the job is done and asks for more work. Simple.

QUEUE SERVICE

This is your basic queuing service, probably very similar to any other queueing service you’ve seen before. Ours supports job types (new upload, rotate, watermark, etc) and priorities (Pros go to the head of the line, etc) as well as other details. Upon completion, it also logs historical data such as time to completion. It also supports time-based re-queueing in the event of a worker outage, miscommunication, error, or whatever. I haven’t taken a really hard look at SQS in quite some time, but I can’t imagine it would be very difficult to implement on SQS for those of you starting fresh.

CONTROLLER (aka SkyNet)

For me, this was the fun part. Initially we called it RubberBand, but we had an ususual partial outage one day which caused it to go berzerk and launch ~250 XL instances (~2000 normal EC2 instances) in a single call. Clearly, it had gained sentience and was trying to take over the world, so we renamed it SkyNet. (We’ve since corrected the problem, and given SkyNet more reasonable thresholds and limits. And yes, I caught it within the hour.).

SkyNet is completely autonomous – it operates with with zero human interaction, either watching or providing interactive guidance. No-one at SmugMug even pays attention to it anymore (and we haven’t for many months) since it operates so efficiently. (Yes, I realize that means it’s probably well on its way to world domination. Sorry in advance to everyone killed in the forthcoming man-machine war.)

Roughly once per minute, SkyNet makes an EC2 decision: launch instance(s), terminate instance(s), or sleep. It has a lot of inputs – it checks anywhere from 30-50 pieces of data to make an informed decision. One of the reasons for that is we have a variety of different jobs coming in, some of which (uploads) are semi-predictable. We know that lots of uploads come in every Sunday evening, for example, so we can begin our prediction model there. Other jobs, though, such as watermarking an entire gallery of 10,000 photos with a single click, aren’t predictable in a useful way, and we can only respond once the load hits the queue.

A few of the data points SkyNet looks at are:

  • How many jobs are pending?
  • What’s the priority of the jobs?
  • What type of jobs are they?
  • How complex are the pending jobs? (ex: HD video vs 1Mpix photo)
  • How time-sensitive are the pending jobs? (ex: Uploads vs rotations)
  • Current load of the EC2 cluster
  • Current # of jobs per sample processed
  • Average time per job per sample
  • Historical load and job performance
  • How close any instances are to the end of their 1-hour cost window
  • Recent SkyNet actions (start/terminate/etc)

.. and the list goes on.

Our goal is to keep enough slack around to handle surges of unpredictable batch operations, but not enough so it drains our bank account. We’ve settled on an average of roughly 25% of excess compute capacity available when averaged over a full 24 hour period and SkyNet keeps us remarkably close to that number. We always err on the side of more excess (so we get faster processing times) rather than less when we have to make a decision. It’s great to save a few bucks here and there that we can plow back into better customer service or a new feature – but not if photo uploads aren’t processing, consistently, within 5-30 seconds of upload.

SkyNet Lives - EC2 at SmugMug

Our workers like lots of threads, so SkyNet does its best to launch c1.xlarge instances (Amazon calls these “High-CPU Instances“), but is smart enough to request equivalent other instance sizes (2 x Large, 8 x Small, etc) in the event it can’t allocate as many c1.xlarge instances as it would like. Our application doesn’t care how big/small the instances are, just that we get lots of CPU cores in aggregate. (We were in the Beta for the High-CPU feature, so we’ve been using it for months).

One interesting thing we had to take into account when writing SkyNet was the EC2 startup lag. Don’t get me wrong – I think EC2 starts up reasonably fast (~5 mins max, usually less), but when SkyNet is making a decision every minute, that means you could launch too many instances if you don’t take recent actions into account to cover startup lag (and, conversely, you need to start instances a little earlier than you might actually need them otherwise you get behind).

THE MONEY

SmugMug is a profitable business, and we like to keep it that way. The secrets to efficiently using EC2, at least in our use case, are as follows:

  • Take advantage of the free S3 transfers. This is a biggy. Our workers get and put almost all of their bytes to/from S3.
  • Make sure you have scaling down working as well as scaling up. At 3am on an average Wednesday morning, we have very few instances running.
  • Use the new High-CPU Instances. Twice the CPU resources for the same $$ if you don’t need RAM.
  • Amazon kindly gives you 30 days to monetize your AWS expenses. Use those 30 days wisely – generate revenues. 🙂

WHY NO WEB SERVERS?

I get asked this question a lot, and it really comes down to two issues, one major and one minor:

  • No complete DB solution. SimpleDB is interesting, and the new EC2 Persistent Storage is too, but neither provides a complete solution for us. EC2 storage isn’t performant enough without some serious, painful partitioning to a finer grain than we do now – which comes with its own set of challenges, and SimpleDB both isn’t performant enough and doesn’t address all of our use cases. Since latency to our DBs matters a great deal to our web servers, this is a deal-killer – I can’t have EC2 web servers talking to DBs in my datacenters. (There are a few corner cases we’re exploring where we probably can, but they’re the exception – not the rule).
  • No load balancing API. They’ve got an IP address solution in the form of Elastic IPs, which is awesome and major step forward, but they don’t have a simple Load Balancer API that I can throw my web boxes behind. Yes, I realize I can manually do it using EC2 instances, but that’s more fragile and difficult (and has unknown scaling properties at our scale). If the DB issue were solved, I’d probably dig into this and figure out how to do it ourselves – but since it’s not, I can keep asking for this in the meantime.

Let me be very clear here: I really don’t want to operate datacenters anymore despite the fact that we’re pretty good at it. It’s a necessary evil because we’re an Internet company, but our mission is to be the best photo sharing site. We’d rather spend our time giving our customers great service and writing great software rather than managing physical hardware. I’d rather have my awesome Ops team interacting with software remotely for 100% of their duties (and mostly just watching software like SkyNet do its thing). We’ll get there – I’m confident of that – we’re just not there yet.

Until then, we’ll remain a hybrid approach.

I demand video to be awesome.

April 25, 2008 66 comments

 

Sam “Shizam” Nichols, creator of the video player, donning his SmugMug Hero persona. See it in HD.

The state of video codecs online has been a mess and there’s been no clear choice, making it very difficult to do awesome video sharing. Luckily, all of that changed when Adobe finally added H.264 support to Flash.

Thanks to Adobe, we finally have a video codec that we can get behind and that’ll be great for our customers. And so back in December, we released a major new update to our video offering that’s 100% based on H.264. And it supports resolutions all the way up to 1280x720p. That’s right – SmugMug has truly awesome hi-def video sharing.

Today, I’m thrilled to announce that our Flash player is out (we used QuickTime for a few months while we polished up our player), so it’s easier than ever to embed on your blogs and share with your friends:

Here’s all the gory details:

  • Upload almost any video format you like. We’ll do our best to convert to H.264 in an extremely high quality way. (Thanks EC2!)
  • We’ll generate multiple sizes for you, so you’ll have a version that’s perfect for sharing on the web (YouTube size), perfect for using on your iPod/iPhone (DVD size), and even your Hi-Def TV in your living room.
  • We’ll automagically display just the right sized video for whichever browser and monitor you happen to be using. Ditto for your friends. Example from my friends in Dallas hard at work on Duke Nukem.
  • You can embed the videos in your blog, website, or wherever else you like online. And you can do so at DVD quality resolution – 640×480 – more than 4X the pixels and quality of YouTube.
  • You (and your friends and family, if you let them) can easily download all the different sized versions of your videos so you can do whatever else you’d like with them, like add them to YouTube or burn to a DVD.
  • H.264 means it’ll play on a huge, wide variety of computers and devices, not just SmugMug. iPods, AppleTV, Playstation 3, and the list goes on…
  • Speaking of Apple devices, we provide a complete podcast RSS feed for your account that you and your friends can subscribe to with a single click in iTunes. All your iPods, iPhones, and AppleTVs will then magically stay up-to-date. All your online videos in your pocket, and your living room, all the time. Neat, eh?
  • I’m thrilled we’re making good use of the OpenShareIcon project, too. Rather than use some trademark-encumbered, company-owned, non-open ShareIcon, we’ve chosen to use the real deal. Viva open web standards!
  • One gotcha: Flash takes 200% more CPU to play video on the Mac than QuickTime does, so in-gallery, Mac users will still see QuickTime. We can’t wait until that’s not true – but that’s up to Adobe, not us. 😦

So there you have it. I’ll probably post again soon with lots more detail about how great the integration is with Apple devices: iPod, iPhone, iTunes, and AppleTV. We love us some Apple over here at SmugMug. 🙂

Oh, and you can count on our video player to continue to rapidly evolve. This is definitely just a 1.0 product – it may have some warts and it’ll get even better over time.

So go wild – share your crystal clear video with the world!

Oh, and demand your video to be awesome (sorry about the quality – that’s the best I could find from Verizon. SmugMug *did not* make it all blocky and ugly):

The Sky is Falling! MySQL charging for features!

April 16, 2008 10 comments

There’s quite a bit of buzz on the blogosphere from people I respect a great deal, like Jeremy Cole at Proven Scaling and Vadim at Percona, about MySQL’s new Enterprise backup plans.  

The big deal?  They’re releasing a Community version that doesn’t have all the same features as the Enterprise version of Online Backup, including compression and encryption.  The Community version is open-sourced under GPL, the Enterprise version is not.

Personally, I think this is awesome. Don’t get me wrong – I love open source.  We couldn’t have built our business without it, and we love it when we get a chance to contribute back to the community.

But let’s not forget that MySQL is a business.  And that business helps the community and improves the software.  They have customers (I’m one – we’re a paying MySQL Enterprise Platinum customer), and they have to solve those customers’ problems.  This is a virtuous cycle where the community benefits directly as MySQL thrives financially.  

Every time a business like us pays MySQL for a service or feature, MySQL can then invest in better software that benefits all.  The end result in MySQL’s case is more GPL’d code.   In a very real way, without companies like mine, there wouldn’t be a new backup tool at all – let alone the differences this debate is focused on.

Every day, I hear someone saying “Man, I love SmugMug so much!  It has [insert features here] which I love!  Why isn’t it free?”

The answer?  “It wouldn’t be SmugMug if it was free.”  MySQL’s situation is very similar.

I wish more open source projects would make it easier for this cycle to ignite.  Some of them, like Red Hat, refuse to even take our money.  Talk about stupid.  There are *lots* of businesses out there willing to pay for extra services and features, and the community can harness that revenue in amazing ways, including getting more (or better) GPL’d code.

Couple more thoughts:

  • I wouldn’t be surprised if future releases add new Enterprise-only features and some existing Enterprise-only features migrate down to Community.
  • The Community version is open-sourced, so I’m sure the community will develop their own compression and encryption features.
  • This is really no different from Enterprise Monitor, which has been only for Enterprise customers for awhile.
  • Lots of other projects do this (and I would argue this benefits those projects and their communities, too)
  • I’m 99% sure that this was the plan before Sun acquired MySQL.
In short, I view this as one of the ways we can both build our business and give back to the open source community.  Keep it up, MySQL!

Freetards ruining the web?

April 4, 2008 7 comments
New $20 bills - Proof that money does grow on trees. by Kirk Tanner

photo by: Kirk Tanner

Hardly.

Hank Williams over at Silicon Alley Insider has a guest post up about how VCs are ruining the online tech economy by fueling free services, wrecking it for small and/or premium services. Matthew Ingram has a response out that resonates much more closely with how I feel.

First of all, SmugMug is living proof that you can make it as a premium service. Second, I think you’d be hard pressed to name a market where there isn’t stratification. Cars, airlines, music players, shoes – you name it, there are premium brands and there are commodity brands. On the web, commodity = free. That’s just how the game is played.

There are a lot of reasons why it makes sense for us not to be free, but perhaps my favorite is: We’re forced to hone our business. If we do don’t do it right, we don’t eat. Doing it right becomes priority #1 rather than growth.

There are quite a few reasons I love that there are *lots* of free sites with deep pockets in our space, too:

  • Free training. Lots of our customers go chew up customer service dollars somewhere else first, learning the basics of how to upload, share, etc, before coming to us. By the time they get to us, they know the ropes and getting up to speed is easy.
  • They’ve seen how bad it is elsewhere. By comparison, our product looks amazing. The ‘Wow factor’ is huge.
  • Coattails marketing. We don’t have to spend a lot of money raising awareness of the photo sharing concept – other, bigger companies are doing it for us.
  • Keeps us on our toes. As if our customers weren’t enough to keep us nimble, big deep-pocketed competitors surround us on all sides. Try slowing down and we die.

There is one big nasty downside, though, that really gets me. Every time a free site dies (and they’re dropping like flies), some of those burned customers get gunshy. Sure, we pick up lots of refugees, but there are some people who just get turned off by all photo sharing sites. They lost their priceless photos, afterall. That sucks. 😦

With the market downturn, that last point really scares me. If we really do have another bubble burst in the web space (and I predict we will), free photo sharing sites are going to be devastated.

I just hope they don’t burn an entire generation.

UPDATE: I found our problem! We don’t have a FreeTardis! I’m gonna get one.

iPhone, SDK, SmugMug

April 2, 2008 19 comments
SmugMug on iPhone

Been getting lots of questions about the iPhone SDK in general, and a SmugMug app in specific. Unfortunately, I think we’re covered by all kinds of NDAs so I can’t say much, but here are some of my thoughts:

  • The iPhone SDK is a monster, huge, awesome thing. It once again leapfrogs Apple’s phone way way ahead of all of the competition. Just watch – the scope and breadth of the apps that’ll be available is going to take your breath away. And they can’t run anywhere else, because all the other phone companies have been ignoring us developers for years. They’re all scrambling around, now, though.
  • The iPhone Apps Store is a bigger deal even than the SDK. Yes, you heard me right. Currently all the buzz is coming from developers, but since I wear both developer and CEO hats, I can tell you the deployment and business side is at least as critical. Being able to easily and rapidly get software and updates to your customers is a nasty problem, and the fact that Apple’s solved it for all of us is a huge, huge win.
  • The combination of the two is where the real magic happens, obviously. I can’t imagine anyone else doing something quite as integrated anytime soon.
  • We are building a SmugMug app. It’s already in the works. Of course, it’ll be free. And of course, it’ll be awesome. I don’t think we can say anything else, though.
  • No, this doesn’t mean the end of our iPhone interface for on-phone Safari web browsing. We’ll keep developing it, and we’ll keep integrating your feature suggestions.

If you have any suggestions as to what you’d like to see in a SmugMug native iPhone app, here’s your chance. Leave me a comment. 🙂

Categories: iphone, smugmug Tags: , , , ,
%d bloggers like this: