WP7

What I’ve learned from porting my first app ever to Android and iOS with Xamarin

What I’ve learned from porting my first app ever to Android and iOS with Xamarin

What’s the app about?

The app is about fishing knots. It sounds boring for most people, but for me, this app made me becoming a developer. So I have a somewhat emotional connection to it. It was back in time when Windows Phone 7 was new and hot. A new shiny OS from Microsoft, but clearly lacking the loads of apps that were available on iOS and Android. At that time, I also managed to get my fishing license in Germany.

As I had a hard time to remember how to tie fishing knots, I searched the store and found… nothing. I got very angry over that fact, partly because it meant I had to use one of the static websites back then, but more about the fact that there was this damn app gap (WP7 users will remember). So I finally decided to learn how to write code for Windows Phone and wrote my first app ever after some heavy self-studying months.

Why porting it?

Writing code should soon become my favorite spare-time activity, effectively replacing fishing. And so the years went on, I made some more apps (most of them for Windows Phone) and also managed to become employed as a developer. After some time, S. Nadella became the CEO of Microsoft, and Windows for mobile phones was dead. So I had created all my “babies”, and they were now set to die as Windows Phone/Mobile did. Not accepting this, I started to create a plan to port my apps over to the remaining mobile platforms. After Facebook effectively killed my most successful app (UniShare – that’s another story, though), I stopped porting that one and started with Fishing Knots +.

Reading your own old code (may) hurt

When I was starting to analyze which parts of the code I could reuse, I was kind of shocked. Of course, I knew that there was this code that I wrote when I didn’t know it better, but I refused to have a look into it and refactor it (for obvious reasons from today’s perspective). I violated a lot of best practices back then, the most prominent ones

  • No MVVM
  • Repeating myself over and over again
  • Monster methods with more than 100 lines within

In the end, I did the only right thing and did not reuse any line of my old code.

Reusing the concept without reusing old code

After I took the right decision to not use my old codebase, I needed to abstract the concept from the old app and translate it into what I know now about best practices and MVVM. I did not immediately start with the implementation, however.

The first thing I did was drawing the concept on a piece of paper. I used a no-code language in that sketch and asked my family if they understand the idea behind the app (you could also ask your non-tech friends). This approach helped me to identify the top 3 features of the app:

  • Controllable animation of each knot
  • Easy-to-follow 3-step instructions for each knot
  • Read-Aloud function of the instructions

Having defined the so-called “Minimum Viable Product“, I was ready to think about the implementation(s).

The new implementation

Finding the right implementation isn’t always straight forward. The first thing I wrote was the custom control that powers the controllable animation behind the scenes. I wrote it out of the context in a separated solution as I packed it into a NuGet package after finishing. It turned out to be also the most complex part of the whole app. It uses a common API in Xamarin.Forms, and custom renderers for Android and iOS. I had to go that route because of performance reasons – which is one of the learnings I took away from the porting.

It was also clear that I will use the MVVM pattern in the new version. So I was setting up some basic things using my own Nuget packages that I wrote during working on other Xamarin based projects.

When it came to the overall structure of my app, I thought a Master/Detail implementation would be fine. However, somehow this never felt right, and so I turned to Shell (which was pretty new, so I tried to give it a shot). In the end, I went with a more custom approach. The app uses a TabbedPage with 3 tabs, one being for the animation, the second for the 3-Step tutorial, and last but not least the Settings/About page. The first two pages share a custom top-down menu implementation, bound to the same ViewModel for its items and selection.

More Xamarin.Forms features I learned (to love)

Xamarin and Xamarin.Forms itself are already powerful and have matured a lot since the time I used it to write my first Xamarin app for Telefonicá Germany. Here is a (high level) list of features I started to use:

  • Xamarin.Essentials – the one library that kickstarts your application – seriously!
  • Xamarin Forms Animations – polish the appearance of your app with some nice looking visual activity within the UI
  • Xamarin Forms Effects – easily modify/enhance existing controls without creating a full-blown custom renderer
  • Xamarin Forms VisualStateManager – makes it (sometimes) a whole lot easier to change the UI based on property changes
  • Xamarin.Forms Triggers – alternative approach to modify the UI based on property changes (but not limited to that)

The three musketeers

Because of Xamarin and Xamarin.Forms are such powerful tools, you may run into the situation of needing help/more information. My three musketeers to get missing information, implementation help or solution ideas:

  • Microsoft Xamarin Docs – the docs for Xamarin are pretty extensive and by reading them (even again), I often had one of these “gotcha!”- moments
  • Github – if the docs don’t help, Github may. Be it in the issues of Xamarin(.Forms) or studying the renderers, Github has been as helpful as the docs to me.
  • Web Search – chances are high that someone had similar problems/ideas solved and wrote a blog about it. I don’t blindly copy those solutions. First I read them, then I try to understand them and finally, I implement my own abstraction of them. This way, I am in a steady learning process.

Learn to understand native implementations

I guarantee you will run into a situation where the musketeers do not help when focusing solely on Xamarin. Accept the situation that Xamarin is sitting on top of the native code of others and does the heavy conversion for us. Learn to read Objective-C, Swift, Java and Kotlin code and translate it into C# code. Once you found possible solutions in one of the native samples, blog posts or docs, you will see that most of them are easy to translate into Xamarin code. Do not avoid this part of Xamarin development, it will help you in future, trust me.

Conclusion

Porting over my first app ever to Android and iOS has provided me not only a lot of fun but also huge learnings/practicing. Some of them are of behavioral nature, some of them are code implementations. This post is about the behavioral part – I will write about some of the implementations in my upcoming blog posts.

I hope you enjoyed reading this post. If you have questions or have similar experiences and want to discuss, feel free to leave a comment on this post or connect to me via social media.

Until the next post, happy coding!

Helpful links:

Posted by msicc in Dev Stories, Xamarin, 2 comments

Tap+Send: The Love Story of 2 NFC Devices

NFC1

Innovation in technology is hit and miss for a number of reasons. To prognosticate what advances in technology will be accepted by the general public is by no means, an exact science. There’s a constant barrage of new expensive toys with exclusive features that are “sure” to turn the world upside down, only to hit the market and fade into oblivion as a “niche market” concept. There are more than a handful of these types of advancements in the devices we all use on a day-to-day basis now, regardless of preferred OS. Yet for all intent and purpose, most don’t get utilized because of a lack of end users with similar features. NFC is one of those exclusive features and having 2 devices with it, I’ll explain why I see this being a feature that is here to stay.

nokia-speakers

I won’t spend much time explaining NFC as most of you know about it. Quickly, NFC(near field communication) is a set of standards for devices to establish radio communication with each other by touching them together or bringing them into close proximity. Up to this point, most of the NFC ado has been made about NFC tags and the Qi wireless charging capabilities with our Windows Phone 8’s: Charging plates, charging stands, phone covers with Qi, the JBL PowerUp speaker that can charge your device while playing. Being such a new innovation in smartphones, there are limited accessories to aid in this new technology, even HTC used JBL’s speaker for Nokia to advertise its most recent Android device. In addition to the lack of accessories currently available for NFC enabled devices, there are a lack of end users who actually own a NFC enabled device. NFC is about sharing and if you have no one to share with, it becomes one of those “niche market” features fading into the past, full potential never being realized.

tap-send-wp8

My wife and I both have Nokia Lumia 920’s which has led to a unique experience among smartphone users, being able to utilize many aspects of the NFC’s features and that is what I’ll focus on now. One of the drawbacks to WP7 was the inability to share via Bluetooth. This was remedied in Windows Phone 8 allowing for the next evolutionary stage is sharing photos, videos, songs, documents, contacts, or websites…via NFC. No more waiting while you tried to get your Bluetooth to find the other incompatible device right next to you, no more waiting for the other person to email you with that important file or pic even though they’re standing next to you, no more waiting for file to download when opening your email, no…things have changed. Tap your phone and give or get that info now in a fun and engaging manner! I am beginning to see the Tap and Share feature as perhaps the most innovative feature with the largest amount of potential to the end-user. Of course like most new technologies this is assuming it can make it onto enough devices and into enough hands, driving the hardware cost down and finding its way onto lower cost devices for the masses to use. Without “the masses”, NFC, aside from wireless charging, losses its luster. In some sense, I’m actually rooting for HTC and Samsung to have some success with their Android devices utilizing NFC, the better they do, the better results all OS’s with this feature will do. Again, NFC’s success really does rely upon the masses.

Share1

My wife and I use the Tap+Send feature frequently. We’re constantly sharing pictures and with Tap+Send, it’s always much faster and a sure bet the recipient gets the file! I’ve found that we’re both more likely to share pics when it’s as simple as Tap+Send. Send 1 or send multiple, it doesn’t matter. Honestly, I’m finding myself impatient now when I know someone is sending me a file and I have to wait for it to arrive in my inbox and still have to download it! Another added benefit to sharing your pics or videos via NFC is the data aspect. I avoid having to use up my allotted data both with my carrier and at home on WiFi, for those of you with shared family plans or have data limits because of satellite internet, you understand.

App

A close 2nd in utilization when it comes to Tap+Send: App Sharing, we do this at least once a day! As many of you know sharing apps via your WP8 was made easier by Microsoft when they gave us the ability to share it directly from the app side of your device. By pressing and holding an app, “Share” is now listed as on option and even better…you can do it via Tap+Send! Lightning fast access to the app’s direct link in the Windows Phone Store! Again, no waiting for it to show up in your inbox, it’s just there! I actually transferred all my apps this way when switching over from my old 920 to my new 920 to see how arduous it was. I’ve used App Reinstaller and it can take quite a long time to auto-populate your entire app history. I was blown away at how fast I was able to get my new 920 up and running with all my old apps!

sharing

We also share music via Tap+Send. I’m going to start by saying that neither of us has a music pass of any sort. When we see something we like we purchase it, so I’m not sure how sharing music on a pass will work. My experience with music and Tap+Share has been sending and receiving music from my computer or music purchased from Zune and Xbox Music, all which has transferred and played without a hitch! It’s a relatively quick process, taking about 30 seconds from share to play!

Contacts1

My wife and I have busy schedules between our marriage, kids, friends, activities, and work. We have many people who are friends in common and some aren’t for one reason or another, thus our people hubs are similar but not an exact match. There are many apps that help share contacts and WP does a pretty good job at giving you ways to share contacts as well, however none come close to the efficiency and speed with which you can do it when shared using Tap+Share! 2 taps and a phone “high-five” and the info is waiting to be saved.

Ready-for-enterprise

The last way I’ll look at is actually tied into the “Gold Mine” Microsoft sees in enterprise, sharing your documents via Tap+Send. The ways I’ve talked about using Tap+Send have been for the average user, but we all know that Microsoft is targeting businesses globally with WP8. The ability to share documents as simply as touching phones can be a game changer. Running late and can’t wait for that file to get to your inbox…need it now…phone “high five” and off you go! Not a gimmick, time is money and that makes dollars and sense!

I hope in time that we’ll see more and more devices showing up on the market NFC enabled at every level of phone: high, mid, and low range. This will take time but it’s time well worth it. When I stop and think back 2 years ago, I think about my Windows Mobile HTC Touch Pro 2, it could share via Bluetooth but it was a disaster of a process to get it to pair or be paired with not to mention the inability to retrieve most of the files types being sent! Our beloved Windows Phone has come a million miles from its predecessor, not without bumps in the road. Without those bumps though, many would forget all the amazing feats accomplished and adversity Microsoft/Windows Phone has managed to overcome!

Posted by TheWinPhan in Archive, 1 comment
Announcement: Writing WP7-News for 1800PocketPC.com

Announcement: Writing WP7-News for 1800PocketPC.com

msicc1800b

Yesterday Saijo George, owner of 1800PocketPC.com,  asked me to join the team. As I love this site, of course I accepted the offer.

How will this affect my blog?

Well, on some entries in Windows Phone category,  you will find a short version of the post, for reading the whole article you will be redirected to my post at 1800PocketPC.

It is a huge step for me, so I hope you all understand this move.

I will still run this blog, as I cover Windows Phone news for 1800PocketPC, and my Blog is all about Microsoft.

You can read my introduction post on 1800PocketPC.com.

Posted by msicc in Archive, 0 comments
(Updated) What will be new in Windows Phone Tango (WindowsPhone 7.5 Refresh)

(Updated) What will be new in Windows Phone Tango (WindowsPhone 7.5 Refresh)

Tango-Update

In the last days several news about Tango where made public, where some new screen shots from an Windows Phone Tango (although Microsoft does not call it like this) ROM are imaged. The images are originally from xda-developers and WP7forum.ru.

So here is what is new in short:

Update 1: More apps in TaskSwitcher – NOT!

Tango Multitasking

Yesterday I reported about the leaked news that Tango will have an increased task ability of 8 apps. As stated by HD2Owner on xda, this is a cooked in feature, not a real one. Sorry for the confusion.

Far less memory usage

phone_info2

As you can see on this picture, the xda-devs made a comparison between the actual version 8107 and the awaited Mango refresh with version 8773 (a cooked ROM). There is less memory usage on the newer build. Whether this is on final build like this or not, we can actually not say. It makes sense that the new version does use less memory, as there will be certain devices with only 256 MB. And Microsoft will for sure make Windows Phone as fast and fluid as we know already also on these devices.

Evolved MMS settings

mms

As you can see on this shot, there are new settings for delivery confirmation and acknowledgement.

We will also be able to use multiple attachments in one MMS, but his might be a carrier-dependent settings. Background info: there are certain carriers which have a size limit on MMS, so this will maybe not available on all devices.

mmsmultipleattach

Updated Marketplace

appnotavailable

If an app is not able to run on a 256 MB-device, the marketplace tells you that for your device the app is not available. So this will lead to an still fast and fluid user experience, just because you cannot install memory-eating apps .

I will update this post as soon as new information are showing up.

Sources: xda-developers, WP7forum.ru, WP7forum.ru

Posted by msicc in Archive, 2 comments
Confirmed: Google is working on a G+ app for WindowsPhone

Confirmed: Google is working on a G+ app for WindowsPhone

windows-phone-google-plus

Just a few minutes after I switched off my PC today, I received a note that is worth to share.

According to Google Germany´s press spokesperson Stefan Keuchel, Google is working on an app for their social network.

Screenshot (71)

As you can see, @dominiksichling asked him on Twitter whether and when an G+ app for Windows Phone will be released.

Google´s answer: there is no date yet, but it is coming.

Good to see that also Microsoft competitors are working on apps for Windows Phone. This shows that Windows Phone finally is gaining really some attention.

Feel free to leave your thinkings in comments below.

Thx to @dominiksichling for sharing this news.

Posted by msicc in Archive, 2 comments
What´s up for Microsoft in 2012?

What´s up for Microsoft in 2012?

MSlogoBlog

Today I want to give a sneak preview of what we can expect from Microsoft this year.

Several dates are just fixed:

January 10-13: CES

This will be Microsoft´s last appearance on the Consumer Electronic Show. While this decision started a controversial discussion last year, we will sure see some new features for our Xbox, Windows Phone and probably on Windows 8. Also Nokia is located with a big stand, so I guess there will sure be some Windows Phone news. Maybe we developers will get again some beta of the next Windows Phone version? Or a Windows Phone by Sony (Ericsson)?

February 27 –  March 1: Mobile World Congress

Well, this will be an interesting thing for me from two parts: first as an employee of Telefonicá, which has always something big to tell about their on-going projects like BlueVia, the API-program of them. The world central is also located in Spain, so it is only natural that there will be a huge presence of Telefonicá.  Second part is from my part as Microsoft fan. I expect further details about the next version of Windows Phone, and also some news about the tablet capabilities of Windows 8.

March 9-18: SWSX Interactive

Last year, we all received our fantastic IE9. What happens this year? IE10? Windows 8? Xbox? Well, actually there is nothing concrete, so I have to update this when there will be news.

April: MIX

Well, if you click on that site, there are no news about a conference this year. Maybe it will be mashed up in this years Build. MS itself has no information to share at the moment.

June 5-7: E3 Expo

This is Microsoft´s primary Xbox Stage, and so we will normally see a lot of new Games both for Windows Phone and Xbox (like in 2011). I think there will be also some new apps around there, as the Xbox is now our multimedia centre in our living rooms.

June 11-14: TechEd 2012 

This is for pros and devs and is normally about already announced products. This is primarily for North America.

June 25-29: TechEd Europe 2012

After cancelling last year’s TechEd Europe, Microsoft is set to hold this year´s event.

July 9-13 Worldwide Partner Conference 2012

Microsoft is annually holding this event to thank their partners, show their roadmaps. As the trend for cloud computing continues, I guess there will be a large time of talking about the cloud, the cloud and the cloud.

November 12-15 SharePoint Conference 2012

As until now there is nothing about Office, Office 365 and SharePoint around, I guess this will be the scheduled launch conference for the updated 2012 product line.

So now you have a smart oversight about this years Microsoft events. Surely this list will be updated from time to time, as there are missing some events:

Build 2012

As it seems without a doubt the year of Windows 8 and the next version of Windows Phone, I am sure there will be an event. At this moment there is no information about it, but the missing MIX-conference is another indicator for this event to happen.

As I mentioned above, I will steadily update this post to keep the list up to date.

Posted by msicc in Archive, 0 comments
Fishing Knots 1.4 is available & on Christmas Sale!

Fishing Knots 1.4 is available & on Christmas Sale!

My Fishing Knots app has been updated to version 1.4

What´s new?

I added completely reworked graphics to the app. The images are now also following your background color (black or white).

Of course you have still the former features like:

  • controllable animations
  • read aloud the instructions for a knot
  • 3-step instructions with image and text

Of course the German an the Italian version have this update, too.

Check here some screenshots:

screen2screen7screen4screen3bscreen6screen8

X-Mas sale:

From now until December, 31st you can buy my app for a reduced price!

Check out the marketplace:

English:       Download-EN-Med

German:    

Italian:       

Posted by msicc in Archive, 0 comments
HTC Titan vs. Nokia Lumia 800

HTC Titan vs. Nokia Lumia 800

htcvsnokia

Today I am going to compare the HTC Titan to the Nokia Lumia 800.

Display:

The HTC Titan spots a 4,7 inch display, while the Nokia Lumia has a one inch smaller display. The Titan has a clear SLCD display, while the Lumia has an AMOLED display. Here you can see the difference (brightness on both devices is set to automatic):

WP_000032

The Lumia´s color are more powerful due to the AMOLED technology. Personally, I think the calibration has too much of red in it. This makes me feel the HTC display is more natural in color.

Typing:

Well, let´s go ahead. Typing on Titan is really easy and fast, with nearly no wrong taps on the keyboard. Typing on Lumia is also easy, I was impressed that I was able to use it nearly as fast as the Titan.

WP_000035WP_000036

Camera:

Both devices have an 8 MP camera. I know that MP is not all, but in a comparison it still has to tell something. Also both devices come with a F2.2 lens. Nokia has the clear advantage of a Carl Zeiss lens on the hardware side. Carl Zeiss is a German manufacturer which is specialized on optical hardware.

WP_000093

WP_000023

If you compare the two images, you will recognize that the Lumia´s color are not as powerful as the Titan ones. In my opinion the Titan´s Image looks a little better than the Lumia´s. Both Images are taken with flash. The quality of both cameras is really good for smartphone cameras. So here I will stop with a draw for both devices.

Performance:

Both the Titan as well as the Lumia are fast devices. In daily use, I did not recognize any problems or difference between them. In this case, let us have a look on the numbers (WP Bench):

WPBench20111127072011WPBench20111127071923

As you can see, the Titan has a little better result than the Lumia. The difference is so small, you won´t even check this in daily use.

Sound:

The Titans speaker is on the back, while the Lumia´s is on the bottom of the device. Both speakers have a good sound, while the Lumia´s has a bit weak loudness. The Titan has also a sound optimizer, while the Lumia does not have this. I am sure Nokia will bring any sound optimization in future. For now, plus goes to the Titan.

Differences:

Until now, both devices seem to be a good decision. But as OEM´s, both Nokia and HTC are trying to differentiate from others.

Nokia has its own Navigation System, Nokia Drive and Nokia Music as well as Nokia Maps (last one will be a paid app on other OEM devices). It has no front camera and no gyroscope. We were told that there is also a Nokia section in the marketplace. Well, at least in Germany with o2-sold devices there is no Nokia section. You have to search the Marketplace manually.

HTC has a own Marketplace section, with tools and gadgets you will find useful (for example a torch-app). The Titan also has a front camera for video calls as well as a gyroscope.

Conclusion:

Both devices are really good smartphones. If you want to have a good, well priced device, I recommend for sure the Nokia Lumia 800.

As I am an enthusiastic user and also developer, my decision is the HTC Titan. You will get an future secure device, which has all possibilities a modern smartphone needs.

Thanks for your attention and feel free to leave a comment below.

Posted by msicc in Archive, 0 comments
HTC HD7 vs. Radar vs. Titan (in the sun comparison)

HTC HD7 vs. Radar vs. Titan (in the sun comparison)

This week we saw how amazing the Nokia Lumia 800 Display survives under the sun. (if you missed it, click here.

As I don´t have a Nokia Lumia 800 yet, I decided to compare an HD7 with a Radar and a Titan.

First I made screenshots from HD7´s and Titan´s start screen to check if there is a difference. I hardly see a difference.

Screen Capture (16)Screen Capture

So, my second step was to take two different photos on each Device. One from the sun with some veil of clouds in front, and one of a garden.

HD7WP_000126 (7)

RadarWP_000006

TitanWP_000126 (7)

Ok, it is no surprise that the Titan´s picture is the best as it has the best camera of the three devices. The Titan took also the most original colors on both motives. The Radar takes better picture than the HD7, but not as good as the Titan.

At least I compared the screen within the sun light. The screen brightness is set to automatic on all devices.

WP_000028WP_000007

As you can see, the Radar display is still readable, while the HD7´s display is near to not visible. The Titan´s display most readable. I used two different angles to see how the HD7´s display will respond to the others, but this makes no difference in reading.

So we have a clear winner here: the HTC Titan. The Radar is only little behind, while the HD7 is far from the two Mango phones.

Posted by msicc in Archive, 0 comments