Line Diet is Back - and Open Source!

Get it now, or check out the project on Github

Back in July of 2013 I released an app called Line Diet for iPhone written using Xamarin.iOS. A few years later an iOS update broke my custom implementation of entering a weight, so the app stopped working (as I had no time to fix it), and I pulled it from the App Store. Since then I've intended on re-releasing it (and even had a personal version with nearly complete Apple Watch support), but since this was more of a personal interest app, and not one that was generating revenue, it sat on the back-burner for the last year or two.

Today I'm happy to announce that not only is Line Diet back, but it is now available for both iOS and Android. On top of that, it is now an open source project on Github. It is written in C# and XAML using Xamarin.Forms, Prism, and OxyPlot. While the app is pretty straight forward, it has some pretty neat features as well (dynamic color theming, MVVM architecture, graphing, etc.). My hope is that it serves as a good sample app for folks looking to learn MVVM based mobile app development using C#, Xamarin.Forms, and Prism. It has plenty of potential extension points as well, so feel free to submit a pull request if you have interest in adding to the project.

You can find out more about Line Diet and find relative app store download links at LineDietApp.com.

Lessons Learned Customizing Xamarin.Forms Slide Deck

I was invited to speak at the Atlanta Xamarin Users Group this week, and I decided to share a bit about the Xamarin.Forms work I've been doing of late. Over the last 6 months or so I have worked on 4 different Xamarin.Forms projects. In the process I've been amazed at how powerful the technology stack is, and pretty well delighted with how it can be customized to brand apps. In this talk I covered the basics of evaluating between Xamarin and Xamarin.Forms and covered customizing Xamarin.Forms per platform in a variety of ways.

If you came to the meetup, thanks a bunch - I was excited to even learn something myself that night from another member. Also, big congrats to Xamarin for being acquired by Microsoft this week. I can remember Miguel De Icaza speaking on Mono (and even Unity) back in 2008 at PDC. To see how far both of those projects have come over the last 8 years is amazing, and I can't wait to see how Xamarin takes off from here.

Word Search Little Books Featured on VerizonWireless.com

I'm very excited to see that Verizon Wireless has decided to feature my game Word Search Little Books in the App Finder on VerizonWireless.com! If you haven't played it before, Word Search Little Books is a great word search game on iOS, Android, Windows Phone, and Windows 8. Its sister-game, Word Scramble Little Books, is available now as well for iPhone, iPad, and Android.

Word Scramble Little Books Now Available on iOS and Android

My latest game, Word Scramble Little Books is now available on the iTunes App Store and Google Play!

Get it now for free in the iTunes App Store and Google Play

Word Scramble Little Books is the sister-game to my other word puzzle game Word Search Little Books. This is the second game I've built now with Unity (Matchingo being the first), however this is the first game I've built with the new Unity GUI system added in Unity 4.6. I enjoyed working with the new GUI system in Unity, and I'm looking forward to working with it more in the future.

I would love it if you would check out my latest game in app store of your choosing and then leave a review. I intend to add support for the Amazon app store and Windows Phones before too long. If you'd like to get announcements on future updates please subscribe to my SmartyPantsCoding mailing list.

Mapping with Xamarin Talk

Today I am giving a presentation on mapping with Xamarin.Android, Xamarin.iOS, and Xamarin.Forms as part of the Virtual Xamarin Users Group. In this talk I cover the basics of working with Google Maps, MapKit, as well as the Xamarin.Forms.Map control.

I have also put up a GitHub repo that includes the sample code used in today's talk. You can find that here:
SmartyP GitHub - Xamarin Mapping Sample Apps.

Thanks to everyone who attended today!

Using Custom Unwind Segues with Xamarin.iOS

As you probably know by now, I'm a huge advocate for Xamarin technologies for native iOS and Android apps. After trying to implement some custom unwind segues for an iPad app, I discovered that no-one had documented how to do them using Xamarin.iOS yet, so I wanted to throw something together to hopefully save others time down the road.

I've created a Github repo at the link below which includes two sample projects. One sample project shows custom segues and custom unwind segues within a UINavigationController, and the other sample shows how to do custom segues without a navigation controller. The second sample is largely ported from this article.

Xamarin Custom Segue Samples - Github

I also recorded a 15 minute screencast showing how to do it all, you can find that here:
Xamarin Custom Unwind Segue Screencast - YouTube

Also, folks are frequently curious what C# code written in Xamarin.iOS looks like as compared to Objective-C, so below are two custom segues - the first in Obj-C (from the source link above), and the ported C# that does the same thing:


@implementation CustomUnwindSegue
- (void)perform {
    UIViewController *sourceViewController = self.sourceViewController;
    UIViewController *destinationViewController = self.destinationViewController;
    // Add view to super view temporarily
    [sourceViewController.view.superview insertSubview:destinationViewController.view atIndex:0];
    [UIView animateWithDuration:0.5
                // Shrink!
                sourceViewController.view.transform = CGAffineTransformMakeScale(0.05, 0.05);
                sourceViewController.view.center = self.targetPoint;
            completion:^(BOOL finished){
                [destinationViewController.view removeFromSuperview]; // remove from temp super view
                [sourceViewController dismissViewControllerAnimated:NO completion:NULL]; // dismiss VC


public override void Perform()
    // Add view to super view temporarily
    SourceViewController.View.Superview.InsertSubview(DestinationViewController.View, 0);

    UIView.Animate(0.5f, 0.0f, UIViewAnimationOptions.CurveEaseInOut, 
        () => {
            SourceViewController.View.Transform = CGAffineTransform.MakeScale(0.05f, 0.05f);
            SourceViewController.View.Center = this.TargetPoint;
        () => {
            SourceViewController.DismissViewController(false, null);                    

Matchingo Now Available on Windows Phone and Kindle Fire

Matchingo running on a Nokia WP8 device

I am super excited to say that Matchingo is now available in all major mobile app stores including the Windows Phone Store and the Amazon App Store! With these latest two releases, Matchingo now spans a majority of phone and tablet devices in use today. As best I can tell, Matchingo is the first memory matching game to accomplish this feat!

It's hard to believe that it's been nearly 5 years since I originally created Matchingo using Silverlight. This new reincarnation of Matchingo benefits from the awesome Unity engine, but still leverages some of that same C# code written way back then.

Please go grab Matchingo now at Matchingo.com and leave a nice review - I'd really appreciate it!

Matchingo Launches on iOS and Android

Matchingo - Get it Now!

I'm super excited to announce that Matchingo is live on the iTunes App Store and Google Play! Support for Windows Phone and Kindle Fire is expected in the coming weeks as well (sign up for email notifications at Matchingo.com).

Get it now:
iTunes App Store (iPhone / iPad)
Google Play (Android)

This is the first game I've ever built using Unity. It was quite a challenge over the last ~18 months learning such a powerful tool, and I still have a lot to learn, but I am so excited to keep going from here. I hope you like Matchingo, and please leave a review!

Cross Platform Matchingo Reboot Incoming

I'm excited to announce that Matchingo is getting a much deserved reboot. Matchingo was a game I released on the web and Windows Phone using Silverlight way back in 2009/2010. It has now been reborn in full 3D glory using Unity - a game engine that supports C# scripting and powers some of the best mobile games today. It will start rolling out next week on iOS and Android with Windows Phone and Kindle Fire support rolling out shortly after.

Matchingo gameplay on iPad

Matchingo is able to be played by kids as young as 2, and is fun for all ages. It takes the simplest game concept (a matching game) and turns it into an exciting arcade style casual game with combo multipliers, gold coins, and lots of explosions. This represents a significant amount of work in trying to learn Unity over the last 12-18 months - I hope you will help me spread the word!

Please visit Matchingo.com to sign up for email notifications so you know when it is available for your phone and tablet devices, and like the Matchingo Facebook page to find out more about the upcoming launch of Matchingo!

Word Search Little Books Lands on Windows Phone

I am super excited to announce that Word Search Little Books is now available on the Windows Phone Store!

That means that WSLB is now on essentially every major platform, something I'm super proud of. The only platforms WSLB has yet to reach are the Nook and Blackberry, something I don't see doing anytime soon - time to move on to the next game!

If you have a Windows Phone or know someone who does (or any platform for that matter) please point them to WordSearchLittleBooks.com to get the app now, or have them use this fancy button:

For those curious, here is how the app's codebase breaks down:
Android - Java / XML
iPhone/iPad - C# / XIB / Xamarin.iOS
Windows 8, Windows Phone - C# / XAML

I have seriously considered refactoring the Android version into Xamarin.Android so I can have C# across all the platforms, but I'm just going to leave it as is for now. WSLB was originally made as part of an Android contest, hence it originally being done in Java.