-
-
Film, not filters.
-
Twelve Exposures. No preview before. No deleting after.
-
A shutter, and eight films to load.
-
Eight film emulsions. Each behaves like the film it's modeled on.
-
Buy a roll once. No subscription. No expiry.
-
Hold it in any way.
-
Shoot using the classics of film photography
-
Fully analog feel
Inspiration
The more I think about it, the more I realize that Lupo has actually been in development for several years. I first started experimenting with creating a photo filter app three years ago, but abandoned the project, because it's not 2009 anymore and a plain app with basic sepia filters is just not gonna cut it in today's world. Not to mention that it's a heavily saturated space with heavy-weights like VSCO, Tezza, or Darkroom. So, the project got abandoned, but the idea for a photo app remained. I just needed a push and a good story to build the app around. Then one day it hit me: I should not build an app around "better filters" or "better UI", but around constraints and the concept of delayed gratification.
See, when I was a kid, I loved taking pictures with a bulky Nikon F60 analog camera that my Mum bought. The whole ceremonial aspect of analog photography was incredibly captivating to me: you have one film inside and cannot change it until you finish it, so each shot matters. Then after you finish a roll, you had to go to a place that could develop film. To top it off, you had to wait for hours to see the results. You couldn't just snap a picture, quickly glance at a screen to see it's okay and keep on shooting. Everything had to be deliberate.
After replaying that experience in my head, I thought that maybe this next app should go completely against the grain of modern world and the instant gratification. Being completely honest, I don't remember when was the last time I looked at my Photos album on my iPhone. Usually I just snap a picture and forget about it.
That's how Lupo was born, which embodies all of these beautiful limitations of analog photography: you can hold it only in landscape mode (just like a regular camera), you have 12 exposures that you have to finish before loading a new film, and after you're done with the roll you wait for 2 hours to see what you shot. Overexposed shot? Underexposed? Hand was shaky? It's all there and there are no take backs.
What it does
Lupo doesn't apply a filter to a finished photograph. It exposes each frame onto a physical model of film: the characteristic curve, silver-halide grain, light scattering in the base and then develops it and prints it. Twelve frames a roll, and a wait before you see them.
How I built it
Before Lupo, I built AetherCam, which dealt with audio in the context of video, so I already had the skeleton ready for a photo app. The core functionality was literally copied over from that application and then adapted to deal with photo and not video. The biggest obstacle was how to simulate film and make the photos feel like an analog shot. After all, modern iPhones have incredibly complex ML machinery working inside them, computational photography, and all the bells and whistles that make your pictures pixel-perfect. That required some digging into AVFoundation documentation to see what can be turned off to get as close to a raw picture as possible. But that doesn't come close to the behemoth that Apple's Metal framework is. I think it's the most complex beast out there, with incredible capabilities built into it. I was very briefly exposed to Metal at one of the startups that I worked for years ago, but that was not enough to build true film simulations. Luckily, GitHub came in clutch with couple of projects that built a physics-based film simulation, plus some other repositories that were modeling particular films that I wanted to include in the app (Kodak Aerochrome).
Challenges I ran into
AVFoundation and Metal. The biggest hurdle was the memory footprint of a Metal pipeline that was processing pictures. At one point I noticed that the footprint skyrocketed from 85MBs to almost 1GB, all within two/three pictures from the same roll. Another minor headache was making the camera behave like I wanted to, because the device orientation documentation is a bit confusing.
Accomplishments that I'm proud of
There are many. I am definitely happy how the clarity of the idea drove the development process. I don't recall ever having that intense feeling of "this all makes so much sense". On the technical side, once again, Metal. The power of that framework and its capabilities completely stunned me.
What's next for Lupo - Film Camera
I am incredibly excited for the future of this app and think that there is so much to do to make it even better. I already have a plan (and an immediate update) for the next iteration of the app. Apart from that, I think it'd be great to build a community around it, where people can share the photos that they've created.
Built With
- apple
- avfoundation
- ios
- metal
- swift
- uikit
Log in or sign up for Devpost to join the conversation.