<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mario Rosell</title>
    <description>The latest articles on Forem by Mario Rosell (@mario_rosell_eba5bf025fde).</description>
    <link>https://forem.com/mario_rosell_eba5bf025fde</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2254099%2Fbc4657eb-3829-4a2e-9acf-9bdf82726603.png</url>
      <title>Forem: Mario Rosell</title>
      <link>https://forem.com/mario_rosell_eba5bf025fde</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mario_rosell_eba5bf025fde"/>
    <language>en</language>
    <item>
      <title>The Acme Integrating Computing Environment</title>
      <dc:creator>Mario Rosell</dc:creator>
      <pubDate>Thu, 18 Dec 2025 13:30:24 +0000</pubDate>
      <link>https://forem.com/mario_rosell_eba5bf025fde/the-acme-integrating-computing-environment-11no</link>
      <guid>https://forem.com/mario_rosell_eba5bf025fde/the-acme-integrating-computing-environment-11no</guid>
      <description>&lt;p&gt;&lt;strong&gt;ACHTUNG:&lt;/strong&gt; This document was written by a Plan9 fanboy.&lt;/p&gt;

&lt;p&gt;I used to be a pretty dedicated Visual Studio user until, very recently... I discovered &lt;a href="https://plan9.io/plan9/" rel="noopener noreferrer"&gt;the Plan 9 From Bell Labs&lt;/a&gt; operating system, a direct &lt;em&gt;spriritual&lt;/em&gt; successor of UNIX.&lt;/p&gt;

&lt;p&gt;Plan9 was developed, as aforementioned, as a direct successor of UNIX. It was also developed by Bell Labs, more specifically, a group most notably containing &lt;strong&gt;Rob Pike&lt;/strong&gt; (the creator of Go), &lt;strong&gt;Dennis Ritchie&lt;/strong&gt;, &lt;strong&gt;Brian Keringhan&lt;/strong&gt; (probably the best technical writer ever) and &lt;strong&gt;Ken Thrompson&lt;/strong&gt; (&lt;strong&gt;the most notable creators of UNIX and C&lt;/strong&gt;), and other visionaries.&lt;/p&gt;

&lt;p&gt;Plan9 is perhaps the best operating system ever created (in my humble opinion, of course); 9P allows me to &lt;strong&gt;mount remote files&lt;/strong&gt;, I can have &lt;strong&gt;different&lt;/strong&gt; mounts (&lt;em&gt;namespaces&lt;/em&gt;) &lt;strong&gt;per process&lt;/strong&gt;, and much more cool shit.&lt;/p&gt;

&lt;p&gt;Plan9 originated lots of modern things, like UTF-8, &lt;code&gt;/proc&lt;/code&gt;, and 9P.&lt;/p&gt;

&lt;p&gt;Plan9 comes with an &lt;em&gt;editor&lt;/em&gt; called &lt;em&gt;Acme&lt;/em&gt;, which is also awesome, and has been ported to *NIX, Windows, and macOS systems, with &lt;a href="https://9fans.github.io/plan9port/" rel="noopener noreferrer"&gt;Plan 9 From Userspace/plan9port/p9p&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This document is meant as a quick introduction for all-time beginners.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating Computing Environment(s)
&lt;/h2&gt;

&lt;p&gt;I wouldn't call &lt;em&gt;Acme&lt;/em&gt; an editor, as it can do much more than that, without bloating itself.&lt;/p&gt;

&lt;p&gt;Modern IDEs (integrated development environments) are meant to cover the widest array of features developers could ever need in a single monolith - and fail, whereas &lt;em&gt;Acme&lt;/em&gt; barely has a working terminal and yet can do &lt;em&gt;everything&lt;/em&gt;. This is because &lt;em&gt;Acme&lt;/em&gt; is more of an &lt;em&gt;integrating computing environment&lt;/em&gt; (ICE), as I like to call it, or a &lt;em&gt;programmer's system interface&lt;/em&gt;. In fact, it only provides a filesystem interface, and a way to execute scripts. It kind of just integrates &lt;em&gt;&lt;strong&gt;itself&lt;/strong&gt;&lt;/em&gt; to the system, not like IDEs that try to morph the system to it's own bad interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tag Line
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Lemme' just write a new button here...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The tag line is like the status line of every buffer. Unlike on, every modern editor, it's another buffer like any other (just that has a blue background), that includes that it's modifiable.&lt;/p&gt;

&lt;p&gt;You can (and in fact, &lt;em&gt;should&lt;/em&gt;) add commands to the tag line and they'll work like normal commands already there.&lt;/p&gt;

&lt;p&gt;In fact, I always add to some buffer my build command so I can execute it quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some basic Commands
&lt;/h2&gt;

&lt;p&gt;Actually, all Acme commands are just system commands that modify &lt;code&gt;/proc/&amp;lt;acme's PID&amp;gt;/&lt;/code&gt; (that's why I describe it as &lt;em&gt;automatically integrating&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;A very useful command is &lt;code&gt;win&lt;/code&gt;. &lt;code&gt;win&lt;/code&gt; makes a &lt;em&gt;dumb&lt;/em&gt; terminal window inside acme. Note this terminal lacks any VT100 status codes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Acme
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;"Acme has a very simple mouse interface, the first button selects text, the second button selects text, and the third button also selects text."&lt;/em&gt; – Charles Forsyth (paraphrased)&lt;/p&gt;

&lt;p&gt;Unlike the mindfucks of Vim or Emacs, Acme uses the mouse. Unlike popular belief states, the mouse, when used well, is way faster than the keyboard. First, Acme &lt;strong&gt;really&lt;/strong&gt; depends on a three-button mouse, so go get a mouse (or a real ThinkPad).&lt;/p&gt;

&lt;p&gt;We also number mouse buttons rather than saying left or right button (since it's kind of stupid if you think about it).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Button 1 :: Normally the left button&lt;/li&gt;
&lt;li&gt;Button 2 :: Normally the middle button (or the wheel button)&lt;/li&gt;
&lt;li&gt;Button 3 :: Normally the right button&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Assigned Buttons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Button 1 is for normal selection, you know, holding and sweeping. Nothing weird&lt;/li&gt;
&lt;li&gt;Button 2 is for execution.&lt;/li&gt;
&lt;li&gt;Button 3 is for &lt;em&gt;seeking&lt;/em&gt;, it will find for text on the current &lt;em&gt;buffer&lt;/em&gt; or make a buffer containing a file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, holding and sweeping these buttons (not only button 1) will execute the button's behavior on more text than a single word. You may cancel selections and chords by adding a middle-press.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clipboarding
&lt;/h3&gt;

&lt;p&gt;Quick warning, &lt;em&gt;Acme&lt;/em&gt; uses mouse chording.&lt;/p&gt;

&lt;p&gt;Using the &lt;em&gt;clipboard&lt;/em&gt; is pretty easy in Acme. You can use these mouse chords for using the clipboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copying :: Select your text with mouse button 1 (you know, hold left click and sweep), then press mouse button 2 (middle), and after that, mouse button 3 (right). Or simply use button 2 (middle) on the &lt;em&gt;Snarf&lt;/em&gt; button on the &lt;em&gt;tag line&lt;/em&gt; with the selection done.&lt;/li&gt;
&lt;li&gt;Pasting :: Just do button 1 + button 3 (that is, holding left button + right-button)&lt;/li&gt;
&lt;li&gt;Cutting :: Make your selection like before, and press button 2 (middle).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tom Lieber made an illustration of these basic mouse chords, I'll link it &lt;a href="http://acme.cat-v.org/_imgs/acme-mouse-chords.png" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FQA
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Q: Why does Acme have no syntax highlighting?
&lt;/h3&gt;

&lt;p&gt;A: Rob Pike found it too distracting, so it's intentionally out ;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: Where do I get LSP?
&lt;/h3&gt;

&lt;p&gt;A: Russ Cox, the dude who made plan9port, made an application called &lt;a href="https://github.com/9fans/acme-lsp" rel="noopener noreferrer"&gt;&lt;code&gt;acme-lsp&lt;/code&gt;&lt;/a&gt;, that does what you want. I don't know much about it though.&lt;/p&gt;

</description>
      <category>acme</category>
      <category>plan9</category>
      <category>9front</category>
      <category>editor</category>
    </item>
    <item>
      <title>A tutorial on WinUI 3 (2025)</title>
      <dc:creator>Mario Rosell</dc:creator>
      <pubDate>Sat, 11 Jan 2025 12:18:16 +0000</pubDate>
      <link>https://forem.com/mario_rosell_eba5bf025fde/a-tutorial-on-winui-3-2025-c8j</link>
      <guid>https://forem.com/mario_rosell_eba5bf025fde/a-tutorial-on-winui-3-2025-c8j</guid>
      <description>&lt;p&gt;WinUI is a &lt;strong&gt;modern&lt;/strong&gt;, &lt;strong&gt;easy-to-use&lt;/strong&gt;, yet &lt;strong&gt;powerful&lt;/strong&gt; framework for &lt;a href="https://es.wikipedia.org/wiki/Microsoft_Windows" rel="noopener noreferrer"&gt;Windows 10 &amp;amp; 11&lt;/a&gt; used by &lt;a href="https://es.wikipedia.org/wiki/Microsoft" rel="noopener noreferrer"&gt;Microsoft&lt;/a&gt; to build desktop apps.&lt;/p&gt;

&lt;p&gt;In this tutorial, you will learn...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to install WinUI in Visual Studio&lt;/li&gt;
&lt;li&gt;Making your first app&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;p&gt;We need a few things to get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://visualstudio.microsoft.com/" rel="noopener noreferrer"&gt;Visual Studio Community 2022&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://www.microsoft.com/en-us/software-download/windows11" rel="noopener noreferrer"&gt;Windows 10 or 11 machine&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installing the Workload
&lt;/h3&gt;

&lt;p&gt;To get templates, better language support, and debugging options, we need&lt;br&gt;
to install the Visual Studio workload.&lt;/p&gt;

&lt;p&gt;Search for &lt;code&gt;Visual Studio Installer&lt;/code&gt; on the Windows menu to do that, then,&lt;br&gt;
click &lt;code&gt;Modify&lt;/code&gt;, and (in the &lt;code&gt;Workloads&lt;/code&gt; tab), check &lt;code&gt;Windows Application Development&lt;/code&gt;, after that, click &lt;code&gt;Install while Downloading&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Making your first app
&lt;/h2&gt;

&lt;p&gt;After installing the workload, it's time to make our first app!&lt;/p&gt;

&lt;p&gt;First, open Visual Studio and click &lt;code&gt;Create new project&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then, apply these filters:&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;Language: C#&lt;/li&gt;
&lt;li&gt;Platform: Windows&lt;/li&gt;
&lt;li&gt;Type:     WinUI&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Now, click on &lt;code&gt;Blank App, Packaged (WinUI 3 on Desktop)&lt;/code&gt; and &lt;code&gt;Next&lt;/code&gt; several times.&lt;/p&gt;

&lt;p&gt;You should see something like this:&lt;/p&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07vz2mkm284sidisxkpr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07vz2mkm284sidisxkpr.png" alt="Screenshot of Visual Studio with a new WinUI project opened, " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;You may have noticed the &lt;code&gt;.xaml&lt;/code&gt; files.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is XAML
&lt;/h2&gt;

&lt;p&gt;XAML (Short for &lt;code&gt;eXtensible Application Markup Language&lt;/code&gt;) is a language similar, if not identical to &lt;a href="https://en.wikipedia.org/wiki/Extensible_Markup_Language" rel="noopener noreferrer"&gt;XML&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main difference is that &lt;code&gt;XAML&lt;/code&gt; is made to make &lt;a href="https://en.wikipedia.org/wiki/Graphical_user_interface" rel="noopener noreferrer"&gt;GUIs&lt;/a&gt; instead of storing and transferring data between systems in a structured way.&lt;/p&gt;

&lt;p&gt;In our project, if we go to the &lt;code&gt;MainWindow.xaml&lt;/code&gt; file, we will see this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;Window&lt;/span&gt;
    &lt;span class="na"&gt;x:Class=&lt;/span&gt;&lt;span class="s"&gt;"Tutorial.MainWindow"&lt;/span&gt;
    &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
    &lt;span class="na"&gt;xmlns:x=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
    &lt;span class="na"&gt;xmlns:local=&lt;/span&gt;&lt;span class="s"&gt;"using:Tutorial"&lt;/span&gt;
    &lt;span class="na"&gt;xmlns:d=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;
    &lt;span class="na"&gt;xmlns:mc=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;
    &lt;span class="na"&gt;mc:Ignorable=&lt;/span&gt;&lt;span class="s"&gt;"d"&lt;/span&gt;
    &lt;span class="na"&gt;Title=&lt;/span&gt;&lt;span class="s"&gt;"Tutorial"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;StackPanel&lt;/span&gt; &lt;span class="na"&gt;Orientation=&lt;/span&gt;&lt;span class="s"&gt;"Horizontal"&lt;/span&gt; &lt;span class="na"&gt;HorizontalAlignment=&lt;/span&gt;&lt;span class="s"&gt;"Center"&lt;/span&gt; &lt;span class="na"&gt;VerticalAlignment=&lt;/span&gt;&lt;span class="s"&gt;"Center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;Button&lt;/span&gt; &lt;span class="na"&gt;x:Name=&lt;/span&gt;&lt;span class="s"&gt;"myButton"&lt;/span&gt; &lt;span class="na"&gt;Click=&lt;/span&gt;&lt;span class="s"&gt;"myButton_Click"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click Me&lt;span class="nt"&gt;&amp;lt;/Button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/StackPanel&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Window&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's analyze this program:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;XML Version&lt;/li&gt;
&lt;li&gt;Make a window&lt;/li&gt;
&lt;li&gt;Boilerplate&lt;/li&gt;
&lt;li&gt;- 9. Schemas&lt;/li&gt;
&lt;li&gt;Set the title&lt;/li&gt;
&lt;li&gt;Blank line, does nothing&lt;/li&gt;
&lt;li&gt;Makes a new "Stack", that holds elements on the center of the screen, and aligns elements in a row&lt;/li&gt;
&lt;li&gt;Makes a button with the name &lt;code&gt;myButton&lt;/code&gt;, that activates the &lt;code&gt;myButton_click&lt;/code&gt; method (declared on the &lt;code&gt;MainAppWindow.xaml.cs&lt;/code&gt; file)&lt;/li&gt;
&lt;li&gt;- 15. Close tags&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can try other elements (Like &lt;a href="https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.textbox?view=winrt-26100" rel="noopener noreferrer"&gt;&lt;code&gt;TextBox&lt;/code&gt;&lt;/a&gt;])&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/windows/apps/design/controls/#alphabetical-index" rel="noopener noreferrer"&gt;Here is the full list of elements&lt;/a&gt;, if you want&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>microsoft</category>
      <category>tutorial</category>
      <category>winui</category>
    </item>
  </channel>
</rss>
