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
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
Getting back on the blogtrain for my 100th post, gonna be photo-heavy. Current in mid-home-wreckery mode. Set up the office last week and the cords were UNWORKABLE, so this happened in 45 minutes or less:
Much better than the first time I studded a wall, which was about 1 wall per day. I did find out, however that you don't want to do the bullet-nail thing up against an outside corner, as it will blow out chunks of concrete and send them across the room. Shoulda put a stud 6 inches back from edge and bullet-nailed that instead. Wall went up so I could do this:
I got a lot of datas going in and out and wireless was not cutting it for youtube uploads, or anything else. Plus, I had to hook up the new Raspberry Pi and that needs a hard line. Here's my initial setup on the Pi (small circuit board to the right of the monitor)
The monitor is dormant as my HDMI to VGA adapter is in-route via Amazon, and the Kinect had a brief run with libfreenect but it's pretty apparent that the project is dead. Going to go with the Kinect SDK for voice recognition and probably just listen with some sockets on the Pi for processing and breadboard control. For the Pi OS I went with the Raspbian distro, so far so good. Still getting used to apt-get vs yum; either way, first foray out of pure-software into hardware control and I'm about as excited as humanly possible.
**Edit 3.18.13 @brocja01 Short-term goal is for something like this controlled by kinect voice commands. I bought an Apple TV recently or I'd be definitely going the media box route.
With the jacks in place (and a space-heater) I cranked out a Bingo-app for the juniors. No idea if one exists or not in the app store, but this one suits nicely for my bingo fans at home. Code is here at Github. I find out that the bingo-card generator market is pretty saturated and nobody really delivers the goods. Excellent candidate for some niche destabilization.
**Edit 3.18.13: Ran my concept for pixellated fluid dynamics, on left is using a smooth gradient. Just stepping the gradient with hard edges should produce a pixel water effect right? No. Turns out I didn't have an accurate understanding of what the OpenGL alpha test does. Upgrading to Box2D project with Cocos2D 2.0, and am now learning about fragment shaders.
After about 6 years of kitchen-aversion, some holladaise. Egg yolks, lemon juice and butter and you have yourself a budget heart-attack.
Hulked out on my success, I went for cream puffs. I had sworn off baking after absolutely nothing I made at the old house (and old electric oven) EVER turned out. Had thought I had lost the touch, but IT IS BACK with the Pate A Choux. Gas stove makes it, that's what I learned on and I despise electric stoves with all that I have.
New thing I hate: Dremel vs. Ceramic tile. Smells exactly like dentist grinding away a tooth, nearly barfed. Dremel got away from me and dremmeled my hand, but I'm pretty tough aside from the barfing. So this is going on via The Wife:
Tiles are $0.22 a piece, you're crazy to NOT be tiling right now. Hole is for a pot-filler, which you cannot buy here, must be ordered. Geographical Oddity.