Surfing Maui

No, this isn’t a post about me taking a vacation in Hawaii nor about trying my butt at surfing which I would undoubtedly be lousy. What I am going to discuss is DotNet Maui, the successor to Xamarin Forms which I have been using for years (even going back to pre-Xamarin with MonoDevelop).

I currently have one app, released in 2017, JyotishTools Pro which uses Xamarin. Around 2019 I decided that it was time to be more business like and upgrade the app every two years. I wanted to not only do an upgrade to the app which labeled “Pro” meant it was more like a desktop app on mobile (as well as desktop). Given that it uses Microsoft’s Visual Studio to build the app could use “conditionals” to build my more entry level version at the same time (a “conditional” means I could designate what sections of the program and what interfaces could be used for an entry level version).

For those unfamiliar, Xamarin is a cross development framework. Using it I was able to build not only a Windows version (sort of), an Android version and iOS version all with one code base (well almost). What I found is that users didn’t really like the Windows version that much because it was Microsoft’s attempt at Windows Mobile which eventually went away. Users still wanted that Windows UI (think accounting software) look or what I had in JyotishTools for Windows which was built using Visual Studio and the Microsoft Foundation Class (a retired C++ legacy framework). Worse yet around 2014 or so Digital River which had taken over the copy protection system I used for the app stopped supporting it and took down the server used to authenticate it’s use. Hence I could no longer update the app. And changing the copy protection would be a real headache.

Prior to that probably around 2008 or so I had been experimenting with a Java version of JyotishTools for Windows. Java itself being cross platform would let it run on more platforms like a Mac version which I had many requests for.

So along comes Android which ran on Java. I already had a simpler Vedic astrology program I gave away for free, Quick Jyotish using Java. It derived it’s name from the fact that it could load and save the Quick Charts format used by other astrology programs. So I ported it to Android but before that noting that Android could use GPS to get the user’s location first published GPS Prasna. A prasna is a horoscope which gives an answer to a question based on the horoscope erected for the location of the astrologer so GPS access was a novel idea. So I also published it for free on the Android Market (which later became Google Play).

After seeing there was a real interest in the Android platform I scaled down JyotishTools for Windows for something more befitting a mobile app of the time. I still sell that application. Note that I was not new to mobile apps. In 1998 I made an app, Jyotish To Go, for the Palm Pilot platform. And the first version of JyotishTools for Windows was for Windows CE which was a handheld Windows device. Since the code for that app was for Embedded Windows and used the Microsoft Foundation Classes it was not that difficult to use it as the basis for a full Windows app.

I also had earlier looked into acquiring a Mac Mini because of much interest in a Mac version of my apps. I already had a iMac Blueberry which was given to me to port a version of Myst to another platform which became defunct just as the port was ready to release and later used for a Sony PSP version. But by then Apple had changed the OS to BSD UNIX and switched from a Motorola CPU to Intel. Unfortunately the “deal” on the Mac Mini didn’t happen.

Okay, so I’ve made a “short story” long. But it might be a little tough to understand why I might be interested Dot Net Maui. That’s because I was going to do the upgrade to JyotishTools Pro with Xamarin. One other mistake I made with the original Pro version was not using responsive design which is more familiar in the web world than desktop. I had actually tested some responsive design versions which might have worked. The problem was users were used to more information on the main screen. That was first delivered using tabs and later a gallery. That eventually meant the phone version (both Android and iOS) needed to be a separate app from the Windows version as well as the unsuccessful Android tablet version. Also the iPad version needed to be a separate app (then a year later Apple began letterboxing iPhone apps on the iPad like Android).

Currently the upgrade will be responsive design, one project all platforms. That’s the beauty of .Net Maui, it is just that and makes porting to a variety of platforms much easier. Basically like Xamarin, a Maui app is a DLL and a player is generated for each platform to run that DLL. A game platform, Unity, which I have also developed for does the same thing including for console platforms like the XBox, Nintendo and Sony Playstation.

Maui was supposed to release last fall but was pushed back to this year. Currently release candidates are available for those of us to test and prepare our software to run on it. I have used my interest in Bhrigu Nadi astrology to build a simple program that can display the elements used in that system which employ some crucial parts of the Xamarin->Maui to see how the conversion will go. There are a few things at the moment that are lacking. Saving a file needs a file picker which is currently available in Maui only for loading a file. Saving a file currently will work on the platforms but will overwrite any file with the same name. Hence a file picker for saves is needed (there is a way to do this which I use in Xamarin). But it looks like the early release is for simpler apps.

At this time I have also tested Flutter which is Google project for cross platform development. There are things I like about it but is a far less mature project than Maui. Another cross platform I have tested in Facebook’s React which unfortunately generates a huge program file because it needs to contain the operating system (Visual Studio Code on Linux which I am using to write this uses React).

Anyway that’s how my surfing is going at the moment and hope to report more later.