<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Posts tagged: textual</title>
  <id>https://new.waylonwalker.com/tags/textual/atom.xml</id>
  <updated>2025-05-11T09:33:44Z</updated>
  <subtitle>All posts with the tag &#34;textual&#34;</subtitle>
  <link href="https://new.waylonwalker.com/tags/textual/" rel="alternate" type="text/html"></link>
  <link href="https://new.waylonwalker.com/tags/textual/atom.xml" rel="self" type="application/atom+xml"></link>
  <author>
    <name>Waylon Walker</name>
  </author>
  <generator uri="https://github.com/WaylonWalker/markata-go">markata-go</generator>
  <entry>
    <title>m9a devlog 1</title>
    <id>https://new.waylonwalker.com/m9a-devlog-1/</id>
    <updated>2025-05-11T09:33:44Z</updated>
    <published>2025-05-11T09:33:44Z</published>
    <link href="https://new.waylonwalker.com/m9a-devlog-1/" rel="alternate" type="text/html"></link>
    <summary type="text">It&#39;s sad to see textualize.io close the doors, but textual is still alive and maintained as a n open source project. I tried to use it very early, and...</summary>
    <content type="html">&lt;p&gt;It’s sad to see textualize.io close the doors, but textual is still alive and&#xA;maintained as a n open source project.  I tried to use it very early, and&#xA;struggled, this was before docs and tutorials really existed, before a lot of&#xA;the widgets and components existed.  Then as we all do I got busy and moved on&#xA;to other things in life and did not have the capacity to build TUIs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;i-like-tuis&#34;&gt;I like tuis &lt;a href=&#34;#i-like-tuis&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I like tuis, I like staying in the terminal.  I use&#xA;&lt;a href=&#34;https://github.com/gokcehan/lf&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/github.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/github.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;lf&lt;/a&gt; daily to move files around when I&#xA;want something more than &lt;code&gt;mv&lt;/code&gt; and &lt;code&gt;cp&lt;/code&gt;.  I use&#xA;&lt;a href=&#34;https://github.com/derailed/k9s&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/github.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/github.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;k9s&lt;/a&gt; hourly to monitor and manage my&#xA;kubernetes cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;are-they-worth-the-effort&#34;&gt;Are they worth the effort?? &lt;a href=&#34;#are-they-worth-the-effort&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;As awesome as tui’s are, they are more effort to build, and less automatable.&#xA;I feel like the first stage into automation of a project really needs to be a&#xA;good cli, and this is often good enough for the project and I move on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;m9a-em---nine---ah&#34;&gt;m9a (em - nine - ah) &lt;a href=&#34;#m9a-em---nine---ah&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;inspired by k9s&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Like I said I really like k9s and use it all the time, It really makes running&#xA;kubectl commands a breeze and much less verbose.  I don’t know how useful this&#xA;will be, but as a learning exercise I am working on a k9s experience for my&#xA;blog generator &lt;a class=&#34;wikilink&#34; data-date=&#34;2024-05-30&#34; data-description=&#34;This post is a work in progress.&#34; data-title=&#34;markata&#34; href=&#34;/markata/&#34; data-preview=&#34;This post is a work in progress.&#34;&gt;markata&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;&lt;a href=&#34;https://dropper.waylonwalker.com/api/file/53671f5a-acc5-4d17-aa2d-2e9ac6db5674.webm&#34; class=&#34;glightbox-link&#34; aria-label=&#34;m9a-1-trimmed.webm&#34;&gt;&lt;video autoplay loop muted playsinline controls preload=&#34;metadata&#34; class=&#34;md-video&#34; poster=&#34;https://dropper.waylonwalker.com/api/file/53671f5a-acc5-4d17-aa2d-2e9ac6db5674.webp?h=675&amp;w=1200&#34;&gt;&lt;source src=&#34;https://dropper.waylonwalker.com/api/file/53671f5a-acc5-4d17-aa2d-2e9ac6db5674.webm&#34; type=&#34;video/webm&#34;&gt;m9a-1-trimmed.webm&lt;/video&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&lt;h2 id=&#34;learning&#34;&gt;Learning &lt;a href=&#34;#learning&#34; class=&#34;heading-anchor&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;So far this is just for learning and not quite the most useful thing, I am not&#xA;sure if there is a way to do it, but I am interested in the idea of some sort&#xA;of framework (maybe just widgets) that can more easily turn pydantic objects&#xA;into this kind of tui.  I don’t quite know how it would work, or if it could&#xA;work, for now just exploring the idea, and I think I hit a fairly crude clone&#xA;of k9s so far.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Will McGugan on X: &#34;New Version of #Textual released! 😎🤓🦾 The ...</title>
    <id>https://new.waylonwalker.com/thought-416/</id>
    <updated>2024-10-27T07:51:07Z</updated>
    <published>2024-10-27T07:51:07Z</published>
    <link href="https://new.waylonwalker.com/thought-416/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://x.com/willmcgugan/status/1849831271289012463</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link  has-avatar has-avatar-before&#34; href=&#34;https://x.com/willmcgugan/status/1849831271289012463&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/x.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/x.com.ico&#34;&gt;&#xA;    &lt;/a&gt;&lt;div class=&#34;embed-card-image&#34;&gt;&lt;a class=&#34;embed-card-link&#34; href=&#34;https://x.com/willmcgugan/status/1849831271289012463&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;      &lt;img src=&#34;https://pbs.twimg.com/ext_tw_video_thumb/1849830165238456320/pu/img/R0rLRdchLC2IhAOi.jpg&#34; alt=&#34;Will McGugan (&amp;lt;a href=&#34; https:=&#34;&#34; willmcgugan.github.io&#34;=&#34;&#34; class=&#34;mention glightbox&#34; data-name=&#34;Will McGugan&#34; data-bio=&#34;Will McGugan’s essays&#34; data-avatar=&#34;https://willmcgugan.github.io/images/will2025.jpeg&#34; data-handle=&#34;@willmcgugan&#34;/ data-glightbox=&#34;description: Will McGugan (&amp;lt;a href=&#34;&gt;@willmcgugan&lt;/a&gt;) on X — New Version of #Textual released! 😎🤓🦾&#xA;&lt;p&gt;The demo has been updated. It&amp;#39;s not quite finished, expect an update next release, but it is a lot of fun.&lt;/p&gt;&#xA;&lt;p&gt;Press C at any point to see the code powering that page (makes a great learning tool).&lt;/p&gt;&#xA;&lt;p&gt;Video 👇&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://t.co/p2ScsuL7GZ%22&#34;&gt;https://t.co/p2ScsuL7GZ&amp;#34;&lt;/a&gt; loading=“lazy”&amp;gt;&#xA;&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-content&#34;&gt;&#xA;&lt;div class=&#34;embed-card-title&#34;&gt;Will McGugan (&lt;a class=&#34;mention  has-avatar has-avatar-before&#34; data-avatar=&#34;https://willmcgugan.github.io/images/will2025.jpeg&#34; data-bio=&#34;Will McGugan’s essays&#34; data-handle=&#34;@willmcgugan&#34; data-name=&#34;Will McGugan&#34; href=&#34;https://willmcgugan.github.io&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/willmcgugan.github.io.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/willmcgugan.github.io.png&#34;&gt;@willmcgugan&lt;/a&gt;) on X&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-description&#34;&gt;New Version of #Textual released! 😎🤓🦾&lt;p&gt;&lt;/p&gt;&#xA;&lt;p&gt;The demo has been updated. It&amp;#39;s not quite finished, expect an update next release, but it is a lot of fun.&lt;/p&gt;&#xA;&lt;p&gt;Press C at any point to see the code pow…&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-meta&#34;&gt;X (formerly Twitter) · x.com&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This new demo of textual is wildly awesome, so many widgets and features being added into the main library.  The themes and animations are on point and far surpass my expectations of a tui.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Will McGugan on X: &#34;Just a wee thing that came up today. I thi...</title>
    <id>https://new.waylonwalker.com/thought-165/</id>
    <updated>2023-11-27T22:31:33Z</updated>
    <published>2023-11-27T22:31:33Z</published>
    <link href="https://new.waylonwalker.com/thought-165/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://twitter.com/willmcgugan/status/1729158038551220477</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://twitter.com/willmcgugan/status/1729158038551220477&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;/a&gt;&lt;div class=&#34;embed-card-image&#34;&gt;&lt;a class=&#34;embed-card-link&#34; href=&#34;https://twitter.com/willmcgugan/status/1729158038551220477&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;      &lt;img src=&#34;https://pbs.twimg.com/ext_tw_video_thumb/1729156789592059904/pu/img/jPpNU-NA-arJpQyz.jpg&#34; alt=&#34;Will McGugan (&amp;lt;a href=&#34; https:=&#34;&#34; willmcgugan.github.io&#34;=&#34;&#34; class=&#34;mention glightbox&#34; data-name=&#34;Will McGugan&#34; data-bio=&#34;Will McGugan’s essays&#34; data-avatar=&#34;https://willmcgugan.github.io/images/will2025.jpeg&#34; data-handle=&#34;@willmcgugan&#34;/ data-glightbox=&#34;description: Will McGugan (&amp;lt;a href=&#34;&gt;@willmcgugan&lt;/a&gt;) on X — Just a wee thing that came up today. I think this is kind of neat.&amp;#34; loading=&amp;#34;lazy&amp;#34;&amp;gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Will McGugan (&lt;a class=&#34;mention  has-avatar has-avatar-before&#34; data-avatar=&#34;https://willmcgugan.github.io/images/will2025.jpeg&#34; data-bio=&#34;Will McGugan’s essays&#34; data-handle=&#34;@willmcgugan&#34; data-name=&#34;Will McGugan&#34; href=&#34;https://willmcgugan.github.io&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/willmcgugan.github.io.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/willmcgugan.github.io.png&#34;&gt;@willmcgugan&lt;/a&gt;) on X&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Just a wee thing that came up today. I think this is kind of neat.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;X (formerly Twitter) · twitter.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Textual is so sick, Will just made a live markdown editor in the terminal!&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Center things - Textual</title>
    <id>https://new.waylonwalker.com/thought-62/</id>
    <updated>2023-07-30T21:31:55Z</updated>
    <published>2023-07-30T21:31:55Z</published>
    <link href="https://new.waylonwalker.com/thought-62/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://textual.textualize.io/how-to/center-things/</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://textual.textualize.io/how-to/center-things/&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://raw.githubusercontent.com/Textualize/textual/main/imgs/textual.png&#34; alt=&#34;Textual - Center things — Textual is a TUI framework for Python, inspired by modern web development.&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: Textual - Center things — Textual is a TUI framework for Python, inspired by modern web development.&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;Textual - Center things&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;Textual is a TUI framework for Python, inspired by modern web development.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;Textual Documentation · textual.textualize.io&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;How to center things in textual. Textual has a very unique way of styling text user interfaces for the terminal using css.  If you know css it feels natural.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;mention  has-avatar has-avatar-before&#34; data-avatar=&#34;https://willmcgugan.github.io/images/will2025.jpeg&#34; data-bio=&#34;Will McGugan’s essays&#34; data-handle=&#34;@willmcgugan&#34; data-name=&#34;Will McGugan&#34; href=&#34;https://willmcgugan.github.io&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/willmcgugan.github.io.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/willmcgugan.github.io.png&#34;&gt;@willmcgugan&lt;/a&gt;, has put together a great article on how to center things in textual&lt;/p&gt;&#xA;&lt;p&gt;here the final result&lt;/p&gt;&#xA;&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;textual.app&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;App&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ComposeResult&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;textual.widgets&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;QUOTE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Could not find you in Seattle and no terminal is in operation at your classified address.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;CenterApp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;App&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;How to center things.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;CSS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    Screen {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        align: center middle;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    #hello {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        background: blue 50%;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        border: wide white;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        width: 40;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        height: 9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        text-align: center;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        content-align: center middle;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;compose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ComposeResult&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;yield&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Static&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;QUOTE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CenterApp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>1j01/textual-paint: :art: MS Paint... in your terminal.</title>
    <id>https://new.waylonwalker.com/thought-50/</id>
    <updated>2023-07-28T19:59:37Z</updated>
    <published>2023-07-28T19:59:37Z</published>
    <link href="https://new.waylonwalker.com/thought-50/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://github.com/1j01/textual-paint</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://github.com/1j01/textual-paint&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://repository-images.githubusercontent.com/github-production-repository-image-32fea6/626145619/c71d0c14-c3e4-42ec-9ed5-512d8babc664?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20260804%2Fus-east-1%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20260804T230351Z&amp;amp;X-Amz-Expires=300&amp;amp;X-Amz-Signature=01864378788cb9a4f2eaed8753665e5d913c793aad39afc0cf5fe10f5cafecc3&amp;amp;X-Amz-SignedHeaders=host&amp;amp;jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoiaHR0cHM6Ly9yZXBvc2l0b3J5LWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vIiwia2V5Ijoia2V5MSIsImV4cCI6MTc4NTg4NDkzMSwibmJmIjoxNzg1ODg0NjMxLCJwYXRoIjoicmVwb3NpdG9yeS1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIn0.OxmKgsllB9WcQRUzJU7YT1OoHRDNH0UE5ESViORIiMw&#34; alt=&#34;GitHub - 1j01/textual-paint: :art: MS Paint in your terminal. — :art: MS Paint in your terminal. Contribute to 1j01/textual-paint development by creating an account on GitHub.&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: GitHub - 1j01/textual-paint: :art: MS Paint in your terminal. — :art: MS Paint in your terminal. Contribute to 1j01/textual-paint development by creating an account on GitHub.&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;GitHub - 1j01/textual-paint: :art: MS Paint in your terminal.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;:art: MS Paint in your terminal. Contribute to 1j01/textual-paint development by creating an account on GitHub.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;GitHub · github.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/1j01&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/github.com.ico&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/github.com.ico&#34; class=&#34;has-avatar  has-avatar-before&#34;&gt;1j01&lt;/a&gt; created a complete working clone of ms paint in the terminal using the textual framework.  It’s incredible.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Harlequin SQL IDE - DuckDB</title>
    <id>https://new.waylonwalker.com/thought-35/</id>
    <updated>2023-07-28T19:59:37Z</updated>
    <published>2023-07-28T19:59:37Z</published>
    <link href="https://new.waylonwalker.com/thought-35/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://duckdb.org/docs/guides/sql_editors/harlequin</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link  has-avatar has-avatar-before&#34; href=&#34;https://duckdb.org/docs/guides/sql_editors/harlequin&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34; style=&#34;--favicon-url: url(&amp;#39;/assets/markata/link-avatars/duckdb.org.png&amp;#39;);&#34; data-favicon=&#34;/assets/markata/link-avatars/duckdb.org.png&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;External Link&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;duckdb.org&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Harlequin is a pretty sweet example of what textual can be used to create.   Its a terminal based sql ide for DuckDB.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>doyensec/wsrepl: WebSocket REPL for pentesters</title>
    <id>https://new.waylonwalker.com/thought-29/</id>
    <updated>2023-07-28T19:59:37Z</updated>
    <published>2023-07-28T19:59:37Z</published>
    <link href="https://new.waylonwalker.com/thought-29/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://github.com/doyensec/wsrepl</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://github.com/doyensec/wsrepl&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;div class=&#34;embed-card-image&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://opengraph.githubassets.com/5eec3fa1b5f85f5f817e2811ed8d894efb0315d1c7e8cb892f45ce58e9b5c6db/doyensec/wsrepl&#34; alt=&#34;GitHub - doyensec/wsrepl: WebSocket REPL for pentesters — WebSocket REPL for pentesters. Contribute to doyensec/wsrepl development by creating an account on GitHub.&#34; loading=&#34;lazy&#34;/ data-glightbox=&#34;description: GitHub - doyensec/wsrepl: WebSocket REPL for pentesters — WebSocket REPL for pentesters. Contribute to doyensec/wsrepl development by creating an account on GitHub.&#34;&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;div class=&#34;embed-card-content&#34;&gt;&#xA;      &lt;div class=&#34;embed-card-title&#34;&gt;GitHub - doyensec/wsrepl: WebSocket REPL for pentesters&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-description&#34;&gt;WebSocket REPL for pentesters. Contribute to doyensec/wsrepl development by creating an account on GitHub.&lt;/div&gt;&#xA;      &lt;div class=&#34;embed-card-meta&#34;&gt;GitHub · github.com&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Very inspiring textual project to check out how they set up the ui.  Their intro video has a pretty epic dev experience.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
  <entry>
    <title>Doyensec on Twitter: &#34;Announcing wsrepl, the WebSocket testing...</title>
    <id>https://new.waylonwalker.com/thought-28/</id>
    <updated>2023-07-28T19:59:37Z</updated>
    <published>2023-07-28T19:59:37Z</published>
    <link href="https://new.waylonwalker.com/thought-28/" rel="alternate" type="text/html"></link>
    <summary type="text">!https://twitter.com/Doyensec/status/1681320727465672706</summary>
    <content type="html">&lt;div class=&#34;embed-card embed-card-external&#34;&gt;&#xA;  &lt;a class=&#34;embed-card-link&#34; href=&#34;https://twitter.com/Doyensec/status/1681320727465672706&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;/a&gt;&lt;div class=&#34;embed-card-image&#34;&gt;&lt;a class=&#34;embed-card-link&#34; href=&#34;https://twitter.com/Doyensec/status/1681320727465672706&#34; rel=&#34;noopener noreferrer&#34; target=&#34;_blank&#34;&gt;&#xA;      &lt;img class=&#34;glightbox&#34; src=&#34;https://pbs.twimg.com/ext_tw_video_thumb/1681319594231996425/pu/img/BiMkyS71W_JZNJjL.jpg&#34; alt=&#34;Doyensec (@Doyensec) on X — Announcing wsrepl, the WebSocket testing tool from Doyensec! This intuitive tool is super easy to use and makes automation around WebSockets simple!&#xA;&amp;lt;p&amp;gt;Check out our blog for the details and download it today! &amp;lt;a href=&#34; https:=&#34;&#34; t.co=&#34;&#34; km5m7k6pb0&#34;=&#34;&#34;/ data-glightbox=&#34;description: Doyensec (@Doyensec) on X — Announcing wsrepl, the WebSocket testing tool from Doyensec! This intuitive tool is super easy to use and makes automation around WebSockets simple!&#xA;&amp;lt;p&amp;gt;Check out our blog for the details and download it today! &amp;lt;a href=&#34;&gt;https://t.co/km5m7k6Pb0&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&#xA;&lt;p&gt;#doyensec #appsec &lt;a class=&#34;hashtag-tag&#34; data-count=&#34;2&#34; data-reading-time=&#34;2&#34; data-reading-time-text=&#34;2 minutes&#34; data-tag=&#34;websockets&#34; href=&#34;/tags/websockets/&#34;&gt;#websockets&lt;/a&gt; #burpsuite&amp;#34; loading=“lazy”&amp;gt;&#xA;&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-content&#34;&gt;&#xA;&lt;div class=&#34;embed-card-title&#34;&gt;Doyensec (@Doyensec) on X&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-description&#34;&gt;Announcing wsrepl, the WebSocket testing tool from Doyensec! This intuitive tool is super easy to use and makes automation around WebSockets simple!&lt;p&gt;&lt;/p&gt;&#xA;&lt;p&gt;Check out our blog for the details and download…&lt;/p&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;embed-card-meta&#34;&gt;X (formerly Twitter) · twitter.com&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;wsrepl is an epic websocket repl built in python on the textual framework.&lt;/p&gt;&#xA;</content>
    <author>
      <name>Waylon Walker</name>
      <email>hello@waylonwalker.com</email>
      <uri>https://waylonwalker.com</uri>
    </author>
  </entry>
</feed>