This was the final push (changelog at bottom) before submitting to the App Store last Friday. I can say I stuck to my feature freeze and only fixed bugs and finished core features. At the time of writing this, still waiting for approval or not, and am purposefully staying out of the code! In the meantime, I updated to iOS 7 and am still forming an opinion on it. I have to say it upscales apps designed for iPhone to look much better on an iPad, and the interface from using default styles looks great to. I really pushed hard on getting this submitted on 8/17 as that is a symbolic end to summer for me and I go back to my rest-of-year occupation as a software development instructor at the technical college. So one last lone-wolf code-binge before I go back to school.
So on the hopeful assumption that Sterts is approved, what next? After much thought given to scaling (after all, I would like a million+ users) I've decided to rewrite the site and back-end in Ruby on Rails and possibly MongoDB on the data side. Currently I am using Symfony2 and SQLite, respectively. As much as I love Symfony the learning curve is just too steep when bringing additional resources on board, it's a rare skill-set and the ORM is just too fragile and doesn't lend itself to iterative development when you decide that you need another field on one of your classes. To add to it, SQLite and doctrine don't play well together when it comes to alter table commands so I had to write a SQLite DB copy utility (in C#, ironically) and run it every time I needed to add a field to one of the tables.
In addition to the back-end rework, I am planning on implementing the following features in the subsequent build:
- Latitude and Longitude data for each Stert.
- Better reporting - overlays on month/week/days with previous months/weeks/days.
- Push notifications for reminders on entering your sterts.
- Push notifications on friends updates.
- Search for friends by email or name.
- Averages for all users available/visible.
- Display feed of user updates on site.
- Display friends on profiles.
- Flag for if you are sick.
The following are ideas I am currently evaluating for future enhancements:
- Slider for "mood". Left would be something negative like "dark" or "morose" and far to the right would be "unsinkable" or "best day ever". In between would be "good", "fine", "been better" "sad", "anxious", etc. I want to keep the purity of vision that "body and mind" provides but you can be tired and still in a great mood.
- Ability to have sub accounts for paid users, and the sharing of sub accounts between users. These sub-accounts could represent patients, or children, or anything else that you'd like to track privately.
Changelog (what has been updated) for 8/16/2013:
- Persist Username on login screen,
- after login go to home screen
- history screen show username in navigation bar
- last stert not showing for logged in user after login
- form validation 8/13 HTML5 browsers - password match, username exist, email exist
- fixed month view and navigation to week/month buttons
- check highcharts mana/hitpoints offset bug.
- added contact us page
- web change register to sign up
- app Change "register" to "sign up"
- stert class add note field
- add latitude and longitude to sterts class (data mining, people are happy at this location,etc)
- HAVE TO MAKE SCHEMA CHANGES BEFORE BETA EVEN IF NO NEW FEATURES USE THEM!!
- contact us class
- make functional contact us page
- admin contact us page
- change contact link to logged in path if user is logged in. create new route
- contact populates user info when logged in
- contact us submission page
- on registration, need validation on username!!!
- fix selected tab on charts page
- message on add friends to sign in with twitter
- message on twitter friend get failure
- fix button style on settings page authorize
- don't return twitter users already added as friends
- Dont add same twitter friend twice
- friends page
- sign up, need validation on username, email and password match
- re-try on twitter api fail
- pull down on history screen
- Loading Indicator on History View
- changed new stert button to add from compose
- email sendout on user registration
I put myself into a feature-freeze until I submit the app to Apple, so am now tightening up a loosely-bound together web application that has thus far only served to fix the errors that the app introduced into the system. I take more enjoyment from this than I used to, probably has something to do with better design up front! Most of my refactoring has just involved reorganizing methods to be in alphabetical order, which is something of a first for me. Twitter deprecated v1 of their API which I was unabashedly using in some areas.. I thought this was going to be a struggle to update, but since I wrote my own Twitter oAuth client and forced myself to actually understand oAuth, it wasn't that bad at all. Most places it was just changing 1 to 1.1 in the url, and in one case a POST request turned into a GET.One of the bigger changes I worked on was the ability to display the Sterts history from a given week, as well as to force the chart to display a full range regardless of empty data in that range; for example, to force the chart to start on a Monday. Here is a sample of the past week, or click here . One thing I love about highcharts is the ability to export as a png:
In addition to the deeper reporting, within the app I replaced of the user profile image on the history screen. Instead of showing the profile, I subclasssed a view to display the difference between the Stert and the one before it. So, if Stert was "100 + 80" and the next was "50 + 90" there would be a long, red arrow pointing down and a short, blue arrow pointing up to illustrate the change from Stert to the next. Screen shot:
Oh, and a new splash image I am especially proud of:
If you're still reading, good. The first few paragraphs were to filter out the faint of heart. You're thinking, "wow! you really seem to know your stuff and this is the best idea I've ever heard! But how are you going to make any money to sustain the infrastructure required to support this insanely successful, world-changing technology?" There will be a ad-supported version of the app of course, and a ad-free version for $1 with some additional reporting and scheduling features in it. The main business model itself will be in-app purchases to change the nature of the measurements themselves. For example, the "Hitpoints and Mana" theme may be a bit too nerdy for a broader audience, so instead you might want to display "Health and Mind" in your app and on your profile. This would be unlocked through microtransactions. Conversely, the red and blue bars may not be nerdy enough, and you may choose to display 8-bit style Hearts instead to communicate your level of health that day. The default interface inside the app could be replaced with a futuristic-style interface with lens flares and animations and glowing buttons as an unlockable as well, or a soothing, neutral theme with subtle and responsive visual feedback. All of these in-app purchases will maintain a consistent presentation from the app interface, your account profile, your twitter posts and the badges that can be embedded on a blog or elsewhere. So, while the format of the Stert itself will remain "99 + 80" or "100 + 100" the graphical style and terms associated with them can be controlled by the user. My vision is around the measurements themselves and what can be done with them, and everything else will be aimed to enhance the experience for the user and encourage participation by actually entering the data.
Changelog (what has been updated) for 8/9/2013:
##App Change Log##
- Reverted to default styling.
- Hiding User Cell on no history data.
- Set Default values on Stert entry to 100.
- Moved rest of Twitter OAuth class to use v1.1 of the API since v1 is deprecated now.
- Added a shared static instance method to Twitter OAuth class, updated previous references to use now instead.
- Changed Stert status format to "100 + 100" from "100 and 100".
- Fixed issue with Posts to Twitter were failing on improperly encoded + in the base signature
- Replaced twitter profile pic with up and down arrows in history view.
- Removed notifications screen from app.
- Updated tab bar navigation.
- Store class cleanup, resolved build warnings.
- Login will now fail if user has not been granted beta access.
- Auth token expired message alert to login in again.
- Removed screen titles as labels and moved them into the navigation bar.
- Replaced gear image for account tab bar with a crown.
- New app icons and splash screen
##Web Change Log##
- Moved into Private Github Repo
- Added previous and next navigation to chart view.
- Added weekly view to chart.
- History will show by default when viewing from week or month link format.
- Added admin navigation page.
- Added ability to set beta status on user account.
- Login will now fail if user not granted beta access.
- Added ability to invalidate user authentication token.
- Updated landing page with image of Stert history.
- Added "broadcast" page that will send out push notification to all users
This was an email I sent to another developer (and my first sales pitch); a good start to the Sterts development posts:
My new platform, called Sterts (internet meme-ish for stats and statistics), that I am working on revolves around the idea that we have all these avenues to tell people what we like and what we are thinking but do not track how we feel. Are you able to focus but are dragging physically? Or got tons of sleep last night but just can't stay on task? What if you could track these things over the course of a week or a month and start seeing patterns in how you feel and could use that in advance? Or see that your team is dragging that day and take them out to lunch or mini-golf. Could you see on a given day where you are at a low point that everyone else around you is as well? What could that mean for you with your own well-being to know that?
I got the idea while watching Iron Man 2, when he is measuring his blood for toxicity levels and compared the device to what my brother-in-law measured himself with before he lost his battle with diabetes. Wouldn't it be great, I thought to myself, if we could measure all kinds of things from our bloodstream....I don't get hungry, just crabby when I need to eat. Could a sensor measure that? A step further... could something measure and notify us when we are in a bad mood? Or even predict it before it happens? As far as EEG technology has come, even close enough to say that affordable consumer tech is around the corner, the technology to measure how tired you are or your mood does not exist. But we do it all the time in the analog world: by asking "How are you today?". We have devices that ask us things all day - "do you want to read this email?", "Do you remember you have an appointment today at 10am?"
The app measures two pieces of data - hitpoints and mana (like in a video game). Hitpoints would be your physical and mana your mental for the day in the form of a red and blue bar each, respectively. The ideal expression of this platform would be through Google Glass (and the inevitable competitors) to display these stats over a persons head through augmented reality overlays as you look at them, just like in a game. This is currently technologically feasible, and inevitable regardless of the squeamishness around facial recognition apps. Even with smartwatches down the road with heartbeat monitors you will not have something that can measure how you "feel" so this is applicable long-term. Heart rate and blood pressure data could be added into the same system, however. Doctors could access this data (or even monitor it) to diagnose the progression of a disease or an effectiveness of a treatment. The same data would be of interest for sociologists, marketers, economists, etc coupled with geographic data and age, sex, education level and income. What would the collective mood of humanity look like as seasons change or tragedies and triumphs unfold all over the world?
Click here see a YouTube demo of the base functionality, and the resulting Tweet demonstrating the Twitter Card functionality. I am nearing completion on the iOS app and hope to have it submitted to the app store by the middle of August. It is currently mid-refactoring from the last addition of features and style overhaul. If you are not reading this on the Sterts site, you can see one of the badges in action in the left navigation of my blog.
Once approved in the app store, I will be getting the first round of users in for closed-beta testing. If interested, contact me via @joebaldwin