Today I am proud to present you the first screenshots of uPod. This was a long way — much longer than I expected. The problem with designing is, that it is mainly trial-and-error and a lot of time consuming pixel shifting. You start with an idea, but it doesn’t look like you expected it and then you try something else. Each time you have to create new image assets and adjust the code.

But it was definitely worth the effort. The uPod user interface brings a fresh new look and feel which mimics the hottest most recent designs like for example Google’s brand new Play Music app. Further on it utilizes some brand new UI patterns like the navigation drawer on the left which has been introduced just two weeks ago on Google IO 2013 and is now used in Google’s latest updates like the new Google Mail app and again Play Music.

The navigation drawer is the starting point of the app and allows you to select what you want to view. The drawer can be opened on a phone by tapping the app icon in the title bar or by swiping it in from the left edge of the screen.

As you can also see on the screenshots, the app has been designed from the ground up to be responsive — meaning the screen layout optimizes itself for the screen size it is running on. For example on the tablet in landscape mode the navigation drawer is always visible and the playback bar is aligned vertically on the right edge.

The podcast view makes heavy use of your podcast’s cover art. This makes using the app a joy as it looks great and helps you to quickly find your way to the episodes you want to access.

This is another quick status report to keep you informed about my progress. The pull sync is fully implemented and working. The pull sync is responsible for updating the app’s local data with information from the server. This includes things like newly available episodes, the contents of your episode library, your playlist and playback positions or in short: Everything which has to do with podcast subscriptions and cross device synchronization.

Currently I am already working on the user interface and I am making quite good progress. I am utilizing some of the hottest new user interface best practice which have been introduced by Google on the latest Google I/O just one week ago (lookout for the application drawer). In my next status report I will provide you the first screenshots. So stay tuned!

First of all: This is completely off topic and has nothing to do with GoodNews or uPod or even Android at all. This being said I wanted to let you know that I am looking for a few Java/Scala-Developers to join my team at Beta Systems in Berlin. We will develop the next generation Web UI for our enterprise applications. So if you are a developer and you are looking for a new challenge or if you know someone how might be interested, please read the full job offer and learn how to apply.

Though the first release of the uPod app is still far away, I wanted to use the opportunity to let you know about the progress I am making. As I’ve already have a quite complete idea of how the user interface will look and work like I’ve decided to develop the app bottom up — meaning I start with the storage and synchronization stuff, so that I can use real data when working on the user interface. This also implies, that it will take some time until I can provide you the first screenshots of the app.

Today I want to tell you a little bit about the uPod service. Though you will never see it when using the app, it is a very important part of uPod. As a former user of Google reader and an owner of an Android phone and tablet I want to have full synchronization across all my devices right from the beginning. For example at home in the evening I want to use the big screen of my Nexus 10 to scan through new podcast episodes and add them to my library and playlist and when I am on my way in the morning I want to listen to this playlist on my Galaxy Nexus.

To make this possible my subscriptions, episode library and playlist need to be stored in the cloud and my devices need to synchronize with this stored information. And this is where the uPod service comes on to the scene — it will be running in the cloud and store all the information required by my devices including my subscriptions, my library, playlist (including episode ordering) playback positions and general listen preferences. The service is also responsible for checking the subscriptions of all users for new episodes and pushing them to our uPod inboxes. Keeping this logic on the server helps to reduce the synchronization logic and the amount of data to be transferred during a sync on the mobile device. Finally the uPod service provides a web service API which is used by the uPod app to access all the required information and push back changes.

Now you may ask how the authentication against the uPod service works? That’s simple: When starting the uPod app for the first time you will get an account picker providing you all your google accounts. Simply select one of them and all your uPod information will be linked to your google account — no need to create another account and select another username and password.

The good news is that the implementation of the service is nearly finished and it is working well. For the developers among you who are interested in the technical details: The uPod service provides a REST like web service API and is implemented using the programming language Scala and the Play 2.1 framework. MongoDB serves as the storage backend for the service.

Next I will start working on the uPod app, starting with it’s storage and synchronization layer. I guess it will require a comparable effort like implementing the uPod service. Stay tuned!

Welcome to the uPod blog. At this place I will publish all news related to the progress of the uPod development — my new podcast player app for android. If you prefer, you can follow me on Twitter or Google+ instead. Please also take a look at the overview to learn which features are planned for uPod. As soon as the first beta versions is available, I will release a feedback site, which will allow you to report issues and submit your feature requests.