One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com
Using 89% of the same design the blog had in 2001.
FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike,
always wear white.
As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green.
If you want to release a .NET MAUI app on macOS (or even iOS), I'm going to assume you want to develop at least part time there.
Visual Studio on macOS is dying, which leaves us with either using a dying app or using VSCode (which I wish everyone would write like that... VSCode. Then it'd actually be easily googleable).
Using VSCode for .NET MAUI isn't straightforward, imo, but I found a pretty danged good tutorial on it from James Montemagno, a long-time Xamarin user and MS employee.
MAUI on VSCode lacks some stuff like XAML designers, iirc, but he actually decided to use VSCode and straight-code the UI in C# for this video, which makes it perhaps the best, "How to use MAUI on macOS" tutorial out there right now.
How do you use Auth0 from Xamarin.Forms? Actually seems to be insanely easy.
Here's what I have from an Android implementation. (To use in Forms, you have to do the whole DependencyService thing from Phoneword. So this will be your Android implementation of some interface that defines GetToken.)
public async Task<string> GetToken()
{
var auth0 = new Auth0Client(
"whateverYouChose.auth0.com", // domain
"whateverYourClientIdIs"); // clientId
// 'this' could be a Context object (Android) or UIViewController, UIView, UIBarButtonItem (iOS)
var user = await auth0.LoginAsync(Forms.Context);
// `Forms.Context` is the secret sauce ^^^^ for `Context` in Android
return user.IdToken;
}
See this question at StackOverflow for a little more -- there's a spot in "Connections - Social" in your Auth0 dashboard that has something that's similar to the picture at SO that I'll include below:
Click on the picture for a bigger version. I want to use Gmail, so I'm setting it up just like it looks there.
Easy enough. Now I'm just worried what happens when you get your 7001st client. And embarrassed that I'm doing OAuth through a provider, but man, that was easy.
Problems began around 12:30 p.m. Eastern time and are still ongoing as of this writing, according to the company official system status page. Affected people are unable to access the storefronts and/or prevented from downloading content, such as app updates, even though just the iTunes Store is listed as being down.
That wasn't much fun. Course I kept hitting `Get` (<<< strange; DeskMD didn't notice the `'s for code there) for Apple's book on Swift because it acted slightly differently with each press, so I thought I might just have to find the proper sequence of events to get it to pop out. Shake the machine!
Not exactly an Apple Fail, but I don't know that Amazon's done this to me, and I've hit a few downtimes with Apple (and, to be fair, Gmail).
Still getting used to what I can and can't do in DeskMD. Looks like the font scales to the window size, so though I can't see much now, at least it's not billboard-sized on my iMac screen. File a few bugs. We'll see. Very mvp-y, as I said before, but I'd already gotten to the point that I was using a Markdown editor to edit, export, hack out `body` and `head` tags, and post via blogger.com, so this cuts out lots of middlemen.
In other news, I've been listening to Jason White's appearance on the Gone Mobile podcast, and he was serious enough to make me take another look. I think I'm finally over the tipping point, thanks for a confluence of events...
I got a year's free subscription to Xamarin for Android and iOS for being a Windows Phone app developer that'd released an app.
(Talk about lucky. If I'd made my first test app in iOS or Android, even using Xamarin, I would've lost out.)
Visual Studio 2015's free version now allows for extensions, and developing for Xamarin is handily baked in.
I learned enough XAML in my Windows Phone app that I've Stockholmed myself into liking it.
So full use of Xamarin Forms is now "free for me", I'm much more used to the technologies than the last time I checked, and it seems to be fairly mature. And Xamarin Forms does work very well for that first 70% of what you'd like to do. Great for puking out quick apps, which I supposed I should do next. I like it. Maybe I will build a crappy podcast app after all. At the very least, I could have much more complex rules for playlists than what I get now, and maybe even sync where I'm at in 'casts across different app platforms.
What I might like best is that I can stop pining away for a new MacBook. If I can use XamForms for lots of what I want to do, well, I can keep up my development on my Lenovo using the Android Player. Nice.
But man, in this episode, Greg and Jonathan aren't scared to ask the tough questions, pretty consistently asking for your worst mistakes and decisions where you'd like to take a mulligan. I don't remember them being so pointed before. But it's clear it's not personal, and makes for a much more interesting listen.
Argh. I'd already forgotten about DeskMD's p-tag around li-tags bug. Guess I'll just start doing those in raw html again.
Somewhat painfully, Xamarin wouldn't connect to a POP3 server when I broke out some out email client code. After some trial and error, this appears to be because I didn't have the write certificates, which was fixed by using...
mozroots --import --ask-remove
That, I believe, imports everything that Mozilla would typically have handy. More here.
Easy enough fix, but how do I do the same for my clients if I push out an app? Sounds like I've got some extra overhead in front of me, and that I've made it much more difficult to handle thanks to my having run mozroots now.
How mobile is your .NET?
Use this page to scan your compiled .NET code for compatibility with Xamarin.iOS, Xamarin.Android, Windows Phone and Windows Store โ directly in the browser.
Wow, the Xamarin blog tells us that Xamarin 3.0 is out, and that it's got this great new package of features to make creating cross-platform UIs VB6 IDE easy called Xamarin.Forms. Awesome, right? Let's download the new version.
Got it. And now to open a new project.
Take one didn't work out so well.
Okay, let's close it and try again with a new Xamarin.Forms project. First, it didn't give me all three projects like it said it would, only Android. And then, when I ran the Hello, World that was preconfigured...
Wow. That was great fun. I can't try it out without spending $299.
Why let the starter version create the project type if I can't even F5 the out of the box skeleton?
Looks neat and all, but I think I'm back to where I was yesterday, finally getting iOS UIs created programmatically, skipping Interface Builder entirely. Actually insanely easy, and I'm upset I didn't start doing this months ago in what little iOS Xamarin time I can squeak out.
UPDATE: From today's (5/30) webinar:
Q: Any chance we can get Xamarin.Forms working with the starter edition? Right now, it's past the size the starter lets you compile. A: We're looking into that. :-)
LINQ is used to query data, T-SQL queries are not supported
I've already complained about the lack of DataTables on Windows Phone 8. That still boggles my mind. Why not make code supra easy to port over to Windows Phone? When it's easier to reuse my C# code on iOS and Android ($300 a piece and I'm ready to go) than on Windows' own native platforms, something's wrong.
And then I see alternatives like the one above. Admittedly, that article is pretty old, and mentions WP 7.1, but the use of LINQ exclusively instead of supporting SQL I don't quite understand.
I mean, I know ORMs are the [conventional] way to do things now. But even they, at least on your standard server-side or desktop stacks, usually end up translating object relations to SQL. I haven't seen a huge practical advantage for ORMs on the systems I've worked on. I keep hearing that it makes swapping database engines easier, but I'll keep ignoring that until someone actually replaces SQL Server with PostgreSQL -- and it's painless enough to make up for carrying, eg, NHibernate around for years.
It's really not that all difficult to custom hydrate objects with SQL results, and when it is, you often run into similar trouble trying to shoehorn your data into your ORM via AutoMapper or something similar anyhow. And in most of those complex cases, it would be much easier for those who know how to do just a little bit more than spell "SQL" to have scripted up a sproc to do what the ORM is doing -- and to have that logic processed on the database server, where it's supposed to be happening anyhow. I'm almost speechless at this point. I mean, you're paying how much to have software (the rdbms, to be clear) that's designed to handle complex relationships quickly and efficiently? Quickly processing complex relationships in your data is your database server's job. Why do we push that to middleware?
Sorry. I'll try not to step so close to that soapbox again, as it's horribly difficult not to step up off of Britannia and start spewing.
Anyhow, this convention of object-ing your way to data rather than SQLing your way has gone from convention to serious technical block with Windows Phone. I don't see how Xamarin abstracts twice -- once from whatever XCode is pushing out to Objective-C or Eclipse to a Java VM, and then again to C# -- on a platform that dips as low, performance-wise, as Android can, and still gives a more fully fledged development platform than Windows Phone. I mean, heck, VB.NET was a non-trivial attempt to pull VB6 programmers onto the web and OO programming with the least amount of head rethreading possible, and it happened because having Microsoft stack developers on .NET was crucial to that platform's success. Why the huge investment during the move to .NET but not Windows Phone and "Metro"/Windows App Store? One platform has been adopted very quickly. I realize the WP numbers are low, but don't you think some developer love would push adoption in business pretty danged quickly too? It's all about the barriers to entry, stupid.
Guess this stayed a pretty ranty post. Sorry.
Anyhow, so my answer so far, since my mobile apps are just for fun, is to create a DataTable shim for Windows Phone, DataTableWP8, that shims just enough to let me use my buggy SQL database, now called SqlDbSharp (because naming is difficult ;^D), on WP8 without rewriting anything. So far, it's still fun to do, and I've been playing with Visual Studio on my Lenovo laptop as much or more as Xamarin Studio on my new iMac in my free time this week.
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity. About Our Author