<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dan Walmsley</title>
    <description>The latest articles on Forem by Dan Walmsley (@danwalmsley).</description>
    <link>https://forem.com/danwalmsley</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F787096%2Ffc890936-3c4b-4f11-a6dc-96b4bd6798f0.jpeg</url>
      <title>Forem: Dan Walmsley</title>
      <link>https://forem.com/danwalmsley</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/danwalmsley"/>
    <language>en</language>
    <item>
      <title>Turning it up to 11!</title>
      <dc:creator>Dan Walmsley</dc:creator>
      <pubDate>Fri, 19 Aug 2022 15:01:00 +0000</pubDate>
      <link>https://forem.com/avalonia/turning-it-up-to-11-34jn</link>
      <guid>https://forem.com/avalonia/turning-it-up-to-11-34jn</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38no3su77bp6il0nqy20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38no3su77bp6il0nqy20.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the last 2 years the team has been working hard to bring the next generation of &lt;a href="https://github.com/AvaloniaUI/Avalonia" rel="noopener noreferrer"&gt;Avalonia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This has focused on platforms, features and performance.&lt;/p&gt;

&lt;p&gt;We are pleased to announce the release of 11.0 Preview 1 today. It is available &lt;strong&gt;immediately&lt;/strong&gt; on &lt;a href="https://www.nuget.org/packages/Avalonia/11.0.0-preview1" rel="noopener noreferrer"&gt;NuGet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/85brI6yvU0U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what's new?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Platforms
&lt;/h2&gt;

&lt;p&gt;We have made huge strides forward to bring Avalonia to Android, iOS and Embedded platforms.&lt;/p&gt;

&lt;p&gt;Until now Avalonia had been dominant on the desktop. However many users wish to reuse their UI code on mobile and in the browser.&lt;/p&gt;

&lt;p&gt;In this preview we have almost production ready solutions for iOS, Android and browser.&lt;/p&gt;

&lt;p&gt;We have also had a huge push on support for embedded platforms, like Raspberry Pi, Torizen and more. Avalonia is light weight and able to run without a desktop environment. &lt;/p&gt;

&lt;p&gt;Avalonia is now highly optimized for low power embedded platforms. It is able to boot extremely quickly and maintain high framerates.&lt;/p&gt;

&lt;p&gt;See these products from some of our customers that are using Avalonia in embedded industrial products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym76xbni5nfczf2tt025.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym76xbni5nfczf2tt025.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpif7qjr8ierub08ii933.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpif7qjr8ierub08ii933.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  New Visual Layer (Composition Renderer)
&lt;/h3&gt;

&lt;p&gt;Extremely efficient renderer with no memory pressure allowing high frame rates even on low power embedded devices. You can achieve 240fps without breaking a sweat.&lt;/p&gt;

&lt;p&gt;New rendering capabilities are also enabled. We shall go into this more in a future post.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SPQLFvQMcJQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Full Featured Text Rendering and Layout
&lt;/h3&gt;

&lt;p&gt;Text rendering and layout is harder than most realize. Our team has been working on this for several years now. Avalonia now has full unicode support and is able to layout and render text from any language, including right to left.&lt;/p&gt;

&lt;p&gt;We also now have full featured support for rich text and inlines. We have the full TextFormatter API from WPF implemented which allows controls and applications that rely on rich text formatting to be ported from WPF.&lt;/p&gt;

&lt;p&gt;This is a huge advance and proves that Avalonia is ready for the world, your application can now be used by people in any culture and language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foft4tcjxnwdfo7ntrbov.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foft4tcjxnwdfo7ntrbov.jpg" alt="Image Rich Text and Unicode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Avalonia now supports IME (input method editor) on all platforms, this means that languages i.e. CJK (Chinese, Japanese, Korean, etc) work as expected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvp7pmcza6t5h7daet4p.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvp7pmcza6t5h7daet4p.gif" alt="Image description"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility
&lt;/h3&gt;

&lt;p&gt;Accessibility is extremely important to us. We need to ensure that anyone can use the applications built on Avalonia.&lt;/p&gt;

&lt;p&gt;We now have full support for accessibility on Window and MacOS. You do not have to make any changes to your application to enable this, it will simply just work. We have properties to customize accessibility names of components.&lt;/p&gt;

&lt;p&gt;In future this support will be available also on Linux, Mobile and Browser.&lt;/p&gt;

&lt;p&gt;Accessibility also enables new testing scenarios which leads us to….&lt;/p&gt;

&lt;h3&gt;
  
  
  Automated Testing
&lt;/h3&gt;

&lt;p&gt;Automation or Automated testing is now possible. You can simply use Appium or other automated testing frameworks for desktop.&lt;/p&gt;

&lt;p&gt;This means you can have a test that runs your application, interacts with it, and checks for the correct behavior.&lt;/p&gt;

&lt;p&gt;This is traditionally how many applications are tested.&lt;/p&gt;

&lt;p&gt;It is worth noting that Avalonia is a fully mockable platform. This means that you can actually test the same functionality inside unit tests with mocked controls and views.&lt;/p&gt;

&lt;p&gt;We have had reports from customers stating that “migrating our tests from automated tests to mocked unit tests allowed us to run thousands of tests in just 3 seconds instead of several hours.”.&lt;/p&gt;

&lt;p&gt;Having both mocked and automated tests gives developers the best opportunity to ensure the stability of their applications in production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Control Themes
&lt;/h3&gt;

&lt;p&gt;We have overhauled our styling system and added a new feature called Control Themes. This means that all the styles required for a control can be grouped together, and that you can apply different themes to specific parts of your application.&lt;/p&gt;

&lt;p&gt;It also allows you to instantly switch between for example light and dark mode, which in the previous version could take a bit of time to process.&lt;/p&gt;

&lt;p&gt;Control themes are also allowed to inherit styles.. Similar to WPFs “based on” styling mechanism.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance
&lt;/h3&gt;

&lt;p&gt;There has been a huge focus on performance. Just upgrading to 11.0 will give your application a boost.&lt;/p&gt;

&lt;p&gt;Themes, Styles and Resources are lazily loaded on demand. This means that your application will load much faster, without having to wait for everything to be pre-loaded.&lt;/p&gt;

&lt;p&gt;Our XAML compiler has been optimized to produce less MSIL code. This means that there is less code to JIT. That also means your assemblies will be smaller,  saving memory and reducing the footprint. Applications also load faster.&lt;/p&gt;

&lt;p&gt;We have also optimised our styling system and renderer. Even on low powered devices it's now possible to load very quickly and render at very high frame rates.&lt;/p&gt;

&lt;p&gt;These performance gains are particularly noticeable on low powered and embedded devices.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/LOxMWhYcKqA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you use Avalonia?
&lt;/h2&gt;

&lt;p&gt;Avalonia is quickly becoming the choice of many big companies who need a UI platform they can depend on. Over the last 2 years Avalonia has successfully maintained its 0.10.x api, and proven it can provide a stable api that is enforced with api analysis and automated testing.&lt;/p&gt;

&lt;p&gt;When 11.0 is released you will be able to rely on the api and know that it will remain stable and supported for years to come.&lt;/p&gt;

&lt;p&gt;There are now a huge number of real applications in production. Avalonia is supported by a company (AvaloniaUI OU). We have been providing porting services and commercial support to our customers for over 2 years.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmia5kq5hjcge77zxiq4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmia5kq5hjcge77zxiq4x.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you need support and guarantees please contact &lt;a href="mailto:team@avaloniaui.net"&gt;team@avaloniaui.net&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;Find us on...&lt;br&gt;
Telegram: &lt;a href="https://t.me/Avalonia" rel="noopener noreferrer"&gt;https://t.me/Avalonia&lt;/a&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/avaloniaui" rel="noopener noreferrer"&gt;https://twitter.com/avaloniaui&lt;/a&gt;&lt;br&gt;
Github: &lt;a href="https://github.com/AvaloniaUI/Avalonia" rel="noopener noreferrer"&gt;https://github.com/AvaloniaUI/Avalonia&lt;/a&gt;&lt;br&gt;
www: &lt;a href="http://avaloniaui.net/" rel="noopener noreferrer"&gt;http://avaloniaui.net/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>avaloniaui</category>
      <category>xaml</category>
      <category>csharp</category>
      <category>webassembly</category>
    </item>
    <item>
      <title>Avalonia - Mobile is here</title>
      <dc:creator>Dan Walmsley</dc:creator>
      <pubDate>Thu, 17 Mar 2022 12:59:09 +0000</pubDate>
      <link>https://forem.com/avalonia/avalonia-mobile-is-here-1i4f</link>
      <guid>https://forem.com/avalonia/avalonia-mobile-is-here-1i4f</guid>
      <description>&lt;p&gt;Today I appeared on the famous &lt;a href="https://www.dotnetrocks.com/?show=1785" rel="noopener noreferrer"&gt;dotnet rocks podcast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We discussed how Avalonia is gravitating from Desktop development to include Mobile development.&lt;/p&gt;

&lt;p&gt;As promised I have readied some templates and documentation for those early adoptors to begin testing and discovering the new possibilities this brings to Avalonia.&lt;/p&gt;

&lt;p&gt;I have put together the following to help you get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A sample application "&lt;a href="https://github.com/AvaloniaUI/Wordle-onia" rel="noopener noreferrer"&gt;Wordle-onia&lt;/a&gt;"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvca79jsymrz5jl82u03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvca79jsymrz5jl82u03.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This simple port of Wordle can run on Desktop, Browser, iOS and Android.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dotnet templates to get you started easily.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new -i avalonia.templates
dotnet new avalonia.xplat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Some &lt;a href="https://docs.avaloniaui.net/tutorials/developing-for-mobile" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to help you get started and understand how to use the templates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Please remember although Avalonia is a production ready environment on Desktop, we are entering the early phases for mobile. We believe now is the time that you can see the true potential of Avalonia on mobile and the performance is demonstrably excellent.&lt;/p&gt;

&lt;p&gt;However there is still work to be done ahead of our 11.0 release planned for early Summer.&lt;/p&gt;

&lt;p&gt;As always if you have any issues with the docs or templates.&lt;/p&gt;

&lt;p&gt;Please join us on our &lt;a href="https://t.me/Avalonia" rel="noopener noreferrer"&gt;telegram group&lt;/a&gt; so we can resolve any issues.&lt;/p&gt;

&lt;p&gt;Have fun! Dan&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwmln98q1qkia8hcb1dn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwmln98q1qkia8hcb1dn.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nick Polyak - Thoughts on Avalonia</title>
      <dc:creator>Dan Walmsley</dc:creator>
      <pubDate>Wed, 09 Mar 2022 15:26:53 +0000</pubDate>
      <link>https://forem.com/avalonia/nick-polyak-thoughts-on-avalonia-emn</link>
      <guid>https://forem.com/avalonia/nick-polyak-thoughts-on-avalonia-emn</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjguz2d2f3werb2vxebvz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjguz2d2f3werb2vxebvz.jpeg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nick Polyak is a software architect, developer, and educator. &lt;/p&gt;

&lt;p&gt;He has written many award-winning articles on &lt;a href="https://www.codeproject.com/Members/Nick-Polyak" rel="noopener noreferrer"&gt;CodeProject&lt;/a&gt; about programming, software architecture, design patterns, and more recently many articles about Avalonia.&lt;/p&gt;

&lt;p&gt;Nick wrote one of the first &lt;a href="https://www.codeproject.com/Articles/278901/MVVM-Pattern-Made-Simple" rel="noopener noreferrer"&gt;MVVM pattern tutorials&lt;/a&gt; that I used when learning to work with WPF many years ago.&lt;/p&gt;

&lt;p&gt;I caught up with Nick to get his thoughts on Avalonia.&lt;/p&gt;

&lt;h2&gt;
  
  
  When did you first discover Avalonia and what have you used it for since then?
&lt;/h2&gt;

&lt;p&gt;My path to Avalonia developed over many years. When WPF was released I immediately fell in love with the groundbreaking new framework. This was because WPF brought many new concepts that are very powerful for UI development for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual and Logical Trees&lt;/li&gt;
&lt;li&gt;Attached or Dependency Properties&lt;/li&gt;
&lt;li&gt;Attached Routed Events&lt;/li&gt;
&lt;li&gt;Bindings and the Related MVVM pattern&lt;/li&gt;
&lt;li&gt;ControlTemplates&lt;/li&gt;
&lt;li&gt;DataTemplates&lt;/li&gt;
&lt;li&gt;Styles&lt;/li&gt;
&lt;li&gt;Behaviors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once Silverlight came along it opened up some new possibilities. It had almost all the features of WPF and could run in the browser, Windows, Linux, Mac.&lt;/p&gt;

&lt;p&gt;Unfortunately, Microsoft abandoned Silverlight and that was the end of my cross-platform WPF ambitions.&lt;/p&gt;

&lt;p&gt;What came next, frameworks like UWP and Xamarin always compromised the power of WPF, important features were left out, and even considering the web frameworks nothing came close to WPF.&lt;/p&gt;

&lt;p&gt;Since then, I continued using WPF on Windows, at the same time looking for other frameworks both within the Microsoft universe and from the Open Source community.&lt;/p&gt;

&lt;p&gt;About 4 years ago, I stumbled across Avalonia. I was not sure initially about the maturity of the framework (4 years ago it was in a much different place to today) so I kept an eye on the project and waited for it to develop. &lt;/p&gt;

&lt;p&gt;Recently, I began to work on a contract with a hedge fund company. They needed a desktop UI application running both on Windows and Linux. I tried Avalonia again and became convinced that the framework was quite mature for both platforms.&lt;/p&gt;

&lt;p&gt;Avalonia is the first framework I have discovered that not only matches WPFs concepts and APIs but in many respects exceeds them. They even fixed some of the bugs and problems that WPF had!&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the advantages Avalonia UI has?
&lt;/h2&gt;

&lt;p&gt;Avalonia provides you with the best powers of UI development combined with ease of usage. Additionally, Avalonia is truly multiplatform and your apps will run on Windows, Linux, and Mac with it.&lt;/p&gt;

&lt;p&gt;Recently, Avalonia also released a Blazor-based WebAssembly version which allows running Avalonia apps on major browsers at any platform they support.&lt;/p&gt;

&lt;p&gt;I'm told that mobile support is coming very soon also.&lt;/p&gt;

&lt;p&gt;In the introduction section of my &lt;a href="https://www.codeproject.com/Articles/5308645/Multiplatform-UI-Coding-with-AvaloniaUI-in-Easy-Sa" rel="noopener noreferrer"&gt;article Multiplatform UI Coding with AvaloniaUI in Easy Samples. Part 1 - AvaloniaUI Building Blocks&lt;/a&gt; I explain why I believe that Avalonia is better, more powerful, and easier to program than other frameworks including UWP, Xamarin, or Web-based technologies.&lt;/p&gt;

&lt;p&gt;In addition to implementing all the WPF concepts mentioned above, Avalonia also utilizes some concepts that had not yet been discovered by the time WPF was created, for example, concepts coming from Reactive Extensions. As a result, their bindings and routed events are more powerful and less buggy than those of WPF.&lt;/p&gt;

&lt;p&gt;In short, Avalonia is a multiplatform WPF++ that also runs in all major browsers.&lt;/p&gt;

&lt;p&gt;Just like WPF (and unlike Web and Xamarin programming) Avalonia is very flexible and compositional. An experienced WPF or Avalonia software engineer can compose any control to consist of any primitives he wants, e.g. a Button or ComboBox (dropdown) can be composed of multiple images, borders, shapes, or text. The Avalonia visual tree is built with real primitives, like Borders, Images, Shapes, or TextBlocks. By contrast, in Xamarin and Web programming the visual tree (or HTML DOM) ends with much coarser (more complex) items like basic controls including buttons or dropdowns themselves. Correspondingly control customization is much easier and more powerful in Avalonia.&lt;/p&gt;

&lt;p&gt;Now that Microsoft has open-sourced .NET, Avalonia is the missing piece that enables multiplatform .NET UI development a reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  As someone who helps educate about software development, why should people learn to use Avalonia, and do you think it is easy to pick up?
&lt;/h2&gt;

&lt;p&gt;For people with expertise in WPF, Silverlight, or UWP adapting to Avalonia is a breeze. In particular, after working with Avalonia for two weeks I figured out the most important differences between Avalonia and WPF and became capable of developing in Avalonia as fast as in WPF.&lt;/p&gt;

&lt;p&gt;For people with no previous experience with any of the above frameworks, there will be a learning curve, which I believe they will have to go through anyways if they want to learn best practices and important concepts applicable to any UI development.&lt;/p&gt;

&lt;p&gt;Those who worked with Xamarin previously will find many familiar concepts only implemented in a more powerful and flexible way with the added benefit of being easier to use.&lt;/p&gt;

&lt;p&gt;For people with experience in Angular, the bindings, data templates, and MVVM concepts should be familiar, while those who know React, should be somewhat familiar with the concept of lookless controls and the hierarchical composition of controls and views.&lt;/p&gt;

&lt;h2&gt;
  
  
  How has the response been to your articles? I noticed you won the "Top C# article" award many times on CodeProject?
&lt;/h2&gt;

&lt;p&gt;The response to my articles has been very positive. Based on CodeProject statistics, my articles were read by tens of thousands of people, and most of those who vote for the articles - give me the highest grade.&lt;/p&gt;

&lt;p&gt;Many of my articles were voted to be the best of the month.&lt;/p&gt;

&lt;p&gt;Due to the success of my Avalonia articles I have been selected as one of CodeProject's MVAs (Most Valued Authors) for 2022.&lt;/p&gt;

&lt;p&gt;Based on the above, I do think that Avalonia has a great future ahead, it's getting popular by the day and will continue to grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do you think the future will bring for Avalonia?
&lt;/h2&gt;

&lt;p&gt;Even at present, there is no other multiplatform framework for building desktop applications that can come even close to Avalonia.&lt;/p&gt;

&lt;p&gt;I believe that Avalonia has great potential and the key to unlocking this potential is better public relations (social media and marketing), continuing to improve the documentation, and fixing some well-known issues.&lt;/p&gt;

&lt;p&gt;Also, I think it is very important to further stabilize the browser version and to allow mobile development in Avalonia both for Android and iOS, starting perhaps with Android.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where should people go to find your articles, projects, code?
&lt;/h2&gt;

&lt;p&gt;Since starting to work with Avalonia, I have built an open-source multiplatform docking framework for Avalonia called &lt;a href="https://github.com/npolyak/NP.Avalonia.UniDock" rel="noopener noreferrer"&gt;UniDock&lt;/a&gt;; it supports tabbing and stacking multiple windows. It is quite mature now and has been used in several projects already and (from my point of view) has more features and better functionality than WPF-based frameworks like AvalonDock, or comparable WPF Docking controls from professional control vendors. The main article detailing the UniDock functionality is UniDock - &lt;a href="https://www.codeproject.com/Articles/5316702/UniDock-A-New-Multiplatform-UI-Docking-Framework-U" rel="noopener noreferrer"&gt;A New Multiplatform UI Docking Framework. UniDock Power Features&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F325zh5uoovxed7mxked5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F325zh5uoovxed7mxked5.png" alt="Image UniDock"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also built and released open-source tools for theming and localizing Avalonia applications. See my article: &lt;a href="https://www.codeproject.com/Articles/5317972/Theming-and-Localization-Functionality-for-Multipl" rel="noopener noreferrer"&gt;Theming and Localization Functionality for Multiplatform Avalonia UI Framework&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;There are several tutorials that I have published intending to teach Avalonia to beginners and demonstrate the beauty of building with Avalonia and related concepts. &lt;/p&gt;

&lt;p&gt;Here are the links to those articles in the same order in which they should be read:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codeproject.com/Articles/5308645/Multiplatform-UI-Coding-with-AvaloniaUI-in-Easy-Sa" rel="noopener noreferrer"&gt;Multiplatform UI Coding with AvaloniaUI in Easy Samples. Part 1 - AvaloniaUI Building Blocks&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codeproject.com/Articles/5314369/Basics-of-XAML-in-Easy-Samples-for-Multiplatform-A" rel="noopener noreferrer"&gt;Basics of XAML in Easy Samples for Multiplatform Avalonia .NET Framework&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codeproject.com/Articles/5311995/Multiplatform-Avalonia-NET-Framework-Programming-B" rel="noopener noreferrer"&gt;Multiplatform Avalonia .NET Framework Programming Basic Concepts in Easy Samples&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codeproject.com/Articles/5317055/Multiplatform-Avalonia-NET-Framework-Programming-A" rel="noopener noreferrer"&gt;Multiplatform Avalonia .NET Framework Programming Advanced Concepts in Easy Samples&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codeproject.com/Articles/5320737/Behavior-Pattern-Visual-Behaviors-in-WPF-and-Avalo" rel="noopener noreferrer"&gt;Behavior Pattern - Visual Behaviors in WPF and Avalonia with Practical Samples&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Additionally, I have published on &lt;a href="https://github.com/npolyak/NP.Avalonia.Visuals" rel="noopener noreferrer"&gt;Github NP.Avalonia.Visuals&lt;/a&gt; an open-source package containing some important behaviors, utilities, and controls, with accompanying &lt;a href="https://www.codeproject.com/Articles/5320502/Useful-Generic-Avalonia-Controls-located-within-NP" rel="noopener noreferrer"&gt;article&lt;/a&gt;. It provides the following controls:&lt;/p&gt;

&lt;p&gt;CustomWindow&lt;br&gt;
AutoGrid&lt;br&gt;
LabeledControl&lt;br&gt;
More functionality, including some very useful utilities and behaviors, will be presented in future articles.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Case Study - Fluent Search</title>
      <dc:creator>Dan Walmsley</dc:creator>
      <pubDate>Fri, 11 Feb 2022 23:14:44 +0000</pubDate>
      <link>https://forem.com/avalonia/case-study-fluentsearch-15ae</link>
      <guid>https://forem.com/avalonia/case-study-fluentsearch-15ae</guid>
      <description>&lt;p&gt;Adir Hudayfi is a Microsoft engineer by day, and by night he works on &lt;a href="https://fluentsearch.net/" rel="noopener noreferrer"&gt;Fluent Search&lt;/a&gt; an application that gives a &lt;code&gt;Spotlight&lt;/code&gt; like experience on Windows. We caught up with Adir to find out more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please tell us about your project Fluent Search? What is it, who is it for? What can it do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fluent Search, as you might’ve guessed, is a search app.&lt;br&gt;
The main goal of the app is to improve the productivity of its users, and it’s doing it by searching in all computer resources extremely fast.&lt;/p&gt;

&lt;p&gt;By all resources, I mean everything – apps, windows, files, browser history/bookmarks, screen text, in-app content like tabs, links, and the ability to extend itself using a no-code UI platform to build extensions.&lt;/p&gt;

&lt;p&gt;Fluent Search provides a full-screen search which gives the ability to use the computer with a keyboard only. &lt;/p&gt;

&lt;p&gt;I aimed for Fluent Search to provide a fluent and fast experience for its users, that's why performance was super important. Avalonia has a unique architecture, everything is pluggable, renderer, style system, etc. This means that I was able to provide optimisations specific to my application, enabling performance unachievable elsewhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You built Fluent Search primarily for Windows, why was Avalonia a good choice for a Windows-only application? Should others consider Windows-only applications look at Avalonia?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, absolutely. When a developer thinks about a cross-platform framework they think that there will be a downside, whether it’s performance or visuals, but that’s not the case with Avalonia.&lt;/p&gt;

&lt;p&gt;As a developer, I always aspire to use the best tech that fits the project I am working on.&lt;/p&gt;

&lt;p&gt;For most of the development of Fluent Search the UI was able to run on both Avalonia and WPF (UWP was straight up not an option). My testing showed that Avalonia performed far better, and gave me more modern visuals with its built-in with support for Windows Composition rendering.&lt;/p&gt;

&lt;p&gt;I believe that Avalonia is currently the best option for .NET developers looking to develop a new desktop app that is not primarily a touch focused app. It is as flexible as WPF, while it looks as great as UWP/WinUI with Fluent design and it is also actively maintained. &lt;/p&gt;

&lt;p&gt;Most new Windows app developers are looking for a fresh design that matches the Fluent design system, so I am sure Avalonia will be great for them. Many Fluent Search users still think the app was built using UWP.&lt;/p&gt;

&lt;p&gt;I actually participated in "Launch 2021", it is an annual event for showcasing Windows applications. Its normally reserved only for UWP applications, however now it is open to all Fluent design applications. Many people were surprised that Fluent Search was already taking advantages of new Windows 11 features like Mica material effect (this was before it was available in UWP).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you have any difficulties working with Avalonia and where did you turn to when you needed help?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a WPF developer, I had an easy time to start using Avalonia, once you realise that 99% of the WPF guides apply to Avalonia as well you will find a wealth of WPF and Avalonia based material online that can all be used.&lt;/p&gt;

&lt;p&gt;I did encounter a few issues through the years, as I have been using Avalonia since its alpha days, however the community was always active, bugs get addressed extremely fast and since it’s open-source I had many chances to add new features that I needed like the new Windows 11 Mica effect one week after its release.&lt;/p&gt;

&lt;p&gt;All libraries or 3rd party controls that I needed, graphing library, html rendering, rich text editor, were all available for Avalonia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you feel about the future of Avalonia and will you use it in other projects that you work on?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I feel confident thinking about the future of Avalonia, as someone who’s been using it since its early days, I am happy to see it finally getting recognition, like the recently added full support in JetBrains Rider and adoption by industry leaders like Unity (&lt;a href="https://www.plasticscm.com/" rel="noopener noreferrer"&gt;PlasticSCM&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;I shall keep using Avalonia for some new Windows-only projects I have in mind, I hope that other Windows app developers will look at Avalonia as it is a great option for new Windows only applications and also for modernising existing ones.&lt;/p&gt;

&lt;p&gt;You can find out more about &lt;a href="https://www.fluentsearch.net/" rel="noopener noreferrer"&gt;Fluent Search here.&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpnh7vd8h5ky8qetuvud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpnh7vd8h5ky8qetuvud.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjfs43yc75xtcmtp8ewv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjfs43yc75xtcmtp8ewv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fss2a7dppocc5bwoj0o5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fss2a7dppocc5bwoj0o5j.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>avalonia</category>
      <category>xaml</category>
      <category>winui</category>
      <category>uwp</category>
    </item>
    <item>
      <title>Case Study - Lunacy</title>
      <dc:creator>Dan Walmsley</dc:creator>
      <pubDate>Thu, 06 Jan 2022 14:30:00 +0000</pubDate>
      <link>https://forem.com/avalonia/case-study-lunacy-2fg9</link>
      <guid>https://forem.com/avalonia/case-study-lunacy-2fg9</guid>
      <description>&lt;p&gt;We interviewed Sergey Mikolaitis from &lt;a href="https://icons8.com/lunacy" rel="noopener noreferrer"&gt;icons8&lt;/a&gt;. Sergey and his team have recently released a fantastic design application called Lunacy.&lt;/p&gt;

&lt;p&gt;Lunacy is a truly cross platform graphic design tool powered by Avalonia.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did you discover Avalonia?
&lt;/h2&gt;

&lt;p&gt;I had seen Nikita Tsukanov give talks at conferences and on YouTube back in the early days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=DLHhZJkSqWk" rel="noopener noreferrer"&gt;English&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=8qzqweimcFs" rel="noopener noreferrer"&gt;Russian&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;It seemed like an interesting project but I didn't imagine how serious the team was about the platform and what it has now become, a serious player in the cross platform UI space.&lt;/p&gt;

&lt;h2&gt;
  
  
  What were the reasons to choose Avalonia?
&lt;/h2&gt;

&lt;p&gt;We had been using WPF and our application was tied to just Windows.&lt;/p&gt;

&lt;p&gt;The newer replacements to WPF (UWP and Xamarin) were not able to offer us the flexibility that we needed for a content creation application.&lt;/p&gt;

&lt;p&gt;We had our eye on Avalonia for along time and we saw that it is a robust platform with a huge and active community behind it.&lt;/p&gt;

&lt;p&gt;Once Avalonia became stable enough we jumped at the opportunity to port our application.&lt;/p&gt;

&lt;h2&gt;
  
  
  How was your experience of using Avalonia and porting your application?
&lt;/h2&gt;

&lt;p&gt;Initially there was a bit of a learning curve as with all new frameworks. Previously we had been focused on Windows only technologies so we had to start thinking about writing applications for cross platform, however since Avalonia is extremely similar to the likes of WPF and UWP we got up to speed quite quickly, we were able to re-use our existing knowledge and skills effectively.&lt;/p&gt;

&lt;p&gt;I believe the port would have taken us at least 3x longer if we had chosen a different framework.&lt;/p&gt;

&lt;p&gt;The biggest difference coming from WPF is the new CSS like styling system. Once we understood it however it was far more flexible and a joy to use.&lt;/p&gt;

&lt;p&gt;We see Avalonia as a "better WPF", its almost how you would make WPF if it was being designed today. There are many sensible improvements over WPF which save you a lot of time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was Avalonia missing any important features compared to WPF?
&lt;/h2&gt;

&lt;p&gt;The only thing that was missing was IME support and right-to-left text support.&lt;/p&gt;

&lt;p&gt;Those however are actively being worked on and will soon be available.&lt;/p&gt;

&lt;p&gt;There were a few other very minor features that we were able to implement ourselves, we opened PRs and they were merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was it important that Avalonia was an open source framework?
&lt;/h2&gt;

&lt;p&gt;Not really but it became invaluable. The code quality of the framework is of a very high standard. This means the team were able to debug into Avalonia directly from the IDE and see nice clean and understandable code.&lt;/p&gt;

&lt;p&gt;Sometimes you could skip the documentation and have a quick peek at the code on GitHub to get the information you need. This is something you are usually scared to do with other large code bases.&lt;/p&gt;

&lt;p&gt;It also means when we find a bug or an issue, we are able to just fix it ourselves, we open a PR and it usually doesn't take long to have it merged.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you needed help where did you find it?
&lt;/h2&gt;

&lt;p&gt;One of the best places for support was the community chat on Telegram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://t.me/Avalonia" rel="noopener noreferrer"&gt;Telegram (EN)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://t.me/AvaloniaRU" rel="noopener noreferrer"&gt;Telegram (RU)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We had a difficulty being able to submit our application to the Apple store. We chatted with members of the community and quickly found how to resolve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is the performance?
&lt;/h2&gt;

&lt;p&gt;The performance is excellent, our application is very graphical and we were able to make zooming, panning extremely smooth.&lt;/p&gt;

&lt;p&gt;We also know that the team are working to optimize Avalonia even further so its only getting better from here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fda6u77rn3i04b6pbl1dg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fda6u77rn3i04b6pbl1dg.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://icons8.com/lunacy" rel="noopener noreferrer"&gt;Lunacy&lt;/a&gt; is available in the &lt;a href="https://apps.apple.com/app/id1582493835" rel="noopener noreferrer"&gt;Apple Store&lt;/a&gt; and &lt;a href="https://dev.toms-windows-store://pdp/?productid=9pnlmkkpcljj"&gt;Microsoft Store&lt;/a&gt;, visit their website to try out a real Avalonia application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://icons8.com/lunacy" rel="noopener noreferrer"&gt;https://icons8.com/lunacy&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>skia</category>
    </item>
  </channel>
</rss>
