May Release - "MGMT"
Earlier today, I pushed out our May release, which we codenamed "MGMT". This release represents quite a bit of backend work, which I'll go over below. There are a few frontend changes though:
- Enabled high accuracy GPS. It might take a few seconds to acquire an accurate position, but this should solve the issue where people were several miles away from places and those places appeared close to them. This probably happened because those people were around tall buildings or indoors.
Okay, so just one change. :) The backend is probably of more interest to everyone, since a lot of work went into planning it and making it as close to perfect as possible. Besides basic stuff like tracking the latest version of GeoCouch and changing to a Rack app rather than a Rails app, we basically did an extensive rethink of our application. When developing the RestlessNapkin application, we designed it around what core functions we needed to accomplish our goal, but we left it open to be extensible in the MacroDeck Platform. The idea was that we would get our app going, and figure out what we needed to do to get the "essence" of our application. Something that we could use to build other, different apps with if we wanted.
So, one step in doing this would be to actually code that core set of functionality. I came up with a Sinatra application, currently called MacroDeck App, that works with the MacroDeck Platform to:
- Figure out what objects are defined (right now, the platform needs this broken out into the app part, since our application's objects don't need to be in your application :) )
- Display those objects to the end user, and based on how fields are defined in the appropriate DataObjectDefinition, different things render differently. For example, a phone number will render as a telephone link, a URL will render as a URL, a geographical coordinate will render as a map (currently static but will be made dynamic), and a time will render as a time. There is room for improvement here.
- Allow people to edit those objects, and again depending on the settings of the object's DataObjectDefinition, a field might be a text area, a text field, a date/time picker, and so on. Lots of room for improvement here.
- Allow creating new objects in the same manner as editing them. Currently there's no support for telling the app what types of objects can be children of the object you want to create a child under, but that's planned. You wouldn't want to try to insert a country under a neighborhood - that doesn't make sense, and surely won't work! :)
And I should be sure to clarify that it does these things without the app knowing anything specific about the objects in the database, just how to render different fields. There's lots of room for improvement - and making more things customizable (right now HTML is generated in the objects that process the fields - which I called behaviors) is one of my priorities. But with the amount developed currently, it makes for a pretty useful admin interface:
I'm definitely not finished, but I think that these backend changes will lead to really cool stuff. At some point even, it might be possible to let the community develop additional features, since it would be a matter of just defining how the objects that need to be added relate to each other and behave.What's planned next release? More content, and more backend changes. This time, it'll be something that you'll get to actually use.




