Sunday, September 25, 2011

Ich bin ein Asperger...

Looking back, I've always thought of myself as an outsider. Always had the feeling something was wrong with me. Or maybe all those other people around me were different than I was; like they had a little secret that nobody had ever told me, because they possibly though that I "just knew" like everybody else. Because it was normal for them.

This until recently undefinable feeling has always had a great impact on my life. I was that calm, forward, studious child. That child that could perfectly entertain itself. With a book for instance; in my mind I've always been able to read. That child that never bothered anyone.

In school I usually found the lessons to be fun and interesting. I did regret the fact that all these other students, who in general didn't seem to care for it all one bit, had to be there as well. I didn't live that far away from school, so when there was a gap in the curriculum of the day - even if it was just one hour - I got on my bike and went home. What else could I do, with all those other kids, when there was nothing to do at school? I was then better off riding home to drop off some of the school books I would no longer need that day, for instance.

After studying computer science at Utrecht University, a period I basically allowed to happen to me like it was "just another school", meaning that the traditional college student life all but completely passed me by, I moved out on my own and started working as a computer programmer. I was perfectly work focused. Alone and deeply unhappy. Without knowing why.

Just as in the previous years when interacting with other people, interacting with colleages and clients at work sometimes resulted in problems. Often these small or even large conflicts with people came as a complete surprise to me. Looking back they were almost always caused by breakdowns in non-verbal communication. I had for instance said something that I thought to be factually true, but I had done this in such a way that the other person felt attacked or even insulted to the bone.

Anyway, I won't be including any more personal details. I might do so later, when both my readers and me are interested in me writing down more. At the moment I do not feel like it, and want to get back to the title of this text and how I came to write it. What I do want to add is that one of the best things that ever happened to me is my wife Rona. I would not know what to do without her..

Asperger


Quite a number of years ago I first heard or read about Asperger Syndrome, a development disorder that's part of the so-called autisme spectrum. This means it is in fact a light form of autism. I never thought it would be relevant to myself in any way. Also, the many coaches I have spent time with over the years (often through work) to help with myself and my problems at work, my melancholic moods or my unrest have apparently never thought about this possibility. Or if they did, they never let me know.

Recently Asperger has maybe gotten a bit more attention because the (not only with me) very popular Sheldon Cooper from The Bing Bang Theory exhibits many of the typical symptoms. Also, a short Twitter discussion with a group of programmers I know mentioned an online Asperger test, that startled me a bit with the high resulting score when I answered the questions in gest.

All this resulted in me buying the book Asperger Marriage a couple of weeks ago. On the 19th of september I eventually read it completely in one go; I just could not put it down. Even though the individual detailed differences between myself and the main character in this book describing the marriage between Asperger Chris and his wife Gisela are enormous - every person is different - for most of the book I had the distinct feeling the book was about me. I recognized so many of it that literally seemed to be about me. A strange and not at all pleasant experience...

Now what?


Therefore I am now convinced that I suffer of Asperger Syndrome. Although suffer is by no means the right word: it also brings me great advantages and makes me who I am. Thus I do not believe that I would want it gone even if that were possible.

For now I am therefore not inclined to have my auto-diagnosis checked by a professional in the field. After all: based on what I now know about Asperger and about myself an actual medical diagnosis would change nothing: there is no cure (even if I would want one) and no real practically useful help that would mean anything to me. The only thing I can do is to continue to adapt and develop, and learn to cope with the handicap that I apparently have. Subconsciously I have been at this for decades, and in certain areas I have become quite good at it, even if this is or perhaps always will be a conscious effort.

I am glad that my problems and feeling of "being different" at least for myself have a name now. This is also the reason I wrote this text: Asperger is part of me, and I would like people to know that. Not to gain any positive advantages or use it as an excuse, but to give it a place, for me.

Well, to be honest I might want to use it as a reference. As part of an apology for instance, in a situation where my social handicap again unwittingly cause a conflict because the tricks I picked up to deal with people in a way they consciously or unconsciously expect of me have failed. Believe me: I can only get better at this.

The coming weeks I will have enough to read: lots of books have been written on this subject and also weblogs like Life with Aspergers, which I instantly added to Google Reader. I think the book "Pretending to be normal" is now on the top of my reading list, because just the title alone seems so very much to fit the feeling I've been having for years.

Everyone who knows me and have found me to act strangely or even rude in certain situations: I hope you now have an idea of the potential reason why and also why I cannot always help myself, even if I wanted. Everyone who knows me and is now thinking "But I never once noticed anything like that!" I would like to thank very much for the enormous compliment. All other readers I want to thank for taking the trouble to read this.

Thank you.

(This is an English translation of the original Dutch blogpost. I wanted to have this introductory information in English too. Any possible future posts on this subject will likely be Dutch only.)

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!

Friday, September 9, 2011

"Hey, what's up with the daily tweet to @twitter @support...?"

My Twitter followers are bound to know I have some bones to pick with Twitter lately. For one, I really don't like the treacle like performance of #NewTwitter compared to #OldTwitter (even in Chrome, not just in IE8 and IE9). But this post is not about that.
Recently I have been starting to post (almost) daily tweets asking Twitter to support Mobypicture. As some people are bound to frown on this, I thought I'd write this blog post to explain why I do this, and when I plan to stop doing it.

My problem

Around the time I started these daily tweets, Twitter started rolling out their new "Recent Images" media gallery. This shows the most recent images a user tweeted (includes old style retweets, or course) on their profile and includes a link to a complete grid of such images.
While I think this is cool feature, I really did not like that only a couple of image publish websites are included in this view, like: TwitPic, PhotoBucket and yfrog, while the service that I use (the Dutch Mobypicture) is not included.
This means, that what Twitter calls "Recent Images by @peSHIr" on my profile, does not include any of my recent images, but only images by others that I happened to tweet a link to at one time. This is not what I want, obviously. I would like my Moby images to show up in this view. Or, if that is (currently) not possible, I want to disable the new image gallery so it does not show up on my profile.

So, ask the parties involved

To that end, I started tweeting my request. I also DM'ed Twitter Support and MobyPicture with more background information on my request. I have received a number of replies to this. For one thing, Moby replied they cannot help me put their images into the Twitter gallery (obviously).
Twitter seems to have misinterpreted my original request for "Moby support", and quite stoically referred me to the Moby support page. Nice one, Twitter; show us you care about your users... ;-) So I changed my daily request a bit, based on this responses.
Then, after more clarification by DM, I received the following DM response from Twitter:
You can turn off media here: https://support.twitter.com/articles/20169200-media-settings-and-best-practices
After asking around by DM some more, Twitter admitted this is not a response my question on how to disable the media gallery so it doesn't show up on my profile any more. Their eventual response to that (in two DMs) was this:
We appreciate your request and feedback and will share it with the rest of the team. Unfortunately the recent imaged gallery won't be removed from your profile unless you don't have any images posted in your Tweets. Sorry! https://support.twitter.com/articles/20169409

So, that's it?

So, in the meantime, even though I thanked Twitter support for they rather promptly responses, I feel screwed. Unless I go back and delete all tweets that include a supported image link in them, I'm "stuck" with the image gallery on my profile, a feature I would really like when it would include my Moby images. And I am not going to hunt down those tweets and delete them.
Also, even though as far as I can remember the inline media display in #NewTwitter at one time showed images posted on Mobypicture, with the (again originally 2 part DM) reply from Twitter support, it seems clear my Moby images are not expected to show up in my media gallery any time soon (or ever):
You're welcome. And again, as moby is not an official media partner of ours, we don't show their images in the details pane it's possible that we will consider a partnership in the future, but for now we are not affiliated. Thanks!

So, the world is stuck with my daily tweet

I feel I have no other course of action left, than continue my daily tweet asking for Mobypicture support in the current Twitter webinterface...
So, unless my images show up in my Twitter media gallery (or possibly until I get a way to turn it off so it does not show up on my profile any more) I will be repeating that daily tweet, reminding Twitter that I have not given up asking for this support.
If you use Mobypicture and Twitter as well, I want to ask you to do the same or RT my daily reminder. If enough people do so, it might be a reason for Twitter to start including these images.
Hopefully this blogpost clarifies the reason for that annoying daily tweet. And thank you for reading this far! ;-)

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

MetalScroll for VS2010?

Anyone who, like myself, loved MetalScroll in VisualStudio, knows that with WPF VS2010 it doesn't work anymore. However, there is an alternative: go to Tools, Extension Manager right now and install the Productivity Power Tools for VisualStudio if you haven't already. The Enhanced Scrollbar that is included will probably do what you want.

Next to the Full Map Mode shown above, it has two other modes you can easily switch to using a context menu. There are also some options for the scrollbar that you'll find in the usual place: the ever expanding VS Options dialog.

I think I actually like the Scroll Bar Mode best, as it looks most like a normal scrollbar with usefull pixel pointers on it. Switching to Full Map Mode is always just a right click away when I really need it.