Some insights on coding for the latest version of Windows.
As you may have (hopefully) been reading, I have been developing an app specifically for Windows 10 in my spare time. As you might expect, it's been quite a ride with some ups and downs. In this blog post, I'll share some of the things I've learned along the way.
First of all, a quick update on the app Done - my Microsoft Developer account had been deactivated, and when I attempted to log into the website to register the app, I couldn't get beyond a login screen. It's taken Microsoft 2 weeks, yes - 2 weeks(!), to reactivate it. In the meantime I redesigned the app, tested it, and got it into a much better state. When my Microsoft Developer account was reactivated, I attempted to upload Done to the Microsoft Store, only to be told my account was not verified! As soon as this takes place, and it passes some internal testing at Microsoft, it should be available to download. The current release date is pencilled in for early December.
So then, what have I learned whilst developing the app?
Firstly, C# is still a great language to code in, and Visual Studio the ideal tool to use to develop apps. Visual Studio can be a little quirky to use, and awkward depending on the age of your computer, but you get there in the end.
However, with Windows 10, Microsoft have changed how apps are coded and some of the C# language used. One example is dealing with dates and times. This has always been "interesting" as a programmer - different languages and tools handle them differently, and with Windows 10 it's changed yet again. I'm not sure it's for the better, as you have to change the date into what's called a format, and I'm not entirely convinced it's helpful. Took a while to get it working in my app.
I also learned that some of the controls I wanted to use had their limitations, and so weren't practical. To enter a timesheet, I wanted to add what's called a flyout, where a new form would fly out for you to add details in. However, it wasn't easy to dismiss the flyout once you'd finished with it. A user would have to click or tap elsewhere in the screen to get rid of it, rather than use a button labelled Close. I didn't think that was intuitive enough, so I got rid of all flyouts except one and put all the forms in their own pages (screens).
I had also hoped to use the new Fluent Design system that Microsoft introduced with the latest version of Windows 10, the Fall Creators Update. If computers hadn't updated, the app would still work, you just wouldn't get the new design. However, even though my Lumia 650 phone is on the latest version of Windows 10, the code to add Fluent Design wouldn't work, so rather than have 2 copies of the app, I removed the Fluent Design elements.
Oh, and in case you're wondering about Windows Phone and it's small (to non-existent) market share, I use the phone to test apps I develop either personnally or for work. Although consumers don't use Windows Phone so much, there are some organisations that do, and they need to be supported by great apps. Then there's the rumours of Microsoft getting back into the phone business at some point. Think of it this way - would you create a business that assists in restoring classic cars, even though it's a tiny market share, or not see the opportunity as big enough? (I'm sure some such businesses exist). It's the same with Windows Phone. Anyway, back on topic...
Another feature of Done that I wanted it to do was to send PDF invoices by email. However, there didn't seem to be any way of creating PDFs, or sending emails, so instead the app opens the default mail client on your computer. The benefit to that is, you can check the email before you send it. Still would be nice to handle it all from within the app though.
Also, setting values combo-boxes (the drop down controls) can be a nightmare too. I found it quite difficult at times to display the option a user had previously entered.
Then there were/are the problems with submitting the app to the Microsoft Store. Firstly, as I mentioned before, my Developer account had been deactivated. I had been told several times it would take between 3 to 5 business days to fix. It took 2 weeks! I only noticed it had been resolved because I tried on the off-chance to log in and it worked! Next there were problems getting Visual Studio to access information from the Store submission site about the app I was uploading, though that could have been a tempremental internet connection (thanks to Virgin Media). But then, the Store submission site wouldn't let me add any payment options to my app, or let me send feedback to Microsoft. I got round the problem eventually, though now I'm stuck in the verification process, which should hopefully be resolved soon.
All in all, I have actually enjoyed developing the app. The only negative thing I take away from this is the problems submitting the app to the Store. It should be so much easier than it currently is - Microsoft can, and should, do more in this area to make the process smoother and more efficient. It's almost as if they don't want developers to submit apps, which I'm sure isn't true, but given the problems I've had you can see where I draw this conclusion from. They have to improve the app submission process - make it quicker and easier to submit apps, enable chat support in local countries (currently US only I think, so time differences apply), show better error messages or at least provide some explanations. I had been tempted several times to jump ship and develop for other platforms instead - I could have done without the problems I've had. Microsoft need to get this right, or risk losing developer mindshare and support.
Now I'm just waiting for what I hope will be the final stage in the app submission process, and it will be available to download...