<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET Archives - XABLU</title>
	<atom:link href="https://www.xablu.com/tag/net/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.xablu.com/tag/net/</link>
	<description>We build Ventures, Products and Teams</description>
	<lastBuildDate>Mon, 13 Apr 2026 10:37:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.xablu.com/wp-content/uploads/2019/08/xablu-favicon-100x100.png</url>
	<title>.NET Archives - XABLU</title>
	<link>https://www.xablu.com/tag/net/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Managing Software Development: From Performance Art to Operational Excellence</title>
		<link>https://www.xablu.com/2023/11/29/software-development-operational-excellence-2/</link>
		
		<dc:creator><![CDATA[Henk Kok]]></dc:creator>
		<pubDate>Wed, 29 Nov 2023 11:37:46 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Mobile Strategies]]></category>
		<category><![CDATA[Software Factory]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SoftwareFactory]]></category>
		<category><![CDATA[strategy]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=21043</guid>

					<description><![CDATA[<p>In this insightful exploration of software development management, we delve into the transformative journey from mere 'performance art'—where structure exists in name only—to achieving operational excellence. Discover how the strategic integration of Objectives and Key Results (OKRs) with Agile methodologies can revolutionize team dynamics, clarify goals, and enhance overall efficiency. This piece offers valuable perspectives for IT leaders and teams aiming to refine their approach and align their efforts with clear, actionable objectives.</p>
<p>The post <a href="https://www.xablu.com/2023/11/29/software-development-operational-excellence-2/">Managing Software Development: From Performance Art to Operational Excellence</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21043" class="elementor elementor-21043" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-3b46a182 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3b46a182" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-38286b58" data-id="38286b58" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1659b081 elementor-widget elementor-widget-text-editor" data-id="1659b081" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Your management skills are directly impacting the performance of your software development: some organizations merely go through the motions of management, while others truly embody operational excellence. If your management style resembles &#8216;performance art&#8217; – maybe focussing on scrum ceremonies, but lacking the right level of operational outcome, than you might consider revisiting your strategy.</strong><br /><strong>The key to transcending this strategy lies in adopting a structured management approach, like integrating Objectives and Key Results (OKRs) with Agile methodologies. This integration transforms abstract goals into concrete actions, ensuring each team member understands not just what they need to do but also why.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-64714ead elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="64714ead" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-54815bcd" data-id="54815bcd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2eb9d78 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="2eb9d78" data-element_type="widget" data-e-type="widget" data-settings="{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}" data-widget_type="table-of-contents.default">
				<div class="elementor-widget-container">
									<div class="elementor-toc__header">
						<h4 class="elementor-toc__header-title">
				Table of Contents			</h4>
										<div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Open table of contents"><i aria-hidden="true" class="fas fa-chevron-down"></i></div>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Close table of contents"><i aria-hidden="true" class="fas fa-chevron-up"></i></div>
					</div>
				<div id="elementor-toc__2eb9d78" class="elementor-toc__body">
			<div class="elementor-toc__spinner-container">
				<i class="elementor-toc__spinner eicon-animation-spin eicon-loading" aria-hidden="true"></i>			</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c95e84d elementor-widget elementor-widget-heading" data-id="c95e84d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Performance Art in managing Software Development</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-283a5618 elementor-widget elementor-widget-text-editor" data-id="283a5618" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Being in touch for many years with a large amount of software development companies, big and small, a surprising number of them operate in a mode that can best be described as &#8216;performance art.&#8217; This term aptly captures the essence of teams that are managed in name only. Using for instance the Scrum label, they put on a show of organization and structure, but beneath the surface, there’s a lack of substantive direction and coherent strategy. Meetings are frequent, yet productive outcomes are rare. Tasks are assigned and pursued, but without a clear understanding of how they contribute to the broader objectives. This approach leads to confusion, misaligned efforts, and a work environment where the appearance of activity is mistaken for progress, much like an art performance that prioritizes aesthetics over functionality.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1a1c44c elementor-widget elementor-widget-heading" data-id="1a1c44c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Transitioning to Structured Management with OKRs and Agile</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-b1a919b elementor-widget elementor-widget-text-editor" data-id="b1a919b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The transition to structured management in software development signifies a pivotal shift from ambiguity to clarity. This transformation can be achieved through the integration of Objectives and Key Results (OKRs) with Agile methodologies. OKRs provide a clear, measurable framework for setting and tracking goals, which, when linked directly to Agile boards, offer a real-time view of progress against these objectives. This linkage ensures that every team member, from developers to managers, has a clear understanding of the company&#8217;s vision and their role in achieving it. It fosters transparency and enhances communication across the organization, ensuring that everyone is aligned and working in concert towards common goals. This approach not only streamlines the development process but also bridges the gap between strategic planning and execution.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-4dcf0e8 elementor-widget elementor-widget-heading" data-id="4dcf0e8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">OKR Initiatives are the Waterfall Connection with Agile</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3935885 elementor-widget elementor-widget-text-editor" data-id="3935885" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Incorporating OKR Initiatives from a Work Breakdown Structure perspective into Agile methodologies offers a more interconnected approach to project management. This integration effectively marries the meticulous planning characteristic of Waterfall with the dynamic execution of Agile. When these initiatives are grounded in UX research, they gain a deeper relevance, as they are directly tied to user needs and experiences. This synergy ensures that while Agile teams retain their flexibility and adaptability, they also benefit from the structured, goal-oriented framework provided by Waterfall-derived initiatives, leading to a more cohesive and user-centric development process.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-213dc09 elementor-widget elementor-widget-heading" data-id="213dc09" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Achieving Operational Excellence</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-0c7f14c elementor-widget elementor-widget-text-editor" data-id="0c7f14c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In software development, operational excellence arises from the synergy of transparent communication, disciplined management, and a balanced mix of methodologies. This excellence is particularly evident in review sessions, both from Agile and OKR perspectives. These sessions foster a positive atmosphere by ensuring everyone&#8217;s efforts are aligned with company-wide objectives. They also encourage proactive synergy among team members, as successes and challenges are openly discussed and lessons are learned collectively. This process not only improves the team&#8217;s current performance but also strategically positions them for future successes, creating a cycle of continuous improvement and operational efficiency.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1882b7c elementor-widget elementor-widget-heading" data-id="1882b7c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Additional Support</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-5769852 elementor-widget elementor-widget-text-editor" data-id="5769852" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>If you&#8217;re looking for additional information or support, Xablu specializes in training and coaching these techniques in your organization. We offer comprehensive services to assist with everything from assessing your existing process to optimizing performance for a successful adoption of the right techniques. Keep in mind that implementing new structures is people&#8217;s business <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p><p>Here&#8217;s a list of links to additional resources:</p><ul><li><a href="/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/" target="_new">Maximize Mobile App Potential</a></li><li><a href="/2022/12/18/business-strategy-software-factory-comprehensive-guide/" target="_new">Creating a Business Strategy for your software factory</a></li><li><a href="/net-maui-migration-service/" target="_new">Xablu&#8217;s .NET MAUI migration services</a></li></ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-412fea4d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="412fea4d" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4493923c" data-id="4493923c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2288fc87 elementor-widget elementor-widget-text-editor" data-id="2288fc87" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-651715d2 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="651715d2" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4718fd35" data-id="4718fd35" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-815058b elementor-align-center elementor-widget elementor-widget-button" data-id="815058b" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2023/11/29/software-development-operational-excellence-2/">Managing Software Development: From Performance Art to Operational Excellence</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</title>
		<link>https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/</link>
		
		<dc:creator><![CDATA[Henk Kok]]></dc:creator>
		<pubDate>Thu, 09 Nov 2023 10:46:00 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Mobile Strategies]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET MAUI]]></category>
		<category><![CDATA[mvvmcross]]></category>
		<category><![CDATA[xamarin]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=20822</guid>

					<description><![CDATA[<p>Embark on a transition from Xamarin to .NET MAUI with our guide. This covers key migration steps, tackles common obstacles, and weaves in effective DevOps strategies for a streamlined process. Gain valuable insights from experts, and utilize Microsoft's official resources coupled with Xablu's specialized services to ensure a flawless shift. Ideal for developers eager to enhance their mobile app's capabilities in the dynamic .NET MAUI environment, this guide is a roadmap to leveraging .NET MAUI's advanced features and achieving superior app performance. Equip yourself with this guide to navigate the complexities of migration with confidence.</p>
<p>The post <a href="https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/">Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="20822" class="elementor elementor-20822" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-3b46a182 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3b46a182" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-38286b58" data-id="38286b58" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1659b081 elementor-widget elementor-widget-text-editor" data-id="1659b081" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>The Xamarin chapter is closing, with the end-of-life announcement ringing in changes across the board, especially with Xcode&#8217;s support shifts. Migrating to .NET MAUI isn&#8217;t just about keeping up; it&#8217;s about tapping into the full spectrum of the .NET ecosystem&#8217;s power—think quicker load times, more efficient memory use, and a unified codebase that stretches from mobile to desktop.</strong></p><p><strong>Here at Xablu, we&#8217;re in the business of making transitions like these as smooth as coding on a good day. We support your team with the migration of the Xamarin code, spot what needs to evolve on the UX side, and set you on a clear, efficient path to .NET MAUI. With an eye on the latest best practices, we&#8217;re talking about aligning with industry standards, and streamlining your process with Agile methodologies. Plus, we don&#8217;t just stop at code—UX design, DevOps and sharpening your strategic approach with OKRs are part of the package, ensuring that your app doesn&#8217;t just work well, but also aligns with business and user needs, looks good and ships fast.</strong></p><p><strong>So, ready to get started? Keep reading to find out how to make your app&#8217;s move to .NET MAUI as straightforward as it is smart.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-64714ead elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="64714ead" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-54815bcd" data-id="54815bcd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2eb9d78 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="2eb9d78" data-element_type="widget" data-e-type="widget" data-settings="{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}" data-widget_type="table-of-contents.default">
				<div class="elementor-widget-container">
									<div class="elementor-toc__header">
						<h4 class="elementor-toc__header-title">
				Table of Contents			</h4>
										<div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Open table of contents"><i aria-hidden="true" class="fas fa-chevron-down"></i></div>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Close table of contents"><i aria-hidden="true" class="fas fa-chevron-up"></i></div>
					</div>
				<div id="elementor-toc__2eb9d78" class="elementor-toc__body">
			<div class="elementor-toc__spinner-container">
				<i class="elementor-toc__spinner eicon-animation-spin eicon-loading" aria-hidden="true"></i>			</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c95e84d elementor-widget elementor-widget-heading" data-id="c95e84d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Why it's Time to Move On</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-283a5618 elementor-widget elementor-widget-text-editor" data-id="283a5618" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Let&#8217;s face it, Xamarin has been around for more than 10 years now. It&#8217;s been a solid pick for building cross-platform apps for many teams. But all good things must evolve, and Xamarin&#8217;s no different. With Microsoft sounding the end-of-life alarm for Xamarin, it&#8217;s clear the torch is being passed to .NET MAUI. And here&#8217;s the kicker: this isn&#8217;t just about keeping your apps on life support—it&#8217;s about introducing a whole new vision on cross platform, spanning more operating systems than ever.</p><p>.NET MAUI comes armed with a .NET 8 engine under the hood and a suite of new tools. It&#8217;s not just about maintaining the status quo; it&#8217;s about supercharging your apps. Smoother performance, more robust security measures, and a development experience that&#8217;s been polished to shine. And let&#8217;s not forget the streamlined workflows that come from a single project structure—no more juggling multiple codebases.</p><p>But why rush the migration? Well, staying put on Xamarin means you&#8217;ll soon will not be able to publish a new version in the app stores. Think about it: no more updates, no more cutting-edge features, and slowly but surely, a widening gap between your app and the current tech standards. On the other hand, making the move to .NET MAUI puts you back in the driver&#8217;s seat, with all the support, tools, and performance gains to keep your app racing ahead.</p><p>So, whether it&#8217;s the lure of enhanced features or the push of Xamarin&#8217;s end-of-life, now&#8217;s the time to gear up for migration. And hey, it&#8217;s not a solo journey—you&#8217;ve got a roadmap and a community of fellow developers to help navigate the path to .NET MAUI. Ready to roll? Let&#8217;s get your apps set for the future.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1a1c44c elementor-widget elementor-widget-heading" data-id="1a1c44c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Advancements and Improvements in .NET MAUI</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-b1a919b elementor-widget elementor-widget-text-editor" data-id="b1a919b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div> </div><div><div><div data-message-author-role="assistant" data-message-id="046d6fd9-070b-41e4-85ea-73762115f927"><div><p>With the upgrade to .NET 8, .NET MAUI is not just a necessary step; it&#8217;s an opportunity to leverage the suite of enhancements that .NET 8 brings to the MAUI framework. Here are some of the most significant technical advancements in .NET MAUI that your software team can take advantage of:</p><ol><li><p><strong>Quality Focus</strong>: The primary aim for .NET MAUI in the .NET 8 release has been enhancing quality, with a significant number of bugs addressed to improve overall reliability.</p></li><li><p><strong>AOT Improvements</strong>: The enhancements to Ahead-of-Time (AOT) compilation, such as Startup tracing or Profiled AOT, which leads to faster application launch times (NativeAOT on MAUI supports iOS) with a minimal increase in app size. </p></li><li><p><strong>NuGet Packages</strong>: .NET MAUI simplifies package management by consolidating multiple project platforms into a single project. This streamlined approach enhances developer flexibility, allowing for easier management of dependencies and versioning across the unified codebase.</p></li><li><p><strong>Unified Platform APIs</strong>: .NET MAUI&#8217;s unification of Android, iOS, macOS, and Windows APIs into a single API enhances developer productivity and application performance.</p></li><li><p><strong>UI Control Quality</strong>: The focus on improving the quality of UI controls, layout, and memory management to provide a smoother user experience across different platforms.</p></li><li><p><strong>Startup Performance</strong>: Notable improvements in startup times for complex applications, with some applications experiencing over a 30% improvement in startup speed.</p></li><li><p><strong>Multi-window Support</strong>: A fundamental change in .NET MAUI is the introduction of the Window as the base foundation for creating multi-window applications, which enhances the desktop app experience.</p></li><li><p><strong>Android Specific Features</strong>: Features like <code>AndroidStripILAfterAOT</code> for smaller assembly sizes and enhanced performance on Android devices.</p></li><li><p><strong>Build Performance</strong>: Improvements such as filtering Android process outputs, porting tasks to C#, and optimizations in remote iOS builds on Windows.</p></li><li><p><strong>Application Size Reductions</strong>: Various performance improvements that also contribute to reducing application size, such as removing unneeded reflection and using StringComparer.Ordinal for collections.</p></li></ol><p>These improvements underscore the technical benefits of migrating to .NET MAUI, positioning it as a forward-thinking framework for building modern, performant applications across various platforms. They represent just a glimpse of the comprehensive enhancements that the .NET 8-based version of .NET MAUI offers, ensuring that your app development is not just up-to-date but also ahead of the curve.</p></div></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-4dcf0e8 elementor-widget elementor-widget-heading" data-id="4dcf0e8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Strategic Integration of OKRs, UX and Agile in .NET MAUI Development</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3935885 elementor-widget elementor-widget-text-editor" data-id="3935885" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>When it comes to adopting .NET MAUI for mobile app development, there&#8217;s more to the process than just technical implementation. Xablu provides training and coaching on the introduction of Objectives and Key Results (OKRs), Agile methodologies, and User Experience (UX) design, ensuring these practices are closely tied to the actual technical process. By leveraging best practices, we help create control within an organization and align and communicate customer objectives with Key Results across projects through a blend of training, coaching, and the development of OKR masters within the organization.</p>
<p><strong>OKRs: A Framework for Clarity and Focus</strong> Implementing OKRs offers a framework for setting, tracking, and achieving goals across an organization. OKRs enhance transparency, align team efforts with strategic vision, and foster a results-driven culture. They empower teams to focus on collaboratively set initiatives and understand how their individual contributions fit into wider organizational goals.</p>
<p><strong>Kanban: Agile Planning and Execution</strong> In many project organizations, Kanban as a planning methodology aligns better than Scrum. It combines pre-established plans (Work Breakdown Structures) with an agile approach, promoting continuous collaboration through better visibility into planned tasks and the establishment of a clear communication structure.</p>
<p><strong>UX: Enhancing the User Journey</strong> In .NET MAUI development, the integration of UX, OKRs, and Kanban is crucial. Where possible within a client&#8217;s existing communication structures, we implement this approach. Our vision is to deliver a customized, scalable solution that fits the project approach and culture of the client. Incorporating UX, OKRs, and Kanban is key to boosting operational efficiency and strategic execution.</p>
<p><strong>The Role of Design Systems and Component Libraries</strong> The use of UX, design systems, and component libraries plays a pivotal role in creating cohesive and functional mobile applications. With .NET MAUI, we can help integrate these elements to ensure that the applications not only meet functional requirements but also deliver a consistent and compelling user experience. Design systems provide a shared language and set of components that streamline the design process, while component libraries offer reusable UI elements that save time and maintain consistency across different parts of one or more apps. Together, they form the cornerstone of a user-centric development approach that can be effectively managed with OKR-driven strategies and Agile execution.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-213dc09 elementor-widget elementor-widget-heading" data-id="213dc09" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Keeping the User Front and Center</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-0c7f14c elementor-widget elementor-widget-text-editor" data-id="0c7f14c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>When optimizing for .NET MAUI, the goal is to adapt without interrupting the user&#8217;s journey through the application. Each step in the user&#8217;s interaction should be coherent with the next, maintaining the narrative of the experience from start to finish. This is crucial because any disruption can lead to dissatisfaction and a break in the seamless experience that users have come to expect​​.</p><p>Embracing empathy is one of the major strategies to ensure continuity. By understanding and prioritizing the emotions and behaviors of users, UX professionals can make more informed decisions that align with user expectations. This involves perspective-taking, avoiding judgment, recognizing specific emotions, and taking action to communicate understanding​​.</p><p>Furthermore, incorporating UX into the product development process is essential. It&#8217;s not just about having a dynamite product; it&#8217;s about ensuring that the product is usable and enjoyable through strong UX​​. A holistic approach to UX ensures that every element of the user interface is consistent and contributes to a cohesive experience​​.</p><p>However, the pursuit of continuity in UX does not imply a resistance to change. The dynamic nature of technology means that improvements and updates are inevitable. The challenge is to balance these changes with the need for continuity, ensuring that updates enhance rather than disrupt the user experience​​.</p><p>To effectively transition existing UX designs to work with .NET MAUI, it&#8217;s crucial to utilize the platform&#8217;s capabilities. .NET MAUI allows for UI customization across different platforms and devices. This means you can optimize your application to make the most effective use of space on different screen sizes, take advantage of device capabilities like location sensors and cameras, and rearrange UI elements to best suit the input methods of each device​​.</p><p>The OnPlatform and OnIdiom markup extensions in .NET MAUI are powerful tools for creating a responsive UI tailored to various platforms and device idioms. OnPlatform allows customization on a per-platform basis, setting values for properties specific to Android, iOS, Mac Catalyst, Tizen, and WinUI, while OnIdiom facilitates customization based on whether the app is running on a phone, tablet, desktop, TV, or watch​​.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3ec8289 elementor-widget elementor-widget-heading" data-id="3ec8289" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">DevOps and Migration: Like Peanut Butter and Jelly</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c9558cb elementor-widget elementor-widget-text-editor" data-id="c9558cb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In the realm of app development, DevOps and migration to .NET MAUI go hand-in-hand, ensuring a smooth transition and continuous integration/delivery (CI/CD). Embracing DevOps with .NET MAUI simplifies the complexities of building and deploying apps across multiple platforms. Prior to setting up pipelines, necessary files such as signing certificates for iOS, keystores for Android, and package signing certificates for Windows are prerequisites.</p><p>The process begins with the creation of pipelines, for which .NET MAUI provides sample pipelines, <a href="https://github.com/dotnet/maui-samples/tree/main/7.0/Apps/WeatherTwentyOne/devops">like those in the Weather21 app</a>, to guide developers through the setup. These starter pipelines, ideal for basic testing and build tasks, integrate seamlessly into DevOps strategies, focusing on essential steps like setting the .NET version, installing MAUI workloads, managing signing files, building/publishing the app, running unit tests, and uploading artifacts.</p><p>The dotnet CLI tool streamlines the DevOps workflow, eliminating the need for intricate scripts to manage builds and publications across different frameworks. This tool allows for executing <code>dotnet build</code> and <code>dotnet publish</code> commands for any TargetFramework, contributing to a more efficient CI/CD pipeline. The common tasks for pipelines in both GitHub Actions and Azure DevOps revolve around setting up the .NET SDK version and installing .NET MAUI, demonstrating the alignment of DevOps practices with .NET MAUI&#8217;s versatile framework.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a2e22c1 elementor-widget elementor-widget-heading" data-id="a2e22c1" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">The Step-by-Step Migration Playbook</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-e743395 elementor-widget elementor-widget-text-editor" data-id="e743395" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Migrating your Xamarin.Forms app to .NET MAUI is a process made significantly simpler with the .NET Upgrade Assistant. Here&#8217;s how to make the transition smooth:</p><ol><li><strong>Preparation</strong>: Ensure your Xamarin.Forms project is updated to version 5.0 and running on .NET Standard 2.0 or higher for the best results before migration​​.</li><li><strong>Installation</strong>: If using Visual Studio on Windows, install the .NET Upgrade Assistant from the Extensions menu. For CLI, use the command:<br /><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>dotnet tool install -g upgrade-assistant</strong><br />
</code></div></div><p>To update the tool, use:</p><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>dotnet tool update -g upgrade-assistant</strong><br />
</code></div></div><p>Note that if you have additional NuGet feed sources configured, you may need to use <code>--ignore-failed-sources</code> to avoid errors​​.</p></li><li><strong>Running the Upgrade</strong>: In Visual Studio, right-click on the project and select &#8216;Upgrade&#8217;. For CLI, navigate to your project folder and run:<br /><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>upgrade-assistant upgrade</strong><br />
</code></div></div><p>This will update all eligible files within your project​​.</p></li><li><strong>Conversion and Code Updates</strong>: The .NET Upgrade Assistant will convert your project files to SDK-style projects, update target frameworks, set <code>&lt;UseMaui&gt;true&lt;/UseMaui&gt;</code>, and handle NuGet package transitions:<ul><li>Remove Xamarin.Forms and Xamarin.Essentials packages.</li><li>Replace Xamarin.CommunityToolkit with .NET MAUI Community Toolkit.</li><li>Update SkiaSharp packages for .NET MAUI compatibility.</li><li>Replace <code>Xamarin.Forms</code> and <code>Xamarin.Essentials</code> namespaces with <code>Microsoft.Maui</code> and <code>Microsoft.Maui.Controls</code>​​.</li></ul></li></ol><p>Remember, while the Upgrade Assistant does a lot, it might not cover everything. Manual adjustments and testing will be necessary to ensure a smooth transition. Keep the .NET MAUI documentation handy for reference and don&#8217;t hesitate to provide feedback to improve the tool further​​.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-56bf83d elementor-widget elementor-widget-heading" data-id="56bf83d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Watch Out for These Migration Speed Bumps</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-176a1a9 elementor-widget elementor-widget-text-editor" data-id="176a1a9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Migrating from Xamarin to .NET MAUI is a forward leap in app development, but it&#8217;s not without its hurdles. One of the common challenges is the absence of OpenTK on iOS, which means OpenGL is no longer available. For Xamarin.watchOS projects, it&#8217;s recommended to bundle Swift extensions with .NET for iOS apps.</p><p>Additionally, before upgrading your Xamarin native projects to .NET, ensure they are SDK-style projects and that dependencies are updated to .NET 7+. Also, while the .NET Upgrade Assistant can streamline the migration of multi-project Xamarin.Forms apps to .NET MAUI, be prepared to invest additional effort post-upgrade to address any nuances and ensure your app is fully functional in the new environment.</p><p>When transitioning from frameworks like MvvmLight or MvvmCross to the MVVM Toolkit, you&#8217;ll encounter several changes:</p><ol><li><p><strong>ObservableObject</strong>: Replace MvvmLight&#8217;s <code>ObservableObject</code> with the MVVM Toolkit&#8217;s version, adjusting the <code>using</code> directives in your components accordingly.</p></li><li><p><strong>SetProperty Methods</strong>: The signature for methods like <code>Set&lt;T&gt;(Expression, ref T, T)</code> does not have a like-for-like replacement in the MVVM Toolkit. Instead, use <code>SetProperty(ref T, T, string)</code> which offers similar functionality with performance benefits.</p></li><li><p><strong>PropertyChanged Event</strong>: For raising property change notifications, switch from <code>RaisePropertyChanged(string)</code> to <code>OnPropertyChanged(string)</code> in the MVVM Toolkit. The new method infers the property name automatically, simplifying the code.</p></li><li><p><strong>VerifyPropertyName</strong>: The <code>VerifyPropertyName(string)</code> method does not have a replacement in the MVVM Toolkit due to the availability of the <code>nameof</code> keyword for verifying property existence.</p></li><li><p><strong>PropertyChangedHandler</strong>: There is no direct replacement for <code>PropertyChangedHandler</code>. Use <code>OnPropertyChanged()</code> to raise property change events instead.</p></li><li><p><strong>ViewModelBase Migration</strong>: For components using <code>ViewModelBase</code>, the MVVM Toolkit offers <code>ObservableRecipient</code>, which provides similar functionality.</p></li><li><p><b>Namespace changes</b>: Replace MvvmCross namespaces with their CommunityToolkit.Mvvm counterparts. For instance, change using MvvmCross.ViewModels; to using CommunityToolkit.Mvvm.ComponentModel; and using MvvmCross.Commands; to using CommunityToolkit.Mvvm.Input;. This change is necessary for ViewModel and Command implementations to align with CommunityToolkit.Mvvm&#8217;s structure.</p></li><li><p><b>Navigation Changes</b>: CommunityToolkit.Mvvm doesn&#8217;t include built-in navigation features like MvvmCross. You&#8217;ll need to implement a navigation service that works with the navigation patterns in .NET MAUI.</p></li><li><p><b>Dependency Injection</b>: whether you are using MVVMCross (with it&#8217;s own DI container), MVVMLight (with SimpleIoc), Prism (with Unity Container) or implementations like DryIoc or Autofac, evaluate if you should continue with it or switch to the built-in .NET DI framework.</p></li></ol><p>Testing and quality checks are integral throughout this process. Rigorous testing will highlight any discrepancies that need your attention, ensuring that the final product maintains the high-quality standards users expect from a .NET MAUI app.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1882b7c elementor-widget elementor-widget-heading" data-id="1882b7c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Additional Support</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-5769852 elementor-widget elementor-widget-text-editor" data-id="5769852" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>If you&#8217;re looking for additional expertise and support during your migration journey, Xablu specializes in the transition from Xamarin to .NET MAUI. We offer comprehensive services to assist with everything from assessing your existing codebase and guiding the migration process to optimizing performance for a successful adoption of .NET MAUI​​. Keep in mind that with Xamarin support ending on May 1, 2024, now is a critical time to embrace the transition to .NET MAUI to stay ahead in cross-platform development​​.</p><p>Here&#8217;s a list of links to these resources:</p><ul><li><a href="https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui" target="_new">Official .NET MAUI documentation</a>​​</li><li><a href="https://learn.microsoft.com/en-us/dotnet/maui/whats-new" target="_new">What&#8217;s new in .NET MAUI documentation</a>​​</li><li><a href="https://dotnet.microsoft.com/en-us/learn/maui" target="_new">Learn .NET MAUI &#8211; Free resources</a></li><li>​​<a href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12">What&#8217;s new in C# 12</a></li><li><a href="/net-maui-migration-service/" target="_new">Xablu&#8217;s .NET MAUI migration services</a>​​</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-1b6b3ef2 elementor-widget elementor-widget-text-editor" data-id="1b6b3ef2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Please share your </strong><b>thoughts <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f603.png" alt="😃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></b></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-412fea4d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="412fea4d" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4493923c" data-id="4493923c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2288fc87 elementor-widget elementor-widget-text-editor" data-id="2288fc87" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-651715d2 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="651715d2" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4718fd35" data-id="4718fd35" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-815058b elementor-align-center elementor-widget elementor-widget-button" data-id="815058b" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/">Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unlocking the power of .NET Blazor: using component libraries for development</title>
		<link>https://www.xablu.com/2023/06/17/unlocking-the-power-of-net-blazor-using-component-libraries-for-development/</link>
		
		<dc:creator><![CDATA[XABLU HQ]]></dc:creator>
		<pubDate>Sat, 17 Jun 2023 13:54:00 +0000</pubDate>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Insights]]></category>
		<category><![CDATA[Product Development]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blazor]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=24427</guid>

					<description><![CDATA[<p>Unlock the potential of .NET Blazor by leveraging component libraries for development. This guide covers integrating these libraries to enhance performance, streamline processes, and improve the user experience in Blazor applications.</p>
<p>The post <a href="https://www.xablu.com/2023/06/17/unlocking-the-power-of-net-blazor-using-component-libraries-for-development/">Unlocking the power of .NET Blazor: using component libraries for development</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="24427" class="elementor elementor-24427" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-11600b37 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="11600b37" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7c65c17d" data-id="7c65c17d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3e80f904 elementor-widget elementor-widget-text-editor" data-id="3e80f904" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>.NET Blazor is emerging as a game-changer by enabling developers to build interactive web applications using C# instead of JavaScript. This shift not only leverages existing C# skills but also brings new opportunities for performance optimization and component customization. Integrating component libraries with .NET Blazor can significantly streamline the development process, enhance performance, and improve user experience. Whether you’re a software developer, product manager, or technical leader, understanding Blazor’s capabilities will provide valuable insights.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4fd0d27d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4fd0d27d" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5a701a85" data-id="5a701a85" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-65ee376c elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="65ee376c" data-element_type="widget" data-e-type="widget" data-settings="{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}" data-widget_type="table-of-contents.default">
				<div class="elementor-widget-container">
									<div class="elementor-toc__header">
						<h4 class="elementor-toc__header-title">
				Table of Contents			</h4>
										<div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand" role="button" tabindex="0" aria-controls="elementor-toc__65ee376c" aria-expanded="true" aria-label="Open table of contents"><i aria-hidden="true" class="fas fa-chevron-down"></i></div>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse" role="button" tabindex="0" aria-controls="elementor-toc__65ee376c" aria-expanded="true" aria-label="Close table of contents"><i aria-hidden="true" class="fas fa-chevron-up"></i></div>
					</div>
				<div id="elementor-toc__65ee376c" class="elementor-toc__body">
			<div class="elementor-toc__spinner-container">
				<i class="elementor-toc__spinner eicon-animation-spin eicon-loading" aria-hidden="true"></i>			</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-42044940 elementor-widget elementor-widget-heading" data-id="42044940" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Understanding Blazor
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-7058d277 elementor-widget elementor-widget-text-editor" data-id="7058d277" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Blazor, part of the .NET ecosystem, allows developers to create web applications using C#. It offers two hosting models: Blazor WebAssembly, where the application runs directly in the browser, and Blazor Server, where the application runs on the server and communicates with the browser via SignalR. Blazor bridges the gap between client-side and server-side development, enabling developers to leverage their existing C# skills to build rich, interactive web applications.</p><p>The primary advantage of Blazor lies in its ability to enable code sharing between the client and server. This unified approach reduces development time, simplifies maintenance, and enhances code reusability. Blazor’s component-based architecture further promotes modularity and scalability, making it an ideal choice for modern web development.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3997602a elementor-widget elementor-widget-heading" data-id="3997602a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">The role of component libraries in the development of Blazor</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-2d66b711 elementor-widget elementor-widget-text-editor" data-id="2d66b711" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Component libraries are collections of pre-built, reusable UI elements that can be integrated into Blazor applications. These libraries provide a wide range of components, from simple buttons and forms to complex data grids and charts, helping developers save time and effort by avoiding the need to build these elements from scratch.</p><p>Using a component library offers several benefits. It accelerates development by providing ready-to-use components, ensures consistency in UI design by adhering to design standards and best practices, enhances the overall user experience with well-tested and optimized components, and simplifies maintenance by reducing the amount of custom code that needs to be managed.</p><p>Our development toolkit includes a comprehensive set of components designed to meet a variety of needs, from basic UI elements to advanced data visualization tools. By using our component library, developers can leverage a consistent and high-quality set of components, ensuring that their applications are not only functional but also visually appealing and performant.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1bab2786 elementor-widget elementor-widget-heading" data-id="1bab2786" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Blazor development phases
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-a9810bd elementor-widget elementor-widget-text-editor" data-id="a9810bd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In the planning phase, teams define the project scope, requirements, and objectives. This phase involves identifying key features and functionalities, selecting the appropriate Blazor hosting model, and choosing the component libraries to be used. Thorough planning sets the foundation for a successful project, ensuring that all stakeholders are aligned and that the project goals are clear.</p><p>The development phase is where the actual coding takes place. Developers build the application’s core functionalities, integrating the selected component libraries to create a cohesive and interactive user interface. During this phase, it is crucial to follow best practices for Blazor development, such as component-based architecture, proper state management, and efficient data binding.</p><p>Testing is an integral part of the Blazor development process. It involves verifying that the application functions as expected and meets the defined requirements. Testing can be divided into unit testing, where individual components are tested in isolation, and integration testing, where the interaction between different components is tested. Automated testing tools can help streamline this process and ensure comprehensive test coverage.</p><p>Once the application has been thoroughly tested, it is ready for deployment. The deployment phase involves publishing the application to a web server or cloud platform. Blazor applications can be easily deployed to services like Azure App Services, AWS, or any other hosting environment that supports .NET applications. Post-deployment, continuous monitoring and maintenance are essential to ensure the application remains performant and secure.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7445d1be elementor-widget elementor-widget-heading" data-id="7445d1be" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Optimizing Blazor performance</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-39588872 elementor-widget elementor-widget-text-editor" data-id="39588872" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Performance optimization is critical for delivering a fast and responsive Blazor application. Efficient data binding is essential. Blazor supports both one-way and two-way data binding. While two-way data binding is convenient, it can lead to performance issues if overused. Use one-way data binding where possible to minimize unnecessary updates and improve performance.</p><p>Lazy loading is a technique where components and data are loaded only when needed. This approach reduces the initial load time and improves the application’s responsiveness. Blazor supports lazy loading of assemblies, which can significantly enhance performance, especially for large applications.</p><p>Reusing components not only promotes code reuse but also improves performance. Instead of creating new components for similar functionalities, use existing components and pass different parameters to customize their behavior. This approach reduces the amount of rendering and processing required.</p><p>While Blazor allows for JavaScript interoperability, excessive use of JavaScript can degrade performance. Minimize JavaScript interop calls and use Blazor’s built-in functionalities whenever possible to maintain optimal performance.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-75f87fca elementor-widget elementor-widget-heading" data-id="75f87fca" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Customizing Blazor components</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-5bbfb955 elementor-widget elementor-widget-text-editor" data-id="5bbfb955" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Customizing Blazor components allows developers to tailor the UI to meet specific requirements and enhance the user experience. Blazor components can accept parameters, which are used to customize their behavior and appearance. Understanding how to use parameters effectively allows for flexible and reusable components. Use attributes to define component parameters and pass different values to achieve the desired customization.</p><p>Styling is an essential aspect of component customization. Blazor supports CSS isolation, which allows for scoped styles that apply only to specific components. Use CSS classes and styles to customize the appearance of components and ensure consistency across the application.</p><p>Handling events is crucial for creating interactive components. Blazor supports various event handlers, such as onclick, onchange, and oninput. Use these event handlers to implement custom behavior and enhance the interactivity of components. For example, you can create a custom button component that performs a specific action when clicked.</p><p>Template components provide a way to create highly customizable components by allowing developers to define the component’s structure using templates. Use template components to create flexible and reusable UI elements that can be customized with different content and layouts.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-59315ba6 elementor-widget elementor-widget-heading" data-id="59315ba6" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Additional Support</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4c7887e6 elementor-widget elementor-widget-text-editor" data-id="4c7887e6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex-1 overflow-hidden"><div class="react-scroll-to-bottom--css-gtdid-79elbk h-full"><div class="react-scroll-to-bottom--css-gtdid-1n7m0yu"><div class="flex flex-col text-sm md:pb-9"><div class="w-full text-token-text-primary" dir="auto" data-testid="conversation-turn-25" data-scroll-anchor="true"><div class="py-2 juice:py-[18px] px-3 text-base md:px-4 m-auto md:px-5 lg:px-1 xl:px-5"><div class="mx-auto flex flex-1 gap-3 text-base juice:gap-4 juice:md:gap-5 juice:lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]"><div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"><div class="flex-col gap-1 md:gap-3"><div class="flex flex-grow flex-col max-w-full"><div class="min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2" dir="auto" data-message-author-role="assistant" data-message-id="c778d313-e1f4-481a-b579-4f65f0115c1c"><div class="flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]"><div class="markdown prose w-full break-words dark:prose-invert light"><p>If you’re seeking further guidance or support in navigating the crucial choices on your road ahead, or in effectively setting and implementing Blazor components, our team is here to assist. We specialize in offering bespoke training and coaching to integrate these techniques seamlessly into your organization. Our services range from evaluating your current processes to fine-tuning your performance, ensuring a successful adoption of the strategies that best suit your business needs. Remember, the journey to operational excellence and strategic decision-making is as much about people as it is about processes.<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Here’s a link to an additional resource:</p><p> </p></div></div></div></div></div></div></div></div></div></div></div></div></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4a31035 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4a31035" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-33c4e875" data-id="33c4e875" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-709cdd87 elementor-widget elementor-widget-text-editor" data-id="709cdd87" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-5eea54af elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5eea54af" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-348a7f23" data-id="348a7f23" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4fdd5fb5 elementor-align-center elementor-widget elementor-widget-button" data-id="4fdd5fb5" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2023/06/17/unlocking-the-power-of-net-blazor-using-component-libraries-for-development/">Unlocking the power of .NET Blazor: using component libraries for development</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>5 things for .NET MAUI devs to look forward to in 2022</title>
		<link>https://www.xablu.com/2021/12/28/5-things-for-net-maui-devs-to-look-forward-to-in-2022/</link>
		
		<dc:creator><![CDATA[Sebastián Pérez]]></dc:creator>
		<pubDate>Tue, 28 Dec 2021 16:21:49 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Conf]]></category>
		<category><![CDATA[dotnetmaui]]></category>
		<category><![CDATA[Maui]]></category>
		<category><![CDATA[net6]]></category>
		<category><![CDATA[net7]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15624</guid>

					<description><![CDATA[<p>The year 2021 has brought us a lot of news related to .NET 6. However, we are going to highlight some milestones that must be taken into account for next [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/12/28/5-things-for-net-maui-devs-to-look-forward-to-in-2022/">5 things for .NET MAUI devs to look forward to in 2022</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15624" class="elementor elementor-15624" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-995944d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="995944d" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-eb10776" data-id="eb10776" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d034e34 elementor-widget elementor-widget-text-editor" data-id="d034e34" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The year 2021 has brought us a lot of news related to .NET 6. However, we are going to highlight some milestones that must be taken into account for next year:</p>
<p>1. <b>.NET MAUI release</b>:&nbsp;This year we had a working preview of .NET MAUI and a lot of announcements. However, we will have the release of this long-awaited framework for mobile cross-platform development by the middle of next year.&nbsp;If you can&#8217;t wait, stay tuned because a release candidate will be out very soon <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>2. <b>Visual Studio 2022 for Mac</b>:&nbsp;This tool, which was once known as Xamarin Studio, is used by developers who use MacOS environments. For this version 2022 a new version was created using native components to achieve an improvement in performance. The bad news are that we don&#8217;t have currently a stable version, but we will soon in 2022. If you want to try, you can find a preview version that can be downloaded <a href="https://visualstudio.microsoft.com/vs/mac/preview/">here</a>.</p>
<p>3. <b>C#11</b>:&nbsp;Although there is no official announcement of what will come in the next version of this programming language, some issues have already appeared in the Github repository that give us some clues. For example, the keyword field and list patterns, features that were left out of version 10. When ? Probably at .NET 7 release.</p>
<p>4. <b>Microsoft Build 2022</b>:&nbsp;Starting in Q2 2022 we will find Microsoft&#8217;s most important developer-oriented event: Microsoft Build. This event, that used to be face-to-face, adopted full-remote in recent years due to the pandemic and although there is no official announcement of the event, we can imagine that it will continue in the same way. In this event the releases roadmap is usually announced for the rest of the year, will it be the chance to see the stable version of .NET MAUI?</p>
<p>5. <b>.NET 7 release</b>:&nbsp;Although .NET 6 is a long support version, the roadmap for this technology tells us that in 2022 we will have version 7 available. This version will be very important for the integration of .NET MAUI, since it will be the first version that supports it from the beginning. When ? November 2022, and as expected a new edition of the <a href="https://www.dotnetconf.net/">.NET Conf</a> will accompany this release.</p>
<p>What are you looking forward the most? I definitely vote .NET MAUI release !</p>
<p>On behalf of the Xablu team, we wish you a great 2022!</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/12/28/5-things-for-net-maui-devs-to-look-forward-to-in-2022/">5 things for .NET MAUI devs to look forward to in 2022</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>.NET Conf 2021: Updates in .NET MAUI</title>
		<link>https://www.xablu.com/2021/11/24/net-conf-2021-updates-in-net-maui/</link>
		
		<dc:creator><![CDATA[Sebastián Pérez]]></dc:creator>
		<pubDate>Wed, 24 Nov 2021 13:13:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blazor]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[dotnetconf]]></category>
		<category><![CDATA[Maui]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15410</guid>

					<description><![CDATA[<p>In the previous post I shared the videos that I recommend to see of the conference, however we didn&#8217;t see anything on .NET MAUI. Why? First because I was planning [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/11/24/net-conf-2021-updates-in-net-maui/">.NET Conf 2021: Updates in .NET MAUI</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15410" class="elementor elementor-15410" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-633e669 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="633e669" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-df9733a" data-id="df9733a" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ac56422 elementor-widget elementor-widget-text-editor" data-id="ac56422" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In the <a href="https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/">previous post</a> I shared the videos that I recommend to see of the conference, however we didn&#8217;t see anything on .NET MAUI. Why? First because I was planning to do it in this post, but mainly because we are still in a preliminary version of this new .NET component and there weren&#8217;t many announcements.</p><p>To start, if it is your first approach to .NET MAUI I recommend you to read <a href="https://www.xablu.com/2021/09/06/the-future-of-xamarin-forms-net-maui/">this post</a> and watch this video of the conference:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-5d13e60 elementor-widget elementor-widget-video" data-id="5d13e60" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=HMYpAw2sl58&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-424a9e8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="424a9e8" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c6f8b3b" data-id="c6f8b3b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-bdd5de7 elementor-widget elementor-widget-text-editor" data-id="bdd5de7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>A very interesting functionality that was presented is to use the controls already known in Xamarin Forms but <span style="color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), roboto; font-weight: var( --e-global-typography-text-font-weight );">a drawn version </span><span style="color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), roboto; font-weight: var( --e-global-typography-text-font-weight );">instead of its native version:</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-08fa1ad elementor-widget elementor-widget-video" data-id="08fa1ad" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=-lbBFTpp25k&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-122c38e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="122c38e" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b2f9fbd" data-id="b2f9fbd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-0fe0e15 elementor-widget elementor-widget-text-editor" data-id="0fe0e15" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Blazor + MAUI: We can write web applications with Blazor in the same way as we did before but adding the chance of deploy them also on mobile devices:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-15a24f5 elementor-widget elementor-widget-video" data-id="15a24f5" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=swwWgFZJvEs&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-a044f72 elementor-widget elementor-widget-video" data-id="a044f72" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=Dr8L7zXxwLI&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-f9eae9a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="f9eae9a" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b48f238" data-id="b48f238" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-c463c31 elementor-widget elementor-widget-text-editor" data-id="c463c31" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Finally I here you have some updates related to one of the most used libraries which was created and maintained by the community: (Former Xamarin Community Toolkit) .NET Maui Community Toolkit</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7221a40 elementor-widget elementor-widget-video" data-id="7221a40" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=UR6LC7IXkvY&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-190bd15 elementor-widget elementor-widget-video" data-id="190bd15" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=yS8XmAQi3YY&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a29d491 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a29d491" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b8bd19e" data-id="b8bd19e" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4db4fea elementor-widget elementor-widget-text-editor" data-id="4db4fea" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Although there were no big announcements, this point helps us to catch up and be ready for when the stable version comes out next year. Stay connected !</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/11/24/net-conf-2021-updates-in-net-maui/">.NET Conf 2021: Updates in .NET MAUI</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>.NET Conf 2021: 5 videos you have to see</title>
		<link>https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/</link>
					<comments>https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/#respond</comments>
		
		<dc:creator><![CDATA[Sebastián Pérez]]></dc:creator>
		<pubDate>Thu, 18 Nov 2021 04:22:01 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Conf]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[net6]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15391</guid>

					<description><![CDATA[<p>The new version of .NET was released and the best place to present it is the most important conference that this platform has: .NET Conf. The conference was held over [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/">.NET Conf 2021: 5 videos you have to see</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15391" class="elementor elementor-15391" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-738898b8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="738898b8" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4e1ac291" data-id="4e1ac291" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-41aedfb7 elementor-widget elementor-widget-text-editor" data-id="41aedfb7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p></p>
<p class="wp-block-paragraph">The new version of .NET was released and the best place to present it is the most important conference that this platform has: .NET Conf. The conference was held over 3 days and had more than 100 speakers from around the world. And as I mentioned in the last post, I had the honor of being as a speaker <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The conference had several topics of interest related to the launch of .NET 6 of which I will recommend 5 videos you have to see:</p>
<p></p>
<p></p>
<ol class="wp-block-list">
<li>Keynote: General overview on what&#8217;s new including some very interesting metrics.</li>
</ol>
<p></p>								</div>
				</div>
				<div class="elementor-element elementor-element-183b91a elementor-widget elementor-widget-video" data-id="183b91a" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=gYQxBHjRNr0&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-4b47153 elementor-widget elementor-widget-text-editor" data-id="4b47153" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>2. What&#8217;s new on C#: Details on this new version of the most used language in .NET.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f867f45 elementor-widget elementor-widget-video" data-id="f867f45" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=dfzBMxXQUOc&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-1b3d555 elementor-widget elementor-widget-text-editor" data-id="1b3d555" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>3. .NET Hot Reload: Something familiar to Xamarin developers now applied to .NET.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1e63b1f elementor-widget elementor-widget-video" data-id="1e63b1f" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=M6eFXAz3g3s&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-28675c5 elementor-widget elementor-widget-text-editor" data-id="28675c5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>4. Minimal API: Don&#8217;t forget to read <a href="https://www.xablu.com/2021/10/04/minimal-api-with-net6/">this post</a> before !</p>
<p></p>								</div>
				</div>
				<div class="elementor-element elementor-element-27b974a elementor-widget elementor-widget-video" data-id="27b974a" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=uoVeZzKl6WQ&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-94bde34 elementor-widget elementor-widget-text-editor" data-id="94bde34" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>5. Creating NFT with .NET: My talk about implementing NFT on blockchain using .NET</p>
<p></p>								</div>
				</div>
				<div class="elementor-element elementor-element-f96d7a7 elementor-widget elementor-widget-video" data-id="f96d7a7" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=ZvioCO48A40&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-e2b0bbb elementor-widget elementor-widget-text-editor" data-id="e2b0bbb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>You can see more videos on .NET playlist: <a href="https://www.youtube.com/c/dotNET/videos" target="_blank" rel="noreferrer noopener">dotNET &#8211; YouTube</a></p>
<p><span style="color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), roboto; font-weight: var( --e-global-typography-text-font-weight );">Unlike the previous version (.NET 5) this new version shows a remarkable level of improvement and stability. I&#8217;m really excited about the idea of starting to develop with this platform. What do you think? Are you excited?</span></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/">.NET Conf 2021: 5 videos you have to see</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.xablu.com/2021/11/18/net-conf-2021-5-videos-you-have-to-see/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>.NET Conf 2021 is coming</title>
		<link>https://www.xablu.com/2021/11/09/net-conf-2021-is-coming/</link>
		
		<dc:creator><![CDATA[Sebastián Pérez]]></dc:creator>
		<pubDate>Tue, 09 Nov 2021 16:58:32 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Maui]]></category>
		<category><![CDATA[net6]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<category><![CDATA[Speaker]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15372</guid>

					<description><![CDATA[<p>As every year there will be a new edition of the most important .NET conference in the world: .NET Conf. This year will feature two tasty ingredients: the release of [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/11/09/net-conf-2021-is-coming/">.NET Conf 2021 is coming</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15372" class="elementor elementor-15372" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-6a0f6ef elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6a0f6ef" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7da85262" data-id="7da85262" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-139f8798 elementor-widget elementor-widget-text-editor" data-id="139f8798" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p></p>
<p class="wp-block-paragraph">As every year there will be a new edition of the most important .NET conference in the world: .NET Conf. This year will feature two tasty ingredients: the release of .NET 6 and &#8230; my first participation in the event <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p></p>
<p></p>
<p class="wp-block-paragraph">The conference will be held from November 9th to 11th and will focus mainly on what is new that introduces <a href="https://devblogs.microsoft.com/dotnet/announcing-net-6/">.NET 6</a>. Also, it will introduce <a href="https://devblogs.microsoft.com/visualstudio/visual-studio-2022-now-available/">Visual Studio 2022</a> that has been recently released and we can see some news about <a href="https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-10/">.NET MAUI</a> (preview 10). If you want to know more about the topics that will be presented I invite you to read these posts:</p>
<ol>
<li> <a href="https://www.xablu.com/2021/09/06/the-future-of-xamarin-forms-net-maui/">.NET MAUI</a></li>
<li><a href="https://www.xablu.com/2021/09/17/net-maui-implementing-platform-behavior/">.NET MAUI Behaviours</a></li>
<li><a href="https://www.xablu.com/2021/10/04/minimal-api-with-net6/">Minimal API</a>.</li>
</ol>
<p></p>
<p></p>
<p class="wp-block-paragraph">You can follow all the news of the event in the following link: <a href="https://www.dotnetconf.net/" target="_blank" rel="noreferrer noopener">.NET Conf 2021 (dotnetconf.net)</a></p>
<p></p>
<p></p>
<p class="wp-block-paragraph">Finally, I invite you to be part of my presentation on &#8220;Creating NFT with .NET&#8221; next Thursday 11th at 6 am (PT) / 10 am (ARG) / 2 pm (NT). See you there !</p>
<p></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/11/09/net-conf-2021-is-coming/">.NET Conf 2021 is coming</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>.NET MAUI: Implementing platform behavior</title>
		<link>https://www.xablu.com/2021/09/17/net-maui-implementing-platform-behavior/</link>
		
		<dc:creator><![CDATA[Ruud Kobes]]></dc:creator>
		<pubDate>Fri, 17 Sep 2021 15:16:07 +0000</pubDate>
				<category><![CDATA[Mobile Strategies]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Maui]]></category>
		<category><![CDATA[net6]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15134</guid>

					<description><![CDATA[<p>.NET MAUI is right around the corner. Like its predecessor it offers sharing most code while building for multiple platforms. This includes the UI part. Of course there are still [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/09/17/net-maui-implementing-platform-behavior/">.NET MAUI: Implementing platform behavior</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15134" class="elementor elementor-15134" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-b984a0c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b984a0c" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-75b630c" data-id="75b630c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-510f200 elementor-widget elementor-widget-text-editor" data-id="510f200" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>.NET MAUI is right around the corner. Like its predecessor it offers sharing most code while building for multiple platforms. This includes the UI part. Of course there are still elements that require access to the platform, like accessing the camera, or something less common like customizing HttpMessageHandler behavior on iOS.</p><p>For common use-cases Xamarin.Essentials was offered to Xamarin Forms users. Now with MAUI this library will be included in your application by default (named MAUI Essentials), making it easy to use SecureStorage or implement permissions on Android and iOS. Additionally there is a <a class="ql-link" href="https://github.com/CommunityToolkit/Maui" target="_blank" rel="noopener noreferrer">MAUI Community Toolkit</a><span data-void-detect="true"> which, as the name implies, provides free tools: effects, converters, controls and more.</span></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-7bbef8b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7bbef8b" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ce9f99f" data-id="ce9f99f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ee5e8e8 elementor-widget elementor-widget-heading" data-id="ee5e8e8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Manual platform implementation</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-f286e94 elementor-widget elementor-widget-text-editor" data-id="f286e94" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In some apps .NET MAUI with the Essentials pack and the Xamarin Community Toolkit can be sufficient. For most apps though, there is a point where some custom adjustment is necessary. A good example would be control adjustment using Handlers or Effects. We&#8217;ll describe Handlers and their value in more detail in a future blogpost.</p><p data-block-id="block-5c88f9cb-d68c-494a-bbc2-222d047d9dbf">There are several ways to go about defining platform specific behavior in MAUI. Because of multi-targeting the code will be in the single shared project. With Xamarin Forms this was also possible using the Shared Project architecture, but the recommended and most common approach was using a PCL and implementing platform behavior using dependency injection. Let&#8217;s run through some options!</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-ee9454c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ee9454c" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bd68bd1" data-id="bd68bd1" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-44a0481 elementor-widget elementor-widget-heading" data-id="44a0481" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Using #if</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-66213b0 elementor-widget elementor-widget-text-editor" data-id="66213b0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div>To add a few lines of platform-specific code to an otherwise shared class we can use compiler directives like <code>#if __IOS__.</code> This is a quick and easy solution and keeps the related code close together, in the same file. For smaller handler mappings this could be a nice and easy to manage approach. It could also make Effects easier, because we don&#8217;t need the routed effects and DI registration of every platform implementation. With larger sections of platform-specific code this can get messy and harder to read though.</div>								</div>
				</div>
				<div class="elementor-element elementor-element-bbe6743 elementor-widget elementor-widget-code-highlight" data-id="bbe6743" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="14,16,18" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>//SecureSettingsProvider.cs

namespace MyApp.Settings;

public class SecureSettingsProvider
{
    public string GetSecureSetting(string context, string key)
    {
        return GetLocalSetting($"{context}-{key}");
    }

    private string GetLocalSetting(string contextSpecificKey)
    {
        #if __IOS__
        // retrieve value from secure storage / keychain
        #elif __ANDROID__
        // do the same for android
        #endif
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-2071603 elementor-widget elementor-widget-spacer" data-id="2071603" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a6039d3 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a6039d3" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e90512f" data-id="e90512f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d6103d8 elementor-widget elementor-widget-heading" data-id="d6103d8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Using platform folders</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-664f9b6 elementor-widget elementor-widget-text-editor" data-id="664f9b6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>MAUI projects using the single project structure will provide platform folders out-of-the-box. They will be compiled conditionally by default, e.g. the Android folder will only be included when building for Android. Within this option there are still 2 distinctive approaches:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-cc62deb elementor-widget elementor-widget-heading" data-id="cc62deb" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Dependency injection using interfaces</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-93ccf2c elementor-widget elementor-widget-text-editor" data-id="93ccf2c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div>Like the old-school Xamarin Forms pattern, using an interface in the cross-platform code, and explicit implementations in each platform folder. Any logic that could be shared will have to be copied between the implementations, although to make it slightly more complex, one could also define a cross-platform base class.</div>								</div>
				</div>
				<div class="elementor-element elementor-element-1d9a91d elementor-widget elementor-widget-heading" data-id="1d9a91d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Partial classes</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-26802da elementor-widget elementor-widget-text-editor" data-id="26802da" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div>Partial classes are not a new concept in C#. Check <a class="ql-link" href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods" target="_blank" rel="noopener noreferrer">the docs</a><span data-void-detect="true"> if you want to read more about them. We can define one cross-plaform partial class and another partial class with the same name and namespace in each platform folder. This is a pretty clean alternative to using #if directives when working with larger classes/code sections. A potential disadvantage of this approach is that both partial classes live quite far-away from each other, which could hinder discoverability and increase cognitive load, if there is a lot of shared code. If the partial class has little shared code, the experience is a lot like using interfaces.</span></div>								</div>
				</div>
				<div class="elementor-element elementor-element-2bbf542 elementor-widget elementor-widget-code-highlight" data-id="2bbf542" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-csharp line-numbers">
				<code readonly="true" class="language-csharp">
					<xmp>//SecureSettingsProvider.cs in shared code

namespace MyApp.Settings;
public partial class SecureSettingsProvider.cs
{
    public string GetSecureSetting(string context, string key)
    {
        var settingValue = GetLocalSetting($"{context}-{key}");

        // do some work that's shared between implementations
        if(String.IsNullOrEmtpy(something))
          return "nothing";
        else
          return settingValue;
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-0102824 elementor-widget elementor-widget-code-highlight" data-id="0102824" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>//SecureSettingsProvider.cs in Android platform folder

namespace MyApp.Settings;
public partial class SecureSettingsProvider.cs
{
    private string GetLocalSetting(string contextSpecificKey)
    {
        // retrieve secure setting value for Android
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-fae696c elementor-widget elementor-widget-spacer" data-id="fae696c" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4f17b6e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4f17b6e" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-de75dbc" data-id="de75dbc" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1b9e025 elementor-widget elementor-widget-heading" data-id="1b9e025" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Using filename based conditional compiling</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-b4adb09 elementor-widget elementor-widget-text-editor" data-id="b4adb09" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p data-block-id="block-4440b66d-9328-442d-99a7-dac9ac7a5432">This pattern is used in the MAUI github repository itself. Concretely this again means using partial classes, but this time the platform specific implementation is defined in the same folder in a separate file. For example for our <code>SecureS</code><code>ettingsProvider</code>, we would have a partial class in <code>SecureSettingsProvider.cs</code> and another one in <code>SecureSettingsProvider.Android.cs</code>, <img decoding="async" class="size-full wp-image-15137 alignright" src="https://www.xablu.com/wp-content/uploads/2021/09/functionality-grouping-multitargeting.png" alt="" width="292" height="107" srcset="https://www.xablu.com/wp-content/uploads/2021/09/functionality-grouping-multitargeting.png 292w, https://www.xablu.com/wp-content/uploads/2021/09/functionality-grouping-multitargeting-100x37.png 100w" sizes="(max-width: 292px) 100vw, 292px" /><code>SecureSettingsProvider.iOS.cs</code> , etc.<br />A potential advantage of this is that platform implementations are directly next to the shared part, which improves discoverability and can reduce cognitive load.</p><div data-block-id="block-47ce594c-5a02-48f4-aeed-56e1ada477c1">This approach is not supported out of the box though. The compiler needs to be informed which files to include or more accurately, which NOT to include, so we need to add this information to our project file. For an example of how this could look, see the first +-30 lines in <a href="https://github.com/dotnet/maui/blob/main/.nuspec/Microsoft.Maui.Controls.MultiTargeting.targets" target="_blank" rel="noopener noreferrer">MultiTargeting.targets</a><span data-void-detect="true"> file in the MAUI repository. The following sample is taken from line 2-7 there and slightly adjusted:</span></div>								</div>
				</div>
				<div class="elementor-element elementor-element-f12ba5d elementor-widget elementor-widget-code-highlight" data-id="f12ba5d" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-xml line-numbers">
				<code readonly="true" class="language-xml">
					<xmp><ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS')) != true AND $(TargetFramework.StartsWith('net6.0-ios')) != true AND $(TargetFramework.StartsWith('net6.0-maccatalyst')) != true ">
  <Compile Remove="**\**\*.iOS.cs" />
  <None Include="**\**\*.iOS.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup></xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-de29544 elementor-widget elementor-widget-text-editor" data-id="de29544" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div data-block-id="block-47ce594c-5a02-48f4-aeed-56e1ada477c1">This ItemGroup definition informs the compiler to ignore all <code>*.iOS.cs</code> files in the project unless the current build target is Xamarin.iOS, net6.0-ios or .net6.0-maccatalyst. Similar project configuration can also be used to allow for custom platform folders thoughout the code:</div>								</div>
				</div>
				<div class="elementor-element elementor-element-697da10 elementor-widget elementor-widget-code-highlight" data-id="697da10" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-xml line-numbers">
				<code readonly="true" class="language-xml">
					<xmp>  <Compile Remove="**\iOS\**\*.cs" />
  <None Include="**\iOS\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" /></xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-f08aa8c elementor-widget elementor-widget-spacer" data-id="f08aa8c" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-92e45a8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="92e45a8" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f50c498" data-id="f50c498" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-a8fc026 elementor-widget elementor-widget-heading" data-id="a8fc026" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Which option is best?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3496340 elementor-widget elementor-widget-text-editor" data-id="3496340" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As always in software development, the answer here is &#8220;it depends&#8221;. For multitargeting libraries, like MAUI itself, it is likely a good option to look at the the filename or nested folder approach we discussed. With a little project setup this allows you to group code by functionality, keeping related code close together.</p><p data-block-id="block-4a8872a6-8e32-423d-8e43-360a54819071">For apps, it depends on how much platform-specific code really needs to be written. For some apps only a few adjustments may be needed using Effects, Behaviors and handler mappings. It is very possible for these to be only a few lines which allows for keeping everying in one file using #if directives. If these grow it is convenient to use the existing platform folders. In both these alternatives you can forego the need to use interfaces and register the platform services for dependency injection which can be convenient.</p><p data-block-id="block-4a8872a6-8e32-423d-8e43-360a54819071">Please note that we&#8217;ve been looking at these patterns fairly strictly from MAUI perspective. Of course it is possible that you prefer to use interfaces to making testing and mocking easier. In that case you will be setting up the DI container anyway. It may still be easier to register one implementation and use above options, instead of registering every platform service separately, but keep in mind your overall architecture before choosing any of these patterns.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/09/17/net-maui-implementing-platform-behavior/">.NET MAUI: Implementing platform behavior</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>10 Things You Should Know About Xamarin</title>
		<link>https://www.xablu.com/2020/08/06/10-things-you-should-know-about-xamarin/</link>
		
		<dc:creator><![CDATA[Sebastián Pérez]]></dc:creator>
		<pubDate>Thu, 06 Aug 2020 15:25:13 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[f#]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xamarin]]></category>
		<category><![CDATA[Xamarin Essentials]]></category>
		<category><![CDATA[xamarin.forms]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=12287</guid>

					<description><![CDATA[<p>Xamarin is used to create amazing cross-platform mobile applications! Did you know that cross-platform means you can actually share classes across .NET platforms? Our colleague Seba takes center-stage to explain [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2020/08/06/10-things-you-should-know-about-xamarin/">10 Things You Should Know About Xamarin</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="12287" class="elementor elementor-12287" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-8716c97 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8716c97" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9a19a06" data-id="9a19a06" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-8f70597 elementor-widget elementor-widget-text-editor" data-id="8f70597" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Xamarin</strong> is used to create amazing <strong>cross-platform mobile applications</strong>! Did you know that cross-platform means you can actually share classes across .NET platforms?</p><p>Our colleague Seba takes center-stage to explain 10 different things you should know about Xamarin. He shares some <strong>core definitions</strong> for Xamarin, as well as how to use it in practice:<span class="Apple-converted-space"> </span></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b408956 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b408956" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4a6d717" data-id="4a6d717" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-58f7ebb elementor-widget elementor-widget-video" data-id="58f7ebb" data-element_type="widget" data-e-type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=z9qCUKuG5SU&amp;feature=youtu.be&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
							<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-3fe0cc3 elementor-widget elementor-widget-text-editor" data-id="3fe0cc3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Here is a summary of the ten points Seba described:</p><ol><li>You can create amazing applications using <strong>.NET</strong> as a platform. You can write C# code, as well as F# code. Basically, you can write everything you want using .NET as a platform.</li><li>Creating a library with Xamarin using .Net Standard, means you can share this library with other platforms, such as .NET core. Therefore, you can<strong> reuse your libraries</strong>.</li><li>The combination of the .NET environment and Visual Studio means you can <strong>write your application on both Windows and Mac</strong> machines.</li><li>Xamarin is cross-platform! You can share modals, classes and logic functionality across all the platforms, such as Android, iOS and Windows. In practice, you can <strong>share 75% of your code</strong>!</li><li>Xamarin will compile your application as native: there is no additional layer between Xamarin and your application. Your application will have <strong>native controls and native performance!</strong> Also, this allows you to use all the functionalities your devices offer.</li><li>In the traditional approach, you will have different projects with different views for each platform. However, Xamarin.Forms actually does allow you to share views across platforms as well. <strong>In Xamarin.Forms, you can write XAML views.</strong> It will still include native controls in the different platforms. <strong>Tip: take a look at Xamarin.Forms if you want to work with Xamarin for the first time.</strong></li><li>Xamarin Essentials allows you to add device functionality, such as GPS, to your Xamarin.Forms projects. <strong>Xamarin Essentials</strong> is included with the Visual Studio application you need to install to start working with Xamarin.</li><li><strong>Xamarin is open-source</strong>: you can find all the code in GitHub! There are more than 60.000 contributors: a real big and active community which we cherish at Xablu a lot!</li><li>There is a great community working with Xamarin. <strong>There are a lot of videos, blogs and youtube channels</strong> to find the information to learn about using Xamarin.</li><li>Xamarin is free! It has no licenses for commercial use! If you want to publish your apps, you do have to pay the platform subscription, such as for Apple or Android, but <strong>you never have to pay a fee for using Xamarin</strong>.</li></ol><p>What is your favourite point on this list?</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2020/08/06/10-things-you-should-know-about-xamarin/">10 Things You Should Know About Xamarin</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Meet the Developer: 5 questions for our newest developer Luuk Jongebloet</title>
		<link>https://www.xablu.com/2019/07/22/meet-the-developer-5-questions-for-our-newest-developer-luuk-jongebloet/</link>
		
		<dc:creator><![CDATA[Sabine Alberts]]></dc:creator>
		<pubDate>Mon, 22 Jul 2019 08:24:29 +0000</pubDate>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[HR]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[xamarin]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=18304</guid>

					<description><![CDATA[<p>A few weeks ago, Luuk Jongebloet, officialy became a team member of Xablu&#8217;s Xamarin Development team. We&#8217;ve asked Luuk to answer a few questions. Curious about Luuk? See his interview [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2019/07/22/meet-the-developer-5-questions-for-our-newest-developer-luuk-jongebloet/">Meet the Developer: 5 questions for our newest developer Luuk Jongebloet</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="18304" class="elementor elementor-18304" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5b708913 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5b708913" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7f501c70" data-id="7f501c70" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5705a7c8 elementor-widget elementor-widget-text-editor" data-id="5705a7c8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="x-container max width e11441-e2 m8tt-1"><div class="x-column x-sm x-1-1 e11441-e3 m8tt-2"><div id="" class="x-text"><p><strong>A few weeks ago, Luuk Jongebloet, officialy became a team member of Xablu&#8217;s Xamarin Development team. We&#8217;ve asked Luuk to answer a few questions. Curious about Luuk? See his interview below!</strong></p></div><h2 class="h-custom-headline man h3">What brought you to Xamarin development and where do you want to go with it?</h2><hr class="x-gap" /><div id="" class="x-text"><p>For me it all started some time ago, in 2015, with the development of a smartwatch application. This whole process of creating fascinated me. Seeing something rise and evolve every time you adjust the code makes my job fun and lively.</p><p>As a developer I want to be able to create many iOS and Android applications which result in an easier and beneficial life for the end-user.</p></div><h2 class="h-custom-headline man h3">What’s the coolest thing you have ever been working on regarding development?</h2><hr class="x-gap" /><div id="" class="x-text"><p>That must be the creation of an AI robot car which is able to imitate a train! This specific “train” is following a set track, and while it goes, it is picking up people from set stations. That sounds like some cool stuff right?!</p></div><h2 class="h-custom-headline man h3">What has your experience at XABLU been like so far?</h2><hr class="x-gap" /><div id="" class="x-text"><p>Xablu, in its essence, is a group of carefully handpicked Xamarin professionals. All with very high expertise in my opinion. Being a part of this team is great. Next to that, being a team member, also enables to learn a bunch of new things from my colleagues all the time.</p></div><hr class="x-gap" /></div></div><div class="x-container max width e11441-e15 m8tt-1"><div class="x-column x-sm x-1-1 e11441-e16 m8tt-2"><h2 class="h-custom-headline man h3">How do you like to spend your free time?</h2><hr class="x-gap" /><div id="" class="x-text"><p>I like to spend my free time with either gaming, working out in the gym, and of course some quality time with friends has never hurt anybody.</p></div><h2 class="h-custom-headline man h3">What’s your favourite food?!</h2><hr class="x-gap" /><div id="" class="x-text"><p>I can’t say for certain since I like á LOT of food! But lately I do like to eat ramen. Ramen is a Japanese dish, very salty, and mainly consisting of wheat noodles.</p></div><hr class="x-gap" /><hr class="x-line e11441-e24 m8tt-3" /><hr class="x-gap" /><div id="" class="x-text"><p><strong>Good luck to Luuk from the whole team!</strong></p><p>We&#8217;re always happy to grow our team with eager developers interested in working their hand at real app projects.</p></div></div></div>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-172de933 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="172de933" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6dbedeba" data-id="6dbedeba" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5e0bba6 elementor-widget elementor-widget-text-editor" data-id="5e0bba6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-67a840c5 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="67a840c5" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5345508d" data-id="5345508d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-308108b elementor-align-center elementor-widget elementor-widget-button" data-id="308108b" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2019/07/22/meet-the-developer-5-questions-for-our-newest-developer-luuk-jongebloet/">Meet the Developer: 5 questions for our newest developer Luuk Jongebloet</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
