Links and Notes - April 21st 2021

MAUI? Flutter? Avalonia? Uno? Blazor?

After yesterday's post on VS 2022 showing up on HN, it seems like the HN community's interest in .NET projects is piqued. Maybe not in adopting them but certainly in discussing them. I say this because a discussion on .NET MAU popped up on to the front page of HN today. The discussions was spirited, and in reading it I came across multiple technologies that I'm adding to my already overly long list of things to explore.

It's interesting how difficult it is to parse what's actually going with all these technologies.

First is MAUI of course. This is tech that is still very much in progress. When it is complete, I'll be able to use it to deploy to all device types (except linux?). From what I understand, it's a framework and therefore it will only contain building blocks in terms of UI controls. This should mean that I'll have text boxes, and buttons and other primitive controls. But advanced controls that combine the primitives might be an up in the air question mark that gets solved by external companies such as Telerik. If the experience is anything like developing WPF apps, I think I might actually hit a hard pass on this. Incidentally, how is it that open source never seemed to find a shining light in this domain? In the web world there are so many UI controls such as calendars and auto fill components that are all open source and are considered defacto choices in frontend development. I might just be too far removed from the Windows desktop development scene, but I don't believe anything similar exists for WPF/UWP apps.

But if you want to develop just desktop apps and have a rich set of finished controls Avalonia seems to be the preferred answer. I took a look at it and my eyes are sparkling. It's so pretty! But, it's only desktop apps as well.

Then there's Blazor that keeps getting mentioned. Blazor is for when you want to code in C# and deploy to the web. I could be bungling up all these explanations by the way, but this is my best first understanding of each of these items. Regardless of explanation however, it seems like Blazor is not meant for large scale consumer applications with many concurrent users. I can't pretend to understand this bit, but it seems like there are fundamental issues with Blazor that prevent it from scaling horizontally. What I do understand is that because of the way sessions are handled, I can't just dump a load balancer in front of multiple servers running my application and expect the sessions to work. If box 1 handles a web request for customer A, box 2 shouldn't be handling the next one. This could be completely wrong though. But if it's right, then that means Blazor is best meant for small corporate applications. I can see it being used on factory floors or other similar environments where people have browser enabled devices to access internal applications. At the same time, it seems like it's possible that Blazor will provide a path forward to creating an alternative to Electron.

Finally, there's Uno and Flutter. Both aim to have single code bases and deploy to all targets, i.e., mobile, desktop, and web. From my understanding though, Flutter still has growing pains even though some people swear by it and throw up certain numbers around how well it performs in popular apps. Also, Flutter's desktop capabilities still seem to be in very early stages. Compare this instead to Uno which seems to be production ready across all platforms. That said, I can't pretend that Uno's showcase is very inspiring. Many of the apps are rated average to poor. The look of many of the apps is basic and just doesn't make me feel confident in it.

Basically, there's a lot of stuff out there for creating cross platform applications and reading up on it is a pretty challenging experience. I'd love to find someone who writes realistically about these platforms, what they are good at, not good at, and what their ideal use cases are.

Manga, Shonen, and the evolution of power ups

For whatever reason, I'm re-reading Naruto these days. It's age in the Shonen world is showing. Like the older mangas, there are certain plot devices that feel old fashioned and would no longer be interesting if published today. This is especially true when I think of the way that the Power Ups have been designed.

Watching the characters continuously discuss trying out their "new that technique" reminds me of Dragon Ball. The characters in Dragon Balls were constantly training and a battle could have multiple evolutions of both protagonist and antagonist. Today, I think it would be tedious to read a manga like that. Naruto has a similar feeling to it where in many battles, there are generally 1 to 2 power ups. It's less of a slog to read through, but it's still a slog.

Compare that instead to something like My Hero Academia which takes on a slightly different approach to various battles. I've found that characters are less likely to be written as having a weak form that gets beaten up only to reveal a stronger form. Instead we have power scaling where characters rise in stages between different battles (vs raising multiple times in the midst of a battle). There are exceptions to this, but the overall shift away from Dragon Balls style power ups is pretty obvious.

One manga that still carries on with some of the older style power ups is of course the OG, One Piece. This makes sense given that One Piece has been running for so long. It's going to carry some older style elements in it.

As the trend seems to shift power ups more and more deeply into the story line (as opposed to characters just training really harder), I wonder what kind of stories we'll see in the future. Will Shonen be closer to attack on titan style storylines any time in the future? Will battles need to be written more and more intelligently? Will we do away with the power of friendship last moment victories? All I can say is, I'd love to write a few sample arcs to experiment with how these story techniques could evolve.

Mixing music for fun

I have an old hobby I've rekindled! After I repaired my electric guitar and bought a small amp for it I've been longing to give a small experiment a try. This is something I tried out back when I was in school, about 15 years ago. The idea is to remix music with my own live play alongs.

There are many songs which sound great on their own but repeated listens leave me wanting an extra ingredient or two at times. Acoustic music will sometimes have me craving a less muted drum pattern. Songs like Hello by Adele will feel like they are missing a rousing lead guitar backing as they power on down to the repeated choruses at the end.

And now, I can actually do that really easily. I've already done a couple of recordings for some acoustic music where I use my Free Drum virtual drum kit to record music on my laptop. I can't pretend that that was easy. But now I have an easier way forward. Because I have my amp which has 3.5 mm in and 3.5 mm out, I can easily do the following:

  1. Connect the phone to play the music through the amp.
  2. Connect a dual headphone jack to the out of the amp
  3. Run my headphones to one side of the dual jack
  4. Run another 3.5 mm cable from the other side of the dual jack to the mic input on my computer.
  5. Hit record

There is a downside to this approach though. I can't separate tracks. The recording will carry both the song and my added music. This means no editing is really possible. But I like that. It's my "live" performance and not being able to spend time editing is freeing in a way. It allows me to jump in, complete a recording, and move on.

It's a great hobby. Great for teaching myself music theory and great for breathing some fresh air into the music I listen to. It's hard to describe what it feels like to listen to music you like carry your own special additions to it.

This blog doesn't have a comment box. But I'd love to hear any thoughts y'all might have. Send them to [email protected]

Previous links and notes (April 20th)

Next links and notes (April 22nd)

Posted on April 21 2021 by Adnan Issadeen