10/15/2024
I started working on learning Microsoft .NET Blazor skills seriously in September of 2022. Blazor is a major overhaul of ASP.NET MVC that uses Razor pages for creating web apps. The Razor pages required writing significant JavaScript to create nice interfaces. Blazor is for web app development, as well as mobile development. MAUI is the Multi-platform App UI framework that allows creating apps for Android, iOS (iPhone, iPad), macOS, and Windows Store using the same tools and technologies for them all. When I saw that I could create apps to be used by web browsers on anything that connects to the internet as well as “thick” apps that could run standalone as mobile and desktop apps, I started working on MAUI heavily at the base level. A version of Blazor that runs on the MAUI platform allowed for heavy duty proof of concept for “Run Everywhere” apps. It is known as Blazor Hybrid, or Blazor Hybrid MAUI. I was an early adopter and ran into a number of problems that made fully realizing the dream impossible. iOS and Android are very different at all levels, but especially at the user interface level. One of he first “blockers” I ran into on iOS and macOS is that screens did not render properly even though they rendered properly on Android and Windows Store. I spent a fair amount of time learning the MAUI source code. I found the bug and reported it to Microsoft. They investigated and found out the same bug was causing rendering bugs in Blazor Hybrid on MAUI. At the time they got it fixed I was working for Wells Fargo or Bank of America, so I didn’t get back to Blazor and MAUI right away.
This spring I was back at work on my Run Everywhere framework. I was making good progress until my legs became extremely weak and my spine problems were getting progressively worse very quickly. Then when I was getting prepared for spine surgery, the need for cardiac clearance prior to spine surgery got everything all mixed up on the spine care.
My framework is in pretty good shape. If I sit in one place with a good butt cushion, I can work reasonably productively. If you’re wondering why I’m focusing on mobile apps when mobile devices can run my Blazor apps in a browser on the phone or tablet, I’ll explain. When you are running a web app in a browser, the app is at the mercy of the web server and any other web servers providing data to the web app. For the parts of a mobile app that use data, they can use local data or data retrieved from a web service. What I do is “cache” or store data that was retrieved from the web service by the mobile app. I then have better control over what the mobile app shows versus the web app. For instance, I can show the “old” or “existing” data while trying to get the freshest data from the web service.
I’m working on a wide range of web sites with complimentary mobile and desktop apps.
I’ve posted some screen shots of the DonStegall dot com and RCPylonSuppliers dot com mobile apps. I’ve made progress on some aesthetic elements of the mobile screens. On the top of phone screens there is an element known as the StatusBar that shows various important status information like cell network connectivity. At the bottom of the phone screens on some Android devices there is a bar at the bottom for generic navigation like “back”, “show open apps”, “home”. On Android it is known as the NavigationBar. On iPhones, there is also a bar, but all it shows is the “Home” bar/button. It is known as the Bottom Bar (informally) on iPhone. These are handled completely differently on Android and iOS at the programming level. To have an app displaying consistent and complimentary colors, the StatusBar and NavigationBar need to be controlled by the app. And the way they are handled in comparison between iOS and Android requires platform specific programming code. Various developers have created workarounds, but the workarounds have their own quirks. But I have a workable solution now.
I had gotten my native Android apps using StatusBars and NavigationBars to show them in colors of my own selection or automatic color selection. Blazor Hybrid MAUI apps have portions of the projects that are platform specific within the one project, but the code can be different for the parts that need to be different. I’ve got that under control on two of my Blazor Hybrid MAUI apps. If you look at the StatusBar and NavigationBar on the DonStegall app, it has a somewhat navy-blue scheme with the icons and info base color as “LightContent”. The StatusBar and NavigationBar on the RCPylonSuppliers app are yellow with “DarkContent”.
I’m not mobile enough to be doing much model airplane work right now. I can work on software projects as long as I can get to my desk and sit for a bit. I can work on 2D and 3D CAD and design work. So until they get my spine and hips under control, I’ll do the things my mobility allows.