Today we brought a complete rewrite of one of our backend services online that is used to transfer large files between devices, the Filecache-Service. You should experiences faster and more reliable file transfer from now on. There is no need to update or change anything as end-user.
We have fine-tuned and optimised our Hoccer backend services. The latency has been much improved, the Hoccer App feels much more responsive.
The Hoccer Apps for Android and iOS will now display preview images of content which takes some time to download:
This greatly speeds up the time until you see what has been delivered and hence improves the overall perception. We also added this feature to the Hoccer Wall at http://wall.hoccer.com. Now it’s ultra fast! Try it your self!
We have finally released Hoccer 2.0 for Android, iOS and the Web! The look and feel has not changed much but the new Linccer backend improves usability enormously: Handshaking two devices is ultra fast and file up- and download will happen at the same time as can be seen by the progress bars:
Our improved Web App focuses on one-to-one sharing simply with the dragging gesture. If your browser is able to provide location information, then desktop to mobile transfer is a matter of a single click:
We are happy to announce public beta status of our cloud service Linccer. With it’s very simple RESTful interface, Linccer enables you to transfer informations between internet devices at hand. There is no special hardware or setup required. We provide SDK’s for iOS (iPhone/iPad/iPod Touch), Android, Java and Ruby. Other platforms and languages will follow.
Hoccer is nice when it comes to spontaneous content transfer between devices at hand. But there are so many other ideas where a location based device connector could provide a superior user experience. So we took the call and extracted the Linccer API: A simple RESTful Web Service which connects devices through a set of matching meta informations derived from the environment. We are very happy to announce our ongoing private alpha which enables you to use this technique in your own App:
Michael A. Jackson once stated “The First Rule of Program Optimization: Don’t do it. The Second Rule of Program Optimization (for experts only!): Don’t do it yet.”
Of course we needed to measure execution times before jumping to action and spending valuable time on performance optimization. We found the android.util.TimingLogger helper class from the Android SDK very helpful so here comes a short description on how to use it:
Whithin the method or class in question create an TimingLogger object, execute some code and dump the statistics to the android log.
TimingLogger timings = new TimingLogger("TopicLogTag", "preparePicturesFromList"); // ... your time consuming code timings.dumpToLog();
Note that the output will only be dumped to the log if you set the VERBOSE log level for the given log tag (here named “TopicLogTag”):
$ adb shell setprop log.tag.TopicLogTag VERBOSE
now start your Activity and make sure the code you want to measure is executed
$ adb logcat -v time TopicLogTag:V *:E ... D/TopicLogTag(14857): preparePicturesFromList: begin D/TopicLogTag(14857): preparePicturesFromList: end, 2711 ms
If the informations you get from this measurements is to coarse you can split the timings into sub-tasks with the addSplit(“split label”) method:
TimingLogger timings = new TimingLogger("TopicLogTag", "preparePicturesFromList"); // ... time consuming code which creates picture objects timings.addSplit("creating picture objects"); // ... time consuming code which generates thumbnails timings.addSplit("generating thumbnails"); timings.dumpToLog();
The log output will then look like
$ adb logcat -v time TopicLogTag:V *:E D/TopicLogTag(14857): preparePicturesFromList: begin D/TopicLogTag(14857): preparePicturesFromList: 1999 ms, creating picture objects D/TopicLogTag(14857): preparePicturesFromList: 712 ms, generating thumbnails D/TopicLogTag(14857): preparePicturesFromList: end, 2711 ms