<?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>DEV Community: Melissa Houghton</title>
    <description>The latest articles on DEV Community by Melissa Houghton (@melissahoughton).</description>
    <link>https://dev.to/melissahoughton</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%2F335938%2F73158114-46bc-4900-a688-3462c2da2c25.jpg</url>
      <title>DEV Community: Melissa Houghton</title>
      <link>https://dev.to/melissahoughton</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/melissahoughton"/>
    <language>en</language>
    <item>
      <title>Digital Twins: Your Next Step in IoT</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Wed, 18 Aug 2021 02:05:32 +0000</pubDate>
      <link>https://dev.to/melissahoughton/digital-twins-your-next-step-in-iot-5273</link>
      <guid>https://dev.to/melissahoughton/digital-twins-your-next-step-in-iot-5273</guid>
      <description>&lt;p&gt;Digital twins bridge the gap between the physical and virtual worlds and help you realise the full potential of your Internet of Things (IoT) solutions. Now more accessible than ever, digital twins are the next step in your IoT journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Digital Twins?
&lt;/h2&gt;

&lt;p&gt;Digital twins are a digital representation or model of a physical thing enabled by IoT.&lt;/p&gt;

&lt;p&gt;IoT is the network of physical devices (things) connected to the internet, collecting data and telemetry. An IoT device could be your fridge, your Alexa, a truck, a piece of machinery in a factory, or a building. You can integrate almost anything with IoT technology.&lt;/p&gt;

&lt;p&gt;Digital twins are a map of IoT enabled devices showing how they connect and work together, supplemented by other business information and collected data. A digital twin acts as a blueprint highlighting the relationships between each piece and allowing for complex data analysis and action.&lt;/p&gt;

&lt;p&gt;A digital twin of an object should have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A model of the object&lt;/li&gt;
&lt;li&gt;An evolving set of data relating to the object, and&lt;/li&gt;
&lt;li&gt;A means of dynamically updating or adjusting the model in accordance with the data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;(Source 1)&lt;/p&gt;

&lt;p&gt;Say, for example, you have an office building with IoT enabled thermostats in each room. The thermostats and their data alone would not be digital twins. However, overlay that information into a building model and create a means of updating the temperature change to reflect the real world, and you have digital twins. The model could be a graph, a dashboard, a 2D map, or even a 3D virtual replica of the building.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvAJjKxG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1420446816298946561/pu/img/IYiyPgz-dCPDLHOD.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZcS2h47N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1317125234923728896/UFVkBcb0_normal.png" alt="FRAME profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        FRAME
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @frame_vr
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      We're thrilled to finally share this. See how the &lt;a href="https://twitter.com/trello"&gt;@trello&lt;/a&gt; team from &lt;a href="https://twitter.com/Atlassian"&gt;@Atlassian&lt;/a&gt; used FRAME for an epic, immersive offsite: TRELLO TOGETHER 21. We made a digital twin of their actual NYC office. 🤯 All in &lt;a href="https://twitter.com/oculus"&gt;@oculus&lt;/a&gt; Quests via &lt;a href="https://twitter.com/hashtag/webxr"&gt;#webxr&lt;/a&gt;. A full case study on this is coming, but a tease: 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:16 PM - 28 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1420448209671917574" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1420448209671917574" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1420448209671917574" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;em&gt;Tweet from Frame VR showing a digital twin of the Trello office&lt;/em&gt;

&lt;h2&gt;
  
  
  Why Digital Twins?
&lt;/h2&gt;

&lt;p&gt;A majority of all IoT projects are considered failures. According to a report by Beecham Research titled &lt;a href="https://www.whyiotprojectsfail.com/"&gt;"Why IoT Projects Fail"&lt;/a&gt;, only 12% are considered entirely successful. The projects fail because businesses focus on single-point solutions, jumping on new technology trends, and not looking at the big picture. As a result, projects end up with islands of things instead of an internet of things. The data is not linked together, leaving each IoT solution isolated on an island.&lt;/p&gt;

&lt;p&gt;Connecting everything creates a complete picture that can change how we look at the problem. We can make these connections with digital twins.&lt;/p&gt;

&lt;p&gt;Digital twins turn our islands of things back into an internet of things through relationships and models. We create insights from the mass amounts of data collected, revealing practical solutions and allowing for action with digital twins.&lt;/p&gt;

&lt;p&gt;Actions from digital twins include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analysis and visualisation of the current state&lt;/li&gt;
&lt;li&gt;Design and validation of processes new or existing&lt;/li&gt;
&lt;li&gt;Simulation of scenarios&lt;/li&gt;
&lt;li&gt;Increased safety and reliability with alerting&lt;/li&gt;
&lt;li&gt;Optimisation of existing processes&lt;/li&gt;
&lt;li&gt;Tracking and reviewing historical information&lt;/li&gt;
&lt;li&gt;Predictive performance and maintenance&lt;/li&gt;
&lt;li&gt;Real-time control over the physical twin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Source 2)&lt;/p&gt;

&lt;p&gt;Taking data-driven action in our IoT solution can turn a failure into a success.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of Digital Twins
&lt;/h2&gt;

&lt;p&gt;The concept of digital twins is not new. The term 'Digital Twins' was first used in 2002 by Michael Grieves of Florida Institute of Technology. (Source 3)&lt;/p&gt;

&lt;p&gt;In theory, digital twins date back even farther. The first use of digital twins concepts dates back to the '60s with NASA. There is a theory that Apollo 13 was the first example of digital twins. NASA had complex simulation environments to model the spacecraft powered by computer systems, technology, and algorithms.  Mission control used these simulators and the telemetry coming in from the ship to quickly adapt and model the damaged spacecraft, allowing them to get the crew home safely. (Source 4)&lt;/p&gt;

&lt;p&gt;NASA was not using IoT devices at the time, but the theories of using telemetry to update models and make decisions are what we use now with digital twins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.flickr.com/photos/jurvetson/49760765403" title="Apollo 13 Mission Control with Fred Haise and Gene Kranz"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gBAR5fOG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49760765403_6316172a62_z.jpg" alt="Apollo 13 Mission Control with Fred Haise and Gene Kranz"&gt;&lt;/a&gt;&lt;em&gt;Apollo 13 Mission Control with Fred Haise and Gene Kranz&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Digital Twins Now
&lt;/h2&gt;

&lt;p&gt;The difference with digital twins now is that we can get information in real-time. Real-time data allows us to react and automate in real-time. Then, using the power of the cloud, we can feed the stream of data into real-time processing, alerting, machine learning algorithms, advanced insights, and automation.&lt;/p&gt;

&lt;p&gt;The cloud has also made digital twin technology more accessible and easy to use. No longer do you need a supercomputer and technology of NASA to create advanced simulations and digital twins. Instead, cloud providers take care of the compute for us, allowing us to focus on innovative solutions.&lt;/p&gt;

&lt;p&gt;With broader accessibility, we can use digital twins anywhere you have IoT devices. Typical categories include consumer, commercial, industrial, and infrastructure. Examples usually include smart buildings and industrial use cases, but the opportunities are endless.&lt;/p&gt;

&lt;p&gt;Digital twins power the freeways that use digital speed limits and change based on traffic patterns. Health monitors can leverage digital twins to send alerts to the user or a doctor. A bakery can leverage digital twins to track deliveries, add predictive maintenance to the ovens, and use video analytics to track food waste. You can even create a digital twin of your own home.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w6KJR8FW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissadevstorage.blob.core.windows.net/melissadevblob/digital-twins/digital-twins-industries.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w6KJR8FW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissadevstorage.blob.core.windows.net/melissadevblob/digital-twins/digital-twins-industries.png" alt="Examples of industries that can use digital twins: farming, city, bakery, medical, racecar, industrial"&gt;&lt;/a&gt;&lt;em&gt;Examples of industries that can use digital twins: farming, city, bakery, medical, racecar, industrial&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get started
&lt;/h2&gt;

&lt;p&gt;As a software engineer in the Microsoft space, I recommend starting with &lt;a href="https://azure.microsoft.com/en-us/overview/iot/"&gt;Azure IoT&lt;/a&gt;. Azure IoT provides a broad range of services and capabilities suitable across industries and includes the &lt;a href="https://azure.microsoft.com/en-us/services/digital-twins/"&gt;Azure Digital Twins&lt;/a&gt; platform.&lt;/p&gt;

&lt;p&gt;Azure Digital Twins integrates seamlessly with the other Azure services and enables the creation of knowledge-based graphs based on digital models of entire environments.&lt;/p&gt;

&lt;p&gt;The core capabilities provided in the Azure Digital Twins platform are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Modeling Language - Digital Twin Definition Language (DTDL)&lt;/li&gt;
&lt;li&gt;Live Execution Environment - Azure Digital Twins Explorer&lt;/li&gt;
&lt;li&gt;Input from IoT and Business Systems&lt;/li&gt;
&lt;li&gt;Output to Time Series Insights, Storage, and Analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to the robust capabilities, Microsoft provides a detailed suite of &lt;a href="https://docs.microsoft.com/en-us/azure/digital-twins/"&gt;documentation&lt;/a&gt; and &lt;a href="https://docs.microsoft.com/en-us/learn/paths/develop-azure-digital-twins/"&gt;learning modules&lt;/a&gt; to help you get up and running.&lt;/p&gt;

&lt;p&gt;Check out digital twins and take your next step in IoT.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Wright, L., &amp;amp; Davidson, S. (2020). How to tell the difference between a model and a digital twin. &lt;em&gt;Advanced Modeling and Simulation in Engineering Sciences, 7&lt;/em&gt;(1), 1–13. &lt;a href="https://doi.org/10.1186/s40323-020-00147-4"&gt;https://doi.org/10.1186/s40323-020-00147-4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Singh, M., Fuenmayor, E., Hinchy, E. P., Qiao, Y., Murray, N., &amp;amp; Devine, D. (2021). Digital Twin: Origin to Future. &lt;em&gt;Applied System Innovation, 4(2)&lt;/em&gt;, 36. &lt;a href="https://doi.org/10.3390/asi4020036"&gt;https://doi.org/10.3390/asi4020036&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grieves, M. W. (2019). Virtually intelligent product systems: digital and physical twins. &lt;a href="https://doi.org/10.2514/5.9781624105654.0175.0200"&gt;https://doi.org/10.2514/5.9781624105654.0175.0200&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ferguson, S. (2020). Apollo 13: The First Digital Twin. Siemens® &lt;em&gt;&lt;a href="https://blogs.sw.siemens.com/simcenter/apollo-13-the-first-digital-twin"&gt;https://blogs.sw.siemens.com/simcenter/apollo-13-the-first-digital-twin&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




</description>
      <category>digitaltwins</category>
      <category>iot</category>
      <category>digitaltwintechnology</category>
      <category>azureiot</category>
    </item>
    <item>
      <title>Getting Started with .NET MAUI</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Mon, 28 Jun 2021 21:57:54 +0000</pubDate>
      <link>https://dev.to/melissahoughton/getting-started-with-net-maui-1dg</link>
      <guid>https://dev.to/melissahoughton/getting-started-with-net-maui-1dg</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;❗ .NET MAUI is still in Preview, and the team at Microsoft continuously release changes. Some tools, features, and steps mentioned in this post may change.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This tutorial provides an overview of how to get started with &lt;a href="https://github.com/dotnet/maui" rel="noopener noreferrer"&gt;.NET MAUI&lt;/a&gt;, the .NET Multi-platform APP UI (MAUI), a cross-platform framework for creating native mobile and desktop apps. .NET MAUI is the evolution of Xamarin.Forms and currently available in &lt;a href="https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-5/" rel="noopener noreferrer"&gt;Preview 5&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To find out more about what is .NET MAUI and how it came to be, I recommend reading my blog post &lt;a href="https://dev.to/melissahoughton/aloha-welcome-to-net-maui-2n86"&gt;Aloha! Welcome to .NET MAUI&lt;/a&gt; before continuing with this tutorial.&lt;/p&gt;

&lt;p&gt;We will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up your environment&lt;/li&gt;
&lt;li&gt;Creating your first .NET MAUI application&lt;/li&gt;
&lt;li&gt;Writing in C# vs XAML&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Environment Setup
&lt;/h2&gt;

&lt;p&gt;Before starting with a .NET MAUI project, we need to install all the proper dependencies. Microsoft has made this easy for us with a &lt;code&gt;dotnet tool&lt;/code&gt; that evaluates your system. The tool will detect any problems and offer to try to fix them for you or suggest a way to fix them yourself.&lt;/p&gt;

&lt;p&gt;First install the tool: (source: &lt;a href="https://github.com/Redth/dotnet-maui-check" rel="noopener noreferrer"&gt;https://github.com/Redth/dotnet-maui-check&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; Redth.Net.Maui.Check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the tool using the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;maui-check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the instructions given in the tool to get everything you need to start working with .NET MAUI.&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fmaui-check.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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fmaui-check.png" alt="MAUI Check tool screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the best development experience with .NET MAUI, it is recommended you use Visual Studio.&lt;/p&gt;

&lt;p&gt;At the time of writing, Microsoft recommends starting with &lt;a href="https://visualstudio.microsoft.com/vs/preview/" rel="noopener noreferrer"&gt;Visual Studio 2019 16.11 Preview 2&lt;/a&gt; to develop .NET MAUI applications. Full support for .NET MAUI will be available in &lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-2022/" rel="noopener noreferrer"&gt;Visual Studio 2022&lt;/a&gt;, now in Preview.&lt;/p&gt;

&lt;p&gt;Install the following workloads with Visual Studio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile development with .NET&lt;/li&gt;
&lt;li&gt;Universal Windows Platform development&lt;/li&gt;
&lt;li&gt;Desktop development with C++&lt;/li&gt;
&lt;li&gt;.NET Desktop Development&lt;/li&gt;
&lt;/ul&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%2Fdocs.microsoft.com%2Fen-us%2Fdotnet%2Fmaui%2Fget-started%2Finstallation-images%2Fvs-workloads.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%2Fdocs.microsoft.com%2Fen-us%2Fdotnet%2Fmaui%2Fget-started%2Finstallation-images%2Fvs-workloads.png" alt="Visual Studio workloads"&gt;&lt;/a&gt;&lt;em&gt;Source: &lt;a href="https://docs.microsoft.com/en-us/dotnet/maui/get-started/installation" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To run and debug in an Android emulator, setup an emulator within Visual Studio following this guide &lt;a href="https://docs.microsoft.com/en-us/xamarin/android/get-started/installation/android-emulator/" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/xamarin/android/get-started/installation/android-emulator/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have installed all that and the &lt;code&gt;maui-check&lt;/code&gt; succeeds, you are ready to create your first .NET MAUI application!&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a new MAUI app
&lt;/h2&gt;

&lt;p&gt;This guide will use Visual Studio to create our first .NET MAUI application. However, you can also create a new .NET MAUI application from the command line.&lt;/p&gt;

&lt;p&gt;In Visual Studio 16.11 Preview 2, select &lt;code&gt;Create a new project&lt;/code&gt;, search for &lt;code&gt;MAUI&lt;/code&gt; or choose &lt;code&gt;Project Type &amp;gt; MAUI&lt;/code&gt; from the dropdown.&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fnew-project.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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fnew-project.png" alt="Create project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The generated template contains two projects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;.NET MAUI project - targetting Android, iOS, and MacCatalyst&lt;/li&gt;
&lt;li&gt;WinUI Project - for Windows desktop applications&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fmaui-app.png%3Fv%3D1" 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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Fmaui-app.png%3Fv%3D1" alt="New project structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The team is working hard to consolidate all the projects into one to build and deploy across all platforms. The final consolidation will come in later versions.&lt;/p&gt;

&lt;p&gt;Run the application by selecting the target device, such as &lt;code&gt;Android Emulator&lt;/code&gt;, in the Visual Studio toolbar dropdown next to the &lt;code&gt;Start&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;The application is a simple Hello World counter app with a button to increase the counter.&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Ftemplate-app.png%3Fv%3D1" 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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fmaui%2Ftemplate-app.png%3Fv%3D1" alt="Template app image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You have created and run your first .NET MAUI application!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;❗ At the time of writing, there are a few bugs in the layout of the template application. &lt;a href="https://github.com/dotnet/maui/issues/1382" rel="noopener noreferrer"&gt;(issue #1382)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Fix the layout issues
&lt;/h3&gt;

&lt;p&gt;The two issues in the template application are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image does not show&lt;/li&gt;
&lt;li&gt;Numbers with multiple digits are cut off at the first digit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To fix this, we can change the layout from the &lt;code&gt;StackLayout&lt;/code&gt; in  &lt;code&gt;MainPage.xaml&lt;/code&gt; to a &lt;code&gt;VerticalStackLayout&lt;/code&gt;, newly introduced in .NET MAUI and remove each &lt;code&gt;Grid.Row&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;See this &lt;a href="https://github.com/melissahoughton/GettingStartedMaui/commit/969e1b9946a0b3460348b0774444f26997c2a2cf" rel="noopener noreferrer"&gt;commit&lt;/a&gt; on my GitHub for the full details of the change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;p&gt;As is to be expected with any preview, there are some issues you may have to address before you can fully get the project up and running. Below are the issues I ran into when writing this blog post.&lt;/p&gt;

&lt;h4&gt;
  
  
  Issue: Android Emulator crashes after launch
&lt;/h4&gt;

&lt;p&gt;To fix this, disable XAML Hot Reload in Visual Studio, follow the instructions in &lt;a href="https://github.com/dotnet/maui/issues/1361#issuecomment-864393535" rel="noopener noreferrer"&gt;this comment&lt;/a&gt; from the existing issue: &lt;a href="https://github.com/dotnet/maui/issues/1361" rel="noopener noreferrer"&gt;https://github.com/dotnet/maui/issues/1361&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Issue: Previous installations of .NET 6 Preview 4 cause issues in .NET 6 Preview 5
&lt;/h4&gt;

&lt;p&gt;See the Microsoft documentation here: &lt;a href="https://github.com/dotnet/core/blob/main/release-notes/6.0/known-issues.md#preview-5" rel="noopener noreferrer"&gt;https://github.com/dotnet/core/blob/main/release-notes/6.0/known-issues.md#preview-5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I expect the team will continue to work through all the &lt;a href="https://github.com/dotnet/maui/issues" rel="noopener noreferrer"&gt;issues&lt;/a&gt; leading up to General Availability in November.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using C# instead of XAML
&lt;/h2&gt;

&lt;p&gt;As a C# developer with little experience using Xamarin and XAML, I am most excited about the ability to define pages in .NET MAUI applications using C#. The existing examples and templates get you started using the traditional XAML based approach, carried over from Xamarin.Forms. In Xamarin.Forms, XAML is used to define the visual contents and works with a C# code-behind file. In .NET MAUI, you now have the option of using fluent C# or XAML to define the visual contents of a page.&lt;/p&gt;

&lt;p&gt;To translate the template from XAML to C#, follow the steps below or get the complete source code from my GitHub: &lt;a href="https://github.com/melissahoughton/GettingStartedMaui" rel="noopener noreferrer"&gt;https://github.com/melissahoughton/GettingStartedMaui&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;To use fluent C# to define the UI of the template .NET MAUI app, we will change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App&lt;/li&gt;
&lt;li&gt;MainPage&lt;/li&gt;
&lt;li&gt;Startup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: The two projects in the template (.NET MAUI and WinUI) share the App, MainPage, and Startup files. Any changes will automatically be reflected across both.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Delete &lt;code&gt;App.xaml&lt;/code&gt; and the code-behind &lt;code&gt;App.xaml.cs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: In Visual Studio, the code-behind file is nested under the &lt;code&gt;App.xaml&lt;/code&gt;. Deleting a XAML file in Visual Studio automatically deletes the associated code-behind.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new class called &lt;code&gt;App.cs&lt;/code&gt; with the below content&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui.Controls&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui.Graphics&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;GettingStartedMaui&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;App&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IApplication&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IWindow&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;_windows&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IWindow&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IReadOnlyList&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IWindow&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Windows&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;_windows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AsReadOnly&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IImageSourceServiceConfiguration&lt;/span&gt; &lt;span class="n"&gt;imageConfig&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;imageConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetImageDirectory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Assets"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IWindow&lt;/span&gt; &lt;span class="nf"&gt;CreateWindow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IActivationState&lt;/span&gt; &lt;span class="n"&gt;activationState&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;window&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Window&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;MainPage&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
            &lt;span class="n"&gt;_windows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the Extension Service Provider Factory to the app configuration in &lt;code&gt;Startup.cs&lt;/code&gt; to enable dependency injection for the &lt;code&gt;ImageSourceServiceConfiguration&lt;/code&gt; used in the step above.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;appBuilder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;UseMicrosoftExtensionsServiceProviderFactory&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete &lt;code&gt;MainPage.xaml&lt;/code&gt; and the code-behind &lt;code&gt;MainPage.xaml.cs&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new class called &lt;code&gt;MainPage.cs&lt;/code&gt; with the below content&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui.Controls&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Maui.Graphics&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;GettingStartedMaui&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;partial&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainPage&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ContentPage&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;MainPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;BackgroundColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FromArgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"#512bdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;verticalStack&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;VerticalStackLayout&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Spacing&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

            &lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Label&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;FontSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;HorizontalOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LayoutOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CenterAndExpand&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;TextColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;White&lt;/span&gt;
            &lt;span class="p"&gt;});&lt;/span&gt;
            &lt;span class="n"&gt;SemanticProperties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetHeadingLevel&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;BindableObject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Children&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Children&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Count&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;SemanticHeadingLevel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Level1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Label&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Welcome to .NET Multi-platform App UI"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;FontSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;HorizontalOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LayoutOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;TextColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;White&lt;/span&gt;
            &lt;span class="p"&gt;});&lt;/span&gt;

            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;counterLabel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Label&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Current count: 0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;FontSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;FontAttributes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FontAttributes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Bold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;HorizontalOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LayoutOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;TextColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;White&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;

            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;button&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Button&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Click me"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;HorizontalOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LayoutOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;TextColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;White&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;BackgroundColor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FromArgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"#2b0b98"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="n"&gt;Padding&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Thickness&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;

            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Clicked&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;++;&lt;/span&gt;
                &lt;span class="n"&gt;counterLabel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;$"Current count: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;

            &lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;counterLabel&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;verticalStack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Source&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"dotnet_bot.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;WidthRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HorizontalOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LayoutOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Center&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

            &lt;span class="n"&gt;Content&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ScrollView&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Padding&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;Content&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;verticalStack&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clean and rebuild the project&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You now are using fluent C# with your .NET MAUI application!&lt;/p&gt;

&lt;p&gt;Take a look at the &lt;a href="https://github.com/dotnet/maui" rel="noopener noreferrer"&gt;.NET MAUI GitHub&lt;/a&gt; for future updates and news on what is next with .NET MAUI. &lt;em&gt;Mahalo!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>maui</category>
      <category>crossplatform</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Aloha! Welcome to .NET MAUI</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Sun, 13 Jun 2021 06:31:53 +0000</pubDate>
      <link>https://dev.to/melissahoughton/aloha-welcome-to-net-maui-2n86</link>
      <guid>https://dev.to/melissahoughton/aloha-welcome-to-net-maui-2n86</guid>
      <description>&lt;p&gt;Aloha! Welcome to .NET MAUI! The all-new .NET Multi-platform App UI (MAUI). Announced at &lt;a href="https://news.microsoft.com/build-2020-book-of-news/" rel="noopener noreferrer"&gt;Microsoft Build 2020&lt;/a&gt;, Microsoft has evolved Xamarin.Forms and taken the next step in the &lt;a href="https://channel9.msdn.com/Events/Build/2020/BOD106" rel="noopener noreferrer"&gt;.NET unification&lt;/a&gt; to give you a cross-platform mobile-first framework for Android, iOS, macOS, and Windows. .NET MAUI will introduce new ways to build applications. Available in &lt;a href="https://dotnet.microsoft.com/download/dotnet/6.0" rel="noopener noreferrer"&gt;.NET 6&lt;/a&gt;, in preview now!&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fdotnet%2520maui.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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fdotnet%2520maui.png" alt=".NET MAUI"&gt;&lt;/a&gt;&lt;em&gt;.NET MAUI (source: &lt;a href="https://youtu.be/GJ_PaRNDe9E" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is .NET MAUI?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;.NET Multi-platform App UI (MAUI) is the evolution of Xamarin.Forms extended from mobile to desktop scenarios with UI controls rebuilt from the ground up for performance and extensibility&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Maddy Leger, Program Manager Xamarin/.NET MAUI Team "&lt;a href="https://youtu.be/fPEdgXeqhE4" rel="noopener noreferrer"&gt;The Future of Native Apps Development in .NET 6&lt;/a&gt;"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;MAUI will help you deliver high-performance, cross-platform, native desktop and mobile apps from a single codebase. With .NET MAUI, you can build your apps for any device from a single codebase and project system, using one language, one set of libraries, and one UI stack for all.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are Xamarin and Xamarin.Forms?
&lt;/h3&gt;

&lt;p&gt;The most common descriptor for MAUI is &lt;em&gt;the evolution of Xamarin.Forms&lt;/em&gt;, but what are Xamarin and Xamarin.Forms?&lt;/p&gt;

&lt;p&gt;Xamarin is an open-source .NET platform for building iOS, Andriod, macOS, and Windows applications. Introduced in 2011, Xamarin allows you to share business logic across platforms using .NET while creating a native UI for each. Xamarin allows developers to share an average of &lt;a href="https://docs.microsoft.com/en-us/xamarin/get-started/what-is-xamarin" rel="noopener noreferrer"&gt;90% of their application across platforms&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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fxamarin.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%2Fmelissadevstorage.blob.core.windows.net%2Fmelissadevblob%2Fxamarin.png" alt=".NET Mobile Apps with Xamarin"&gt;&lt;/a&gt;&lt;em&gt;.NET Mobile Apps with Xamarin (source: &lt;a href="https://channel9.msdn.com/Events/Build/2020/BOD107" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To help with the overhead of creating native UI's for each platform, we have Xamarin.Forms.&lt;/p&gt;

&lt;p&gt;Xamarin.Forms is an open-source UI framework that allows you to combine the code for Xamarin.Android, Xamarin.iOS, Xamarin.Mac and Windows applications into a single shared codebase.&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%2Fdocs.microsoft.com%2Fen-us%2Fxamarin%2Fget-started%2Fwhat-is-xamarin-forms-images%2Fxamarin-forms-architecture.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%2Fdocs.microsoft.com%2Fen-us%2Fxamarin%2Fget-started%2Fwhat-is-xamarin-forms-images%2Fxamarin-forms-architecture.png" alt="Xamarin Forms Architecture"&gt;&lt;/a&gt;&lt;em&gt;What is Xamarin.Forms (source: &lt;a href="https://docs.microsoft.com/en-us/xamarin/get-started/what-is-xamarin-forms" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Microsoft aims to create a unified .NET platform, replacing .NET Framework, .NET Core, and Xamarin. .NET MAUI is the next step in unifying .NET, replacing Xamarin.Forms. It addresses some of the issues and downsides of Xamarin.Forms while providing an updated architecture on top of the new generation of .NET and project system.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about my Xamarin.Forms skills and applications?
&lt;/h3&gt;

&lt;p&gt;Think of .NET MAUI as a new version of Xamarin.Forms. Microsoft has assured us that our Xamarin.Forms skills are transferable.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Xamarin.Forms developers will hit the ground running with new projects in .NET MAUI, using all the same controls and APIs they have grown to know and love. &lt;em&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There will also be tools and guidance to help migrate applications. The team expect to have a version of the .NET Upgrade Assistant that can migrate Xamarin and Xamarin.Forms projects to .NET 6 and .NET MAUI in the &lt;a href="https://github.com/dotnet/maui/wiki/Roadmap#net-maui-in-net-6-preview-6-july-2021" rel="noopener noreferrer"&gt;July 2021 Preview 6 release&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is different about MAUI?
&lt;/h2&gt;

&lt;p&gt;If we already have Xamarin.Forms, what is so special about .NET MAUI? Microsoft is rebuilding the core of Xamarin.Forms, bringing us performance improvements, consistent design systems, and an extension from mobile to desktop.&lt;/p&gt;

&lt;p&gt;Key Improvements in MAUI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single project experience across platforms&lt;/li&gt;
&lt;li&gt;.NET Hot Reload&lt;/li&gt;
&lt;li&gt;Modern App Patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Single Project Experience
&lt;/h3&gt;

&lt;p&gt;.NET MAUI allows us to have a single project experience instead of one project for each target platform. A single project improves the developer experience by enabling developers to target and debug different devices without switching between projects or navigating the idiosyncrasies of each platform. We can use one language across our application to target all the supported platforms and easily share resources across while maintaining an option for platform-specific code.&lt;/p&gt;

&lt;h3&gt;
  
  
  .NET Hot Reload
&lt;/h3&gt;

&lt;p&gt;Hot reload increases productivity for .NET developers, allowing instant updates to running applications with new code changes. Removing the build and deploy interruptions saves time and allows the development flow to continue. In .NET, they are expanding Hot Reload, bringing complete support to .NET MAUI along with other workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern App Patterns
&lt;/h3&gt;

&lt;p&gt;Model-View-ViewModel (MVVM) and XAML pattern, used in existing Xamarin.Forms applications, will continue to be supported and improved with the evolution. .NET MAUI will introduce further support for the Model-View-Update (MVU) development pattern, popular in C#, enabling developers to write fluent C# UI, creating a code-first development experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new from Microsoft Build 2021?
&lt;/h2&gt;

&lt;p&gt;During Microsoft Build 2021, Microsoft announced the availability of &lt;a href="https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4/" rel="noopener noreferrer"&gt;.NET MAUI Preview 4&lt;/a&gt;. Each preview provides us with more features and tools with general availability scheduled for November 2021 at &lt;a href="https://www.dotnetconf.net/" rel="noopener noreferrer"&gt;.NET Conf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the release of Preview 4, you can now create functional applications across all supported platforms using .NET MAUI. In addition, they have added new capabilities to support running Blazor on desktop using .NET MAUI, allowing the reuse of Blazor UI components across native desktop and web applications.&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%2Fgithub.com%2Fdavidortinau%2FWeatherTwentyOne%2Fblob%2Fmain%2Fimages%2Fmaui-weather-hero-sm.png%3Fraw%3Dtrue" 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%2Fgithub.com%2Fdavidortinau%2FWeatherTwentyOne%2Fblob%2Fmain%2Fimages%2Fmaui-weather-hero-sm.png%3Fraw%3Dtrue" alt="Weather Twenty One .NET MAUI Preview 4"&gt;&lt;/a&gt;&lt;em&gt;Weather Twenty One .NET MAUI Preview 4 Demo (source: &lt;a href="https://github.com/davidortinau/WeatherTwentyOne" rel="noopener noreferrer"&gt;David Ortinau&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Alongside Preview 4 is the release of &lt;a href="https://visualstudio.microsoft.com/vs/preview/" rel="noopener noreferrer"&gt;Visual Studio 2019 version 16.11 Preview&lt;/a&gt;. The Visual Studio 2019 16.11 Preview enables .NET Hot Reload for MAUI and provides productivity features for developing .NET MAUI projects. A project template option for a .NET MAUI application is now available in the 16.11 Preview, encompassing the new solution format with the multi-targeted project.&lt;/p&gt;

&lt;p&gt;To see what is coming in future releases, visit the MAUI &lt;a href="https://github.com/dotnet/maui/wiki/roadmap" rel="noopener noreferrer"&gt;product roadmap&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you get started?
&lt;/h2&gt;

&lt;p&gt;Before you get started, Microsoft has created a &lt;code&gt;dotnet tool&lt;/code&gt; called &lt;code&gt;maui-check&lt;/code&gt; that evaluates your system for development in .NET MAUI. The tool will scan for the required dependencies and try to fix any issues for you or suggest a way to fix them yourself.&lt;/p&gt;

&lt;p&gt;Tool source: &lt;a href="https://github.com/Redth/dotnet-maui-check" rel="noopener noreferrer"&gt;https://github.com/Redth/dotnet-maui-check&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; Redth.Net.Maui.Check
maui-check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have the complete .NET MAUI development environment setup, you can create your first app by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet new maui &lt;span class="nt"&gt;-n&lt;/span&gt; AlohaMaui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations! You have a new .NET MAUI application.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Check out the resources below to find out more about .NET MAUI and the exciting future in the .NET ecosystem. Mahalo!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/dotnet/maui" rel="noopener noreferrer"&gt;https://github.com/dotnet/maui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dotnet/maui/wiki/Getting-Started" rel="noopener noreferrer"&gt;https://github.com/dotnet/maui/wiki/Getting-Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4/" rel="noopener noreferrer"&gt;https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/events/build-may-2021/azure/breakouts/od485/" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/events/build-may-2021/azure/breakouts/od485/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/xamarin/get-started/what-is-xamarin-forms" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/xamarin/get-started/what-is-xamarin-forms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devblogs.microsoft.com/xamarin/the-new-net-multi-platform-app-ui-maui/" rel="noopener noreferrer"&gt;https://devblogs.microsoft.com/xamarin/the-new-net-multi-platform-app-ui-maui/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://channel9.msdn.com/Events/Build/2020/BOD107?ocid=AID3012654&amp;amp;WT.mc_id=build2020-azuredevtips-micrum" rel="noopener noreferrer"&gt;https://channel9.msdn.com/Events/Build/2020/BOD107&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://channel9.msdn.com/Events/Build/2020/BOD106" rel="noopener noreferrer"&gt;https://channel9.msdn.com/Events/Build/2020/BOD106&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://channel9.msdn.com/Shows/On-NET/A-Journey-to-NET-MAUI" rel="noopener noreferrer"&gt;https://channel9.msdn.com/Shows/On-NET/A-Journey-to-NET-MAUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>maui</category>
      <category>crossplatform</category>
    </item>
    <item>
      <title>JavaScript in the Cloud</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Mon, 22 Mar 2021 04:09:29 +0000</pubDate>
      <link>https://dev.to/melissahoughton/javascript-in-the-cloud-b2d</link>
      <guid>https://dev.to/melissahoughton/javascript-in-the-cloud-b2d</guid>
      <description>&lt;p&gt;&lt;em&gt;A look at the history of JavaScript and the fun stuff you can do with &lt;strong&gt;JavaScript&lt;/strong&gt; in the &lt;strong&gt;cloud!&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Traditionally, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt; is the language of the web, and it still is. But today, it's so much more. With the advent of server-side JavaScript and JavaScript support in major cloud platforms, JavaScript's power increased dramatically. Building, maintaining, optimising, and deploying end-to-end JavaScript applications is possible with JavaScript in the cloud.&lt;/p&gt;

&lt;p&gt;Cloud platforms give us the tools, elasticity and scalability to create high performing applications without managing the physical infrastructure. You can take advantage of the cloud while using a language you already know: &lt;strong&gt;JavaScript!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Cloud?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://azure.microsoft.com/en-au/overview/what-is-the-cloud/" rel="noopener noreferrer"&gt;cloud&lt;/a&gt; refers to software and services that run on the Internet instead of locally on your computer. The cloud is a server somewhere else, usually in a big data centre. Cloud providers such as &lt;a href="https://azure.microsoft.com/" rel="noopener noreferrer"&gt;Azure&lt;/a&gt;, &lt;a href="https://aws.amazon.com/" rel="noopener noreferrer"&gt;AWS&lt;/a&gt;, &lt;a href="https://cloud.google.com/" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; allow you to rent space on a server and pay for what you use. They let you scale as your business needs change while they manage the physical infrastructure for you. Think of it as renting a house or renting a piece of land, providing different control levels over managing the property, depending on which type of cloud computing you are using.&lt;/p&gt;

&lt;p&gt;So really, there is no cloud. It's just someone else's computer.&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%2F5k4g60athpn87g7q4uj9.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%2F5k4g60athpn87g7q4uj9.png" alt="There is no cloud, it's just someone else's computer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is JavaScript?
&lt;/h2&gt;

&lt;p&gt;JavaScript is a language that allows you to implement complex features on web pages.&lt;/p&gt;

&lt;p&gt;It was created in &lt;a href="http://speakingjs.com/es5/ch04.html" rel="noopener noreferrer"&gt;1995 in just ten days&lt;/a&gt; by &lt;a href="https://brendaneich.com/" rel="noopener noreferrer"&gt;Brendan Eich&lt;/a&gt;, who worked for &lt;a href="https://isp.netscape.com/" rel="noopener noreferrer"&gt;Netscape&lt;/a&gt;. He created JavaScript as a scripting tool to manipulate web pages in the Netscape Navigator browser.&lt;/p&gt;

&lt;p&gt;JavaScript took off to become the most popular client-side programming language. Today &lt;a href="https://w3techs.com/technologies/details/cp-javascript" rel="noopener noreferrer"&gt;97% of the web uses JavaScript&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;However, JavaScript is much more than just a client-side programming language. &lt;a href="https://www.hanselman.com/" rel="noopener noreferrer"&gt;Scott Hanselman&lt;/a&gt;, a Partner Program Manager at Microsoft, even went so far as to say that he proposes &lt;a href="https://youtu.be/msPocYnU0N4?t=2532" rel="noopener noreferrer"&gt;JavaScript is an operating system&lt;/a&gt;. He based the comparison on the fact that JavaScript has the same characteristics as an operating system.&lt;/p&gt;

&lt;p&gt;JavaScript is a flexible and robust language. Thus, it makes sense for us to use JavaScript in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript in the Cloud
&lt;/h2&gt;

&lt;p&gt;Initially, Eich wrote JavaScript as both a client and server-side language. However, it didn't become popular as a server-side language until later on with the &lt;a href="https://nodejs.dev/learn/a-brief-history-of-nodejs" rel="noopener noreferrer"&gt;creation of Node.js in 2009&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nodejs.dev/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. With the advent of Node.js as a server-side JavaScript programming language, it opened up the ability to use JavaScript in the cloud.&lt;/p&gt;

&lt;p&gt;Today, all the major cloud providers support JavaScript in the cloud.&lt;/p&gt;

&lt;p&gt;And, in the words of &lt;a href="https://www.hanselman.com/" rel="noopener noreferrer"&gt;Scott Hanselman&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The cloud doesn't care about language choice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tools for JavaScript in the Cloud
&lt;/h2&gt;

&lt;p&gt;If you are looking to develop JavaScript in the cloud, there are some excellent tools and guides out there to help you. JavaScript IDEs such as &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; and &lt;a href="https://www.jetbrains.com/webstorm/" rel="noopener noreferrer"&gt;WebStorm&lt;/a&gt; have extensions that let you integrate with your favourite cloud providers, access quickstart templates, write, debug and deploy your cloud applications.&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%2Fp1pohbahyq1f7q2tblgv.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%2Fp1pohbahyq1f7q2tblgv.gif" alt="Creating an Azure Function in VS Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All major providers have a suite of SDKs and client libraries in JavaScript to integrate with their services from your JavaScript application. These libraries allow you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recognise and transcribe human speech with &lt;a href="https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/get-started-speech-to-text?tabs=windowsinstall&amp;amp;pivots=programming-language-browserjs" rel="noopener noreferrer"&gt;speech to text&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Integrate into an &lt;a href="https://docs.microsoft.com/en-us/azure/digital-twins/overview" rel="noopener noreferrer"&gt;Azure Digital Twins&lt;/a&gt; solution&lt;/li&gt;
&lt;li&gt;Add a rich &lt;a href="https://docs.microsoft.com/en-au/azure/search/search-what-is-azure-search" rel="noopener noreferrer"&gt;Cognitive Search&lt;/a&gt; to your web app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And much more!&lt;/p&gt;

&lt;h2&gt;
  
  
  Power of JavaScript
&lt;/h2&gt;

&lt;p&gt;JavaScript is a powerful language. We can use JavaScript for web, mobile, gaming, artificial intelligence, and so much more.&lt;/p&gt;

&lt;p&gt;Watch Scott Hanselman's talk &lt;a href="https://youtu.be/msPocYnU0N4" rel="noopener noreferrer"&gt;JavaScript, The Cloud, and The Rise of the New Virtual Machine&lt;/a&gt; to see a demo of a complete implementation of Linux and Pentium processor implemented in JavaScript and some other crazy things you can do in JavaScript.&lt;/p&gt;

&lt;p&gt;There is a concept called the &lt;a href="https://www.w3.org/2001/tag/doc/leastPower.html" rel="noopener noreferrer"&gt;Rule of Least Power&lt;/a&gt; from &lt;a href="https://www.w3.org/People/Berners-Lee/" rel="noopener noreferrer"&gt;Tim Berners-Lee&lt;/a&gt;, the creator of the web. The rule suggests choosing the least powerful language suitable for a given purpose.&lt;/p&gt;

&lt;p&gt;As a &lt;a href="https://www.merriam-webster.com/dictionary/corollary" rel="noopener noreferrer"&gt;corollary&lt;/a&gt; to this rule, we get &lt;a href="https://blog.codinghorror.com/the-principle-of-least-power/" rel="noopener noreferrer"&gt;Atwood's Law&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Any application that &lt;em&gt;can&lt;/em&gt; be written in JavaScript, &lt;em&gt;will&lt;/em&gt; eventually be written in JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In conclusion, I hope if you are not yet using JavaScript, you go out and learn it today. If you already are using JavaScript, I hope you start exploring what you can do with it.&lt;/p&gt;

&lt;p&gt;Because the opportunities with JavaScript are endless, especially when paired with the power of the cloud.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>cloud</category>
      <category>node</category>
      <category>azure</category>
    </item>
    <item>
      <title>Nevertheless, She Coded: Melissa Houghton</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Mon, 15 Mar 2021 04:48:27 +0000</pubDate>
      <link>https://dev.to/melissahoughton/nevertheless-she-coded-melissa-houghton-3g72</link>
      <guid>https://dev.to/melissahoughton/nevertheless-she-coded-melissa-houghton-3g72</guid>
      <description>&lt;p&gt;&lt;em&gt;In honour of International Women's Day, I &lt;a href="https://www.internationalwomensday.com/theme"&gt;#ChooseToChallenge&lt;/a&gt;, starting by creating awareness and sharing my journey as a woman in tech.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw8r3wkibqrtn3bm1pk4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw8r3wkibqrtn3bm1pk4.jpg" alt="Choose to Challenge" width="800" height="1066"&gt;&lt;/a&gt;&lt;em&gt;Me raising my hand to show I am in and that I commit to #ChooseToChallenge&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Do You Want To Be?
&lt;/h2&gt;

&lt;p&gt;Adults constantly ask kids what they want to be when they grow up.&lt;/p&gt;

&lt;p&gt;The trouble is, many of us do not know what we want to be. Too often, society pushes us into becoming something we do not want to be or pushes us away from what we genuinely love.&lt;/p&gt;

&lt;p&gt;And now, and for the coming generations, we are likely to hold jobs that did not exist or were unheard of when we were young.&lt;/p&gt;

&lt;p&gt;My mom always says that she &lt;em&gt;still&lt;/em&gt; does not know what she wants to be.&lt;/p&gt;

&lt;p&gt;If you told me I would become a software developer, I would have no idea what that meant. I would certainly not know how much I would love it.&lt;/p&gt;

&lt;p&gt;Growing up, I did not conform to the traditionally &lt;em&gt;girly&lt;/em&gt; pastimes and often challenged the status quo. As a kid, you could find me up a tree or playing sports while also playing with Barbies and having tea parties.&lt;/p&gt;

&lt;p&gt;One of my most memorable toys was an &lt;a href="https://en.wikipedia.org/wiki/Intel_Play"&gt;Intel Play QX3 Microscope&lt;/a&gt; which could connect to a computer. I would spend hours with it, examining things up close and getting very creative with the software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfdrx9yvexenyfhrnxb2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfdrx9yvexenyfhrnxb2.jpg" alt="Microscope" width="800" height="600"&gt;&lt;/a&gt;&lt;em&gt;Me with my Intel Play QX3 Microscope, circa 2000&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My parents supported me in doing what I wanted. They provided me with opportunities to explore all areas — eventually leading me to find my love for Science, Technology, Engineering and Mathematics (STEM).&lt;/p&gt;

&lt;p&gt;Yet life in tech is not what I would have expected for myself, although looking back, I should have known.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Journey Into Tech
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I didn't find tech; tech found me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a kid, I spent lots of time having fun on the computer. For a middle school project, I created an animation about cave dwellers in PowerPoint. In high school, I spent hours customising my MySpace page, which, unbeknownst to me, meant I was working with HTML and CSS.&lt;/p&gt;

&lt;p&gt;When it came time to apply for Universities and choose my major, I knew I wanted to get into STEM. Computer Science did not even occur to me as something I would enjoy. I chose Mechanical Engineering because I knew it had a lot of math and science, and my dad was a Mechanical Engineer.&lt;/p&gt;

&lt;p&gt;Into my first year, I realised it was not for me. I changed to pure Mathematics, which has always been my favourite subject. Under my Maths degree, I took an Introduction to Java course. We had an assignment to change an image to black and white using code. The visual presentation of the code coming to life made me fall in love with programming.&lt;/p&gt;

&lt;p&gt;After that, I changed my degree to be both Mathematics and Computer Science. The following summer, I landed an internship as a developer and have never looked back.&lt;/p&gt;

&lt;p&gt;I was lucky to find an area I loved and the confidence to pursue it.&lt;/p&gt;

&lt;p&gt;Yet, I still had a constant pressure to do certain things, to like certain things and act in a certain way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nevertheless, I Coded
&lt;/h2&gt;

&lt;p&gt;Walking into my first Computer Science University course, I found myself one of two females in the whole 200 person lecture hall.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I avoided the computer lab as much as possible. When I did have to go to the lab, I could feel the room full of men staring at me, wondering why I was there. I felt very out of place and that I did not belong.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Men in bars would tell me, "You are too pretty to be studying Computer Science; you should be a model instead."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have been called bossy. I have had ideas ignored, only for a man to suggest the same thing and have others listen.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To this day, I am often the only female in the room. More often than not, I am assumed to be in a less technical role than I am.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have been told I only got the opportunity because I am female.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nevertheless, I coded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I could go on.&lt;/p&gt;

&lt;p&gt;Despite my parents best efforts to put the world at my fingertips, society decided to push back. Thankfully, I have been strong and continued on my path. I have continued to ignore all the &lt;strong&gt;bullshit&lt;/strong&gt; and do what I love.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Did I Do It?
&lt;/h2&gt;

&lt;p&gt;I got involved in the tech community. There I found likeminded people and networks dedicated to supporting women in tech.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19kmgk2vqvric23ca61c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19kmgk2vqvric23ca61c.jpeg" alt="Bankwest Girls CoderDojo" width="800" height="599"&gt;&lt;/a&gt;&lt;em&gt;Mentors for the Bankwest Girls CoderDojo, April 2018&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I surrounded myself with those who did not care what I did. Those who saw past my gender and appreciated my hard work and skills for what they were.&lt;/p&gt;

&lt;p&gt;I learned to believe in myself. To get over my &lt;a href="https://melissahoughton.dev/2020/02/22/impostor-syndrome.html"&gt;impostor syndrome&lt;/a&gt; and learn not to care what others thought.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Advice to You
&lt;/h2&gt;

&lt;p&gt;My advice to you, no matter your gender, industry, or role, is to support those around you. Make others feel welcome, leave biases at the door. Approach everything with an open mind.&lt;/p&gt;

&lt;p&gt;Bring others along for the ride and help them break out of their comfort zones. They might be too shy to do it themselves. They might feel out of place or that it is not suitable for them.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1362957830332973058-492" src="https://platform.twitter.com/embed/Tweet.html?id=1362957830332973058"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1362957830332973058-492');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1362957830332973058&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;But it's never too late to explore and find out what you love, no matter what society tells us to do.&lt;/p&gt;

&lt;p&gt;Inspire the next generation to do the same and challenge the status quo.&lt;/p&gt;

&lt;p&gt;You can choose to challenge, call out inequality, change your words and actions and advocate for others.&lt;/p&gt;

&lt;p&gt;Know that you are not alone, and nevertheless, &lt;strong&gt;#WeCoded&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;International Women's Day: &lt;a href="https://www.internationalwomensday.com/"&gt;https://www.internationalwomensday.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DEV #SheCoded Celebration: &lt;a href="https://dev.to/shecoded"&gt;https://dev.to/shecoded&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Women in Tech Communities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.womenwhocode.com/"&gt;Women Who Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.womentechmakers.com/"&gt;Women Tech Makers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.witwa.org.au/"&gt;Women In IT WA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://musescodejs.org/"&gt;Muses Code JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://shecodes.com.au/"&gt;She Codes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://australia.girlsintech.org/"&gt;Girls In Tech Australia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codelikeagirl.com/"&gt;Code Like A Girl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wit.org.au/"&gt;Women in Technology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yowconference.com/newvoices/"&gt;YOW! New Voices in Tech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techgirlsmovement.org/"&gt;Tech Girls Movement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Watch a discussion from Microsoft #NewBreakpoint about tangible ways you can support Women in Tech&lt;/p&gt;

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




</description>
      <category>wecoded</category>
      <category>womenintech</category>
      <category>choosetochallenge</category>
    </item>
    <item>
      <title>Getting Started with Angular Material</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Sun, 12 Jul 2020 06:40:15 +0000</pubDate>
      <link>https://dev.to/melissahoughton/getting-started-with-angular-material-3ef2</link>
      <guid>https://dev.to/melissahoughton/getting-started-with-angular-material-3ef2</guid>
      <description>&lt;p&gt;This tutorial will provide an overview of how to get started with &lt;a href="https://material.angular.io/"&gt;Angular Material&lt;/a&gt;, a UI component library that implements &lt;a href="https://material.io/design"&gt;Material Design&lt;/a&gt; in &lt;a href="https://angular.io/"&gt;Angular&lt;/a&gt;. We will cover how to set up an Angular application to use Angular Material and create content to demonstrate the material components, as seen below.&lt;/p&gt;

&lt;p&gt;The full code from this tutorial is on my GitHub. Each commit aligns to a step in this post.&lt;br&gt;
&lt;a href="https://github.com/melissahoughton/angular-material-blog"&gt;https://github.com/melissahoughton/angular-material-blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2-g1It-4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pdy955xvbubrg6y78g07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2-g1It-4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pdy955xvbubrg6y78g07.png" alt="Angular Material Component Example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Set up
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Generate the app
&lt;/h2&gt;

&lt;p&gt;Generate a new Angular app and add Angular Material.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Angular CLI to generate a new Angular App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;ng new my-app&lt;/code&gt; in the command line, replacing &lt;code&gt;my-app&lt;/code&gt; with the name of the app.&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;Y&lt;/code&gt; for routing.&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;SCSS&lt;/code&gt; for styles.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add Angular Material&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run the following commands&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
ng add @angular/material
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Choose any of the prebuilt themes provided.&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;Y&lt;/code&gt; for global typography (font styles).&lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;Y&lt;/code&gt; for animations.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;add&lt;/code&gt; command will install &lt;code&gt;@angular/cdk&lt;/code&gt; and &lt;code&gt;@angular/material&lt;/code&gt; libraries and set up the material fonts, icons and base styles.&lt;/p&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Remove defaults
&lt;/h2&gt;

&lt;p&gt;The current content is auto-generated by Angular in the first step, but we want to create our own.&lt;/p&gt;

&lt;p&gt;Remove everything in &lt;code&gt;app.component.html&lt;/code&gt; except for &lt;code&gt;&amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the material module
&lt;/h2&gt;

&lt;p&gt;To use the material components in the app, we need to import them. Create a separate &lt;code&gt;material.module.ts&lt;/code&gt; to import the individual components, and in the next step, we will import the material module into the app.&lt;/p&gt;

&lt;p&gt;While not recommended, the material components can be imported directly into the &lt;code&gt;app.module.ts&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;We will import all the available components for Angular Material to be ready for use in the app. You can simplify this file later to import only the required components.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a folder called &lt;code&gt;material&lt;/code&gt; in &lt;code&gt;src\app&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a file called &lt;code&gt;material.module.ts&lt;/code&gt; and copy the below contents into that file. Or copy this material module file from my &lt;a href="https://github.com/melissahoughton/material.module/blob/master/material.module.ts"&gt;GitHub&lt;/a&gt; into the folder.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;A11yModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/a11y&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ClipboardModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/clipboard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DragDropModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/drag-drop&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PortalModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/portal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ScrollingModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/scrolling&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CdkStepperModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/stepper&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CdkTableModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/table&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CdkTreeModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/cdk/tree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatAutocompleteModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/autocomplete&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatBadgeModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/badge&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatBottomSheetModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/bottom-sheet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatButtonModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatButtonToggleModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/button-toggle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatCardModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/card&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatCheckboxModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/checkbox&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatChipsModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/chips&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatStepperModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/stepper&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatDatepickerModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/datepicker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatDialogModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/dialog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatDividerModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/divider&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatExpansionModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/expansion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatGridListModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/grid-list&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatIconModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/icon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatInputModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatListModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/list&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatMenuModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/menu&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatNativeDateModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;MatRippleModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatPaginatorModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/paginator&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatProgressBarModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/progress-bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatProgressSpinnerModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/progress-spinner&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatRadioModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/radio&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSelectModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/select&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSidenavModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/sidenav&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSliderModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/slider&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSlideToggleModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/slide-toggle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSnackBarModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/snack-bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatSortModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/sort&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatTableModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/table&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatTabsModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/tabs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatToolbarModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/toolbar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatTooltipModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/tooltip&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MatTreeModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/material/tree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;A11yModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;ClipboardModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;CdkStepperModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;CdkTableModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;CdkTreeModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;DragDropModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatAutocompleteModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatBadgeModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatBottomSheetModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatButtonModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatButtonToggleModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatCardModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatCheckboxModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatChipsModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatStepperModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatDatepickerModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatDialogModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatDividerModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatExpansionModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatGridListModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatIconModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatInputModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatListModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatMenuModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatNativeDateModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatPaginatorModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatProgressBarModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatProgressSpinnerModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatRadioModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatRippleModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSelectModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSidenavModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSliderModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSlideToggleModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSnackBarModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatSortModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatTableModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatTabsModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatToolbarModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatTooltipModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;MatTreeModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;PortalModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;ScrollingModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;MaterialModule&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file imports all the available material components and adds them as exports in a &lt;code&gt;MaterialModule&lt;/code&gt; which will expose them to the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Import the material module
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;app.module.ts&lt;/code&gt;, an import statement to the material module created in the last step.&lt;/p&gt;

&lt;p&gt;Add &lt;code&gt;MaterialModule&lt;/code&gt; to the imports array of the &lt;code&gt;AppModule&lt;/code&gt; to import it into the app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/platform-browser&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AppRoutingModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app-routing.module&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserAnimationsModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/platform-browser/animations&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;MaterialModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./material/material.module&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;declarations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nx"&gt;AppComponent&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nx"&gt;BrowserModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;AppRoutingModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;BrowserAnimationsModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;MaterialModule&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
&lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;AppComponent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;AppModule&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The app is now ready to use angular material. Continue on the next step to add content into the app, which demonstrates material components.&lt;/p&gt;

&lt;h1&gt;
  
  
  Add content
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create a component
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Generate a component using Angular CLI&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;ng generate component home&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set up the routes&lt;/p&gt;

&lt;p&gt;Replace the empty routes in &lt;code&gt;app.routing.module.ts&lt;/code&gt; with&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;HomeComponent&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;**&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;redirectTo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;pathMatch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;full&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These steps have created a component called &lt;code&gt;Home&lt;/code&gt; and set this as the base page.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;ng serve&lt;/code&gt; to compile the app and see the text &lt;code&gt;home works!&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add basic styles
&lt;/h2&gt;

&lt;p&gt;Add basic styles to create spacing on the page.&lt;br&gt;
We will use &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox"&gt;CSS FlexBox&lt;/a&gt;.&lt;br&gt;
Angular also provides a robust Flex-Layout API &lt;a href="https://github.com/angular/flex-layout"&gt;@angular/flex-layout&lt;/a&gt; which combines CSS FlexBox and mediaQuery.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add the material background style. In &lt;code&gt;index.html&lt;/code&gt; add class &lt;code&gt;mat-app-background&lt;/code&gt; to the body tag.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wrap the &lt;code&gt;&amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;&lt;/code&gt; tag in a &lt;code&gt;div&lt;/code&gt; with a class &lt;code&gt;container&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following styles into &lt;code&gt;app.component.scss&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;800px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4em&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Add the following styles into &lt;code&gt;home.component.scss&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.flex-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;space-around&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.mat-radio-button&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="nc"&gt;.mat-radio-button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create a header toolbar bar
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;app.component.html&lt;/code&gt; add a toolbar above the container div to be our app header&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;mat-toolbar&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"mat-elevation-z6"&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/mat-toolbar&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;ng-serve&lt;/code&gt; and open your browser to see the header at the top of the app.&lt;/p&gt;

&lt;p&gt;We have now added our first Angular Material component. The components are styled based on the theme.&lt;br&gt;
We have set the bar to the theme's primary colour using the &lt;code&gt;color&lt;/code&gt; attribute.&lt;br&gt;
The material &lt;code&gt;elevation&lt;/code&gt; classes add shadows to create a textured material look.&lt;/p&gt;
&lt;h2&gt;
  
  
  Add Angular Material Components
&lt;/h2&gt;

&lt;p&gt;Replace the contents of &lt;code&gt;home.component.html&lt;/code&gt; with the below code, which contains a sample of material components. Refresh your browser to see the Angular Material components in action.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"mat-display-1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Easy, Breezy, Beautiful: Angular Material&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Here are some random angular material components&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;mat-card&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-card-header&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;mat-card-avatar&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.pixabay.com/photo/2018/10/11/12/31/black-cat-3739702_1280.jpg"&lt;/span&gt;
            &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"My Photos"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-card-title&amp;gt;&lt;/span&gt;Easy, Breezy, Beautiful&lt;span class="nt"&gt;&amp;lt;/mat-card-title&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-card-subtitle&amp;gt;&lt;/span&gt;Angular Material&lt;span class="nt"&gt;&amp;lt;/mat-card-subtitle&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-card-header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-card-content&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
            This is an amazing blog on Angular Material. Here is some awesome text about Angular Material.
            Here is some awesome text about Angular Material. Here is some awesome text about Angular Material.
            Here is some awesome text about Angular Material. Here is some awesome text about Angular Material.
            Here is some awesome text about Angular Material. Here is some awesome text about Angular Material.
        &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-card-content&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-card-actions&lt;/span&gt; &lt;span class="na"&gt;align=&lt;/span&gt;&lt;span class="s"&gt;"end"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-raised-button&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Read More&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-card-actions&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/mat-card&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-raised-button&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Raised Primary&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-raised-button&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"accent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Raised Accent&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-stroked-button&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Basic Stroked&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-stroked-button&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Stroked Primary&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-fab&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-icon&amp;gt;&lt;/span&gt;thumb_up&lt;span class="nt"&gt;&amp;lt;/mat-icon&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;mat-radio-group&lt;/span&gt; &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Select an option"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-radio-button&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Option 1&lt;span class="nt"&gt;&amp;lt;/mat-radio-button&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-radio-button&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Option 2&lt;span class="nt"&gt;&amp;lt;/mat-radio-button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-radio-group&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;mat-checkbox&amp;gt;&lt;/span&gt;Check me!&lt;span class="nt"&gt;&amp;lt;/mat-checkbox&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;mat-form-field&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-label&amp;gt;&lt;/span&gt;Choose a date&lt;span class="nt"&gt;&amp;lt;/mat-label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;matInput&lt;/span&gt; &lt;span class="na"&gt;[matDatepicker]=&lt;/span&gt;&lt;span class="s"&gt;"picker"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-datepicker-toggle&lt;/span&gt; &lt;span class="na"&gt;matSuffix&lt;/span&gt; &lt;span class="na"&gt;[for]=&lt;/span&gt;&lt;span class="s"&gt;"picker"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/mat-datepicker-toggle&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-datepicker&lt;/span&gt; &lt;span class="na"&gt;#picker&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/mat-datepicker&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-form-field&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;mat-slider&amp;gt;&amp;lt;/mat-slider&amp;gt;&lt;/span&gt;


    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;mat-flat-button&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt; &lt;span class="na"&gt;matTooltip=&lt;/span&gt;&lt;span class="s"&gt;"Info about the action"&lt;/span&gt; &lt;span class="na"&gt;matTooltipPosition=&lt;/span&gt;&lt;span class="s"&gt;"after"&lt;/span&gt;
        &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Button that displays a tooltip when focused or hovered over"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Tooltip
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;mat-paginator&lt;/span&gt; &lt;span class="na"&gt;[length]=&lt;/span&gt;&lt;span class="s"&gt;"100"&lt;/span&gt; &lt;span class="na"&gt;[pageSize]=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt; &lt;span class="na"&gt;[pageSizeOptions]=&lt;/span&gt;&lt;span class="s"&gt;"[5, 10, 25, 100]"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/mat-paginator&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Congratulations!&lt;/strong&gt; You now have an Angular app using Angular Material.&lt;/p&gt;

&lt;p&gt;Check out the Angular Material &lt;a href="https://material.angular.io/components/categories"&gt;documentation&lt;/a&gt; for the full set of components and how to use them.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>ux</category>
      <category>webdev</category>
      <category>material</category>
    </item>
    <item>
      <title>Keeping up in a Pandemic</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Sun, 26 Apr 2020 04:25:16 +0000</pubDate>
      <link>https://dev.to/melissahoughton/keeping-up-in-a-pandemic-13p3</link>
      <guid>https://dev.to/melissahoughton/keeping-up-in-a-pandemic-13p3</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;It is ok not to be ok.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What does it mean to &lt;strong&gt;keep up&lt;/strong&gt; during a pandemic? What are we supposed to do? Are we supposed to use this time to learn a new skill? Or do our best to survive, keeping ourselves and others safe?&lt;/p&gt;

&lt;h3&gt;
  
  
  If you are having trouble doing the basics, you are not alone.
&lt;/h3&gt;

&lt;p&gt;Throughout this time, I have felt I should be doing more. I see posts of people learning new skills, running live coding streams, and online workshops. They are using the lockdown to their advantage. Meanwhile, I struggle with the day-to-day.&lt;/p&gt;

&lt;p&gt;I had big plans for this year. I created a &lt;a href="https://melissahoughton.dev"&gt;website&lt;/a&gt;, started a blog and applied to speak at conferences. I had goals to post once a month and complete ten public speaking events this year. I joined the organising committee for &lt;a href="https://www.dddmelbourne.com/"&gt;DDD Melbourne&lt;/a&gt; and another group that was brainstorming the future of the .NET community. I was eager to get involved and be proactive in the tech community. I finished one blog post and was accepted to speak at &lt;a href="https://www.fullstackday.com/2020/"&gt;Full Stack Day, New Zealand&lt;/a&gt; in March.&lt;/p&gt;

&lt;p&gt;Then the pandemic hit.&lt;/p&gt;

&lt;p&gt;Company-wide travel restrictions and self-quarantine for international travellers meant the conference in New Zealand could not happen.&lt;/p&gt;

&lt;p&gt;Working from home became mandatory. We all had to adjust to a new way of doing things, with no end in sight.&lt;/p&gt;

&lt;p&gt;I hoped that working from home would mean more time to get things done. I would have more time to write blog posts, conference talks and learn new technologies.&lt;/p&gt;

&lt;h3&gt;
  
  
  I was wrong.
&lt;/h3&gt;

&lt;p&gt;We've been working from home now for six weeks. Some days are better than others. One week I was very productive, accomplished all my tasks and was positive about my work. The next, I had trouble concentrating, was not able to focus, felt down and angry at myself for not achieving as much as I thought I should be.&lt;/p&gt;

&lt;p&gt;My big plans fell to the waste side as I tried to figure out how to make this all work.&lt;/p&gt;

&lt;p&gt;Many people are worse off than I am, having to look after kids while trying to work, or not able to work at all. I am grateful I am still able to work, but that does not mean it is unchallenging. This pandemic has impacted us all in different ways.&lt;/p&gt;

&lt;p&gt;The purpose of this post is not to be all doom and gloom but instead to tell you that it is ok and you are not alone. Not everyone can accomplish more or learn a new skill. It is ok to have a glass of wine, to have good days and bad, to struggle to keep on top of routine tasks. The conference talks and new skills can wait. Take care of yourself and do what is best for you. &lt;strong&gt;We will get through this.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>mentalhealth</category>
      <category>productivity</category>
      <category>remote</category>
    </item>
    <item>
      <title>Battles of an Impostor</title>
      <dc:creator>Melissa Houghton</dc:creator>
      <pubDate>Sat, 22 Feb 2020 01:17:24 +0000</pubDate>
      <link>https://dev.to/melissahoughton/battles-of-an-impostor-3li6</link>
      <guid>https://dev.to/melissahoughton/battles-of-an-impostor-3li6</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;My battle with impostor syndrome and three steps to help you fight it.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Impostor_syndrome"&gt;Impostor syndrome&lt;/a&gt; is a popular subject and with good reason. You or someone close to you suffer from impostor syndrome.&lt;/p&gt;

&lt;p&gt;I experience impostor syndrome regularly and have battled against it all my life. My first conference talk was on the subject, and now my first blog post. It made me reluctant to write a post, to begin with, and apply to conferences. It has held me back time and time again. Now, I have come up with tricks to win the battle and wanted to share my experience with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Impostor Syndrome?
&lt;/h2&gt;

&lt;p&gt;Clinical psychologists &lt;a href="https://pdfs.semanticscholar.org/5e00/6cbe27488f165e9dc913274b10a4b4df0d2d.pdf"&gt;Pauline Clance and Suzanne Imes&lt;/a&gt; first defined impostor syndrome in 1978 as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An internal experience of intellectual phoniness, despite outstanding academic and professional accomplishments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Their study focused on high achieving women, but later studies found any gender can experience it.&lt;/p&gt;

&lt;p&gt;Impostor syndrome has other names: imposter syndrome (alternate spelling), impostor phenomenon, impostorism, and fraud syndrome.&lt;/p&gt;

&lt;p&gt;Whatever you want to call it, it is when you feel like a fraud, you are getting away with something, and you do not deserve your achievements nor opportunities, and fear others find out.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Story
&lt;/h2&gt;

&lt;p&gt;In September 2019, I did the locknote for &lt;a href="https://www.dddsydney.com.au/"&gt;DDD Sydney&lt;/a&gt;.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zh_Vr4Ip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1115759126280192000/7GZ3BdA1_normal.png" alt="DDD Sydney profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        DDD Sydney
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @dddsydney
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      It's our pleasure to introduce our locknote speaker, &lt;a href="https://twitter.com/meliss_houghton"&gt;@meliss_houghton&lt;/a&gt;, part of the fabulous &lt;a href="https://twitter.com/DDDPerth"&gt;@DDDPerth&lt;/a&gt; crew!&lt;br&gt;&lt;br&gt;Melissa will be sharing her experience dealing with impostor syndrome, which I'm sure many of us have experienced.&lt;br&gt;&lt;br&gt;Don't forget your 🎫! &lt;a href="https://t.co/lDfDMhpJnP"&gt;ti.to/ddd-sydney/ddd…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      22:28 PM - 03 Sep 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1169014429666750466" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1169014429666750466" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1169014429666750466" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;When I first heard that they wanted &lt;em&gt;me&lt;/em&gt; for the locknote, I thought it must be a prank!&lt;/p&gt;

&lt;p&gt;It was my night last in Perth, before moving to Melbourne. I was leaving my job as a Software Developer at &lt;a href="https://www.bankwest.com.au/"&gt;Bankwest&lt;/a&gt;, where I had worked for four and a half years. I was about to start a new role as a Senior Developer at &lt;a href="https://purple.telstra.com.au/"&gt;Telstra Purple&lt;/a&gt;. A company I had always looked up to as employing brilliant people. &lt;a href="https://dddperth.com/"&gt;DDD Perth&lt;/a&gt; had just finished, and I was talking to colleagues and friends over a few drinks. It was the last time I would see them and, people were sharing words of encouragement and praise from their time working with me. As kind words were said to me and so much was happening, I was having an intense battle with impostor syndrome.&lt;/p&gt;

&lt;p&gt;It was during this battle that Michele from &lt;a href="https://yowconference.com/"&gt;YOW&lt;/a&gt;, who was sponsoring the talk, approached to tell me they wanted me to do the locknote at DDD Sydney!&lt;/p&gt;

&lt;p&gt;My brain immediately jumped to thinking it must be some sort of conspiracy. No way colleagues I admired and people in the tech community that I looked up to, thought this highly of me. My subconscious was telling me that they must be up to something.&lt;/p&gt;

&lt;p&gt;But they weren't.&lt;/p&gt;

&lt;p&gt;I was experiencing impostor syndrome.&lt;/p&gt;

&lt;p&gt;It was not the first time I have experienced impostor syndrome,&lt;br&gt;
and yet it continues to occur; it is an ongoing battle.&lt;/p&gt;



&lt;p&gt;When I was at Bankwest, I had a secondment as the Technology Graduate Program Manager.&lt;/p&gt;

&lt;p&gt;The most common problem the graduates had was feelings of not meeting expectations and questioning why they got the role. I talked them through their feelings and helped them to battle against what they were experiencing, which was impostor syndrome.&lt;/p&gt;

&lt;p&gt;Ironically, in that role, I felt like an impostor. I had finished the graduate program before moving directly into managing it. I had no prior management experience, and half of the graduates reporting into me were older than me. Not that age matters, but it was another factor that fed into my impostor syndrome.&lt;/p&gt;

&lt;p&gt;How did I get through this? How did I ensure that these feelings would not hold me back? How did I help others do the same?&lt;/p&gt;
&lt;h2&gt;
  
  
  Three Steps to Win the Battle
&lt;/h2&gt;

&lt;p&gt;I came up with three steps to win the battle with impostor syndrome:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Recognise&lt;/li&gt;
&lt;li&gt;Rationalise&lt;/li&gt;
&lt;li&gt;Reflect&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First, I learned how to &lt;strong&gt;recognise&lt;/strong&gt; impostor syndrome as it was happening. After I acknowledge it, I &lt;strong&gt;rationalise&lt;/strong&gt; the situation; people were not out to get me, there was no conspiracy, and what benefit would they have if there was? Lastly, I &lt;strong&gt;reflect&lt;/strong&gt; on my accomplishments; I have worked hard! I use positive thoughts to empower me to fight against impostor syndrome, flip the beliefs and prove myself wrong!&lt;/p&gt;

&lt;p&gt;The motivation to fight impostor syndrome encouraged me to say yes, accept the chance to give the lock note, and many other opportunities.&lt;/p&gt;
&lt;h2&gt;
  
  
  Recognise: Am I Experiencing Impostor Syndrome?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://so06.tci-thaijo.org/index.php/IJBS/article/view/521"&gt;70% of people&lt;/a&gt; experience impostor syndrome at some point in their life. Anyone can suffer from it, but some are at higher risk.&lt;/p&gt;

&lt;p&gt;You are more likely to experience impostor syndrome if you are or have been:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From underrepresented communities&lt;/li&gt;
&lt;li&gt;Suffering from mental health issues&lt;/li&gt;
&lt;li&gt;Abused or highly criticised&lt;/li&gt;
&lt;li&gt;Naturally talented and had high expectations against you&lt;/li&gt;
&lt;li&gt;Continually learning new things and outside of your comfort zone&lt;/li&gt;
&lt;li&gt;First-generation university student&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Graduate students were the subject of several studies I found. The studies found them to experience impostor syndrome at a higher rate because of the constant learning environment. In tech, we are continually learning new things, and I believe these same theories apply to us.&lt;/p&gt;
&lt;h3&gt;
  
  
  How does Impostor Syndrome Present Itself?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L7hISGo5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissahoughton.dev/assets/images/lywcomic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L7hISGo5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissahoughton.dev/assets/images/lywcomic.png" alt="Honey Dill Comic"&gt;&lt;/a&gt; &lt;em&gt;Comic by &lt;a href="https://www.iamhoneydill.com/"&gt;Honey Dill&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We so-called impostors have trouble accepting compliments. We make excuses say "they have to say that" and brush it off, not recognising it for what it is.&lt;/p&gt;

&lt;p&gt;When it comes to completing work, we either overprepare or procrastinate. We can be workaholics and perfectionists. Or avoid tasks altogether for fear of failing or not living up to expectations. Those that are naturally talented, or continuously told they are the "smart one"; get frustrated when not able to grasp concepts right away and, often, give up.&lt;/p&gt;

&lt;p&gt;If we notice ourselves or our friends doing any of these things, they might be experiencing impostor syndrome.&lt;/p&gt;
&lt;h3&gt;
  
  
  What are the risks?
&lt;/h3&gt;

&lt;p&gt;Impostor syndrome can lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increased depression and unhappiness&lt;/li&gt;
&lt;li&gt;General life dissatisfaction&lt;/li&gt;
&lt;li&gt;Avoidance sharing ideas and opinions&lt;/li&gt;
&lt;li&gt;Reluctance accepting or apply for opportunities&lt;/li&gt;
&lt;li&gt;Lack of motivation&lt;/li&gt;
&lt;li&gt;Burn out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I was the Graduate Program Manager, I took on more responsibility than I had ever had before. I had 14 direct reports and was entirely out of my comfort zone. Outside my role, I was trying to maintain involvement in volunteer groups and organisations. I had over-committed myself, was losing motivation and no longer believed in my abilities. I was not happy in my role nor my life; I was perpetually overwhelmed.&lt;/p&gt;

&lt;p&gt;Thankfully, after a while, I &lt;strong&gt;recognised&lt;/strong&gt; what was happening and cut back on commitments. However, negative thoughts and feeling of being an impostor remained.&lt;/p&gt;
&lt;h2&gt;
  
  
  Rationalise: Am I an Impostor?
&lt;/h2&gt;

&lt;p&gt;How do you rationalise those thoughts and feelings away? Think through, does this make sense?&lt;/p&gt;

&lt;p&gt;How likely is it that someone is going to run up here and pull me off stage because me giving the lock note was some sort of joke? Not very likely, I hope.&lt;/p&gt;

&lt;p&gt;Share the feelings! Talk about it! Educate someone whom you think might be experiencing it. We can use conversations to get affirmation from others that it is sensible to feel like an impostor, but our feelings do not reflect the truth.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TwRcV7Uw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissahoughton.dev/assets/images/BillGates.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TwRcV7Uw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://melissahoughton.dev/assets/images/BillGates.jpg" alt="BillGatesQuote"&gt;&lt;/a&gt; &lt;em&gt; "Bill Gates" by &lt;a href="https://www.flickr.com/photos/155754835@N04/35914109702"&gt;Sebastian Vital&lt;/a&gt; / Text added from &lt;a href="https://live.staticflickr.com/4321/35914109702_959b7c4691_c.jpg"&gt;original&lt;/a&gt;. &lt;a href="https://www.amazon.com/How-Think-Like-Bill-Gates/dp/1782433759"&gt;Quote Source&lt;/a&gt;. &lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Stop comparing yourself to others!&lt;/p&gt;

&lt;p&gt;Think, how did you get to where you are; was it luck or was it the hard work and effort you put in?&lt;/p&gt;

&lt;p&gt;Someone gave &lt;em&gt;you&lt;/em&gt; that role, that job, that opportunity for a reason!&lt;/p&gt;

&lt;p&gt;You are great for &lt;em&gt;your&lt;/em&gt; reasons and talents. They hired &lt;em&gt;you&lt;/em&gt; not because they expected you to know everything but because they saw the potential in &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In reality, most of us don't know what we are doing. I don't know how to write a blog or do a conference talk, yet I am doing it.&lt;/p&gt;

&lt;p&gt;It is ok not to know everything. Use the power of not knowing as motivation to achieve more. Not knowing gives us the ability to think outside of the box and do things no one else has ever done.&lt;/p&gt;

&lt;p&gt;Challenge negative thoughts and practice positive self-talk. Flip limiting believes beliefs and use it as a challenge, a motivation to prove yourself wrong!&lt;/p&gt;

&lt;p&gt;Remember, it is ok to fail. The important thing is to keep learning.&lt;/p&gt;

&lt;p&gt;Even after I &lt;strong&gt;rationalised&lt;/strong&gt; the negative thoughts of being a phony Graduate manager, I was still not happy in the role. I was able to see past the feelings of being a fraud, to recognise that I was doing well, but it was just not for me. I cut the secondment short and moved back into a developer role. I use my experience as a positive one, to motivate me, and I reflect on it as an achievement.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reflect: What are the Facts?
&lt;/h2&gt;

&lt;p&gt;I flip the negative thoughts and feelings that impostor syndrome throws at me through reflection.&lt;/p&gt;

&lt;p&gt;I keep a work journal where I take notes on what I have done each day, making sure to note accomplishments, no matter how small.&lt;br&gt;
From completing a card to winning an award, I write it down.&lt;br&gt;
Later, I review my journal and am always surprised about how much I have accomplished.&lt;/p&gt;

&lt;p&gt;In times where I feel like I am not making progress, or I do not belong in my role, these little notes help to prove otherwise and turn negative thoughts positive.&lt;/p&gt;
&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;Feedback is a powerful tool to combat impostor syndrome. Collect feedback on yourself and give it to others. Use the feedback to reflect and find out the facts of the situation.&lt;/p&gt;

&lt;p&gt;When the Graduates would share feelings of being a fraud, I gave them the assignment of collecting feedback from their teammates. They were often surprised by the result.&lt;/p&gt;

&lt;p&gt;One Grad told me she did not know why the Senior was spending so much time helping her. She said she felt bad for wasting his time.&lt;/p&gt;

&lt;p&gt;When I spoke to the Senior, he said she was doing well. He was proud of her progress; she picked up the technology quickly and was contributing to the team. He felt sorry for not giving her more of his time.&lt;/p&gt;

&lt;p&gt;It was all a matter of perspective.&lt;/p&gt;

&lt;p&gt;Expectations Grads had put on themselves did not match reality. Finding out what the reality was, &lt;strong&gt;recognising&lt;/strong&gt; that it did not match their internal feelings, &lt;strong&gt;rationalising&lt;/strong&gt; and &lt;strong&gt;reflecting&lt;/strong&gt;, helped shift the negative thoughts.&lt;/p&gt;



&lt;p&gt;If you are on the other side, tell people when they have done well, even if they brush it off, continuous feedback can help to wear negative thoughts down.&lt;/p&gt;

&lt;p&gt;When I was a graduate, I shared an interest in leadership roles with a colleague. When the Graduate Manager role came up, he approached me and told me I should apply.&lt;/p&gt;

&lt;p&gt;My immediate reaction was "no way; I would not be able to get the role nor be any good at it".&lt;/p&gt;

&lt;p&gt;But he believed in me, and that made me believe in myself. With his support, I applied and was successful!&lt;/p&gt;

&lt;p&gt;A few years later, when I wanted to move to Melbourne, I applied to Senior positions, despite being a midtier developer. I did this because my manager had told me I was reaching Senior level. Without him telling me that, I would not have had the confidence to apply for those roles.&lt;/p&gt;

&lt;p&gt;If you see potential in others, encourage them. Reach out, be a mentor, provide feedback and help them to reflect on their accomplishments.&lt;/p&gt;
&lt;h2&gt;
  
  
  How Can We Battle Against It?
&lt;/h2&gt;

&lt;p&gt;Impostor syndrome can be beneficial! We can use it as motivation!&lt;/p&gt;

&lt;p&gt;Turn the negative self-doubt into a challenge. Prove the internal monologue saying you are not good enough wrong. Even if it was some sort of prank to get you into that position, it is not a very good one if you do it confidently and you do it well.&lt;/p&gt;

&lt;p&gt;Remember it's ok not to know everything, and it is ok to fail. Just keep learning and do not let impostor syndrome hold you back.&lt;/p&gt;

&lt;p&gt;Use the three steps to win the battle with impostor syndrome:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Recognise&lt;/li&gt;
&lt;li&gt;Rationalise&lt;/li&gt;
&lt;li&gt;Reflect&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Recognise&lt;/strong&gt; impostor syndrome in ourselves and others. Keep an eye out for those who are at higher risk and those who make excuses, over-prepare and procrastinate. We can support one another to try for new opportunities and celebrate success.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rationalise&lt;/strong&gt; the situation and think through the internal feelings of being a phony. Share these feelings with others and combat the fear of being discovered as a fraud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reflect&lt;/strong&gt; on accomplishments. Motivate ourselves to believe we can do it, we can give the lock note at DDD Sydney, and we can get that Senior position!&lt;/p&gt;

&lt;p&gt;The battle with impostor syndrome is an ongoing one. Just remember to recognise, rationalise and reflect.&lt;/p&gt;


&lt;h2&gt;
  
  
  Watch Full Talk
&lt;/h2&gt;

&lt;p&gt;Watch my full talk, &lt;strong&gt;&lt;em&gt;Battles of an Impostor&lt;/em&gt;&lt;/strong&gt;, from DDD Sydney 2019:&lt;br&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/t2qr64GN8Qo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>career</category>
      <category>mentalhealth</category>
      <category>softskills</category>
      <category>impostorsyndrome</category>
    </item>
  </channel>
</rss>
