It turns out I somehow end up working on image management whether at work or at home. At work, VM image management, and at home, JPEG image management… I recently created another blog called Selenoid for the home part here:
As it says on the landing page, the goal was to create a camera roll for our pictures, and it is only fair to call is “Selenoid” since 99% of our pictures feature Selen. The main motivation was somewhat more than just a place to put our pictures. What instigated this was, a couple of activities with bunch of other friends, and a whole bunch of 10MB emails flying back and forth with group pictures. Instead of emailing each other a bunch of pics, it seemed a good idea to have a single sink point where everyone can send or upload theirs, and can see other pics. All the prettying and gallerying automatically done for you, and you can bulk download all. After playing with a few album tools, I ended with this blog platform.
The requirements were pretty simple at first (later on, it turned out to be more, but we’ll come to that):
- Simple to upload
- Easy to download
- Nice enough to view online
- Commenting/captioning enabled
For simple, since everyone was already emailing things around, it seemed straightforward to just use the same flow using post via email from Jetpack. Easy to download is fairly easy with the media library, the blog format is reasonably easy on the eye, and it is natural to include comments. For private, I used the “Private Only” plugin, which works nicely. Now anything besides the landing page brought up the login page:
Posting pictures required no access, as long as you had the special email address, but viewing needed login. It seemed all was good under the hood at this point, and experimentation started. After a few iterations two new requirements became obvious:
The first one is obvious, and fairly straightforwad. The landing page describes the details of how to push categories during post-via-email. Multitenancy is a tough one and needs explaining. Once you start pulling in posts and categories from multiple events, you want to isolate which tenants see which content. There are a bunch of plugins that provide this and CRM like frameworks. I have used “Role Scoper” which is reasonably fine grain, and works well. It was, however, not fun to deal with setting roles with each individual user and thinking how this scales out. Setting roles, also somehow started to break post via email, so eventually, we ran out of playtime here. It is quite amusing multitenancy gives me grief both at work and at home. Right now, we have roles scoped, but disabled by default. So I defer strong isolation for simplicity. Here is an example Roll from a few pushes via email. Reasonable end result (captured as WYSIWYG via FireShot) i think with minimal effort:
– Confirm User Registration
– Private Only
– Private Only, Disable Feed
– Role Scoper [Disabled]
We dont use this service much nowadays as shared iCloud Streams make it so easy, but still, not everyone has iOS devices, and there has been quite a few instances where email-to-Selenoid proved to be quite useful. I hope to revisit multitenancy at a later time and update this with a proper service with multi-user isolation.