<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>A hosted open source photo service. Find out more about The OpenPhoto Project, fork us on Github or follow us on Twitter.</description><title>OpenPhoto</title><generator>Tumblr (3.0; @openphotome)</generator><link>http://blog.theopenphotoproject.org/</link><item><title>Announcing OpenPhoto for iPhone</title><description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We can&amp;#8217;t solve problems by using the same kind of thinking we used when we created them.&lt;/em&gt; &amp;#8212; Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;#8217;s been a long time coming but today we&amp;#8217;re &lt;em&gt;excited&lt;/em&gt; to announce that the &lt;a href="https://openphoto.me/for/iphone" title="OpenPhoto for iPhone"&gt;OpenPhoto for iPhone&lt;/a&gt; app is available in the &lt;a href="http://itunes.com/apps/theopenphotoapp"&gt;Apple App Store&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img height="240" src="http://i.imgur.com/TS8Xr.jpg" width="160"/&gt;  &lt;img height="240" src="http://i.imgur.com/QG6Ok.jpg" width="160"/&gt;  &lt;img height="240" src="http://i.imgur.com/TUgnJ.jpg" width="160"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why is it awesome?&lt;br/&gt;&lt;/strong&gt;The vision behind The OpenPhoto Project is enormous but we know that we can only achieve it one step at a time. Having your OpenPhoto account in your pocket is one (particularly large) step in achieving our goals.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s something powerful in trying to build something for the common good. It means we play by different rules and analyze different metrics. But what&amp;#8217;s achieved in the end is magnitudes larger than if you&amp;#8217;re focus is elsewhere.&lt;/p&gt;
&lt;p&gt;The app you see in the App Store is what we have &lt;a href="https://github.com/openphoto/mobile-ios"&gt;available on Github&lt;/a&gt;. You&amp;#8217;re free to fork or modify what we&amp;#8217;ve built however you&amp;#8217;d like. In fact we encourage it and happily accept pull requests.&lt;/p&gt;
&lt;p&gt;But for now you should go download the app and start using it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Credits&lt;/strong&gt;&lt;br/&gt;A huge thanks goes out to &lt;a href="https://twitter.com/tobiasbeisel"&gt;Tobias Beisel&lt;/a&gt; designing the app and &lt;a href="https://twitter.com/patricksantana"&gt;Patrick Santana&lt;/a&gt; for making it work.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/20976895869</link><guid>http://blog.theopenphotoproject.org/post/20976895869</guid><pubDate>Thu, 12 Apr 2012 12:38:00 -0700</pubDate></item><item><title>Things are looking different better around here at OpenPhoto....</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m1xhg2pqIW1qkm92ao1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Things are looking &lt;strike&gt;different&lt;/strike&gt; better around here at OpenPhoto. Sign up for a &lt;a href="https://openphoto.me" title="Sign up for an OpenPhoto account"&gt;FREE account&lt;/a&gt;!&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/20436212523</link><guid>http://blog.theopenphotoproject.org/post/20436212523</guid><pubDate>Tue, 03 Apr 2012 17:02:26 -0700</pubDate></item><item><title>Web FWD: OpenPhoto Needs You</title><description>&lt;a href="http://blog.webfwd.org/post/19415073100/openphoto-needs-you"&gt;Web FWD: OpenPhoto Needs You&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://blog.webfwd.org/post/19415073100/openphoto-needs-you"&gt;webfwd&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Editor’s note: A guest post from Jaisen Mathai, WebFWD fellow and co-founder of the &lt;a href="http://theopenphotoproject.org/"&gt;The OpenPhoto Project&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;OpenPhoto is entering the &lt;a href="http://newschallenge.tumblr.com/"&gt;Knight News Challenge&lt;/a&gt;, an international media innovation contest. The application window closes tomorrow, Saturday, March 17. Please &lt;a href="http://newschallenge.tumblr.com/post/19290082742/the-openphoto-project"&gt;&lt;strong&gt;show your support for…&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/19417669017</link><guid>http://blog.theopenphotoproject.org/post/19417669017</guid><pubDate>Fri, 16 Mar 2012 15:46:55 -0700</pubDate></item><item><title>Knight News Challenge: The OpenPhoto Project</title><description>&lt;a href="http://newschallenge.tumblr.com/post/19290082742/the-openphoto-project"&gt;Knight News Challenge: The OpenPhoto Project&lt;/a&gt;: &lt;p&gt;Help us continue working on making OpenPhoto awesome by liking, reblogging or commenting on our Knight News Challenge application!&lt;/p&gt;
&lt;p&gt;&lt;a class="tumblr_blog" href="http://newschallenge.tumblr.com/post/19290082742/the-openphoto-project"&gt;newschallenge&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;1. What do you propose to do? [20 words]&lt;/h3&gt;
&lt;p&gt;Create beautiful decentralized web/mobile applications to publish, organize, share and archive photos using Dropbox, S3, or Box.net.&lt;/p&gt;
&lt;h3&gt;2. Is anyone doing something like this now and how is your project different? [30 words]&lt;/h3&gt;
&lt;p&gt;Similar efforts focusing on data…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/19291104644</link><guid>http://blog.theopenphotoproject.org/post/19291104644</guid><pubDate>Wed, 14 Mar 2012 08:06:59 -0700</pubDate></item><item><title>We're not building a Flickr alternative, that'd be stupid</title><description>&lt;p&gt;It&amp;#8217;s sometimes difficult to convey the mission of The OpenPhoto Project. Sure we want to liberate people&amp;#8217;s photos and give them complete ownership and control of their photos, comments and tags. That leads to the question, &amp;#8220;so you&amp;#8217;re building an alternative to Flickr?&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Absolutely not. That&amp;#8217;d be stupid.&lt;/p&gt;
&lt;p&gt;If you, like us, believe Flickr is fundamentally flawed in how your photos enter and exit their system you too would build something radically different. And this doesn&amp;#8217;t &lt;em&gt;just&lt;/em&gt; apply to Flickr, it applies to &lt;strong&gt;&lt;em&gt;everyone&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p class="p1"&gt;So there it is, we&amp;#8217;re not building an alternative to Flickr. We&amp;#8217;re building an entirely different way to think of how you organize and share your photos. Imagine being able to grant web and mobile applications access to your hard drive, which you ultimately hold the keys to. Now imagine that your hard drive is in the cloud, always available and professionally backed up.&lt;/p&gt;
&lt;p class="p1"&gt;That&amp;#8217;s our vision and we hope others adopt it as well.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/18563098244</link><guid>http://blog.theopenphotoproject.org/post/18563098244</guid><pubDate>Thu, 01 Mar 2012 12:20:54 -0800</pubDate></item><item><title>Patrick Santana: Full time on OpenPhoto - finally</title><description>&lt;a href="http://patricksan.tumblr.com/post/18545669978/full-time-on-openphoto-finally"&gt;Patrick Santana: Full time on OpenPhoto - finally&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://patricksan.tumblr.com/post/18545669978/full-time-on-openphoto-finally"&gt;patricksan&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span&gt;What a such nice day. After a long wait period, today I started to work full time on OpenPhoto. It has been 8 months only contributing on free-time. The project is a great challenge and full of tasks to be done.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;span&gt;On first instance, I’m starting focus on the iPhone app release on App…&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/18553831806</link><guid>http://blog.theopenphotoproject.org/post/18553831806</guid><pubDate>Thu, 01 Mar 2012 08:16:55 -0800</pubDate></item><item><title>Gush shuts down; the case for OpenPhoto</title><description>&lt;p&gt;The recent shutdown of &lt;a href="http://getgush.com"&gt;Gush&lt;/a&gt; reiterates all the reasons we started &lt;a href="http://theopenphotoproject.org" title="The OpenPhoto Project"&gt;The OpenPhoto Project&lt;/a&gt;. For those unaware of Gush they were a photo service that collected all of your photos from your computer, Facebook and Flickr (&lt;a href="http://techcrunch.com/2011/09/28/jesta-labs-hatches-gush-fetch-store-and-organize-all-your-digital-photos/"&gt;source&lt;/a&gt;). They&amp;#8217;re similar to recent services like &lt;a href="http://everpix.com"&gt;Everpix&lt;/a&gt; and &lt;a href="http://snapjoy.com"&gt;Snapjoy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In an email to users, Gush thanks them for testing the service but states they are shutting it down immediately and deleting the photos this week.&lt;/p&gt;
&lt;p&gt;Our thesis is that even if a service ceases to exist, you should still retain all of your data. This powerful decoupling of data storage and application logic is what sets OpenPhoto apart from every other photo service and it&amp;#8217;s only the beginning.&lt;/p&gt;
&lt;p&gt;&lt;img height="261" src="http://i.imgur.com/cEapk.png" width="513"/&gt;&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/17651257369</link><guid>http://blog.theopenphotoproject.org/post/17651257369</guid><pubDate>Wed, 15 Feb 2012 01:19:00 -0800</pubDate></item><item><title>An open letter to Flickrers who got laid off by Yahoo!</title><description>&lt;p&gt;We&amp;#8217;re sorry. Getting handed a pink slip is always hard and especially hard if you loved your work. It&amp;#8217;s no secret that Flickr is a labor of love for many of the folks working on it.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s also true that every closed door leads to unique opportunities so I&amp;#8217;d like to extend an invitation to help us build &lt;a href="http://theopenphotoproject.org"&gt;The OpenPhoto Project&lt;/a&gt;. We&amp;#8217;re over 35 people passionately working to create an amazing photo platform that puts users and community first.&lt;/p&gt;
&lt;p&gt;You can find out more information at our website: &lt;a href="http://theopenphotoproject.org"&gt;&lt;a href="http://theopenphotoproject.org"&gt;http://theopenphotoproject.org&lt;/a&gt;&lt;/a&gt; or get in touch with me (Jaisen Mathai, ex-Yahoo!) personally at &lt;a href="mailto:jaisen@openphoto.me"&gt;jaisen@openphoto.me&lt;/a&gt; or &lt;a href="https://twitter.com/jmathai"&gt;@jmathai&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/16828254405</link><guid>http://blog.theopenphotoproject.org/post/16828254405</guid><pubDate>Tue, 31 Jan 2012 11:14:00 -0800</pubDate></item><item><title>OpenPhoto 1.3.2 release</title><description>&lt;div&gt;
&lt;div&gt;
&lt;p&gt;It&amp;#8217;s that time again! The OpenPhoto Team is happy to announce our 1.3.2 release. This release has two themes: make our iPhone app absolutely beautiful and ease the pain for anyone wanting to contribute to the project. We&amp;#8217;ve also added Python and Ruby bindings as well as a Wordpress plugin.&lt;/p&gt;
&lt;div align="center"&gt;&lt;a href="http://team.openphoto.me/photo/5/view"&gt;&lt;img alt="Connect to any OpenPhoto instance" height="225" src="http://awesomeness.openphoto.me/custom/201201/1327953365-Photo-Jan-29--3-13-47-PM_150x225.jpg" width="150"/&gt;&lt;/a&gt;  &lt;a href="http://team.openphoto.me/photo/1/view"&gt;&lt;img alt="Your entire photo library in your pocket" height="225" src="http://awesomeness.openphoto.me/custom/201201/1327953350-Photo-Jan-29--3-07-29-PM_150x225.jpg" width="150"/&gt;&lt;/a&gt;    &lt;a href="http://team.openphoto.me/photo/3/view"&gt;&lt;img alt="View your photos in stunning detail" height="225" src="http://awesomeness.openphoto.me/custom/201201/1327953357-Photo-Jan-29--3-08-21-PM_150x225.jpg" width="150"/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Here are the highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;em&gt;A fresh look for our iPhone app.&lt;/em&gt; We&amp;#8217;ve obsessed over every pixel to create an absolutely wonderful iPhone app. If you&amp;#8217;re on our TestFlight list then update the app to see the new design. Unfortunately, we&amp;#8217;ve reached our limit of test users but the next step is submitting it to the App Store so everyone can use it. &lt;/li&gt;
&lt;li&gt;&lt;em&gt;Contributing never seemed so easy.&lt;/em&gt; Did you know that over 35 people have contributed to The OpenPhoto Project so far? Now we&amp;#8217;ve made it even easier if you were on the fence about helping out! There&amp;#8217;s a new contribute section on our website that gives you all the info you need plus ways to get in touch with us.  Contribute to &lt;a href="http://theopenphotoproject.org/contribute"&gt;The OpenPhoto Project&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Wordpress plugin&lt;/em&gt;. Our new Wordpress plugin (&lt;a href="http://wordpress.org/extend/plugins/openphoto/"&gt;wordpress.org&lt;/a&gt;, &lt;a href="https://github.com/openphoto/openphoto-wordpress"&gt;github.com&lt;/a&gt;) is the perfect companion for your blog.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Python and Ruby bindings&lt;/em&gt;. Our gift to Python and Ruby developers everywhere. Watch or fork &lt;a href="https://github.com/openphoto/openphoto-python"&gt;openphoto-python&lt;/a&gt; or &lt;a href="https://github.com/openphoto/openphoto-ruby"&gt;openphoto-ruby&lt;/a&gt; and create some apps!&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A new AMI&lt;/em&gt;. There&amp;#8217;s a new AMI available with alpha support for the US-West and EU regions. You can search for &lt;em&gt;openphoto&lt;/em&gt; under Amazon&amp;#8217;s community AMIs and select the newest one.&lt;br/&gt;&lt;br/&gt;&lt;em&gt;NOTE: The US-West and EU AMIs do not use EBS root devices.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The main contributors to this release are:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Patrick Santana, iPhone app (programming)&lt;/li&gt;
&lt;li&gt;Tobias Beisel, iPhone app (design)&lt;/li&gt;
&lt;li&gt;Randy Hoyt, Wordpress plugin&lt;/li&gt;
&lt;li&gt;Randy Jensen, Wordpress plugin&lt;/li&gt;
&lt;li&gt;James Walker, Python bindings&lt;/li&gt;
&lt;li&gt;Jeff Hammel, Python bindings&lt;/li&gt;
&lt;li&gt;Brian Levine, Ruby bindings&lt;/li&gt;
&lt;li&gt;Jaisen Mathai, Docs for contributing&lt;/li&gt;
&lt;li&gt;Parul Gupta, Docs for contributing&lt;/li&gt;
&lt;li&gt;Gareth Greenaway, EC2 AMIs&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;To keep up on what we&amp;#8217;re doing &lt;a href="https://twitter.com/openphoto"&gt;follow us on Twitter&lt;/a&gt;, &lt;a href="https://github.com/openphoto/frontend"&gt;watch us on Github&lt;/a&gt;, or &lt;a href="mailto:hello@openphoto.me"&gt;send an email to hello@openphoto.me&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><link>http://blog.theopenphotoproject.org/post/16774158909</link><guid>http://blog.theopenphotoproject.org/post/16774158909</guid><pubDate>Mon, 30 Jan 2012 12:32:00 -0800</pubDate></item><item><title>Web FWD: It's the Community, Not the Code</title><description>&lt;a href="http://blog.webfwd.org/post/14176385137/its-the-community-not-the-code"&gt;Web FWD: It's the Community, Not the Code&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://blog.webfwd.org/post/14176385137/its-the-community-not-the-code"&gt;webfwd&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Continuing on our firm belief that it’s &lt;a href="http://blog.webfwd.org/post/13973466029/code-doesnt-build-software-people-build-software"&gt;not the code, but the people&lt;/a&gt;, which drives the success of software, we had a special treat today: WebFWD’s very own &lt;a href="http://twitter.com/jmathai"&gt;Jaisen Mathai&lt;/a&gt;, founder of &lt;a href="http://theopenphotoproject.org/"&gt;OpenPhoto&lt;/a&gt; stepped up as our first team presenter.&lt;/p&gt;
&lt;p&gt;Among Jaisen’s observations was just how central APIs can…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/14181371966</link><guid>http://blog.theopenphotoproject.org/post/14181371966</guid><pubDate>Tue, 13 Dec 2011 13:49:12 -0800</pubDate></item><item><title>Web FWD: The Power of Iteration</title><description>&lt;a href="http://blog.webfwd.org/post/14138556666/the-power-of-iteration"&gt;Web FWD: The Power of Iteration&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://blog.webfwd.org/post/14138556666/the-power-of-iteration"&gt;webfwd&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we created the WebFWD program we were well aware that we’d have to treat WebFWD as a startup in its own right. We knew that we’d have to try things, learn, fail, iterate and build again. And so we have.&lt;/p&gt;
&lt;p&gt;We originally started WebFWD with a four-week Bootcamp program, assuming that…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/14138738181</link><guid>http://blog.theopenphotoproject.org/post/14138738181</guid><pubDate>Mon, 12 Dec 2011 15:54:27 -0800</pubDate></item><item><title>The Internet needs BrowserID - a plea to developers</title><description>&lt;p&gt;&lt;img align="left" alt="Identity" height="90" src="http://i.imgur.com/myOG8s.jpg" width="90"/&gt;Identity is a tricky thing. Who are you? What do you identify yourself with? What do you identify yourself as to others? It&amp;#8217;s even more complicated on the Internet.&lt;/p&gt;
&lt;p&gt;For a long time you&amp;#8217;d sign in to every site with a username and password for that site. In essense you had an &lt;em&gt;identity&lt;/em&gt; for every site you were a member of. I don&amp;#8217;t think that ever made sense to anyone but there wasn&amp;#8217;t a trusted identity provider to use, so developers rolled their own.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Many attempts, one winner&lt;/strong&gt;&lt;br/&gt;Over time we&amp;#8217;ve seen numerous attempts at providing identity as a service. Be that a protocol or a proprietary API. Remember OpenID? Yea, that didn&amp;#8217;t work out. Everyone agrees that it was too convoluted and confusing for the average user to understand. There has, however, been a winner. They&amp;#8217;ve managed to gain the trust of enough users and provide a simple and elegant solution for both developers and users. They&amp;#8217;re Facebook.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Let&amp;#8217;s rewind&lt;/strong&gt;&lt;br/&gt;If we want to shape the future we&amp;#8217;ve got to understand the past. The Internet is nothing short of amazing. It became this way because it&amp;#8217;s built on top of a series of open standards. Protocols like TCP, HTTP, SMTP and POP have fueled over 2 decades of innovation like we&amp;#8217;ve never seen. If these protocols were not open then there&amp;#8217;s no telling what we would call the Internet today. By that, I don&amp;#8217;t mean it may have been better because I believe the chances of that are near zero.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Competition&lt;/strong&gt;&lt;br/&gt;The story here isn&amp;#8217;t about winning as much as it is about competition. That&amp;#8217;s because competition breeds choice which breeds more competition and so on. We all remember the days when Internet Explorer had 90% market share and very little competition. I don&amp;#8217;t ever want to go back there. Not with something as fundamentally important as the web browser. But I worry that we&amp;#8217;re headed right back with something potentially more important: &lt;em&gt;identity&lt;/em&gt;.&lt;/p&gt;
&lt;div align="center"&gt;&lt;img height="373" src="http://media.tumblr.com/tumblr_lvjzej47wm1qkki7d.png" width="398"/&gt;&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s not that I think the Internet would be better off without Facebook. The &lt;a href="https://github.com/openphoto/frontend/commit/813c56cfb358c7a837f3a6f23447e0dfd2eaea69" title="Facebook Connect for OpenPhoto"&gt;second authentication plugin&lt;/a&gt; we built for OpenPhoto was Facebook and it ships with every OpenPhoto instance. Facebook simply needs competition from something open. Just as Firefox pried the Internet out of Internet Explorer&amp;#8217;s grasp and how Firefox and Chromium are competing with one another today, we need the same for identity. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BrowserID&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;BrowserID is a decentralized identity system that makes it possible for users to prove ownership of email addresses in a secure manner, without requiring per-site passwords. &amp;#8212; Lloyd Hilaiel, Mozilla (&lt;a href="http://lloyd.io/how-browserid-works" title="How BrowserID works"&gt;source, how BrowserID works&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Facebook Connect won on elegance and simplicity and &lt;a href="https://browserid.org/"&gt;BrowserID&lt;/a&gt; shares the same properties. Users already identify with their email address and they are globally unique. As a user signing into a site with BrowserID it is as simple as entering your email address and password and allowing BrowserID to securely grant the site access to your email address.&lt;/p&gt;
&lt;p&gt;Having implemented an early version of BrowserID into OpenPhoto I can say that it&amp;#8217;s trivial to implement. In fact, it&amp;#8217;s easier than Facebook because one doesn&amp;#8217;t have to sign up for an application id. Watch Dan Mills and Ben Adida from Mozilla&amp;#8217;s Identity team demo BrowserID below.&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/6x45Nt1fOMM" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why the onus is on developers&lt;/strong&gt;&lt;br/&gt;As developers I hope we understand the significance of there being only a single proprietary identity provider. BrowserID is the &lt;em&gt;only&lt;/em&gt; solution that&amp;#8217;s easy for users to understand, easy for developers to integrate and both open and distributed.&lt;/p&gt;
&lt;p&gt;Unfortunately, BrowserID is limited in part by the classic chicken and egg problem. Developers don&amp;#8217;t want to integrate it till users are on the system and users never get on the system because developers don&amp;#8217;t integrate it.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t believe that has to be the case for BrowserID. It provides a win-win situation for both users and developers. Something OpenID could never deliver on. It&amp;#8217;s a very small investment from developers today which will reap significant rewards in the future.&lt;/p&gt;
&lt;p&gt;Follow this &lt;a href="https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site"&gt;3 step guide on implementing BrowserID on Github&lt;/a&gt; to get started.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/13914931003</link><guid>http://blog.theopenphotoproject.org/post/13914931003</guid><pubDate>Thu, 08 Dec 2011 00:36:00 -0800</pubDate></item><item><title>OpenPhoto 1.3.1 release (plus extras)</title><description>&lt;div&gt;
&lt;p&gt;The OpenPhoto team is excited to announce our 1.3.1 release. In addition to fixing a handful of minor bugs we&amp;#8217;ve rebranded, redesigned theopenphotoproject.org and launched the official hosted version of OpenPhoto. As always, you can follow one of our &lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/guides/Guides.markdown"&gt;installation guides&lt;/a&gt; to get running on your own server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s new in 1.3?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;em&gt;Our new brand and logo. &lt;/em&gt;We&amp;#8217;ve got a new logo and we love it. It&amp;#8217;s a great representation of what OpenPhoto is and which principles guide us: openness, community and freedom.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The OpenPhoto Project website.&lt;/em&gt; The &lt;a href="http://theopenphotoproject.org/" title="The OpenPhoto Project"&gt;newly designed site&lt;/a&gt; contains &lt;a href="http://theopenphotoproject.org/documentation" title="OpenPhoto Documentation"&gt;documentation&lt;/a&gt;, a &lt;a href="http://openphoto.uservoice.com" title="OpenPhoto Community"&gt;community&lt;/a&gt; and &lt;a href="http://theopenphotoproject.org/get-started" title="Get Started with OpenPhoto"&gt;instructions on getting started&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;em&gt;The hosted version.&lt;/em&gt; You&amp;#8217;ll need an invite but we&amp;#8217;ve made it as easy as possible to get started with OpenPhoto. The hosted version is at &lt;a href="http://openphoto.me" title="Hosted Version of OpenPhoto"&gt;openphoto.me&lt;/a&gt; and you can see an example at &lt;a href="http://current.openphoto.me"&gt;current.openphoto.me&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;iPhone app updates&lt;/em&gt;. Lots and lots of performance upgrades. The app should be much faster and responsive now. &lt;a href="https://testflightapp.com/join/50ad9697c58133eacee1f0c8252f2b9c-MjE2MjA/"&gt;Get on the beta tester list using TestFlight&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A new AMI&lt;/em&gt;. The easiest way to get up and running is to boot an instance of the new OpenPhoto AMI. You can search for &lt;em&gt;openphoto&lt;/em&gt; under Amazon&amp;#8217;s community AMIs and select the newest one.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The main contributors to this release are:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Ali Sabet, Branding &amp;amp; logo&lt;/li&gt;
&lt;li&gt;John Fabrizio, Design for The OpenPhoto Project site&lt;/li&gt;
&lt;li&gt;Patrick Santana, iPhone updates&lt;/li&gt;
&lt;li&gt;Jaisen Mathai, Hosted version&lt;/li&gt;
&lt;li&gt;Gareth Greenaway, EC2 AMIs&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;To keep up on what we&amp;#8217;re doing &lt;a href="https://twitter.com/openphoto"&gt;follow us on Twitter&lt;/a&gt;, &lt;a href="https://github.com/openphoto/frontend"&gt;watch us on Github&lt;/a&gt;, or &lt;a href="mailto:hello@openphoto.me"&gt;send an email to hello@openphoto.me&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description><link>http://blog.theopenphotoproject.org/post/13829938381</link><guid>http://blog.theopenphotoproject.org/post/13829938381</guid><pubDate>Tue, 06 Dec 2011 08:47:07 -0800</pubDate></item><item><title>OpenPhoto 1.3 release</title><description>&lt;p&gt;The OpenPhoto team is excited to announce our 1.3 release. &lt;a href="http://signup.openphoto.me/"&gt;Sign up now&lt;/a&gt; if you want to start using the service with your Amazon S3 and SimpleDb accounts. Else follow one of our &lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/guides/Guides.markdown"&gt;installation guides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s new in 1.3?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;em&gt;iPhone app updates&lt;/em&gt;. The iPhone app now has an upload progress bar. A handful of bugs were also fixed. &lt;a href="https://testflightapp.com/join/50ad9697c58133eacee1f0c8252f2b9c-MjE2MjA/"&gt;Get on the beta tester list using TestFlight&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The 5 second upgrade&lt;/em&gt;. Upgrading is normally a pain. We spent a majority of this release making it &lt;a href="http://blog.theopenphotoproject.org/post/12007221978/openphotos-approach-to-semi-automated-software-upgrades"&gt;as painless as possible&lt;/a&gt;. Anytime you update the source of your OpenPhoto site you&amp;#8217;ll be prompted to upgrade by a click of a button.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The kitchen sink gets a dish&lt;/em&gt;! Building services on top of OpenPhoto is easy but we&amp;#8217;ve got a lot of work to do in guiding you through the process. We&amp;#8217;ve got a &lt;a href="https://github.com/openphoto/kitchensink"&gt;an OpenPhoto kitchen sink repository&lt;/a&gt; that will hold examples of how to do this. &lt;a href="https://github.com/openphoto/kitchensink/tree/master/webhooks/asciiart"&gt;The first project&lt;/a&gt; in the kitchen sink is a &lt;a href="http://wiki.webhooks.org/w/page/13385124/FrontPage"&gt;Webhook&lt;/a&gt; service that emails an ASCII version of every photo that&amp;#8217;s uploaded.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A new AMI&lt;/em&gt;. The easiest way to get up and running is to boot an instance of the new OpenPhoto AMI. You can search for &lt;em&gt;openphoto&lt;/em&gt; under Amazon&amp;#8217;s community AMIs and select the newest one.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The main contributors to this release are:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Patrick Santana, iPhone&lt;/li&gt;
&lt;li&gt;Jaisen Mathai, 5 second upgrade&lt;/li&gt;
&lt;li&gt;Hub Figuiere, Bugs&lt;/li&gt;
&lt;li&gt;Gareth Greenaway, EC2 AMIs&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;To keep up on what we&amp;#8217;re doing &lt;a href="https://twitter.com/openphoto"&gt;follow us on Twitter&lt;/a&gt;, &lt;a href="https://github.com/openphoto/frontend"&gt;watch us on Github&lt;/a&gt;, or &lt;a href="mailto:hello@openphoto.me"&gt;send an email to hello@openphoto.me&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/12515671186</link><guid>http://blog.theopenphotoproject.org/post/12515671186</guid><pubDate>Tue, 08 Nov 2011 08:38:00 -0800</pubDate></item><item><title>OpenPhoto's approach to semi-automated software upgrades</title><description>&lt;blockquote&gt;
&lt;p&gt;As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications. &amp;#8212; Dave Parnas&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let&amp;#8217;s admit it: keeping software up to date is a pain. Not because we don&amp;#8217;t have time but because it&amp;#8217;s too cumbersome to deal with. It&amp;#8217;s a really important problem to solve and we wanted to share our thoughts on it in addition to how we&amp;#8217;re making it &lt;em&gt;really&lt;/em&gt; easy for you to keep up to date.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s in an upgrade?&lt;/strong&gt;&lt;br/&gt;Upgrades differ between releases. Since we do small incremental releases often it means that some upgrades are as simple as updating your OpenPhoto source files. Other upgrades aren&amp;#8217;t so simple. They can require updating other parts of the system such as adding a new table to the database and migrating existing data into it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;100 small updates are easier than 1 giant one&lt;/strong&gt;&lt;br/&gt;This goes back to our commitment of providing lots of small updates at a regular interval. What we mean by 100 small updates is that in between version 1.0.0 and 1.2.0 there might be 10 smaller versions or 100 smaller versions between 1.0.0 and 2.0.0.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s say you start using OpenPhoto and the latest version is 1.1.2 (our current latest version). No problem, you&amp;#8217;ll be set up with the latest and greatest version we have to offer. Then 2 weeks later we release 1.1.3. You&amp;#8217;ll see a small message on your settings page that a new version is available. It&amp;#8217;s your choice if you want to upgrade or not. Let&amp;#8217;s assume you ignore the message and a couple months pass by and at this point we&amp;#8217;ve released 1.1.9 and you decide to upgrade to get a new feature you&amp;#8217;ve been waiting for.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One man&amp;#8217;s &amp;#8220;magic&amp;#8221; is another man&amp;#8217;s engineering. &amp;#8212; Robert Heinlein&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What we&amp;#8217;ll do in this scenario is apply 7 small updates to your site. You don&amp;#8217;t need to worry about it since you&amp;#8217;ll just be clicking a button. But doing these 7 small updates means 2 things, read on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Decreasing complexity&lt;/strong&gt;&lt;br/&gt;Good software takes complex tasks and makes then less complicated. Applying updates in small chunks means that we can roll out new features gradually instead of spending months on it and releasing it as a giant feature. Releasing giant features is nerve wracking for every engineer since it typically touches many parts of the system and any number of things can go wrong.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bigger isn&amp;#8217;t always better. This is especially true in software. &amp;#8212; Us&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Getting features to users faster&lt;/strong&gt;&lt;br/&gt;This is such a motivating factor that we&amp;#8217;ve spent a lot of time making the upgrade code &lt;em&gt;extremely&lt;/em&gt; flexible. It&amp;#8217;s what allows us to take a days worth of coding and create a release out of it that anyone can install or upgrade to.&lt;/p&gt;
&lt;p&gt;A byproduct of this which we love is that anytime a user starts using OpenPhoto they&amp;#8217;re going to get the latest features released within a 2 week window. We&amp;#8217;re doing everything we can to bridge the gap between those of us working on OpenPhoto and all of you who are using it.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s to frequent updates!&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/12007221978</link><guid>http://blog.theopenphotoproject.org/post/12007221978</guid><pubDate>Thu, 27 Oct 2011 15:42:00 -0700</pubDate></item><item><title>It's like WordPress for your photos</title><description>&lt;p&gt;&lt;a href="http://theopenphotoproject.org"&gt;The OpenPhoto project&lt;/a&gt; is quite ambitious but we were searching for a fast and easy way to describe exactly what we&amp;#8217;re hoping to achieve. It had to be something many people could relate to and we think the following does a great job:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;WordPress for your photos&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This fits in line with what we&amp;#8217;re doing in numerous ways. Some of what made WordPress successful happen to be what we hope will make OpenPhoto successful as well.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Beautiful themes.&lt;/strong&gt; WordPress has made it trivial to add a sense of identity to your blogs with a few clicks of the mouse. The first thing people do when they set up WordPress is to select their theme.&lt;br/&gt;&lt;br/&gt;Self expression is often underrated and we believe that you want choice in how your photos are displayed too. You don&amp;#8217;t have to be a whiz at Photoshop to know what your favorite colors and patterns are. We&amp;#8217;ve spent a great deal of time making it easy to build and create themes as well as install them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosted WordPress.&lt;/strong&gt; Offering a hosted version of the WordPress software enabled an army of people to start blogging who otherwise wouldn&amp;#8217;t have been able to. Even the technically minded often sign up at WordPress.com for a blog because it&amp;#8217;s easy and fast.&lt;br/&gt;&lt;br/&gt;The hosted version of OpenPhoto does the same. A simple signup form and you&amp;#8217;re on your way to being up and running. You can still select Dropbox and Amazon S3 if you&amp;#8217;d like or postpone that indefinitely and just get started right away.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecosystem.&lt;/strong&gt; There should be studies done on the WordPress ecosystem. We don&amp;#8217;t know the number of WordPress theme makers and plugin developers but we know it&amp;#8217;s &lt;strong&gt;big&lt;/strong&gt;. It&amp;#8217;s been much of the fuel which has led WordPress to become as successful as it is.&lt;br/&gt;&lt;br/&gt;We&amp;#8217;re focusing obsessively on the ecosystem. This means engaging developers and theme makers early and providing them a platform they love to work on. The result is lots of themes and lots of plugins for every OpenPhoto user.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run anywhere.&lt;/strong&gt; You&amp;#8217;ll be hard pressed to find a hosting provider that doesn&amp;#8217;t support running WordPress. PHP gets a lot of flack but it&amp;#8217;s simply the most widely distributed runtime on which to deploy web applications. Beautifully written PHP applications are a win-win.&lt;br/&gt;&lt;br/&gt;OpenPhoto can be run anywhere that WordPress can in addition to hosts which don&amp;#8217;t even have MySql. We consider this crucial to the adoption of OpenPhoto and have put a lot of time in to keeping dependencies to a minimum.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open source.&lt;/strong&gt; It goes without saying that the success of WordPress is largely due to the fact that it&amp;#8217;s open source. This gives people the ability to set it up anywhere they want, peace of mind that they can move their content as they like, and that there is a vibrant community behind the project.&lt;br/&gt;&lt;br/&gt;Ownership and portability are in the DNA of the OpenPhoto project. Being open source is the first step in that but we took it a step further and allow you to select where all of your data is hosted. It can be the local file system and a MySql database or Amazon S3 and Dropbox.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Beyond these points we&amp;#8217;ve got a lot of initiatives in building a best in breed photo sharing and photo management platform. We&amp;#8217;d love to get your feedback. You can &lt;a href="https://github.com/openphoto/frontend"&gt;watch OpenPhoto on Github&lt;/a&gt;, &lt;a href="https://twitter.com/openphoto"&gt;follow OpenPhoto on Twitter&lt;/a&gt; or &lt;a href="mailto:hello@openphoto.me"&gt;email us at hello@openphoto.me&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/11872209505</link><guid>http://blog.theopenphotoproject.org/post/11872209505</guid><pubDate>Mon, 24 Oct 2011 12:09:00 -0700</pubDate></item><item><title>OpenPhoto 1.2 release</title><description>&lt;p&gt;The OpenPhoto team is excited to announce our 1.2 release. &lt;a href="http://signup.openphoto.me/"&gt;Sign up now&lt;/a&gt; if you want to start using the service with your Amazon S3 and SimpleDb accounts.&lt;/p&gt;
&lt;p&gt;You can find a &lt;a href="https://github.com/openphoto/frontend/issues?labels=Release+1.2&amp;amp;sort=created&amp;amp;direction=desc&amp;amp;state=closed&amp;amp;page=1"&gt;full list of issues that were closed for this release&lt;/a&gt; or read below.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s new in 1.2?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;em&gt;iPhone app&lt;/em&gt;. Many of you have been testing the iPhone app but in this release we&amp;#8217;ve completed the authentication so you can connect the app to &lt;em&gt;your&lt;/em&gt; OpenPhoto site. The iPhone app also lets you add filters to your photos. Get on the beta tester list by emailing &lt;a href="mailto:patrick.santana@openphoto.me"&gt;patrick.santana@openphoto.me&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Dropbox support&lt;/em&gt;. You can now have all of your original files copied into your Dropbox account. This includes photos uploaded through the web or using the iPhone application.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A spiffy new theme&lt;/em&gt;. We&amp;#8217;re including a new theme named &lt;em&gt;Beisel&lt;/em&gt; along with the OpenPhoto source. It&amp;#8217;s awesome and showcases custom photo sizes really well.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Optimizations for mobile&lt;/em&gt;. Both themes are optimized for mobile devices. If you visit your site on an iPhone or Android you&amp;#8217;ll see an easy to use version.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Drag &amp;#8216;n drop uploader&lt;/em&gt;. We revamped our uploader by writing it from scratch. This will allow us to continue to make it more awesome with each release.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Webhooks, oh my&lt;/em&gt;! Webhooks are probably the coolest thing on the Internet. Now every OpenPhoto installation supports them. This is the first step in creating amazing applications on the OpenPhoto platform. (&lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/api/PostWebhookSubscribe.markdown"&gt;OpenPhoto Webhook docs&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Permissions and Groups&lt;/em&gt;. When you mark a photo as private, it&amp;#8217;s now actually be private. You can create groups of email addresses and grant them access to private photos. Users signing in with their email address will be able to see the private photos you&amp;#8217;ve given them access to.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;API Documentation&lt;/em&gt;. Our API is fundamental to everything we do. The entire OpenPhoto site as well as the iPhone app are built on top of the same APIs that&amp;#8217;s exposed to the public. Now it&amp;#8217;s documented and contains examples. (&lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/api/Api.markdown"&gt;OpenPhoto API docs&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PHP client library and command line interface&lt;/em&gt;. We released an official PHP client library so you can start building applications (other languages coming soon). The client library also contains a command line program. You can upload all photos from a directory using a &lt;a href="https://gist.github.com/1274061"&gt;one line shell script&lt;/a&gt;. (&lt;a href="https://github.com/openphoto/openphoto-php"&gt;OpenPhoto PHP client library&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;A new AMI&lt;/em&gt;. The easiest way to get up and running is to boot an instance of the new OpenPhoto AMI. You can search for &lt;em&gt;openphoto&lt;/em&gt; under Amazon&amp;#8217;s community AMIs and select the newest one.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lots &amp;#8216;o bugs squashed&lt;/em&gt;. They never stood a chance really.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is a cumulative effort from the entire team dedicating nights and weekends to bring you the absolute best photo sharing and management software in the world. They are:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Patrick Santana, iPhone&lt;/li&gt;
&lt;li&gt;Hub Figuiere, MySQL and local file system adapters&lt;/li&gt;
&lt;li&gt;Mike Grace, Drag &amp;#8216;n drop uploader&lt;/li&gt;
&lt;li&gt;Preet Jassi, JavaScript framework&lt;/li&gt;
&lt;li&gt;Tobias Beisel, The new theme&lt;/li&gt;
&lt;li&gt;Gareth Greenaway, EC2 AMIs&lt;/li&gt;
&lt;li&gt;Kevin Hornschemeier, Revamped setup flow&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;To keep up on what we&amp;#8217;re doing &lt;a href="https://twitter.com/openphoto"&gt;follow us on Twitter&lt;/a&gt;, &lt;a href="https://github.com/openphoto/frontend"&gt;watch us on Github&lt;/a&gt;, or &lt;a href="mailto:hello@openphoto.me"&gt;send an email to hello@openphoto.me&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/11604639151</link><guid>http://blog.theopenphotoproject.org/post/11604639151</guid><pubDate>Mon, 17 Oct 2011 22:48:00 -0700</pubDate></item><item><title>A command line interface for your photos</title><description>&lt;p&gt;You&amp;#8217;re probably wondering: why? If so you&amp;#8217;re wondering the wrong thing. When I&amp;#8217;m building features for OpenPhoto I typically test my progress using the command line. Until recently, &lt;em&gt;curl&lt;/em&gt; was my best friend while coding (next to vim, of course). Then we added &lt;em&gt;OAuth&lt;/em&gt; and general authentication to the API and if you&amp;#8217;re familiar with OAuth then you know why &lt;em&gt;curl&lt;/em&gt; (without a lot of help) doesn&amp;#8217;t work so well.&lt;/p&gt;
&lt;p&gt;Turns out that others on the team use the API from the command line to test as well. This is the type of problem engineers love: lots of fun with low value creation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The good stuff&lt;/strong&gt;&lt;br/&gt;You can grab the code from the &lt;a href="https://github.com/openphoto/openphoto-php"&gt;openphoto-php repository on Github&lt;/a&gt;. There are instructions in the README of the project but here are some code samples. Below the examples you&amp;#8217;ll find some canned secrets to get you started right away. The &lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/api/Api.markdown"&gt;OpenPhoto API documentation&lt;/a&gt; is also on Github (some endpoints not yet documented).&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s an example of updating tags on a photo.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;./openphoto -h jmathai.openphoto.me -e /photo/7t/update.json -X POST -F &amp;#8216;tags=testing,more,tavin&amp;#8217;&lt;br/&gt;{&amp;#8220;message&amp;#8221;:&amp;#8221;photo 7t updated&amp;#8221;,&amp;#8221;code&amp;#8221;:200,&amp;#8221;result&amp;#8221;:&amp;#8221;7t&amp;#8221;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Canned secrets&lt;br/&gt;&lt;/strong&gt;You can use the following canned secrets to make calls to &lt;em&gt;jmathai.openphoto.me&lt;/em&gt;. Put this in a file and &lt;em&gt;source&lt;/em&gt; it prior to using the library and you&amp;#8217;ll be all set.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;export consumerKey=5c0ce66b069ee1ae7106ab93cdb431&lt;br/&gt;export consumerSecret=42959a6580&lt;br/&gt;export token=d7a4e0acf19c65b7c37e44d86f1316&lt;br/&gt;export tokenSecret=1c281e3367&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.theopenphotoproject.org/post/11120699154</link><guid>http://blog.theopenphotoproject.org/post/11120699154</guid><pubDate>Thu, 06 Oct 2011 17:28:49 -0700</pubDate></item><item><title>Building OpenPhoto entirely using our API</title><description>&lt;p&gt;You read a lot about building your API first and then your application on top of it. It&amp;#8217;s actually quite difficult (&lt;em&gt;translated, requires discipline&lt;/em&gt;) unless you start off with the right &lt;em&gt;framework&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What exactly do you mean by &lt;em&gt;API&lt;br/&gt;&lt;/em&gt;&lt;/strong&gt;You &lt;strike&gt;can&lt;/strike&gt; should think of your API as a &lt;em&gt;central access point&lt;/em&gt; by which you execute blocks of code or logic and get a response back.&lt;/p&gt;
&lt;p&gt;The most obvious example of this sort of API is a RESTful HTTP API. We have an API to get a &lt;a href="http://current.openphoto.me/photos/list.json"&gt;list of public photos&lt;/a&gt; which returns a JSON response. The idea is that anytime we want this same list of photos in our application that we call the API. You&amp;#8217;ll end up with a unified interface for your application, AJAX and third party developers and everyone will be happy as a result.&lt;/p&gt;
&lt;p&gt;There are a few important points though. You don&amp;#8217;t want every single API required by your application to be publicly available. You also don&amp;#8217;t want to incur the overhead of an HTTP call to access your own API from your app since you&amp;#8217;re already executing server-side code. Let&amp;#8217;s cover those next.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;External and internal access to your API&lt;/strong&gt;&lt;br/&gt;This is an important aspect of the framework when it comes to building your API first. Essentially, you&amp;#8217;ll wind up having APIs which are public and some which are private. Often times the logic that should be in a private API wind up in a function and called directly. While this typically works you&amp;#8217;re no longer going through a central access point to get to that logic and miss out on the benefits of doing so (&lt;em&gt;listed later&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s the point of an internal API&lt;/strong&gt;&lt;br/&gt;An example of an internal API might be a routine to compute the hash of a password. You might not want that to be publicly available (&lt;em&gt;over HTTP&lt;/em&gt;) but your application will need to invoke that API. The &lt;a href="https://github.com/jmathai/epiphany"&gt;framework we choose&lt;/a&gt; has an &lt;a href="https://github.com/jmathai/epiphany/blob/master/docs/Api.markdown"&gt;API module&lt;/a&gt; which lets you define APIs as endpoints and declare if they are public or private. This allows us to define an API such as&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/password/hash.json&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and not expose it publicly over HTTP. We can still invoke the API to get a response.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$hash = getApi()-&amp;gt;invoke(&amp;#8216;/password/hash.json&amp;#8217;); &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This works out really nice because from our application we can invoke any API and not worry about its visibility since internal and external endpoints are accessible. What happens if you try to access this endpoint over HTTP?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;curl &amp;#8220;http://mysite.com/password/hash.json&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You&amp;#8217;ll get a 404, as you should.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s just the basics of the API module we&amp;#8217;re using but you get the idea.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Avoiding HTTP calls when you can&lt;/strong&gt;&lt;br/&gt;A RESTful HTTP API is wonderful but is probably overhead when you&amp;#8217;re already executing code on your server. This is a reason why we love the API module in the framework we choose. You can &lt;em&gt;invoke()&lt;/em&gt; any API and bypass making a HTTP call. That&amp;#8217;s what we did in the example above. Our interface to the API remains identical to if we accessed it over HTTP and we can easily add in a layer to switch to HTTP if we want.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The benefits of relying on your API&lt;br/&gt;&lt;/strong&gt;Aside from having extremely consistent code and a known path to access logic from within a controller is the benefit you provide developers on your platform. More bugs will be reported faster because not only are you relying on the API but so are your developers. When you fix a bug for yourself it&amp;#8217;s also fixing a bug for your developers. It&amp;#8217;s a (&lt;em&gt;beautifully&lt;/em&gt;) cyclical process.&lt;/p&gt;
&lt;p&gt;You can see the &lt;a href="https://github.com/openphoto/frontend/blob/master/documentation/api/Api.markdown"&gt;documentation of our API&lt;/a&gt;. We rely on this exclusively for the &lt;a href="https://github.com/openphoto/frontend"&gt;OpenPhoto website&lt;/a&gt;, &lt;a href="https://github.com/openphoto/mobile-ios"&gt;iOS&lt;/a&gt; and &lt;a href="https://github.com/openphoto/mobile-android"&gt;Android&lt;/a&gt; app. The &lt;a href="https://github.com/openphoto/frontend/blob/master/src/libraries/controllers/UserController.php"&gt;User controller&lt;/a&gt; is an example of a controller which uses &lt;em&gt;invoke().&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/11031677122</link><guid>http://blog.theopenphotoproject.org/post/11031677122</guid><pubDate>Tue, 04 Oct 2011 13:43:00 -0700</pubDate></item><item><title>Namespacing the web for your photos</title><description>&lt;p&gt;We talk a lot about &lt;strong&gt;portability&lt;/strong&gt;. It&amp;#8217;s because we believe it&amp;#8217;s a crucial part of the Internet. Unfortunately, it&amp;#8217;s the opposite for most companies that want to &lt;strong&gt;lock you in&lt;/strong&gt; to their services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Making URLs portable&lt;br/&gt;&lt;/strong&gt;It&amp;#8217;s not easy to make URLs portable. They consist of several components which are not typically owned by the end user.&lt;/p&gt;
&lt;p&gt;First off there&amp;#8217;s the domain. Chances are that you don&amp;#8217;t own &lt;em&gt;facebook.com&lt;/em&gt; which means you can&amp;#8217;t take your Facebook profile with you somewhere else.&lt;/p&gt;
&lt;p&gt;Second there are these &lt;em&gt;unique&lt;/em&gt; IDs. They&amp;#8217;re typically long alpha numeric strings which represent some record in some database. The problem is that they&amp;#8217;re &lt;em&gt;always&lt;/em&gt; global. You just get a random ID that no one else on that system has. The problem here is that if you upload a photo to Flickr it might have an ID of &lt;em&gt;abc123&lt;/em&gt; but that same photo on another service might have an ID of &lt;em&gt;xyz987&lt;/em&gt;. These IDs don&amp;#8217;t mean anything to the end user.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How does OpenPhoto make URLs portable?&lt;br/&gt;&lt;/strong&gt;You can&amp;#8217;t really talk about &lt;strong&gt;portability&lt;/strong&gt; without talking first about &lt;strong&gt;ownership&lt;/strong&gt;. In order to make URLs portable we need to make it so that you own all the components of your URLs. We&amp;#8217;re doing that in two ways.&lt;/p&gt;
&lt;p&gt;The primary and most important way is that you have the option of &lt;strong&gt;owning the domain&lt;/strong&gt; that your photos are accessed from. This applies to your public facing website as well as your API. It doesn&amp;#8217;t even matter if you run the OpenPhoto software yourself or if you go with the hosted service we&amp;#8217;ll be providing in a few months. If you own a domain then point it to your OpenPhoto site and you&amp;#8217;re half way there.&lt;/p&gt;
&lt;p&gt;The second way is to let you &lt;strong&gt;own the IDs&lt;/strong&gt; of your photos. Because you don&amp;#8217;t share a database with anyone else we&amp;#8217;re able to provide you with IDs for your photos that are namespaced for you. This means that the first photo you upload will have an ID of &lt;em&gt;a&lt;/em&gt; and your 26th photo will have an ID of &lt;em&gt;z&lt;/em&gt;. The same applies to every single OpenPhoto user. This becomes extremely important when you switch hosts or decide you want to change from the hosted service to one you install yourself. Your IDs will remain intact.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;combination of these two&lt;/strong&gt; mean that &lt;strong&gt;every URL&lt;/strong&gt; for your photo will remain the same no matter what OpenPhoto service(s) you use.&lt;/p&gt;
&lt;p&gt;These are just two of many steps we&amp;#8217;re taking to make sure you own as much of your data as possible. We&amp;#8217;d love to hear your thoughts via &lt;a href="mailto:hello@openphoto.me"&gt;email&lt;/a&gt; or &lt;a href="http://twitter.com/openphoto"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.theopenphotoproject.org/post/10537443380</link><guid>http://blog.theopenphotoproject.org/post/10537443380</guid><pubDate>Thu, 22 Sep 2011 17:05:00 -0700</pubDate></item></channel></rss>

