Charlie Kindel on Terminal.Gui - Episode 146

Azure DevOps Podcast

Episode | Podcast

Date: Mon, 21 Jun 2021 08:00:00 +0000

<p><span style="font-weight: 400;">This week, Jeffrey is joined by Charlie Kindel! Charlie is an American tech executive doing consulting and advising. Formerly, he has held roles with Control4, Amazon, and Microsoft. Much of his career has been spent focused on smart home products. Additionally, he is also the maintainer of Terminal Gui, which is a .NET 5 UI framework for console applications.</span></p> <p> </p> <p><span style="font-weight: 400;">In this conversation, Charlie discusses the Terminal Gui and highlights some of the cases where it shines. If you’re looking for a full user interface but you only want it to sip — rather than sap — system resources, the Terminal Gui may be the solution you’re looking for! It’s fun from a retro perspective as it allows people to go and explore the way UIs were back in the 80s and before.</span></p> <p> </p> <p><span style="font-weight: 400;">Charlie shares how the Terminal Gui project got started, its current capabilities, the notable applications that use Terminal Gui, its constraints, dependencies, memory usage, potential future integration, and more! Don’t miss out on learning about this lightweight UI framework.</span></p> <p> </p> <p><strong>Topics of Discussion:</strong></p> <p><span style="font-weight: 400;">[:14] About</span> <em><span style="font-weight: 400;">The Azure DevOps Podcast</span></em><span style="font-weight: 400;">, Clear Measure, the new podcast</span> <em><span style="font-weight: 400;">Architect Tips</span></em><span style="font-weight: 400;">, and Jeffrey’s offer to speak at virtual user groups.</span></p> <p><span style="font-weight: 400;">[1:24] About today’s episode with Charlie Kindel</span></p> <p><span style="font-weight: 400;">[1:48] Jeffrey welcomes Charlie Kindel to the podcast!</span></p> <p><span style="font-weight: 400;">[2:04] Charlie shares some of his notable career highlights.</span></p> <p><span style="font-weight: 400;">[4:28] What Jeffrey finds fascinating about Terminal Gui with modern .NET 5.0 applications.</span></p> <p><span style="font-weight: 400;">[5:55] How the Terminal Gui project got started and its capabilities.</span></p> <p><span style="font-weight: 400;">[7:35] Jeffrey highlights how lightweight Terminal Gui is.</span></p> <p><span style="font-weight: 400;">[8:22] Are there any notable applications that use Terminal Gui right now? What is one of Charlie’s favorites?</span></p> <p><span style="font-weight: 400;">[10:09] What does the control model for Terminal Gui look like for those who want to create a composite control or a new type of control?</span></p> <p><span style="font-weight: 400;">[12:11] Are there any limitations besides the layout? What types of controls can be made with Terminal Gui?</span></p> <p><span style="font-weight: 400;">[13:46] What are the constraints with Terminal Gui?</span></p> <p><span style="font-weight: 400;">[15:46] Is it expected to use a form base model similar to WinForms or WPF? Or more like model-view-controller where you split up the behavior and the layout? What’s the intended approach?</span></p> <p><span style="font-weight: 400;">[16:56] If someone is going to adopt Terminal Gui and use it for a particular command line EXE, what is the testing story (so that they know if the user interface is behaving properly)?</span></p> <p><span style="font-weight: 400;">[17:50] If someone is going to be using Terminal Gui in their build, tests, and deployments, do they need to be aware of any dependencies (besides the library itself)?</span></p> <p><span style="font-weight: 400;">[18:27] A word from</span> <em><span style="font-weight: 400;">Azure DevOps Podcast</span></em><span style="font-weight: 400;">’s sponsor: Clear Measure.</span></p> <p><span style="font-weight: 400;">[18:58] What do the tests look like in Terminal Gui? What should developers be looking at if they want to write tests?</span></p> <p><span style="font-weight: 400;">[20:25] With Terminal Gui, would you deploy as a regular .NET 5.0 assembly? Would most of the time you roll up all the libraries and do a single executable deployment?</span></p> <p><span style="font-weight: 400;">[20:51] What are some of the future visions for Terminal Gui?</span></p> <p><span style="font-weight: 400;">[22:15] Why you would want to use Terminal Gui if you already use WPF, Xamarin, MAUI, etc.</span></p> <p><span style="font-weight: 400;">[23:19] Jeffrey shares one of his first experiences with using Terminal Gui and why he likes it.</span></p> <p><span style="font-weight: 400;">[24:09] Has Terminal Gui been tested with really old Windows or constrained hardware?</span></p> <p><span style="font-weight: 400;">[24:33] Are there any reports on the footprint of startup memory usage?</span></p> <p><span style="font-weight: 400;">[25:03] Jeffrey and Charlie discuss memory measurements.</span></p> <p><span style="font-weight: 400;">[26:51] Is tab ordering built into Terminal Gui?</span></p> <p><span style="font-weight: 400;">[28:08] Charlie discusses the potential of future integration with MAUI.</span></p> <p><span style="font-weight: 400;">[29:19] Charlie shouts out the other contributors on the Terminal Gui project.</span></p> <p><span style="font-weight: 400;">[30:24] Where and how to check out Terminal Gui.</span></p> <p><span style="font-weight: 400;">[30:50] How to start contributing to the project.</span></p> <p><span style="font-weight: 400;">[31:17] Jeffrey thanks Charlie Kindel for joining the podcast!</span></p> <p> </p> <p><strong>Mentioned in this Episode:</strong></p> <p><a href="http://architecttips.clearmeasure.com/"><em><span style="font-weight: 400;"> Architect Tips</span></em></a> <span style="font-weight: 400;">— New video podcast!</span></p> <p><a href="https://azure.microsoft.com/en-ca/services/devops/?&amp;OCID=AID736756_SEM_7eul5uID"> <span style="font-weight: 400;">Azure DevOps</span></a></p> <p><a href="https://www.clear-measure.com/"><span style="font-weight: 400;">Clear Measure</span></a> <span style="font-weight: 400;">(Sponsor)</span></p> <p><a href="https://www.amazon.com/NET-DevOps-Azure-Developers-Architecture/dp/1484253426"> <em><span style="font-weight: 400;">.NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way,</span></em> <span style="font-weight: 400;">by Jeffrey Palermo</span></a> <span style="font-weight: 400;">— Available on Amazon!</span></p> <p><a href="http://www.lulu.com/shop/jeffrey-palermo/net-devops-for-azure-ebook-edition/ebook/product-24094762.html"> <span style="font-weight: 400;">bit.ly/dotnetdevopsebook</span></a> <span style="font-weight: 400;">— Click here to download the</span> <em><span style="font-weight: 400;">.NET DevOps for Azure</span></em> <span style="font-weight: 400;">ebook!</span></p> <p><a href="https://www.youtube.com/channel/UC-ROXy08zc-qTA0-3GAQDLw"><span style="font-weight: 400;"> Jeffrey Palermo’s Youtube</span></a></p> <p><a href="https://twitter.com/jeffreypalermo?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"> <span style="font-weight: 400;">Jeffrey Palermo’s Twitter</span></a> <span style="font-weight: 400;">—</span> <span style="font-weight: 400;">Follow to stay informed about future events!</span></p> <p><a href="https://blog.stevensanderson.com/"><span style="font-weight: 400;">The Azure DevOps Podcast’s Twitter: @AzureDevOpsShow</span></a></p> <p><a href="https://github.com/migueldeicaza/gui.cs"><span style="font-weight: 400;">Terminal Gui source code</span></a></p> <p><a href="https://www.powershellgallery.com/packages/Microsoft.PowerShell.GraphicalTools/0.2.0"> <span style="font-weight: 400;">Microsoft PowerShell Graphical Tools</span></a></p> <p><a href="https://devblogs.microsoft.com/powershell/introducing-consoleguitools-preview/"> <span style="font-weight: 400;">Out-ConsoleGridView</span></a> <span style="font-weight: 400;">(OCG)</span></p> <p><a href="https://tirania.org/blog/archive/2019/Apr-22.html"><span style="font-weight: 400;">Miguel de Icaza's 2019 blog post on Terminal Gui</span></a></p> <p><a href="https://tirania.org/Retro.pdf"><span style="font-weight: 400;">Presentation from .NET Conf 2018</span></a></p> <p><a href="https://channel9.msdn.com/Events/dotnetConf/2018/S313"><span style="font-weight: 400;"> Video recording of Terminal Gui</span></a></p> <p><a href="https://github.com/jsuarezruiz/xamarin-forms-gui.cs"><span style="font-weight: 400;">Xamarin.Forms with console UI adapter</span></a></p> <p><a href="https://www.selenium.dev/"><span style="font-weight: 400;">Selenium</span></a></p> <p><a href="https://dotnet.microsoft.com/apps/xamarin"><span style="font-weight: 400;">Xamarin</span></a></p> <p><a href="https://github.com/dotnet/maui"><span style="font-weight: 400;">MAUI</span></a></p> <p> </p> <p><strong>Want to Learn More?</strong></p> <p><span style="font-weight: 400;">Visit</span> <a href="http://azuredevopspodcast.clear-measure.com/"><span style="font-weight: 400;">AzureDevOps.Show</span></a> <span style="font-weight: 400;">for show notes and additional episodes.</span></p>