Sunday, June 28, 2015

How client authentication works


When you download elemcam you are allowed to start recording right away without ever being prompted to make an account or enter a password. I am not going to go into the technical details on how to set up this entire process, but here are the steps elemcam takes to make your experience simple and secure.


  1. Elemcam has digital signatures on file with google allowing intrinsic trust between the application user and elemcam. This trust is simply to know the identity of the user using the application. 
  2. With this trust elemcam's native android application can request from google an oauth token without the annoying prompt to authorize access to basic information.
  3. The oath token is conveyed in every server interaction elemcam's native android application does. This is typically a multi-part post to save a video to the server.
  4. Before any action is done on the server, whether that's saving or serving a video, the token is verified to be signed by google and that the token was really meant for elemcam and the user in question. 
With every interaction being verified to be deliberate and from a particular user there is no need for separate accounts/passwords and all the headache and security vulnerabilities that come with it.

New in 2.3.0

In Elemcam 2.3.0


  • Stability - Elemcam actions are organized into two main services; recording service, and the upload service. It was observed on older hardware with less memory that the upload service would be consumed by the OS at various times rendering elemcam useless. To combat this natural OS behavior the upload service has been foregrounded just like the recording service. Android will reclaim processes in the foreground very last and thus elemcam should be much more stable going foreword. 

  • Billing Rework - Elemcam was previous leaning on a third-party wrapper API for androids native In-App billing. The wrapper has been completely gutted and elemcam now interacts directly with the native billing API allowing for a more clean and secure interaction. 

  • Miscellaneous - Fixed a broken style on the server's welcome page, and a few other miscellaneous fixes. 

Tuesday, December 23, 2014

versioning

Versioning



Elemcam is using a modified semantic versioning scheme. Summary:
Given a version number MAJOR.MINOR.PATCH, elemcam will increment the:
  1. MAJOR version when user interface is altered in anyway beyond the cosmetic,
  2. MINOR version when a capability is altered without any change to the user interface, and
  3. PATCH version when bugs are fixed or minor cosmetic updates to the user interface. 


Because elemcam must always be backwards compatible, semantic versioning out of the box does not apply. 

Tuesday, December 16, 2014

planned features

Planned Features



  1. Optimizations to allow for quicker uploads/downloads
  2. Audio detection and alerting with configurable sensitivity.
  3. Starter subscription with free seven day trial.
  4. Face detection and alerting.
  5. Upgrade to the adaptive bitrate algorithms to include "catch-up" metering.
  6. Configurable motion detection regions.
  7. Device configuration via elemcam.com
  8. Advanced scheduler to allow for timed recordings, detection's, and uploads.
  9. More hardware support including flash and secondary cameras.
  10. Configurable audio prompts emanating from the device.
  11. Configurable flash prompts emanating from the device.
  12. Upgraded content management via elemcam.com
  13. User configured directory selection - not just internal/external cache locations.
  14. One time additional quota packs purchases.

Thursday, December 11, 2014

motivation

Good things come to those who ... code



Plain and simple, I like to build things. Normally I run out of steam before a product is complete. I've often wondered about why that is. I think I can distill it down to one factor : passion.



On many of my projects I just run out of steam because I just don't fully believe in it. For instance my last project I was going to write an app that would allow you to compare hospital prices for common procedures. I completed the back-end, seeded it with open source medicare and geospatial data. Thought I would sell it for .99 cents on the app stores. But ran out of steam when it came to building the clients. It dawned on me that never again would I embark on a project I wasn't going to be all in on.

Fast forward half a year and I am fussing around with with a few of my IP cameras that were misbehaving. The network configuration on those things are typically a nightmare, and setting up a DVR system never materialized for me. I was thinking of purchasing a couple of Dropcam cameras, but really wasn't digging the overall cost for the system. Then I thought, heck I've got a few Android devices laying around, I'm sure someone has written a surveillance service for Android.  At a minimum I was looking for a discreet recording, motion detection, and most importantly cloud DVR. To my surprise there was nothing out there that fit the bill. Usually I would just move on and look for the next best thing. But in this case I just didn't want to settle. So I sat down and penciled in the first outline that would become elemcam.

Launch

http://blog.phdlabs.com/failure-to-launch/


Hello World



Elemcam just launched and I needed a platform to share upcoming features, bug fixes, and some developer centric observations. Warning! I am an engineer first and foremost so bare with me on my grammatical mistakes.

I'm going to discuss motivation in my next post but I wanted to quickly note that launch does not mean done. For elemcam, launch has always meant that the core product is stable and polished enough to be exposed to the world. 

From the very beginning I targeted a certain feature set for launch and was tireless in containing the creep. Now that launch has occurred and the first goal achieved I will be working on a set of exciting features which I will outline in an upcoming post. 

The core mission behind elemcam is to provide a simple and secure surveillance platform. With that in mind all upcoming features will be weighed and prioritized against the core tenets of simplicity, security, and stability.