{"id":696186,"date":"2026-04-09T16:32:51","date_gmt":"2026-04-09T15:32:51","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=696186"},"modified":"2026-04-09T16:32:55","modified_gmt":"2026-04-09T15:32:55","slug":"webinar-oss-power-ups-xenoatom-terminal-ui","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/zh-hans\/dotnet\/2026\/04\/09\/webinar-oss-power-ups-xenoatom-terminal-ui","title":{"rendered":"Webinar \u2013 OSS Power-Ups: XenoAtom.Terminal.UI"},"content":{"rendered":"\n<p>Join us <strong>Thursday, April 16, 2026, 15:00 \u2013 16:30 UTC<\/strong> (<a href=\"https:\/\/www.worldtimebuddy.com\/?qm=1&amp;lid=100,8,5,12,22,30&amp;h=100&amp;date=2026-04-16&amp;sln=15-16&amp;hf=2\" target=\"_blank\" rel=\"noopener\">check other timezones<\/a>) for our free live webinar, <strong>OSS PowerUps \u2013 XenoAtom.Terminal.UI<\/strong>, with <a href=\"https:\/\/xoofx.github.io\/\" target=\"_blank\" rel=\"noopener\">Alexandre Mutel<\/a>. This is the <strong>fifteenth episode<\/strong> of our series of <a href=\"https:\/\/lp.jetbrains.com\/oss-powerups\/\" target=\"_blank\" rel=\"noopener\">OSS Power-Ups<\/a>, where we put a spotlight on open-source .NET projects.<\/p>\n\n\n\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/info.jetbrains.com\/rider-livestream-april16-2026.html\" target=\"_blank\" rel=\"noopener\">Register now<\/a> and get a reminder, or <a href=\"https:\/\/www.youtube.com\/live\/S_emAviKHQM\" target=\"_blank\" rel=\"noopener\">join on YouTube<\/a><\/p>\n\n\n\n<p><em>What does it take to build a terminal UI that feels modern &#8211; and keeps it maintainable as it grows? In this talk, I&#8217;ll share the behind-the-scenes journey of creating XenoAtom.Terminal.UI, focusing on the design choices that enabled a reactive, binding-first retained model, a consistent layout pipeline, and a foundation that scaled to 60+ controls without turning into framework spaghetti.<\/em><\/p>\n\n\n\n<p><em>I&#8217;ll also show how AI coding agents accelerated key parts of the work &#8211; from API exploration to implementation, refactoring, and tests &#8211; what worked, what didn&#8217;t, and the practical guardrails that kept the project shippable. Finally, I&#8217;ll connect these lessons to how I&#8217;m evolving my broader OSS portfolio: what&#8217;s next, how I choose projects, and how AI is changing the way I build open source.<\/em><\/p>\n\n\n\n<figure><a href=\"https:\/\/info.jetbrains.com\/rider-livestream-april16-2026.html\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/04\/YouTube_Thumbnail_1280x720.png\" alt=\"Register for the webinar\" class=\"wp-image-180343\" width=\"800\"><\/a><\/figure>\n\n\n\n<p>You can attend <a href=\"https:\/\/www.youtube.com\/live\/S_emAviKHQM\" target=\"_blank\" rel=\"noreferrer noopener\">Alexandre Mutel&#8217;s webinar on YouTube<\/a>, or <a href=\"https:\/\/info.jetbrains.com\/rider-livestream-april16-2026.html\" data-type=\"link\" data-id=\"https:\/\/info.jetbrains.com\/rider-livestream-april16-2026.html\" target=\"_blank\" rel=\"noopener\"><strong>register here<\/strong> to get a reminder closer to the webinar<\/a>.<\/p>\n\n\n\n<p>About the presenter:<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                                                            <div class=\"about-author__box-img\">\n                            <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/04\/xoofx-2023-v2-closeup-medium.jpg\" alt=\"\" loading=\"lazy\">\n                        <\/div>\n                                        <div class=\"about-author__box-text\">\n                                                    <h4>Alexandre Mutel<\/h4>\n                                                <p>Alexandre Mutel is VP of Engineering at DataGalaxy, driving innovation in the data governance space. With 20+ years in .NET, he&#8217;s known for widely used open-source projects like SharpDX, Markdig, Scriban, and the profiler Ultra. He enjoys pushing .NET into unexpected territory &#8211; from high-performance tooling to retro experiments like building a .NET framework for the Commodore 64.<\/p>\n<p>You can follow Alexandre on <a href=\"https:\/\/mastodon.social\/@xoofx\" target=\"_blank\" rel=\"noopener\">Mastodon<\/a>, <a href=\"https:\/\/bsky.app\/profile\/xoofx.mastodon.social.ap.brid.gy\" target=\"_blank\" rel=\"noopener\">BlueSky<\/a>, <a href=\"https:\/\/www.linkedin.com\/in\/alexandre-mutel\/\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a>, and <a href=\"https:\/\/github.com\/xoofx\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n                    <\/div>\n                            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":553,"featured_media":696280,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,30],"tags":[558,6442,2004],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/696186"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/553"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=696186"}],"version-history":[{"count":8,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/696186\/revisions"}],"predecessor-version":[{"id":699993,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/696186\/revisions\/699993"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/696280"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=696186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=696186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=696186"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=696186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}