Showing posts with label wp7. Show all posts
Showing posts with label wp7. Show all posts

Thursday, April 19, 2012

Romo second generation protocol has been revealed

It seems that Romotive has released a full description of the new protocol to talk to their second generation Romo smartphone robots on their blog. I have not yet found the time to dig into upgrading my Romo SDK for Windows Phone with this, but I really want to, so keep checking the Codeplex site and this blog for more information on that.

Thursday, March 22, 2012

Time for the yearly Layar update, it seems...

After all, I seem to be doing one each calendar year. Except that - surprise, surprise.. - there really isn't one, as far as I'm concerned.

I actually just said it out loud: I've given up on Layar. They are apparently never going to release their software on any device that I (want to) own.

Bye bye, Layar. I wish you all the best without me as a user...

Monday, March 12, 2012

Romo codeplex site is live

It does not contain much (yet), but the Codeplex site I created for my work on a WP7 SDK for controlling a Romo smartphone robot is now published and available.

If you have a revision 1 Romo and a developer unlocked Windows Phone you can now download a pre-alpha XAP file of an app that turns your Romo+smartphone into a moving compass.

Monday, February 20, 2012

Zaagmans has been featured on AppFlow

I just had a look at my phone, and this is what I saw on the AppFlow live tile:

This caused me to pause for a while.
I knew that app icon...
That's Zaagmans, the silly app I made!

Starting AppFlow proved that my app is the one featured app in there:

I'm guessing this is just for the NL marketplace (AppFlow recommends per marketplace now), but I still think it's cool!

Sunday, February 19, 2012

The "guy in the Netherlands"

Oh, just two things I mentioned on Twitter before, but not yet here:

I must say that I like both of them.

Romo has landed in the Netherlands

Last week brought the Microsoft TechDays in The Hague. And as part of the Caesar Experts booth, lots of people here in the Netherlands finally saw a Romo smartphone robot in person!

Elsewhere on this blog you can see how I got to know Romo and how I am writing software support for him for Windows Phones. As we expected lots of Lumia phones would be available as winnable goodies at TechDays (and we were right...) I suggested we'd go for completely different: show off my work on WP7 Romo, get people in the Netherlands to actually see one in action and have two to raffle off to registered visitors of our booth. This was actually a great succes, as far as I'm concerned. I've received lots of questions and people really seemed to like the Romo concept.

Unfortunately, the new Februari revision Romos could not be here in time, so the two winners will receive their robots later, as soon as I receive them. I hope this should not be long. Also based on the information I now have, these new revision should have support for some extra frequencies to maybe add some better control to turning the robot and ways to turn the 5V auxiliary ports on the front of the robot off and on again. When I have received information on these frequencies, included them in the Windows Phone library and have the library tested on both my original #42 revision one Romo and a new revision one, I will make my library public so anyone could write WP7 apps that drive a Romo robot.

If you have any questions, please don't hestitate to ask.
And stay tuned for more Romo information!

Monday, February 13, 2012

Zaagmans...

For readers not from the Netherlands, let me just quickly introduce the concept of "Zaagmans". You could translate him as "Mr. Saw", and he's a fictional construct mentioned by the characters of a dreary office satire called "Debiteuren Crediteuren" in the comedy program Jiskefet on Dutch televison. Zaagmans of course comes along each wednesday at noon, to "saw the week in half".

In the second week of Januari Zaagmans came up at work (must have been wednesday the 11th) and I had the idea that it would be easy to either set an alarm for noon every wednesday with the sound of a saw or write a small silly app to do that for me and optionally show me a countdown. I kept things to myself and at home that evening I wrote just such an app. I wanted to dogfood it myself for a week, and after I knew for sure it worked on wednesday I published it. It turned up in the Marketplace on december the 22nd, just over three weeks ago.



I would never have believed what I started. Download numbers are trailing a couple of days, as you probably know, but in the first 2.5 weeks the app has been downloaded 123 times! And it is only published to a couple of markets: just NL originally, but as quite a number of Windows Phone users over here still have not switched from their "fake" US/UK/DE/BE Live ID they started using when NL support was still far away, I enlarged this a bit.


What I find astonishing is the fact that I have 9 reviews already, almost all of them five star except for one four star one. And this morning I noticed that Zaagmans is in the 3/48 position of the "New & Impressive" section in AppFlow! Wow, that's still just for the Dutch marketplace, but this little app really seems to be touching a nerve. It my own little Rubber Duck! ;-)

So far, there has been one update where you are now able to choose the sound you want to hear (first version made random choice of the original three sounds) and a second is current going through Marketplace submission right. After that at least one more version will be submitted that has Flurry statistics built in; I really want to see what people do with this app.

If you have ideas for it, please let me know.

Wednesday, January 18, 2012

Romotive publishes Romo audio protocol

On their blog, Romotive has made public which audio waves you need to generate on which audio channel to control a Romo first revision smartphone robot. So if you want something programmable with an audio port to control one, now you know how!

The article even briefly mentions my own work on a Romo control library for Windows Phone, which can change the amplitude of the soundwaves it sends out to control robot speed as well.

This library (and my first two apps) are slowly but surely nearing a state in which they can be made public for every WP7 developer to easily interact with Romo devices. The Romotive staff has already received preliminary XAP files to use on the Nokia Lumia 800 they have, and they told me they liked what they saw so far.

There should be more information about this soon, even though the next revision of Romo (which should be out in or shortly after this Februari) will include more frequencies as part of the interface.

Just be patient...

Friday, December 30, 2011

Romo robot control library for WP7

After seeing the Romo smartphone robot on Kickstarter some time ago, I was hooked. I wanted one. And I wanted to program for it myself, on my Windows Phone! So I pledged a certain amount of money for the limited edition one - gotta have the T-shirt too - and waited for the Kickstarter results...



And then it was a landslide (they raised $114796!), and around Christmas I received my robot. It happened to be limited edition number 42 and all, pleasing my inner nerd immensely. To get to work!

In fact, I had contacted the guys at Romotive to ask about the sounds needed to drive the robot. The evening before FedEx would deliver, I had a first draft of a library and an app with some simple buttons. When the Romo arrived, this code immediately drove the Romo robot flawlessly, without any changes needed. That certainly was cool.

Today after the last day at work, I met up with some of the WP7NL crew. This first demo received some great reactions and some good suggestions too. Turns out the Romo base reacts to volume as well as sound frequencies. So I reworked the library to allow you to use this to not only control forward/backward motion and left/right rotation but variable speed for both as well.

When the library is done and tested, which means having written and published at least one Romo WP7 app myself, I plan to publish it open source on Codeplex and make the binaries available (nice reason to get into NuGet) as soon as possible. And then, order yourself a Romo, and get programming robots!

Keep watching this space for more info!

Friday, November 25, 2011

Command & Conquer, Distimo style

Just a quick post, reacting to a comment by Tijmen after tweeting about the cool Command & Conquer style competitor map by Distimo.

Data for the following map (click on it for a larger version) is from the last month. It uses colors to show which of the WP7 apps I designated as competitors for my Klout Tile app (which should be all of the Klout apps out there right now..) have the highest ranking within the Social category in that country:


Interesting, huh? Especially since the other newcomer (from France, and currently only biggest there) shows the most information from the Klout API at the moment. Really should push out v1.1 of my Klout Tile app soon: it shows more data, should be more stable and cuts back on the "review begging" that was a bit excessive in v1.0 (with a daily recurring reminder). At least my app is still the only one with a Live Tile for your score.

My goal: get the whole world blue. ;-)

Update: Since posting this, another Klout app started showing your score on a live tile. So the "blue earth" goal doesn't seem like it'll be happening soon, as I am currently busy on other WP7 apps (one of which actually has a fixed deadline).

Tuesday, November 8, 2011

The perfect way to ask for a WP7 App Review...?

Today I got a mention on Twitter I really liked about the way I implemented "review begging" in my latest Windows Phone 7 app. I do it using the following code:

using System;
using Microsoft.Phone.Scheduler;

/* ...part of AboutPage.asmx.cs... */

public static void ResetReviewReminder(KloutSettings settings)
{
  const string name = "ReviewReminder";
  Action removeReminder = () => {
    if (ScheduledActionService.Find(name) != null)
      ScheduledActionService.Remove(name);
  };
#if DEBUG
  removeReminder();
  settings.UsedReviewButton = false;
#endif
  if (settings.UsedReviewButton)
  {
    removeReminder();
  }
  else
  {
    ScheduledAction reminder = ScheduledActionService.Find(name);
    if (reminder == null)
    {
      reminder = new Reminder(name)
      {
        Title = "How do you like me so far?",
        Content = "Would you mind using the about dialog " +
        "(tap here if Klout Tile is not running) " +
        "and writing a review?",
        NavigationUri = new Uri("/AboutPage.xaml", UriKind.Relative),
        RecurrenceType = RecurrenceInterval.Weekly,
        ExpirationTime = DateTime.Now.AddMonths(1),
      };
      if (System.Diagnostics.Debugger.IsAttached)
      {
        reminder.BeginTime = DateTime.Now.AddMinutes(5);
      }
      else
      {
        DateTime x = DateTime.Now.AddDays(7);
        reminder.BeginTime = new DateTime(x.Year, x.Month, x.Day, 12, 0, 0);
      }
      ScheduledActionService.Add(reminder);
    }
  }
}

What does this do?

That's an easy question to answer: if the application settings object (which is persisted in isolated storage) flags that the user has already used the review ApplicationBar button (in Klout Tile that's the star button in the About page), then any review reminder that is found is silently deleted. If however, the user has not used the review button in the About page yet and no existing reminder is found, it creates a new review reminder.

This reminder asks the user what she thinks about the app and also includes a NavigationUri that points to the About page. It is set to recur weekly for a maximum of about a month, starting three days from now. I think this is a reasonable "beg" period and frequency. (You can adjust as you see fit, of course.)

How do I use it?

Each time the Klout Tile app is started, I call AboutPage.ResetReviewReminder() once. This means that, if this is the first time the user starts the app, the user will be reminded three days later to please go add a review.

Apart from this I have the following code in my About page to handle the user clicking review button:

private void ReviewButton_Click(object sender, EventArgs e)
{
  var settings = KloutSettings.Load();
  settings.UsedReviewButton = true;
  settings.Save();
  ResetReviewReminder(settings);
  var review = new Microsoft.Phone.Tasks.MarketplaceReviewTask();
  review.Show();
}

This makes sure that when the user does click on the review button, any reminder that exists will be deleted and no more reminders will ever be (re)created in the future.

Some of the advantages

A lot of Windows Phone apps ask the user for a review. Some have buttons, which the user can easily choose/forget to (n)ever tap. Some wait a bit and ask the user for a review using a MessageBox with Ok/Cancel buttons, but this can be annoying for the user, as there is no "Not right now." option. Also, if the user installs your app, runs it onces and never uses it again, the code to show this message box will never get executed.

Using a system reminder like the code above does gives the following advantages:

  • We are able to show the user a review reminder, even if they only start the app once and never come back to it again. (Unless they uninstall it, of course.)
  • The review reminder is stored with other system reminders (like the ones from the Calendar), so they can be shown at any time, even if when the app is not running.
  • You do not need to use a background task to get this behavior, so even if the user disables your background task (which they can) the reminder will pop up.
  • If the reminder pops up at a time that is not convenient for the user, she can just snooze it, like any other reminder.
  • The user still has a way to just dismiss the reminder, but as it is a daily repeating one, it should pop up the next day (for a maximum of two weeks after first start).
  • When the reminder pops up while the app is not running, tapping the reminder opens the correct page inside the app directly to easily let the user initiate a review scenario. (For bonus points, the URI and About page could be changed so that when the user enters by tapping the reminder, the Microsoft.Phone.Tasks.MarketplaceReviewTask is executed directly, eliminating one further step!)
  • Finally, when the user uses the review button in the About page on their own, the reminder (whether already shown before or not) is silently deleted so the user is not bothered with our "review begging" ever again.

So I think using a Reminder to do you "review begging" might be the perfect solution. What do you think?

Sunday, September 18, 2011

Fire-and-forget background code execution

Finally, time for some code again.

In the course of writing some Windows Phone 7 apps for the Apps for Noord-Holland competition I've just hacked together a tiny class that wraps the BackgroundWorker class for one simpe case: you want a bit of code to execute in the background, fire-and-forget style:

var loadData = new peSHIr.BackgroundHelper(() =>
{
    // load something
    // load something else
    // and that's it, basically
});

So you're not really interested in giving the BackgroundWorker an argument, getting progress information, supporting cancellation, receiving a result or even when exactly the code is done running (by getting an event). You just want it to start now and eventually have it be done.

If you want/need this, here's a simple utility class you can use:

using System;
using System.ComponentModel;

namespace peSHIr
{
    public class BackgroundHelper
    {
        private Action work;
        private DoWorkEventHandler start;
        private RunWorkerCompletedEventHandler finish;
        private BackgroundWorker worker;

        public BackgroundHelper(Action executeInBackground)
        {
            work = executeInBackground;
            start = new DoWorkEventHandler(DoWork);
            finish = new RunWorkerCompletedEventHandler(WorkCompleted);
            worker = new BackgroundWorker();
            worker.DoWork += start;
            worker.RunWorkerCompleted += finish;
            worker.RunWorkerAsync();
        }

        private void DoWork(object sender, DoWorkEventArgs e)
        {
            if (work != null) work();
        }

        private void WorkCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            worker.DoWork -= start;
            worker.RunWorkerCompleted -= finish;
            worker = null;
            start = null;
            finish = null;
        }

        public bool IsBusy
        {
            get {
                return work != null && worker != null ? worker.IsBusy : false;
            }
        }
    }
}

Be sure to keep your multi-threading in order, though. So if the code stores something, use appropriate locking. Or if you access GUI elements, go through the proper Dispatcher. But that almost goes without saying, right? Also, error handling for the code you give this class is obviously left as an excercise for the reader. ;-)

Enjoy!

Monday, August 15, 2011

3D Masters app has more downloads than expected

As we know the App Hub download statistics take a couple of days to get processed, so it took a while to get going for my 3D Masters app. However, even though it seems to start trailing off a bit at the moment, so far there have only been a couple of days the app was not downloaded somewhere:

My other application only has about 40 downloads total (and none in the time frame shown above, hence the flat start of the cumulative line). And that one has been published since early november 2010!

Also, I would expect the actual target demographic for the app to not be heavy Windows Phone 7 users yet. So you can understand how I'm over the moon with these download numbers. ;-)

Update, early Januari 2012: still only a handful to go until the 400 downloads mark; that's almost additional 200 added in two months. Is that the word of mouth going around during the holiday season? New Nokia phones and advertising? I will try to get a graph out of the whole time it was published some time soon. And I really need to get cracking on the update for next July, when the 3D Masters 2012 event will be in Venlo again.

Wednesday, July 20, 2011

Quick WP7 app development

I have often wondered, with the certification process of a centrally controlled online application database and store principle that is often used right now, if fast reactions to events in the form of a new app were still possible. After all, you cannot quickly hack something together and put it on a website so people can install and use it.

While this post is by no means a thorough treatise of this subject, it does offer one concrete example that shows quick development turn-around is indeed still possible in a centralized store arrangement.

This past week has been a bit of rollercoaster for me, building and deploying a Windows Phone 7 app with background information for the 3D Masters 2011. As a bit of background, I'll sketch a timeline of how this app came to be. All times shown are in 24h CEST and approximate, accurate to within maybe half an hour. Here goes:

  • Fri, Juli 15th, 18:30: Meet friends for diner in Haarlem, before seeing the final Harry Potter.
  • 19:00: Received an mail from 3D Masters about availability of an iPhone app for the event.
  • 20:00: After emailing back and forth a bit with Jeff Barringer during diner, I decided to try and write a WP7 equivalent.
  • 20:50: Harry Potter begins, or rather: ends... ;-)
  • Sat, Juli 16th, 7:00: I start a new blank WP7 solution in VS2010 and get to work.
  • 22:00: Made nice progress. Basic app structure, icons, panorama background, start of About screen and the complete interactive map section are done. Made good progress on starting to capture the manoeuvre and pilot data from the 3DX website into two included XML files. I did do some grocery shopping along the way, so I maybe put in about 13 hours or so.
  • Sun, Juli 17th, 10:00: I return to my 3D Masters solution. Manually getting all the data into the two XML files took relatively long time (most of it during the end of todays session), but I also wrote basic ViewModels, ListBox data templates in my panorama control and all the plumbing needed to get selecting en showing the two detail pages to work. Luckily, showing the external descriptions and the movies just took one Task object each given the URLs in the data I had. ;-)
  • Mon, Juli 18th, 0:30: After completing the XML data and quickly tombstoning the show panorama item (so you return to the one you left after going into detail pages), I call it a night and try to submit my app to the App Hub. With some break time (had to leave that chair some time during the day), I put in about another 13 hours of development time.
  • 1:30: Then I found out that submitting new apps to App Hub was broken, possibly related to the scheduled down time that was announced for monday and is no doubt related to not only the new functionality that has shown up in App Hub, but to the approach of Mango as well. Very frustrated, I gave up, and went to bed.
  • 6:00: Up early for work. Tried to submit again, and got the XAP file and all the meta data in. Dreading that this might be too late, I went to work.
  • 20:00: Saw that app submission status was "Testing in progress".
  • 22:00: Noticed that the App Hub was showing the "down for maintenance" message.
  • Tue, Juli 19th, 17:00: Saw that my blog post was linked from the 3D Masters website, App Hub was back up and the status of my app was now "Certified", which is not mentioned in the App Hub forum thread about possible states.
    Fearing the app might not make it to Marketplace in time for the event, I at least made the XAP available so people with developer unlocked devices could sideload it at least, would that turn out to be the case.
  • 21:30: I noticed an email from the WP7 Marketplace Developer Support telling me there had been a problem processing my app submission. When I checked App Hub however, the status had now moved to Published, leaving me well confused.
  • Wed, Juli 20th (=today), 6:00: I was able to find my app in Marketplace on my phone and download and install it. Victory!
  • 11:00: Started to write this blog post, as I think this whole story might be interesting to some of the WP7 developers out there. Please don't be shy in the comments if you think it is. ;-)
  • Fri, Juli 22nd, 9:00: Start of the 3D Masters event that will end the next sunday around 17:00 in Venlo, NL. Will I see you there on saturday, perhaps?
  • 11:00: Thanks for all your interest; this turns out to be my most popular post since I did that Samsung Omnia Qwerty review two years ago. ;-)
  • Mon, 15th of August: Download numbers seem to start trailing off around 60 downloads.
  • Early november: In fact, the download graph from publishing the app until now seems to have an almost constant derivative until now, just having reached the 200 download mark.
  • Fri, 24th of August 2012: Unbelievable, really. Even though I missed the 3D Masters 2012 deadline (the app still shows hardcoded data from the 2011 event right now), the download graph keeps on going up steadily, now at around 2500 downloads and about 100 active users daily (according to Flurry statistics). Possible this active user bases keeps coming back to watch the movies while practising?

So yes, there you have it. Even though I do not recommend anybody to do this on a regular basis, if you really need to and you maybe get a bit lucky with the time your app takes to run the certification procedure you can have very quick new app results!

In this case that means: some 26 hours of development time, starting a week before app was needed, about 4½ days (or 108 hours) from inception of the endeavour to having the app on my phone, downloaded from Marketplace.

Q.E.D. (now, when was that vacation again...?)

(Oh, and lots of ideas for version 1.1 of course, for the next 3D Masters and other 3DX events...)

Monday, July 18, 2011

Windows Phone app for the 3D Masters!

Friday night, while having diner with friends before seeing the final Harry Potter movie, I got an email from the 3D Masters organizers that there was an iPhone app containing all kind of useful information.

Of course, this would be of no use to me, as I have a Windows Phone. So I wrote an email asking about the availability of a WP7 app with the same information, asking if it would be ok if I were to write one myself.

Reactions to this were very positive, so I set out to work on it the following morning. At the moment (early monday morning), the app is finished, waiting to be uploaded into the App Hub. Which, unfortunately seems to do nothing but give me errors...

Around 6:00: The next morning the uploading seemed to work. I really hope that the 3D Masters app will still have enough time to pass testing and appear in the Marketplace before the actual event it is supposed to be used at starts, which is in (now) four days.

Around 22:00: Later that same evening the App Hub was down for announced maintenance. Last status update I saw for the 3D Masters app submission was "Testing in progress". This was around 20:00. I will track the progress of the App Hub update and wonder why I will be able to get a status update again...

Tuesday the 19th, around 17:00: Great to see that we are linked from the 3D Master website now. Thanks, Jeff!

However, it is not at all certain that the app will be online in the WP7 Marketplace in time for this weekend; it's status has been "Certified" now for quite a number of hours. As a workaround, I'm making the XAP file available, so anyone with a developer unlocked WP7 device can sideload and already use it right now. So have a look, and be ready for the coming weekend no matter what happens in the certification process.

Tuesday the 19th, around 21:30: Strangly enough, App Hub status now says "Published", even though I got an email saying "We were unable to process the application submission for [app]. An error has occurred with your submission. [etc]", telling me to check the App Hub website.

Wednesday the 20th, around 6:00: I found my app in Marketplace and installed it. If you don't see it yet, that's probably because of the CDN technology that is involved. I know it can take up to even a couple of days before everyone actually see the app in their Marketplace app on their phone. So, unless you get very unlucky with CDN issues, you should be able to use the 3D Masters Windows Phone 7 app this weekend!

Enjoy it, and see you next saturday in Venlo!

Tuesday, April 19, 2011

Mango = Layar, Skype, and almost too much to name...

Just a quick YAY! After the recent MIX reveals it seems like my Layar wish will come true with Mango! Now I'm "just" waiting for a resolution of the Google (Maps) vs Bing (Maps) situation in the Netherlands.

Friday, March 11, 2011

#7slp = SevenSteps #wp7dev LAN Party

LAN Party kick-offYesterday I was at the Dutch Windows Phone 7 LAN party, "and all I got was this damn T-shirt." ;-)

It was a great day, in which the Dutch Windows Phone 7 developer community tried to come together with dozens of developers/designers to create a WP7 app from scratch. For some more information (including some killer images), please check out my description in Dutch or the English machine-translation made possible by a Google server farm.

Tuesday, November 30, 2010

I want Layar on my WP7

Just browsed back a bit and found this post from when I had just gotten my Samsung Omnia Qwerty phone. I guess as soon as the camera access API - that LG is already using in their Look n Type and ScanSearch WP7 apps - gets official for general public use, there is no reason for Layar to not bring out a port of their client for Windows Phone 7. I'll be waiting...

Quick update after MWC: like I wrote in Barcelona, I expect this to be unveiled at MIX in Las Vegas, april 12-14. So it can't be long now.

Saturday, November 6, 2010

First WP7 app should be published!

This morning I found out that my first Windows Phone 7 application had passed testing. It's status is now "Published to Marketplace", but I have not been able to see it appear on my phone yet. Hope it does so soon.

In the meantime, here are a couple of screenshots of the application in English; it supports English, German, Spanish and, even though not supported yet, Dutch. All the content that is shown (RSS feed items from my companies website and its tweets) is in Dutch only, however.

Wednesday, November 3, 2010

Is WP7 getting another theme in its next version?

When playing with the example code solution of the November 2010 version of the Silverlight for Windows Phone Toolkit, I noticed the following:

Since this screen seems to do its best to mimick the Theme page from WP7 phone settings to show off one of the places where WP7 itself uses the ListPicker control (with appointment status being another one), I would not be surprised if we would see a new "dazzle" theme in a next version of the Windows Phone OS.

This piece of example code could mean nothing of course, but I'm still curious what a "dazzle" theme might look like...