Sunday, December 9, 2012

Update before 2012 is out..

So a couple more things have changed.. My wife is starting to use the site. And that is giving me all kinds of insight into what isn't working.

Changed a couple of silly little things like:

  1. Made org (need a better name here) group (?) clickable
  2. Made font larger
  3. Make icons/buttons bigger

Sunday, September 9, 2012

Recent features added

I've added the following items to the TruSafe Vault:

  1. Suborganizations (man I need a better name for this)
  2. Hierarchical listings
  3. A Notes field to passwords
  4. Audit tracking behind the scenes. 
  5. Smaller username/password fields
  6. Menu items
Coming soon:
  1. Change password functionality (seriously? shouldn't have this been there the first day???)
  2. Verified email addresses
  3. Audit listings
  4. Collapsable tree
  5. Share permissions
  6. 2 factor authentication

MySQL... gone again

So I thought had the multiple insert save thing fixed, but alas, when using an ORM (WebObjects in this case) that decides it's own order, it is just too hard to keep track of things and try and keep saving each step in the proper order. Rather than fight this, I switched backed to PostgreSQL.

Honestly, the only reason I had tried to go back to MySQL was to use Amazon's RDS.

Tuesday, July 31, 2012

Back to MySQL

So I figured my issues with MySQL and ordering of SQL statements... or at least they aren't showing up any more after I fixed some of my migration scripts. The big reason for this was that I wanted to move to a more reliable database architecture. I'm now using Amazon's RDS service for the backend of the TruSafe vault. So far, so good!

Monday, May 28, 2012

Starting back up

So I haven't worked on the site in quite a while, but I've decided to start back up and get more work done, especially auditing capability and showing that information to the users. That's where I think TruSafe will really show it's value.

Recently I've fixed an isOwner error you might have seen if you've used the app recently. I've also updated the certificate and add SPDY support and disabled inline images from pagespeed (much better caching support)

Sunday, November 27, 2011

MySQL and the inheritance problem

So early on, I had decided to go with MySQL and InnoDB for my database of choice. Recently however I decided I needed to change this. As part of adding an audit trail for the TruSafe Vault, I wanted to inherit multiple encrypted items from a single parent, and add logging to that parent object.

In WebObjects, this means choosing an inheritance model, whether it is Single-table, Horizontal, or Vertical inheritance. I chose the Vertical inheritance model since it closely models after the object model. There may be performance issues later, but it would be a relatively trivial migration to move to the single table model. Horizontal wasn't an option, as it didn't allow for foreign key relationships at the parent level.

This introduced a new problem. MySQL checks all constraints at statement time, not commit time! Coming from the Oracle world, I wasn't used to this. This put a huge dependency on me to order the object creation and saving properly or else things would just fail. With WebObjects hiding much of the inheritance object creation, this became quite difficult.

Rather than peppering my code with various hacks to overcome this, or changing the whole data model to adhere to this limitation, I decided to switch databases. Sounds reasonable, right? Well I didn't have any data, and was a little concerned about the licensing of the MySQL JDBC drivers anyway.

So out with MySQL, and in with Postgresql. 9.1 to be exact. Installed in on my MacBook Air, change the WebObjects database driver from MySQL to Postgresql and off I was. In actuality, it really was that simple.

And because Project Wonder, which is a huge framework built on extending WebObjects, is so wonder-ful, if I did need to change databases, there is a convenient way to do this.

If you plan on doing a WebObjects app, don't do it without Project Wonder and WOLips.

Initial thoughts

TruSafe has always been a little side project for me to do a simple, yet secure, password or note storage mechanism. Ideally it would allow people to store this encrypted on a SaaS platform while sharing it using public/private key mechanisms with people they trust.

I've had a couple of false starts, but recently I've been given a sabbatical from my day job and went to Costa Rica (Playa Coyote to be exact) and decided that as part of my time down here, I want to really get TruSafe going.

Since I'm a better operations engineer than programmer, I decided to use the one programming framework that I know relatively well, so the whole site will be written in WebObjects and deployed to a Linux VPS. And written while drinking La Cerveza de Costa Rica, so this should be interesting :-).