Mar 02, 2010
I like to watch the TED Talks, it’s always something novel and instructive and makes me believe that the world is generally moving towards a brighter future led by a handful of rather bright fellows.
Now one thing these guys do extremely well is to give a TALK. Through experimentation it was found that at that length the speaker is forced to condense his message and be as clear as possible to get his point across. This constraint is enforced by the famous TED speaker LED clock. (It’s actually a countdown and not a clock, but people seem to prefer using the word “clock” over “countdown”)
This is a countdown at the edge of the stage which at a glance shows you what your remaining speaking time is. Also there is a traffic light of sorts. Shortly before the end of the time a green light switches to yellow to signal that you have to start wrapping up your message. Red means that it’s time for the closing remarks.
Obviously there are dedicated devices out there which aim to fill exactly the same need of visualizing a speakers time constraint. And of course there are a couple of iPhone apps providing this functionality. My second choice of the name of my app was taken by Talk Timer. Yet another is Speech Timer Free which provides the traffic light and the Premium version of it even allows for exporting of your speaking log.
I might continue to wish I were a great and inspirational speaker, but in the meantime one thing that I CAN do is make such a countdown clock for iPhone. I just had to do it, because the thought of the clock kept popping up in my head and kept distracting me from other projects.
My goal for SpeakerClock was this:
- emulate the famous TED clock as closely as possible
- use big red LED numbers (for which I had invented DTLEDNumberView)
- allow for all customization and setting via touch gestures, all on the main screen
- use the second page solely to showcase DTAboutViewController
Version 1 uses the maximum size possible of the digits that is available in landscape mode. Because of this you can see the digits from several meters away which is necessary if you want to position it so that you can move freely while giving your speech. To maximize the size of the clock I had to move minutes and seconds closer together and wrap the traffic lights underneath.
I made it a special point to finish the app within a single day and so I left out several things which I can put it if there is any interest in this app at all. The art of 1.0 is to concentrate on the required core features and leave some of your brilliant ideas for future versions. Here are some ideas still on my mental drawing board:
- German localization (and other major languages) – language is not critical to understand usage of the clock all texts are on the instructions and about pages
- Multiple Presets – might be an idea for a freemium upgrade
- Recording of speaking logs, summing up your total speaking time, exporting, sharing …
I made a YouTube video to demonstrate the app:
I sent the app to Apple yesterday. SpeakerClock will be available on the app store initially for free to get user feedback.
UPDATE: 2 days after submission SpeakerClock is now available on the app store.
Feb 11, 2010
It’s been almost a year since my last update to GeoCorder, which is a handy little tool to quickly record GPS tracks and mail them to yourself for viewing in Google Earth or geotagging photos. It’s a very simple tool which I wrote to get GPX tracks for my own testing. If you believe the reviewers it serves it’s purpose very well
Since then SDK 3.0 was released and with it the possibility of sending attachments in E-Mails. Before that time I had to resort to sending the files via my own web server, but with this update this is now no longer necessary. And lately some reviewers started to complain about this old mode so I finally found a day to sit down and polish it up, fulfilling all the reviewer’s requests.
- NEW: Set a distance filter to conserve battery life
- NEW: Export via E-Mail now uses InApp E-Mail (if available)
- InApp E-Mail: optional compression of sent GPX files
- InApp E-Mail: GPX file now named with timestamp
- German localization
- Minor UI tweaks
The update covers GeoCorder and GeoCorder [FREE] and has been submitted to Apple for approval.
UPDATE: 29 hours later the update(s) are through the review process. That’s new record for me.
Dec 24, 2009
The latest version of MyAppSales contains a fix for times when iTunes Connect is offline, but the ITTS reporting site is still running.
This way you still get your daily sales reports throughout the downtime for ITC which was announced to go from December 23rd until December 29th.
Another minor change is that review scraping no longer is requires for the app totals to be loaded because all reviews for all apps are scraped at the same time anyway. This is a minor startup speed benefit.
Merry Christmas and Happy Holidays!
UPDATE Dec 26th: Apple caught up on using the ITTS url for report downloading and shut this down as well, giving this message.
So, there now really IS no way to get to your daily reports anymore. We all have to wait until Dec 29th.
Dec 10, 2009
There are a couple of users of MyAppSales who have been collecting daily reports since the first feeble beginnings. Turns out that if you have upwards of 300 reports in your apps.db then the previous method of loading everything at program start has a major drawback. There is a watchdog timer which kills any app that takes more than 20 seconds to start which caused a couple of users grief because that’s how long it took to load on iPhone 2G or 3G if you had that many reports.
This release is all about startup speed. On my own iPhone 3GS I managed to get from 12 seconds down to about 2. Also I was intrigued by the request to add a Tweetie-2-like Pull-To-Refresh mechanism, so that’s in there as well.
- ADDED: Added Pull-to-Refresh on all review table views. Just like in Tweetie 2.
- CHANGED: If a review text or rating changes then the review will now be updated and marked as changed.
- FIXED: Country assignments for some report regions where incorrect causing financial reports to be incorrectly rejected as duplicate. Fixed translation language for China.
- FIXED: Changed from GET to POST for Google Translations to support extra long review texts.
- FIXED: Bug would cause link between InAppPurchase and App to disappear upon restart
- CHANGED: Rewrote totalling to cache and replace averaging
- CHANGED: Numerous performance improvements
- ADDED: Lazy loading for reviews for additional speed improvement on startup
- ADDED: Transparent 2-stage loading of reviews to speed up opening of review page for an app
- CHANGED: Made more UI elements opaque to speed up table view drawing
- ADDED: Financial and Monthly Free download on Import/Export homepage
Generally if you have any issues after applying this update then please go to the settings page and tap “Empty Caches”. This removes all the cached .dat files keeping information for faster access.
Now that I am coding full time I can spend hours and hours on lots of things. I have to literally force myself not to take on too much before releasing a new version. I’ll have to start updating all my other apps, create some new ones and then there are some looming contracts.
Nov 29, 2009
This new release is about fully integrating In App Purchases (IAP) into MyAppSales. Until now I did not need for IAPs to be displayed correctly because none of my apps have them. But my friends over at Crowded Road kept insisting that this is a key feature, so I invested some time to give IAP the special treatment.
- FIXED: Prevent app from saving incomplete reports without a date. This would cause a crash on subsequent starts of the app. There are also additional measures to prevent loading such a report should it be present in the database.
- FIXED: Added missing country FI as identifier for Europe region of financial reports.
- FIXED: Added missing country CO as identifier for USA region.
- FIXED: Correct spelling of country Vietnam. This would cause a financial report with this country in the first line to be detected as “rest of world”.
- CHANGED: If you have reports from more than one app grouping (aka Apple account) then reports for those no longer show the apps of other groupings.
- CHANGED: Apps and IAPs are now child classes of Product to allow for polymorphism.
- ADDED: IAP Products are now kept in a separate table from apps
- ADDED: IAP support on the overview and country detail report views
- ADDED: IAP support for export via built-in web server
The other reporting apps I had a look at tread IAPs just like regular apps, because at first glance they look the same in Apple’s reports. They have an apple identifier, but it’s not valid to open iTunes with it. To tell IAPs apart from apps you have to look for the IA1 transaction code and the filled in parent code. In the table the transaction is represented as 101 because it needs to be numeric.
Personally I am opposed to showing IAPs at the same level as apps and therefore MyAppSales shows you IAPs as part of the total royalties and average daily sales on the app page and also integrates it into the report views. If you don’t have IAPs you will not notice any difference in the UI.
Still you are encouraged to update your working copy to the latest version in the repo’s trunk or the release-1.0.13 tag because of the multitude of small fixes contained and for IAPs to be handled correctly should you ever have any on any report.
Bug reports or feature requests please add to my bug tracker.
Nov 19, 2009
This new release fixes two urgent issues that became pressing today: Downloading and Notifications.
- FIXED: Apple modified form field names in iTunes Connect yesterday which would cause permanent “no day options found” error message
- CHANGED: Added code to get the field names from the HTML so that similar changes would not cause this problem any more.
- FIXED: Push Notifications via the Notifications would cease to function. This was a bug on the server-side. Any new subscriber would overwrite the previous subscriber.
- ADDED: If there is a Notifications account set up then the app will now check if it is subscribed at every launch. It will then subscribe if it is not – for some strange reason.
Any version prior to 1.0.12 is no longer able to download reports as of today. So if you put off updating until now then you have no choice any more.
To update either do a fresh checkout or update your existing working copy. If you have not linked your checkout back to the repository please do so and then “SCM – Update Entire Project”.
I’m also announcing the MyAppSales VIP List. If you are a CEO or otherwise important person and cannot be bothered to update your working copy of MyAppSales via XCode then this is for you. I have very limited space available on my device list but for VIPs on this list I will be making AdHoc builds for each future version. You may apply for inclusion via e-mail.
Nov 09, 2009
Always towards the middle of the month I seem to accumulate so many fixes and tweaks from my user base so that it I feel pressed to formally release a new version. For 1.0.11 I fixed several minor things and as a bonus I added the possibility of forwarding all reviews for one app via in-app-email.
- FIXED: Users with multiple vendor IDs would get an error message because of the extra vendor selection screen in iTunes Connect. Now always the highest vendor ID is used.
- FIXED: Users who enabled passcode protection would never get any reviews being downloaded.
- ADDED: In-App-Purchases have a alphanumeric trasaction code. This is now changed from IA1 to 101 so that it can be saved to the database. There is no reflection of IAPs in the UI yet. Previously such lines would have gotten ignored.
- FIXED: Added agent string so that app icons can be be retrieved. This fixes Apple’s recent change requiring an “iTunes” agent string.
- FIXED: Even if the language code for a store was the same as the chosen target language reviews would still be tried to be translated.
- FIXED: Users who updated from earlier versions have a service type “HomeDir”. The previous workaroudn was to remove the account and create a new ITC account in Settings. This is no longer necessary and done automatically.
- FIXED: Deselect report row if chart has no row.
- CHANGED: Shortened Back Button to “Apps” on review screen.
- ADDED: You can now forward all reviews for an app via In-App-Email.
- FIXED: Removed gray shadow of app subtext on app tab which would cause blurry look.
So if you have translated reviews behind one app, you notice the new forward button in the upper right-hand corner…
You can now e-mail the developer (or yourself) all the reviews as an invaluable source of inspiration to improve your app! In-App-Email also supports landscape view by the way.
Version 1.0.11 is tagged in the Subversion Repository. You can either update your source from there or opt to update from trunk where development is continuing. Tagged versions are always a stable milestone while in the trunk I make no such warranty.
Note: if you checkout a project from any repository you have to set the project root to be the repo you set up to establish the link. I noticed quite a few users always doing exports when it is so much easier to only push “SCM – Update Entire Project” to get the latest version. So please go into the project settings and make the connection.
Oct 25, 2009
Exactly a month and 2 days have passed since the latest update and you guessed correctly: this is a major one. It brings two technologies into MyAppSales that I was kind of afraid to try because I was fearing the technical difficulties and the work that was necessary to make them work. But now that they are in, I’m glad I did.
- ADDED: Smart Multi-Account capability. You can now add multiple ITC accounts and the reports will be downloaded. Note that the UI is still the same, so reports will appear individually, always showing all apps. This will be addressed in a future version.
- FIXED: The Passcode Lock also appears if the app resigns active status.
- FIXED: Some financial reports from January 2009 or before would cause a crash because Apple was using full country names previously, some with strange abbreviations.
- ADDED: When a new report is downloaded my server is anonymously pinged and saves the availability time. The first time a new report is encountered a push notification is sent out.
- ADDED: Different types of accounts are now supported. To begin with you can setup multiple ITC accounts and one Notifications account.
- ADDED: Notifications via the 3rd party app Notifications can now be subscribed or deleted via adding and removing of the account in settings.
- ADDED: The myappsales:// URL scheme is now supported to open MyAppSales to a specific report screen. This is used by the push notifications to open up the daily reports page where you can see the new report appear.
If you are upgrading from a previous version then it will appear as if MyAppSales is downloading all reports again. It does not really duplicate the reports and you can just let it run. But you may also quit the app via the home button after the first such download. This is necessary to establish the smart app groupings. MyAppSales figures out which apps belong to which group (aka account) and will use this fingerprint in the future to intelligently establish which account a report belongs to and if it is a duplicate. This approach also allows to detect from which account manually imported reports are coming and sets up the app to get reports from totally different sources in the future. One such service will be allowing you to share sales data on specific apps with selected users.
I have to use a 3rd party app to do the push because only Apple approved apps can do push notifications. But I can piggyback on their service to make the experience identical as if MyAppSales had notifications itself. The only differences are that you have to set up a Notifications account and that MyAppSales cannot directly deal with notifications while its open. So if you are the first to see a report and you get the notification just click “Cancel”.
It is recommended that you make a local copy of the database via the built-in webserver. There should be no problems in updating, but in some rare cases manual changes might be necessary. And it never hurts to have a backup.
Version 1.0.10 is tagged in the Subversion Repository. You can either updated your source from there or opt to update from trunk where development is continuing. Tagged versions are always a stable milestone while in the trunk I make no such warranty.
Oct 23, 2009
When I researched locales for LuckyWheel and time zones for MyAppSales I discovered that Apple had outfitted my iPhone with a complete database of all timezones worldwide as well as methods that would return the next DST switching time. Back then I thought “that would be a cool feature” and found it strange that there is nothing like this in the regular iPhone UI to actually access this data.
Do you know the feeling that you have an app stuck in your head that wants to get out? You’ll know what I am talking about if you have an idea that frequently comes into your mind because you have not acted on it. There are three ways to deal with such ideas:
- look up your local locale and down enough alcoholic beverages to destroy those few synapses that kept bothering you.
- use a notepad (or notepod) to jot down the idea and draw some sketches off the pictures that float around in your head. To the idea this will feel like validation and it will stop vying for your attention.
- or if it can be done in a day, build the app!
I just had finished my work on the H1N1 Swineflu Defender app contract, so I had a couple of days of my spare time to spare for a quick app like that. And strangely enough this way just the perfect time right before the next DST switches for Europe and the USA to also capitalize on DST being a hot topic this time of year as everybody is searching on Wikipedia or Google for when the switch will actually occur.