DI.FM in a New Dimension – Beem Plus 2.0 is Out

At this point in time, Beem Plus has established itself as the de-facto DI.FM client for Windows Phone, although unofficial. With more than 45,000 downloads all over the world, I feel like this project is filling its niche pretty well. That being said, I don’t want to have the app “frozen”, so updates are a crucial part in delivering a better user experience and additional capabilities that would make the listening experience as streamlined as possible. So here it is – Beem 2.0.

I am proud to say that this release is by far the most stable and fast, but the focus was more on improving discoverability and ease-of-use. The motto for the 2.0 release was “Simplify, simplify” (quoting Thoreau on this one). Take a look at the 1.9 main page:


Although seemingly nice and well-organized, there is no structure to where a station should be. Let’s say you want to find Dubstep. Or Trance. Or maybe Progressive. What is the first idea that comes to mind when you need to look it up? Probably just scroll through the list and hope that you are lucky enough to stumble across what you were looking for. I wanted to eliminate this pain. With 2.0, no matter what – you will always get an alphabetized list of all stations:

2013-10-02 12.40.35

Neat. Notice that it’s clear and to the point – you know what to find and where to find. The same happened to the list of favorites. For comparison purposes, 1.9 content is on the left, and 2.0 is on the right:

2013-10-02 12.50.01 2013-10-02 12.40.41

First and foremost what comes into play is consistency. I noticed that the station description does not really add much value to the UI, specifically to the Favorites section because the users that have added a specific station to the list are already well-aware of what that stream will be about. There are a couple of extra changes here too. There is no longer the tap-and-hold option for either the main station list or the Favorites list. As analytics have shown, that is a capability that is barely used, mainly because of discoverability problems – people simply don’t know that you can tap-and-hold to get the ability to pin a station to the Windows Phone start screen or to add/remove it from favorites. So instead, this ability went away. But don’t be alarmed – it is still present in playback mode. Which brings us to the next set of changes – the “now playing” screen.

Let’s compare the amateur 1.9 build versus the pro 2.0 build:

d08e8af9-b444-4a19-83e3-769ff4962f67 2013-10-02 12.41.06

Whoa! On the left, there is an absolute information overload. What does the bag icon do? Is the pin going to add this station to favorites or actually get me out of Beem Plus and pin it to the home screen? Instead, I removed all that clutter to let the user focus on what’s important – the station that’s being played and the tracks in it. You can still record and add the station to favorites from the playback bar, but the rest is now hidden in the application bar, with a bit more context sprinkled on them:

2013-10-02 12.41.11

In addition to that, Beem Plus now supports an additional sharing option – via NFC, which stems from another added feature – bookmarked tracks. If you look at one of the 2.0 screenshots above, you will notice that the list of tracks is now easier to tap on, with clearly separated data related to the artist and track name. Once you tap on the track, the user will be able to select a couple of options:

2013-10-02 12.41.21

The track can be searched for on Xbox Music or Nokia Music (even on non-Nokia Windows Phone devices), giving the user the ability to purchase a song that he or she liked on that specific station. But there is also a star “Save” button, that gives the ability to simply bookmark the track and keep it in a personalized list:

2013-10-02 12.40.45

With NFC activated, you can share the currently playing track and send it to another Windows Phone device running Beem Plus 2.0 – once tapped, the track that was just shared will become a bookmark that can be later used to find it in any of the supported stores. I’d like to mention that Beem Plus does not offer track download capabilities – it merely keeps the track metadata that later will help you identify the channels where it can be obtained.

In addition to visual changes, Beem Plus 2.0 includes multiple bug fixes, reducing the possibility of the app crashing during a stream to a minimum. It still supports Last.fm scrobbling and SkyDrive uploads of the recorded streams for backup purposes. You can get the app in the Windows Phone Store, free as always. Also keep in mind that Beem is an open-source project, available on GitHub. If you’d like to provide criticism, feedback or suggestions – feel free to stop by the Issues Hub.

A State of Trance Podcast Fans on Windows Phone – I Present You EnTrance

After a sleepless weekend, here is the final product – EnTrance. It’s not really a big secret that I am a fan of EDM and A State of Trance is, hands down, in my opinion one of the best trance shows there is. With this in mind, I realized that there is way for me to easily managed the ASOT podcast on the device. Need creates ideas, so I though about building my own client that would let me aggregate the latest and greatest podcast episodes, with information about the collected tracks as well as with the ability for me to find those on Xbox Music, Nokia Music and YouTube.

Hence, EnTrance came to life.


What can it do at the moment? Pretty much everything you would expect a podcast app to do – download and play ASOT episodes. What I have planned for it is another question. Here is a short breakdown:

  • Upload to SkyDrive – what if you like an episode so much that you want to have it stored on your machine as well? Simply push it to SkyDrive and the deed is done – once your PC(s) sync the changes, you will find the episode in your folder.
  • Push Notifications – get alerts when new ASOT episodes are released and when new track information is available.
  • ASOT Full Show Integration – other than the podcast, every Thursday Armin van Buuren runs his ASOT radio show. Despite the fact that the episode itself is often not available for download, it contains track metadata. I want to show you that track metadata – with the ability to find those later on Xbox Music, Nokia Music or YouTube.
  • Event Information – ASOT 650 is coming up and I need to get the app ready for it.

It would be very short-sighted to say that this list is complete. It’s not, and will never be – such is software. If you have more ideas, feel free to stop by at the Issues Hub on GitHub (did I mention EnTrance is open-source?).

For now, pick up your Windows Phone 8 and download the app!

My Summer as a Program Manager Intern at Microsoft

I’ve once again spent my summer in the Pacific Northwest, working as an intern for one of the top companies in the world – Microsoft. I embarked on a journey in a completely different role for me – despite the fact that I coded pretty much all my life (or, as much life as a 22-year old adult can have) and was a Software Design Engineer vendor all last year (feel free to read the post I wrote back then), I decided that I should become a Program Manager (or a PM). Not because I didn’t like coding or, but because I felt that over the years I developed not only a passion for writing software, but also for communication, planning and management. A PM role combines those perfectly, so once the time came for me to apply to for my next internship, I didn’t hesitate to check the PM role as the priority on the Microsoft Internship application form.

Interviews went well and I got the PM position in the Microsoft Office Division the same day, right after the interviews. I expected quite of a contrast compared to Developer Platform Evangelism, where I made my baby steps in the huge world that is known as the Redmond Campus. I had exactly zero connections in the Office division at the time, so I didn’t have anyone who could tell me from their experience – what is the culture like, what is the approach to tackling a variety of problems? Regardless, I was really excited and was ready to start working as soon as I landed in SeaTac.

I got to be a part of an amazing team that did remarkable work. All three months went by like a flash, but since I was dropped right into the epicenter of all the action, here are some of the highlights  (or, things that stuck with me) that might  be helpful to future interns from the perspective of a starting PM:

  1. Relationships matter. When it comes to getting things done, you need to know the right people that have the authority and ability to contribute to your work. Talk to your teammates – not just those in the same role, but everyone on the team. When I was just ramping up, I sent out 1:1 invites to pretty much everyone on the team to get to know them better, to see what they were working on and what are the most interesting parts of their job. I have not gotten a single rejection, and so through all my 3 months, I had the occasional 30 minute meeting with one of the developers, testers or program managers in their office, where I could ask almost any career-related question. That way, I found out more about my team than any PowerPoint slide deck could ever explain. That’s also a good way for people to remember who you are – not just some intern working in the office around the corner. More than that, one of the PM leads on my team is a motorcycle pro, and after a few conversations with him, I discovered that bikes is something I would like to know more about. So don’t be shy – get to know people you’re working with.
  2. Reach out. Microsoft is a very diverse company, with people coming from different backgrounds and different experiences. Don’t hesitate to reach out to them, even if they are way above you on the management chain. I remember that one of the opportunities I never got the chance to take was meeting Alex Kipman, the man who started ‘Project Natal’ (better known as Kinect nowadays). After talking to one of my coworkers at Microsoft about my thought of meeting the Director of Incubation at Xbox, I was advised to do the simplest thing one could possibly think of – just email him. That’s it. No formal introductions, just an email explaining why I want to meet him and what I want to get out of the meeting. A couple of days later, I was sitting in the lobby of one building talking to Alex – and once again, I learned a lot more than I would ever read in any interview or article. A lesson I learned from Charlie Kindel is that a good way to look at a problem is through the “What’s the worst that can happen and what do I have to lose?” lens. So let’s say you want to reach out to one of the top people. What’s the worst that can happen? Probably getting a rejection email. What do you have to lose? Nothing. That is, if you are smart about what you ask for and are not trying to waste people’s time. So go for it – meet people and learn, learn, learn. A lot of Microsoft employees are excited about talking to interns about their experiences.
  3. Effective communication is extremely important. Be clear, concise and to the point. Again, I’m back to the idea of not wasting people’s time. It’s shockingly easy to derail a conversation or an email thread if a person starts throwing too many issues in at once, so be aware of that and contact only the people that are either responsible for what you’re talking about, or can point you in the right direction. Stemming out of the ‘good communication’ stack is also the ability to present your ideas in an efficient manner. As a PM, I had the responsibility of writing several specifications, an area plan and on top of that – present all of those to the team. I loved doing it, but that is not enough – you need to not only know what to present, but also how. Learn from what your teammates are doing, pick up a couple of books and go through them on a weekend. It will pay-off in the long run.
  4. Don’t work in a silo. Or, as my manager called it, window shop before making any decisions. It is important to realize that what you’re working on is not impacting just you. Chances are, other features or parts of the project flow are in one or more ways affected by what you create. Pinpoint those possibilities early and talk to the people who are responsible for the respective areas. For example, if I am writing a specification for a car steering wheel, I would like to talk to the designer to make sure that it fits with the overall vision of the vehicle interior. I would also need to talk to the engineer that designs the steering wheel connectors that hook into the electronics (e.g. changing the radio volume or honk) to make sure that my design will allow for everything that’s needed. I could, of course, throw together a document that shows the fact that my steering wheel is the best possible idea since sliced bread, and leave it at that, but chances are this will not make a lot of people happy and all the design issues will be raised at some point. Plan accordingly and communicate with the individuals covering the adjacent or larger features.
  5. Attend intern events. There are plenty of those – some organized by University Recruiting, but even more are ran by interns themselves. Hiking? Why not. Have a few people chip in on gas and you will be going to explore Mount St. Helens, Goat Lake or the Olympic Peninsula. Do not, I repeat – DO NOT, waste time on weekends by playing Xbox (or PC, whatever your preference might be) inside all day. Get to know people, explore the neighborhood, get people together and try a new Korean restaurant, go see a movie or a live concert (for me there’s Paradiso. the Capitol Hill Block Party in Seattle and Paramount, that had some of the best shows). There’s always something to do and you should take advantage of that opportunity. And yes, the deadmau5 and Macklemore concert was amazing on every level. Thank you, Microsoft!
  7. Read. One of the fantastic things I love about Microsoft is its library. I managed to read a dozen of books this past summer, that completely changed my views (The Power of Habit was, hands down, the most interesting one), and you should do the same.
  8. Focus on the success of your product and take pride in what you do. When I asked Kurt DelBene, the president of the Microsoft Office Division, as to what would define an exceptional Program Manager, this was his response. And indeed, every morning I was coming excited to work because I knew that my work will contribute to the success of the larger product. I was following my passion – it is an outstanding feeling when you realize just how much impact you really have.
  9. Unexpected things happen. Usually at the least expected time too. Be ready to change your plan and have a fallback scenario. “What can go wrong?” is a good question to ask yourself when you’re designing a feature, and once you have a list of possible issues, list the causes and think about a way to tackle those, so that at the end your work will continue, even when one of the foundation pillars failed.
  10. Be open to feedback. Ask for feedback. You can sit in your office all day, writing specs and presenting them, then going back to the office and carrying on with the work you’ll be doing. But that’s not really what your internship is about. You want to become better at what you do, learn from people who’ve been in the field for quite a while and adopt the best practices, avoiding the mistakes that maybe have already been tackled before. One of the habits that I have developed is constantly asking for feedback from my manager, my mentor and fellow PMs. How should I improve my presentation? What could have I done better? What potential issues do you see with my approach that I might be missing? Trust me, you want to know answers to those questions. Also, never be offended by direct feedback – your goal is to be exceptional at what you do, and the only way to do it is by ensuring that you are getting the least sugarcoated feedback. Expect it, and develop an action plan for yourself on how to act based on what you’ve learned.


At the end of the day, the internship is what you make of it. There is no book or blueprint that will guide you through it for 100% of the way. Will you make mistakes? Probably. But what you learn from those mistakes is what will make you a valuable employee at the end. Be active, be eager to learn and realize that your impact matters.

This August, I have accepted a return offer and will be coming back to Microsoft in 2014 as a full-time Program Manager, which I am really excited about – these are great times and I am happy to apply my knowledge and skills towards changing the world. If there is one last thing that I’d say – apply for a Microsoft internship. It is truly a life-changing experience.

FileExplorer for Windows Phone – Test Feedback Needed

I’ve added several changes to the FileExplorer control, that will be included in the Coding4Fun Toolkit.

Before actually becoming an active part of the control set, I want to make sure that it works as it should and where it should, and for that I am distributing it now as a part of an experimental package.

2013-07-24 23.52.42

Since the last update, there is a big change that was introduced – the ability to switch the selection type. Now it is possible to:

  • Select a single file
  • Select multiple files
  • Select a single folder
  • Select multiple folders


This option is given through the SelectionMode property.


When the control is dismissed, the OnDismiss event handler is called, the application will get two items in return – a StorageTarget reference, that will identify the location of the selected entity(ies), as well as an object than can either be a single StorageFile, StorageFolder, ExternalStorageFile or ExternalStorageFolder, or it could be a List<T> where T is one of the aforementioned storage objects. Explicit conversion will be required, depending on the scenario.

Download the sample project here or directly from the CodePlex source control (latest checkin) and send me your feedback!

Beem is Now Open-Source

I am proud to announce today, that one of my largest Windows Phone projects – Beem, is now open-source, in an effort to improve the product and to facilitate community contributions (there were many requests to add features – now devs can easily chime in).

Beem Plus

You can find the project, as well as any additional details on GitHub.