Developer Stories

The Regatta Project

My role at Microsoft is that of an evangelist, and that implies that we speak broadly to audiences about technology. Recently, however, my team is working one-on-one with organizations on exciting new Microsoft technologies - making sure they’re exactly what developers need.

One of the projects I’ve been working on recently is called Regatta championed by Baiyin Zhou (@baiyinvc) from Boston.

This entire idea is super fun. Imagine exercising on a rowing machine in a studio in a group session. Now imagine a visual on the wall depicting your rowing machine and those of the other session participants as real boats. As you heave and ho, you see your little boat moving across the screen.

There are just so many awesome scenarios that are possible at this point.

The visual of the boats alone is encouragement for you to work harder to compete against others in the class. But that’s pretty obvious isn’t it. What about the less obvious scenarios? What about being able to add in a phantom boat that represents the group’s average from yesterday’s workout? Now you’re not competing against your fellow rowers - you’re competing with them. You have to beat that phantom boat!

As soon as things in the real world - like our efforts to stay in shape - are digitized and turned into data, we get to do things like capture our progress, integrate with other fitness tracker systems, or even do data analysis to determine some deep learning from it.

This is the type of concept where digital systems really have an opportunity to affect our lives for the better. I keep saying that technology is not so interesting unless it improves our lives. For being such a technophile, I’m actually quite the skeptic, because all too often technology just gets in the way.

The Regatta Project envisions a future with a whole lot of rowing machines deployed with smart devices (the Raspberry Pi Zero at this point) attached to them, and assuring good communication with all of these devices is a great job for Azure IoT Hub.

Go check out the details of the [Regatta](https://microsoft.github.io/techcasestudies/iot/2016/12/10/regatta.html) project and let me know what you think with a comment below.

Regatta Architecture

8tracks for Windows 8

ME: Hi, Paul. Would you mind introducing yourself. Tell us where you work and what’s the most interesting thing you’re working on.

PT: My name is Paul Tidwell, I have been writing code as a hobby since I was 12. I currently work for Bungie, Inc where we are in the processes of bringing the world of “Destiny” to life. For fun, I am getting 8tracks ready for the Xbox 360.

ME: Okay, so what’s this 8tracks app you made? What’s the purpose of the app and was it your idea?

PT: 8tracks is a small company from San Francisco founded in 2006. It provides a streaming music service similar to how people think of Pandora or Spotify. 8tracks is different from those in at least one important way: its content is provided by its community of users. That is the users upload music from their own collection, organize it into a “mix” and then share it with the world. The clever folks at 8tracks figured out how to do this legally by making sure the artists are paid for their work and by following the rules set out in the Digital Millennium Copyright Act (DMCA).

I got involved with 8tracks when I was looking for a first project to do on Windows Phone. I had been using 8tracks (from their website) as a source of music and music discovery, when I happened to noticed they offered a public API for accessing and playing back their music. When I tried it out on Windows Phone, it worked beautifully and my first Windows Phone app “Mixtapes” was born. Mixtapes was a moderately successful Windows Phone app and got the attention of the folks at 8tracks.

In early fall of 2012, 8tracks approached me and asked if I would be interested in developing their official Windows 8 app. I agreed.

ME: Did you have help with 8tracks or did you work alone?

PT: I worked with the lead designer at 8tracks who provided wireframes and mockups of how the app should look at work and I put it all together. The folks at 8tracks also helped me test the app.

ME: How long did the project take, and did it take more or less time than you expected?

PT: The project got started in December 2012 and was approved in the store by March 2013, so about three months for the first release. I have released a couple of updates including a port to Windows 8.1.

ME: Can you tell us about what technologies you used? Did you write the app in C#? Did you use any significant libraries?

PT: I used Visual Studio 2012 Ultimate (although Express would have worked too), TFS online (visualstudio.com) which, by the way, is an amazing resource. The app is written using XAML and C#. I didn’t really use any major libraries except for a small wrapper around Google analytics making it accessible from C#.

ME: What were the biggest obstacles you had to overcome making this app?

**New to XAML?** Spend some online time with Jerry Nixon and Daren May in their [MVA JumpStart series](http://blogs.msdn.com/b/jerrynixon/archive/2013/05/10/ready-to-learn-xaml.aspx)

PT: The biggest obstacle was my limited knowledge of XAML. At some point I ended up buying a big thick book on WPF which I read cover to cover. This helped me understand important concepts like Dependency Properties and Routed Events that I had been using by mimicking example code but never really understanding. This knowledge helped me debug issues and write better controls.

ME: What advice would you give an app developer starting out on his first app today?

PT: Make sure you understand your app lifecycle (suspend, terminate, resume, etc) early on. Don’t save it for last. Your project will be smoother if you consider and test these scenarios from the very start. The new async pattern that Windows 8 embraces is really beautiful, but it can also bite you when you least expect it. Users can, for example, navigate away from a page waiting for an async operation to complete, and when the operation resumes, surprising things (like crashes) can happen because the state of the app has changed.

ME: Thank you very much for sharing your experience with us today, Paul. On a personal note, I use 8tracks most every day. I do like the built in Xbox Music app for playing music from my own library, but when I am looking for some new music to match my mood, I go straight to 8tracks. Good luck, Paul, on your future coding endeavors.

The Design of Rustic Citrus - Interview with an Indie Game Dev

I love writing code, but I also love the developer community and talking to other developers that have made or are working on great apps.

The way I see it, apps are a medium for expression much like so many other forms of media. Apps take it a bit further though, since they have form and function as well. I know that good art adds real value to our lives, and so do good apps. They inspire us, but they also offer entertainment, communication, and time savings – true utilities.

Does a game have function? Of course it does. A game conquers boredom, stimulates the brain, entertains the children, and much more. Enter Rustic Citrus.

I met over coffee recently (because that’s what we do in the Pacific Northwest) with Jacob Wenger to talk about his game Rustic Citrus - published on Windows 8 under his publisher name, Floating House Studios.

Jacob's day job is working on the Internet Explorer team at Microsoft. Naturally, he's adept at all things HTML and JavaScript, and so he chose the web platform for implementing his first game. In fact, Windows 8 offers all kinds of help to a developer that is choosing to write a JavaScript app - an animation library, some composite UI controls, and more, but Jacob decided to go almost entirely with pure JavaScript - even deciding to take on very little in the way of JavaScript libraries as dependencies.
Just like I did with [My Q&A with Indie Game Dev Studio, Random Salad](/randomsalad), I interviewed Jacob to try and get some of his experience and learning out to you - my readers. Here's what transpired.

Meet Jacob Wenger of Floating House Studios

ME: Hi, Jacob. Tell us who you are, what you do, and how you came to create Floating House Studios?

JW: Hey, Jeremy! Thanks for having me. I graduated from the University of Notre Dame in 2012 as a computer science major and soon after I began working as a software developer for Microsoft. Ever since my first computer science class years ago, I have constantly had some sort of side project going on outside of class or work. I created Floating House Studios as an umbrella company for all of these projects to fall under in order to give them a consistent branding. Rustic Citrus is my first app for the Windows Store and it is also the first big title for Floating House Studios.

ME: So naming and branding is important to you?

JW: To me, naming and branding lends a real air of legitimacy to products. For a small indie developer like myself, I feel like it’s important for me to establish a brand which people recognize and towards which they associate positive experiences. I want people to assume an app is beautifully designed and addictive simply by the fact that it comes from Floating House Studios. Towards that end I’ve spent a lot of time tuning the look and feel of Rustic Citrus to provide a high-value, beautiful experience in order to start the Floating House Studios brand out on a good foot.

ME: What is your role at Microsoft and how long have you been on board?

JW: I’ve been a software developer on the Internet Explorer team within Microsoft for a little over a year now. My team within Internet Explorer is focused on both the performance of the browser’s myriad APIs and compatibility with other browsers.This is my first full-time job after college and I have to say that after working on class projects seen by a dozen people at most, it’s quite an experience working on a product with hundreds of millions of daily users. Working on a browser has also shown me how powerful the modern web standards are and how much easier it is now to create games like Rustic Citrus than it was even five years ago.

ME: Did you work alone on Rustic Citrus?

JW: Right now Floating House Studios is a one-man shop. I’m the only one writing code and actively promoting Rustic Citrus but I work with a fantastic graphic designer named Amanda Jonovski who I went to school with at Notre Dame. Outside of the beautiful graphical assets she made, the rest of the app is my own creation. I of course should give a hat tip to several friends and family members who helped me test the app by finding bugs and offering suggestions for new features.

Let’s talk about the design and the code of Rustic Citrus

ME: So you created Rustic Citrus. Can you tell us how you came up with the game idea and where you got the name?

JW: Rustic Citrus initially began as a class project during my sophomore year at Notre Dame. I was a big fan of TextTwist growing up but I never really liked how the game looked. I wanted to create a game in the same spirit while focusing more on providing a delightful experience. This meant I had to have a great name. Since the game is about spelling words given a set of random letters, I wanted a name which was inspired by this. I wrote a program to generate all six letter words which are anagrams of each other to see if anything promising showed up. When I saw the words “rustic” and “citrus” next to each other, I knew Rustic Citrus was what I had to call it. It provided me with not only a great theme and color palette but also a nice play on words. Even after that class ended, I couldn’t get the idea of turning Rustic Citrus into a full-fledged app out of my head. The summer after I graduated in 2012, I started developing Rustic Citrus as a Windows Store app and have been working on it ever since.

ME: The design and user experience in Rustic Citrus are first class. Can you give us a few examples of things a game developer can do to create great user experience and attractive design?

JW: When it comes to designing the look and user experience of an app - especially a mobile app - a lot of small things add up quickly. Having a consistent theme to your game makes your game memorable and stand out. For Rustic Citrus, this meant repeating the fruit theme on the game’s buttons and the rustic theme on the wood and paint background images. In a similar vein, you also need to maintain a consistent color palette and font choices. Another thing to focus on is making your game look like a native app on the operating system for which you are developing. A lot of games on the Windows Store don’t necessarily follow the modern look of Windows 8. Making an app which does this can help you stand out in a crowded market. With games it is also important to not make the app overly complex. You want to provide quick access to things like instructions, options, and of course the ability to actually play the game.

ME: What sort of work did you have to put into the UX of the app?

JW: I’ve already logged plenty of hours playing with a wide range of apps across the Windows 8 platform. One of the great things about them is that they all follow a similar design philosophy, making each one look like it was developed specifically for Windows 8. This is true for almost every app category in the Windows Store except games. As I just mentioned a minute ago, most games don’t follow the grid and animation paradigms Windows 8 tries to champion and I thought this was a shame. So that was one of my major goals in building Rustic Citrus - follow the design guidelines provided by Microsoft while taking some liberties to make the app shine. Thankfully, the WinJS library Microsoft provides makes it easy for any app to adopt the look and feel of Windows 8. I chose to embrace this and give it my own spin.

ME: Can you explain your monetization strategy for Rustic Citrus and your reasoning behind it?

JW: I wanted to price Rustic Citrus competitively with other games on the Windows Store platform while still allowing me a chance for it to generate revenue. I noticed that, on a whole, apps on tablet, laptop, and desktop devices cost more than on smaller mobile devices like phones. For example, a game like Angry Birds may be $0.99 on an iPhone but it was $4.99 in the Windows Store. For this reason, I figured that offering a high-quality game at $1.99 would give people a sense of getting a deal on the app. I also wanted to offer a free one day trial to get people hooked on the app without having to pay upfront. Everything I read online told me that apps on the Windows Store with free trials made many times more revenue than those without one. I also created a slimmed-down, free version of Rustic Citrus available at www.rusticcitrus.com which I use in my marketing efforts to try to give people a taste of what to expect before actually paying for the game. My whole focus was to provide just enough incentive in the free versions to convince people to pay the $1.99 for the full app.

ME: What languages, libraries, or frameworks did you use to create Rustic Citrus?

JW: My experience on Internet Explorer has shown me just how far native web technologies like HTML5, CSS, and JavaScript have come over the past few years. Thanks to the fact that Internet Explorer is now so standards-compliant, I had access to a huge range of APIs out of the box. Therefore, Rustic Citrus is almost built entirely out of web standards. However, I do make use of three JavaScript libraries: the WinJS library provided by Microsoft, the ever-useful jQuery library, and a vector graphics library called RaphaelJS to create the game board. I’m hoping in the future that I can even get rid of some of those dependencies.

ME: Is game development something you genuinely enjoy?

JW: I enjoy game development because it allows me to express my creative side. Building an app from the ground up allows me to tap into a part of my brain that I don’t get to use during my day job. Controlling every aspect of a project from how it looks to how users interact with it to how you get people to buy it is at the same time challenging and rewarding. And there really is no greater joy for a programmer than seeing someone using your app or playing your game with a smile on their face. I’ve worked on a lot of projects that never saw the light of day, so seeing my friends, family, and especially strangers playing Rustic Citrus and enjoying themselves has been very fulfilling.

ME: Can you tell us why you chose to develop for the Windows platform first?

JW: I actually always figured I would build Rustic Citrus for iOS first. iOS has consistently been the platform which generates the most revenue for app developers and I had already done some iOS development with a previous project of mine. However, the issue with the App Store is that it is over-saturated and app discovery is entirely broken. It’s next to impossible for a small studio to get an app in the top 25 which is where you have to be if you want your app to generate any substantial amounts of downloads or money. Right around when I started to focus on Rustic Citrus development, Microsoft released Windows 8 and I saw the Windows Store as a huge opportunity. I could get access to hundreds of millions of users on a new operating system with a young app store without a lot of big names to compete against. I was hoping the youth of the Windows Store would allow me to get a foothold there and then I could use that momentum to get into the top 25 on other app stores on platforms.

ME: How much time did it take to develop Rustic Citrus?

JW: I don’t have an exact count of the number of hours I’ve been working on Rustic Citrus, but it has definitely been north of 100 hours. I unfortunately don’t get to work on it as much as I’d like to since I have to fit time in after fulfilling my duties for my full time job, but I do get to work on it for an hour or two on most days.

ME: Would you rather have high reviews or a ton of downloads?

JW: That’s a great question. While both are obviously great things to strive for, I would have to say getting high reviews are more important to me because they should lead directly to a ton of downloads. It’s of primary importance for me to put out a product which makes people smile and keeps them coming back. That means making the app experience addictive, easy to understand, and crash-free. I feel like I’ve done that with Rustic Citrus so far and my app rating of around 5 stars has proven that. I know that putting together such a great experience will ultimately lead more people to give it a try and it will garner more downloads. I’m hoping someday the time I’ve put into making this a first-rate app will lead to a snowball effect in the number of downloads I see.

ME: So what’s next for Rustic Citrus?

JW: I recently released version 1.1 of Rustic Citrus which adds some new features including 55 achievements which users can earn, the ability to end rounds early instead of waiting for the timer to run out, the ability to reset all your game data, and some miscellaneous bug fixes and performance improvements. The next big thing on my to do list for Rustic Citrus is to add a multiplayer mode where you can play against your friends or against other random players. Once I have that working, I’m going to look to expand to other platforms like Windows Phone, iOS, and Android. I want to get Rustic Citrus into as many people’s hands as possible.

Big thanks to Jacob for doing this interview with me. It’s great to get people and projects like this in front of the rest of us that are working hard to get our apps in the store. If you have Windows 8, you should download Rustic Citrus and give it a whirl.

My Q&A with Indie Game Dev Studio, Random Salad

Jake Poznanski

Jake Poznanski and Sam Kaufmann lived in LA and Seattle respectively when I first met them, and now I guess you could say they live in LA and Seattle irrespectively. That is, they switched - Jake has moved up to Seattle (Bellevue actually) and Sam to LA, but the distance doesn’t keep them from running a very active and progressive indie game studio that - judging by user reviews - is also very successful.

Jake and Sam attended Carnegie Mellon, and after graduating and working for a relatively short time at what many (including themselves) would consider dream jobs, the game duo - decided their after hours work on Windows Phone games was where they wanted to throw all their efforts, and they did exactly that.

I want to introduce you to this pair and give you a little glimpse into their daily game dev lives. My goal is to fire a barrage of questions at them and see what they say. Hopefully their answers will be inspiring and encouraging and motivating, but no pressure, guys.

Here we go…

Who is Random Salad?

ME: Hi, guys. How are you? And who are you?

JS: Hi Jeremy, let us just give a quick introduction about ourselves. We are Jake Poznanski and Sam Kaufmann, and we run Random Salad Games, a small indie game studio. We focus on Windows Phone and Windows 8 primarily, though we’ve branched out into Android as little bit as well.

ME: Tell me what you think would be your favorite among the many games you’ve created. And while you’re at it, tell me what is your favorite among games you haven’t created as well.

JS: I think our favorite game would be Paper Dash. It’s sort of our new and modern take on an old classic game, and I think it was a lot of fun. We had a lot of chances to put in little easter eggs in the levels, and we also put in a lot of nice touches like a custom soundtrack. Sam had a chance to record all the game music himself, and it really gave a nice feel to the game.

We are both fans of simulation games, like the Sims, or even some crazy titles like Dwarf Fortress, but I don’t think we are ready to tackle such a challenge just yet. In good time… perhaps :)

ME: What was the most difficult game you’ve developed and why was it so difficult to make?

JS: I think the most challenging game we’ve done so far is Super Golf Land. It involves a fully featured 2D golf simulation, so it was a lot of work to get that tuned and working just the way we liked it. There were also a huge number of levels and courses to create, and balancing the game required a lot of testing. We think it turned out really well though.

ME: And finally the most obvious question - who in the world came up with the name Random Salad for your outfit?

JS: Haha a very funny question indeed…

We were at lunch with a friend when we were trying to figure out the name for our company. We wanted the word “random” in it and we started looking around the restaurant for things to put in front of that word. Someone was eating a salad, and the rest is history :)

I wish there was a more intense and significant reason for our name but we are happy with the result nonetheless.

Sam Kaufmann

Advice for other developers

ME: Do you think one person can run a successful game development venture?

JS: Yes, it’s definitely possible to be successful with Windows Phone and Windows 8 development. I would suggest starting small, with one or two smaller games before tackling a larger game project. Don’t get discouraged, and remember that the last 10% of any project is where 90% of the work lies.

ME: Do you motivate yourselves with the hope of a runaway hit game?

JS: Of course, everyone dreams about creating the next Angry Birds. Remember though, you have to start somewhere, and it’s not likely that your first game will sell millions of copies. Start small, learn from your earlier games, and listen to your users.

ME: What do you think about the opportunities in the relatively small and young Microsoft marketplaces?

JS: The best part of Windows Phone and Windows 8 is that they are still emerging markets compared to Android and iOS. This means that your indie game has a much higher chance of getting featured and noticed. Also, the market is still large enough that if your game sells well, it can end up being a nice investment.

**ME: What does the breakdown of a day’s work look like for someone in the indie game development business like you? **

JS: Usually in the morning we review our game statistics and see what sort of feedback our users have sent in or left in game reviews. In the early afternoon, we are usually working on coding, creating game graphics, or often times simply running errands. Usually by the evening we are planning our steps for the next day. The best part of being an indie developer is that we have flexible schedules, sometimes it’s nicer to code in the evening when it’s nice and quiet too :)

ME: I think a lot of potential game developers doubt they’ll have the capacity and resources to develop for the many platforms that exist. What would you say about the prospects of choosing fewer platforms and concentrating your developement efforts?

JS: I think it’s totally possible to develop for multiple platforms, especially with the tools available today. I would suggest taking a look at the very nice Monogame framework, which lets you run XNA across Windows Phone, Windows 8, but also on Android and iOS. These tools are at a sweet spot right now, as they are mature enough for production-quality games.

ME: After being game developers for a considerable time, would you say you still have fun in your job? Do you still have fun playing games yourselves?

JS: We get to stay at home everyday and make games, so it’s a great experience. We are really glad to be where we are, and we continue to work hard everyday at it. And we certainly play games, both indie and large publisher. I know I had a lot of fun recently with Sim City, and also this great indie title called The Swapper :)

Well, thanks a lot to Jake and Sam for answering a few questions for me and my readers. I definitely wish them massive success in their venture, and I hope my readers too will have success in their endeavors. If there’s anything I can do to support, please ask.

By the way, if you are a student or a startup and want access to a lot of free Microsoft software and resources, make sure you checkout DreamSpark and BizSpark. Furthermore, our AppBuilder program will give you some good resources and even rewards for doing what you love!

You can find Jake and Sam and more information about Random Salad Games on their website randomsaladgames.com.

Please leave comments below. Jake and Sam will be monitoring and responding.

Dyyno's Journey - Developing an App for Windows 8

I hosted an episode of DevRadio the other day and now it’s live on Channel9. It’s an interview with Vamshi Sriperumbudur and Dr. Sid Annapureddy from a Silicon Valley based company called Dyyno [link removed] that is doing some exciting work on the Windows 8 platform. Dyyno helps more than 30 content creators or aggregators distribute their content on smart devices, and their app Flix Universe brings this content to Windows 8.

Here’s the full interview on DevRadio. Enjoy.