<?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>Huddled Masses &#187; User Interface</title>
	<atom:link href="http://huddledmasses.org/tag/user-interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://huddledmasses.org</link>
	<description>You can do more than breathe for free...</description>
	<lastBuildDate>Sat, 28 Jan 2012 21:37:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<cloud domain='huddledmasses.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>PowerBoots: PowerShell GUIs are now multi-threading</title>
		<link>http://huddledmasses.org/powerboots-now-multi-threaded/</link>
		<comments>http://huddledmasses.org/powerboots-now-multi-threaded/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 23:21:24 +0000</pubDate>
		<dc:creator>Joel 'Jaykul' Bennett</dc:creator>
				<category><![CDATA[Huddled]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[GUIs]]></category>
		<category><![CDATA[PowerBoots]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Visifire]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://huddledmasses.org/?p=1045</guid>
		<description><![CDATA[Announcing the release of PowerBoots 0.1 This release of PowerBoots is the most exciting release software I&#8217;ve cranked out in awhile. It finally has almost all of the features that I have thought of so far (we&#8217;re still missing proper support for attached properties). You can create pretty much any WPF element, including ones I [...]]]></description>
			<content:encoded><![CDATA[	<h2>Announcing the release of PowerBoots 0.1</h2>

	<p>This release of PowerBoots is the most exciting release software I&#8217;ve cranked out in awhile. It finally has almost all of the features that I have thought of so far (we&#8217;re still missing proper support for attached properties).</p>

	<ul>
		<li>You can create pretty much any <span class="caps">WPF</span> element, including ones I haven&#8217;t thought of adding yet (use Add-BootsFunction to add a new assembly or a single type).</li>
		<li>You can create graphical user interfaces from <a class="zem_slink" href="http://www.microsoft.com/powershell" title="Windows PowerShell" rel="homepage">PowerShell</a> 1.0 all the way to the latest PowerShell 2.0 <span class="caps">CTP</span>.</li>
		<li>You can create your <span class="caps">WPF</span> GUIs <code>-Async</code> <span class="em1">in their own threads</span>, or inline in <a href="http://PoshConsole.CodePlex.com">PoshConsole</a>, or as synchronous dialogs that return values when they close.</li>
		<li>You can capture screenshots of your UIs (eg: <a href="http://huddledmasses.org/powerboots-output-graphs-to-images-from-powershell/">generate .jpg charts from Visifire</a>). You can even do so <strong>without displaying them!</strong></li>
		<li>You can take advantage of <a class="zem_slink" href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language" title="Extensible Application Markup Language" rel="wikipedia">XAML</a> Data Templates to generate graphical representations of any objects in the PowerShell pipeline.</li>
	</ul>
	<ul>
		<li>You can add to, or modify your running GUIs from the command line.</li>
	</ul>

	<p>You can read the &#8220;and much much more&#8221; between the lines right?</p>

<object height="280" width="640"> 
<param name="movie" value="http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/jingswfplayer.swf" />
<param name="quality" value="high" /> 
<param name="bgcolor" value="#FFFFFF" />
<param name="flashVars" value="thumb=http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/FirstFrame.jpg&amp;width=640&amp;height=280&amp;content=http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/PowerBootsMonitoring.swf" />
<param name="allowFullScreen" value="true" /> 
<param name="scale" value="showall" />
<param name="allowScriptAccess" value="always" />
<param name="base" value="http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/" />  <embed src="http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/FirstFrame.jpg&amp;width=640&amp;height=280&amp;content=http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/PowerBootsMonitoring.swf" allowfullscreen="true" base="http://content.screencast.com/users/Jaykul/folders/Jing/media/5688481d-eb1e-4d47-b91b-31dc9584e465/" scale="showall" height="280" width="640"></embed>
</object><span id="more-1045"></span>

	<h3>Breaking Changes and New Features</h3>

	<p>The big new thing in this release is that I&#8217;ve added a compiled module (PoshWpf) which contains several cmdlets, and gives us some major new functionality in exchange for a break in the syntax.  The syntax change is pretty simple, really, and the new threading functionality (and PowerShell 1.0 support for the cmdlets) is awesome (if I do say so myself)  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=':)' class='wp-smiley' /> .</p>

	<h4>New-BootsWindow replaces Out-Boots</h4>

	<p>New-BootsWindow is a compiled cmdlet, and in addition to all of the features already present in the now deprecated Out-Boots, it features a few important new features. Incidentally, I&#8217;ve actually left the old Out-Boots function in the code, just in case, but I&#8217;ve renamed it to Out-BootsWindow, and changed the &#8220;Boots&#8221; alias to point at the new New-BootsWindow.</p>

	<h5>ScriptBlock Content</h5>

	<p>The biggest change to your scripts is going to be a change from piping objects into Out-Boots, to creating your objects in a scriptblock parameter to New-BootsWindow. This allows the script to create the UI elements entirely within the new thread.  Since we&#8217;ve switched the &#8220;Boots&#8221; alias to point to New-BootsWindow, anything you used to write like this: <code> ... | Boots</code> you should now be able to write like this: <code>Boots { ... }</code> and get the same result. Additionally, to make the syntax of our little <span class="caps">DSL</span> just a little bit slicker, I now allow you to pass scriptblocks for just about everything (particularly for the main content parameters).  An example that looked like this, before:</p>

	<div class="posh code posh" style="font-family:monospace;"><br />
StackPanel <span style="color: #000066;">-Margin</span> <span style="color: #cc66cc;">10</span> <span style="color: #000066;">-Children</span> $<span style="color: #333;">&#40;</span><br />
&nbsp; &nbsp;TextBlock <span style="color: #009900;">&quot;The Question&quot;</span> <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">42</span> <span style="color: #000066;">-FontWeight</span> Bold <span style="color: #000066;">-Foreground</span> <span style="color: #009900;">&quot;#FF0088&quot;</span><br />
&nbsp; &nbsp;TextBlock <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">24</span> <span style="color: #000066;">-Inlines</span> $<span style="color: #333;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; Hyperlink $<span style="color: #333;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Bold <span style="color: #009900;">&quot;Q. &quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&quot;Can PowerBoots do async threads?&quot;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #333;">&#41;</span> <span style="color: #000066;">-NavigateUri</span> <span style="color: #009900;">&quot;_&quot;</span> <span style="color: #000066;">-On_RequestNavigate</span> <span style="color: #333;">&#123;</span> <span style="color: #660033; font-weight: bold;">$global</span>:Answer<span style="color: #333;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #333;">&#93;</span>.<span style="color: #003366;">Visibility</span> <span style="color: #66cc66;">=</span> <span style="color: #009900;">&quot;Visible&quot;</span> <span style="color: #333;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #333;">&#41;</span><br />
&nbsp; &nbsp;TextBlock <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">16</span> <span style="color: #000066;">-Inlines</span> $<span style="color: #333;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; Span <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">24</span> <span style="color: #000066;">-FontWeight</span> Bold <span style="color: #000066;">-Inlines</span> <span style="color: #009900;">&quot;A. &quot;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&quot;Not this way!&quot;</span><br />
&nbsp; &nbsp;<span style="color: #333;">&#41;</span> <span style="color: #000066;">-OV</span> global:Answer <span style="color: #000066;">-Visibility</span> Collapsed<br />
<span style="color: #333;">&#41;</span> <span style="color: #66cc66;">|</span> <span style="color: #0066cc; font-style: italic;">Out-<span style="font-style: normal;">BootsWindow</span></span> </div>

	<p>Can actually end up like this, now (and produce the same output):</p>

	<div class="posh code posh" style="font-family:monospace;"><br />
Boots <span style="color: #333;">&#123;</span><br />
&nbsp; &nbsp;StackPanel <span style="color: #000066;">-Margin</span> <span style="color: #cc66cc;">10</span> <span style="color: #333;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; TextBlock <span style="color: #009900;">&quot;The Question&quot;</span> <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">42</span> <span style="color: #000066;">-FontWeight</span> Bold <span style="color: #000066;">-Foreground</span> <span style="color: #009900;">&quot;#FF0088&quot;</span><br />
&nbsp; &nbsp; &nbsp; TextBlock <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">24</span> <span style="color: #333;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Hyperlink <span style="color: #333;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Bold <span style="color: #009900;">&quot;Q. &quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&quot;Can PowerBoots do async threads?&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #333;">&#125;</span> <span style="color: #000066;">-NavigateUri</span> <span style="color: #009900;">&quot; &quot;</span> <span style="color: #000066;">-On_RequestNavigate</span> <span style="color: #333;">&#123;</span> <span style="color: #660033; font-weight: bold;">$global</span>:Answer<span style="color: #333;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #333;">&#93;</span>.<span style="color: #003366;">Visibility</span> <span style="color: #66cc66;">=</span> <span style="color: #009900;">&quot;Visible&quot;</span> <span style="color: #333;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #333;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; TextBlock <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">16</span> <span style="color: #333;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Span <span style="color: #009900;">&quot;A. &quot;</span> <span style="color: #000066;">-FontSize</span> <span style="color: #cc66cc;">24</span> <span style="color: #000066;">-FontWeight</span> Bold <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&quot;Oh yes we can!&quot;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #333;">&#125;</span> <span style="color: #000066;">-OV</span> global:Answer <span style="color: #000066;">-Visibility</span> Collapsed<br />
&nbsp; &nbsp;<span style="color: #333;">&#125;</span><br />
<span style="color: #333;">&#125;</span> </div>

	<h5>The Async Parameter</h5>

	<p>If you specify <code>-Async</code>, the new popup window is spawned in a new thread, and all of it&#8217;s events etc. are handled on that separate thread.  This is actually what happens anyway when you run New-BootsWindow from a host that&#8217;s not running in <code>STA</code> mode, but if you don&#8217;t specify -Async, we fake the synchronous result so that you can use <code>Write-Output</code> within a dialog to prompt and get a result &#8220;returned&#8221; from New-BootsWindow. The cool thing about <code>-Async</code> is that not only can you continue using your console, you can run additional windows, and you can even use the new <code>Invoke-BootsWindow</code> cmdlet to run scripts within that window&#8217;s thread so you can change the <span class="caps">GUI</span> content, etc.</p>

	<h5>The Passthru Parameter</h5>

	<p>The <code>-Passthru</code> parameter causes the New-BootsWindow to output the window object that it has created to the pipeline.  It&#8217;s really only useful when you also specify the <code>-Async</code> parameter, since otherwise the window will be closed before you can use it.  Furthermore, because it&#8217;s a UI element, you can&#8217;t really do very much directly on the Window object without the use of our other cmdlets</p>

	<h4>The BootsWindow Collection</h4>

	<p>When you create a New-BootsWindow, the PowerBoots module (or snapin, for v1 users) tracks the window for you, so you can get ahold of it again later to run scripts against it, take screenshots, close it, etc.  To enable this we have three new cmdlets:</p>

	<ul>
		<li><code>Get-BootsWindow</code> returns the windows, and supports filtering by title or index.</li>
		<li><code>Remove-BootsWindow</code> will clear the list of windows that have already been closed, when called without parameters, or will close (and remove) windows that are still running if you pass a specific window, index, or window title.</li>
		<li><code>Invoke-BootsWindow</code> lets you run scriptblocks in a specific window&#8217;s thread</li>
	</ul>
	<ul>
		<li><code>Export-BootsImage</code> lets you take a screen capture of the contents of a window (or of a specific control)</li>
	</ul>

	<h4>Add and Remove Templates</h4>

	<p>There are three new cmdlets for managing <span class="caps">XAML</span> source files.  Add, Remove, and Get BootsTemplate. These allow you to specify additional <span class="caps">XAML</span> files (beyond the default.xaml), and those templates are always automatically loaded into each new window, so you can specify styles, resources, data templates and even new <span class="caps">WPF</span> Templates (I&#8217;ll throw up an example using the ones from <a href="http://WpfThemes.CodePlex.com"><span class="caps">WPF</span> Themes</a> later this weekend).</p>

	<h2>Download and Source now hosted on CodePlex</h2>

	<p>Well, that&#8217;s enough for the highlights for now. I&#8217;ve included the first blush efforts of a ps1xml format and data types files (which get loaded automatically with the module on PowerShell 2, but not v1), and I haven&#8217;t yet written up the help files for the compiled cmdlets.  Look for more help and examples and maybe even some cleaned up sample videos over the weekend. Please file any problems you have as bugs on <a href="http://boots.codeplex.com">Boots.CodePlex.com</a>, where you can find the <a href="http://boots.codeplex.com/Release/ProjectReleases.aspx">latest release</a>.</p>

	<p>I do want to point out that I&#8217;ve left the version number at 0.1 &#8230; I really want to add some explicit support for attached properties, and I&#8217;m sure I&#8217;ve missed a bug or two somewhere along the line  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=';)' class='wp-smiley' />  lets consider this another <strong>solid</strong> beta release.</p>

<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/0b00377a-7c0c-4703-abb8-4effc7afedbd/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=0b00377a-7c0c-4703-abb8-4effc7afedbd" alt="Reblog this post [with Zemanta]" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://huddledmasses.org/powerboots-now-multi-threaded/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On user interfaces, and command lines</title>
		<link>http://huddledmasses.org/on-user-interfaces-and-command-lines/</link>
		<comments>http://huddledmasses.org/on-user-interfaces-and-command-lines/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 04:11:50 +0000</pubDate>
		<dc:creator>Joel 'Jaykul' Bennett</dc:creator>
				<category><![CDATA[Huddled]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Composable]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Lab]]></category>
		<category><![CDATA[Ubiquity]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://HuddledMasses.org/?p=714</guid>
		<description><![CDATA[I just discovered ubiquity, a Firefox plugin from Mozilla labs which is really just a sort-of alpha concept preview of a new command-line interface for the web browser that they are working on. It&#8217;s extremely cool Ubiquity for Firefox from Aza Raskin on Vimeo. You should watch the video, the stuff they&#8217;re doing already is [...]]]></description>
			<content:encoded><![CDATA[	<p>I just discovered <a href="http://labs.mozilla.com/projects/ubiquity/">ubiquity</a>, a <a href="http://www.mozilla.com/firefox">Firefox</a> plugin from <a href="http://labs.mozilla.com/">Mozilla labs</a> which is really just a sort-of alpha concept <a href="http://labs.mozilla.com/2008/08/introducing-ubiquity/">preview</a> of a new command-line interface for the web browser that they are working on.  </p>

	<h3>It&#8217;s extremely cool</h3>

	<p><object height="298" width="400"><param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" />	<embed src="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="298" width="400"></embed></object><br />
<a href="http://vimeo.com/1561578?pg=embed&amp;sec=1561578">Ubiquity for Firefox</a> from <a href="http://vimeo.com/user532161?pg=embed&amp;sec=1561578">Aza Raskin</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1561578">Vimeo</a>.</p>

	<p>You should watch the video, the stuff they&#8217;re doing already is kind-of exciting.  It reminded me a lot of PowerShell, so I started digging around some blogs and trying to figure out where they are going, and what their inspiration is &#8230; and now I&#8217;m <strong>really</strong> quite excited about it  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=';-)' class='wp-smiley' />  and you should be too.  Won&#8217;t it be cool when you can tell Firefox something like:</p>

	<blockquote>
		<p> Hey Firefox? Take this text from this page, translate it to Spanish, encrypt it with my mom&#8217;s public key, email it to her &#8230; and oh yeah save this chain of commands as a new command so I can use it later.</p>
	</blockquote>

	<p>That&#8217;s <a href="http://jonoscript.wordpress.com/2008/07/26/why-verbs/">the vision of jono over at Mozilla Labs</a>, and it sounds pretty good to me  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=';)' class='wp-smiley' />  Although I couldn&#8217;t help but think that if I could access PowerShell from my browser and pipe in the selected text, I could do pretty much all of that with existing commands  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=';-)' class='wp-smiley' /> </p>

	<p>Anyway, I thought I&#8217;d give you a few links to read about the concepts of <a href="http://portal.acm.org/toc.cfm?id=502348&#38;amp;type=proceeding&#38;amp;coll=GUIDE&#38;amp;dl=GUIDE&#38;amp;CFID=4563485&#38;amp;CFTOKEN=12182147#502368">expressive</a>, <a href="http://en.wikipedia.org/wiki/Composability">composable</a>, <a href="http://mags.acm.org/interactions/20080102/?pg=20&#38;amp;pm=2">linguistic</a>, and <a href="http://blog.mozilla.com/faaborg/2007/07/05/the-graphical-keyboard-user-interface/">partially graphical</a> interfaces. And then later on, I&#8217;ll show you mine.</p>

<h6 class="zemanta-related-title">Related articles by Zemanta</h6><ul class="zemanta-article-ul"><li class="zemanta-article-ul-li"><a href="http://www.gizmodo.com.au/2008/08/mozillas_ubiquity_for_firefox_alpha_01_looks_fantastic.html">Mozilla&#8217;s Ubiquity For Firefox Alpha 0.1 Looks Fantastic</a></li><li class="zemanta-article-ul-li"><a href="http://www.iaconsultants.ca/index.php/2008/09/02/ubiquity-for-fire-fox/">Ubiquity for Firefox</a></li><li class="zemanta-article-ul-li"><a href="http://thenewofficecoach.blogspot.com/2008/08/speaking-coherently.html">Speaking Coherently</a></li><li class="zemanta-article-ul-li"><a href="http://www.finette.co.uk/blog/index.php/2008/08/i-have-seen-the-future-and-it-is-called-ubiquity/">I have seen the future &#8211; and it is called Ubiquity</a></li><li class="zemanta-article-ul-li"><a href="http://www.u-g-h.com/2008/08/27/natural-language-in-your-browser/">Natural Language in your Browser</a></li></ul>

<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/1e94f97f-aa32-4fd7-bc12-1d0f3c0f2877/" title="Zemified by Zemanta"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=1e94f97f-aa32-4fd7-bc12-1d0f3c0f2877" alt="Reblog this post [with Zemanta]" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://huddledmasses.org/on-user-interfaces-and-command-lines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

