<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://blog.kevinmehall.net"  xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
 <title>Kevin Mehall</title>
 <link>http://blog.kevinmehall.net</link>
 <description>Kevin Mehall's Blog</description>
 <language>en</language>

<item>
 <title>Pithos 0.3</title>
 <link>http://blog.kevinmehall.net/2010/pithos03</link>
 <description>&lt;p&gt;...is released.&lt;/p&gt;
&lt;p&gt;0.3 brings a few new user-facing features and some major under-the-hood changes. The most requested addition was &lt;a href="http://last.fm"&gt;Last.fm&lt;/a&gt; scrobbling support, so I finally got around to adding that.&lt;/p&gt;
&lt;p&gt;I also re-implemented the &lt;a href="http://github.com/PromyLOPh/pianobar"&gt;libpiano&lt;/a&gt; backend in python. This is in no way a criticism of pianobar, which is a great pandora.com player if you're looking for something command line only. Lars's efforts greatly help Pithos; It's much easier to reverse-engineer some open source C code than decompiling a Flash binary blob. However, the use of libpiano in Pithos was rather unsustainable. It took almost as much code to connect the Pithos python code with libpiano as it does to communicate with Pandora's XMLRPC servers directly. Pianobar moved to an incompatible request-response API several months ago, so all libpiano changes had to be backported to the old, heavily-modified fork I had in Pithos. It got to a point where it was simpler just to rewrite in Python. This means Pithos no longer has a C dependency, allowing for a simpler build process and the use of architecture-independent packages.&lt;/p&gt;
&lt;p&gt;Pithos 0.3 also fixes several bugs, and &lt;a href="http://www.sowebdesigns.com/"&gt;Stephen Ostrow&lt;/a&gt; contributed several nice-to-have feature additions.&lt;/p&gt;
&lt;p&gt;For more information on these changes, see the new &lt;a href="http://kevinmehall.net/p/pithos/changelog"&gt;changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Installation/build instructions, more information, and a donate button can be found &lt;a href="http://kevinmehall.net/p/pithos"&gt;on the main Pithos site&lt;/a&gt;.&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/pithos03#disqusthread</comments>
 <pubDate>Mon, 16 Aug 2010 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/pithos03</guid>
</item>
<item>
 <title>EquationExplorer adds Vector Field graphing</title>
 <link>http://blog.kevinmehall.net/2010/equationexplorer_update</link>
 <description>&lt;p&gt;&lt;a style='display:block; float:right; margin: 10px 0 10px 10px' href='http://kevinmehall.net/p/equationexplorer/vectorfield.html#sin(y)i+cos(x)j%7C%5B-3.1622776601683795,3.1622776601683795,-3.1622776601683795,3.1622776601683795%5D'&gt;
    &lt;img src='/2010/img/equationexplorer_vectorfield.png' width='300' height='227' /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I added support for &lt;a href="http://en.wikipedia.org/wiki/Vector_Field"&gt;vector field&lt;/a&gt; graphing on EquationExplorer.&lt;br /&gt;
&lt;a href="http://kevinmehall.net/p/equationexplorer/vectorfield"&gt;Click here to try it&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On a related note, the &lt;a href="http://github.com/kevinmehall/equationexplorer"&gt;EquationExplorer source code is now on github&lt;/a&gt;.&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/equationexplorer_update#disqusthread</comments>
 <pubDate>Sun, 08 Aug 2010 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/equationexplorer_update</guid>
</item>
<item>
 <title>Notes from MIT OCW Physics 8.01 &amp; 8.02</title>
 <link>http://blog.kevinmehall.net/2010/ocw_physics</link>
 <description>&lt;p&gt;My notes from MIT OpenCourseWare Mechanics (8.01) and Electricity and Magnetism (8.02)&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/ocw_physics#disqusthread</comments>
 <pubDate>Fri, 04 Jun 2010 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/ocw_physics</guid>
</item>
<item>
 <title>Pithos: A Pandora.com player for the GNOME desktop</title>
 <link>http://blog.kevinmehall.net/2010/pithos</link>
 <description>&lt;p class='warn'&gt;
&lt;a href='http://kevinmehall.net/p/pithos'&gt;Pithos now has its own web site. Click here for the most updated information about Pithos&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a class='rfloat' href='/2010/img/pithos.png'&gt;&lt;img src='/2010/img/pithos.300.png' alt='Screenshot' /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pithos is my &lt;a href="http://pandora.com"&gt;Pandora&lt;/a&gt; client for the GNOME Desktop. The official Flash-based client is a CPU hog, and &lt;a href="http://github.com/PromyLOPh/pianobar/"&gt;Pianobar&lt;/a&gt; is command-line only. Neither integrate with the desktop very well, missing things like media key support and song notifications. I used libpiano, the backend of pianobar, to create a better Pandora player.&lt;/p&gt;
&lt;p&gt;Pithos is already fairly stable and has most of the features of the official Flash version, but there are a few major bugs and important features missing.&lt;/p&gt;
&lt;p&gt;You can find the source &lt;a href="http://launchpad.net/pithos"&gt;on launchpad&lt;/a&gt;. The UI is Python and pyGTK, but the libpiano backend is written in C.&lt;/p&gt;
&lt;p&gt;I also made &lt;a href="https://launchpad.net/~kevin-mehall/+archive/pithos-daily"&gt;a PPA with packages for Ubuntu 9.04&lt;/a&gt;. You can install an updating Pithos daily build with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo add-apt-repository ppa:kevin-mehall/pithos-daily
sudo apt-get update
sudo apt-get install pithos
&lt;/code&gt;&lt;/pre&gt;
&lt;!--break--&gt;

&lt;p&gt;&lt;strong&gt;Features currently supported&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Play / Pause / Next Song&lt;/li&gt;
&lt;li&gt;Switching stations&lt;/li&gt;
&lt;li&gt;Remembering user name and password&lt;/li&gt;
&lt;li&gt;Cover Art&lt;/li&gt;
&lt;li&gt;Thumbs Up / Thumbs Down / Tired of this song&lt;/li&gt;
&lt;li&gt;Notification popup with song info&lt;/li&gt;
&lt;li&gt;Launching pandora.com song info page and station page&lt;/li&gt;
&lt;li&gt;Reconnecting when pandora session times out&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Coming Soon&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editing QuickMix&lt;/li&gt;
&lt;li&gt;Creating stations&lt;/li&gt;
&lt;li&gt;Adding songs to stations&lt;/li&gt;
&lt;li&gt;Media Key support&lt;/li&gt;
&lt;li&gt;Browsing genre stations&lt;/li&gt;
&lt;li&gt;Proxy support&lt;/li&gt;
&lt;/ul&gt;
&lt;p class='warn'&gt;
Please do not report bugs in the comments below.
&lt;a href='http://bugs.launchpad.net/pithos'&gt;Bugs are handled on Launchpad&lt;/a&gt;
&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/pithos#disqusthread</comments>
 <pubDate>Sat, 30 Jan 2010 00:00:00 MST</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/pithos</guid>
</item>
<item>
 <title>A Better Way to Manage Long-Running Applications</title>
 <link>http://blog.kevinmehall.net/2010/bringing_pin_tab_to_wnck</link>
 <description>&lt;p&gt;Many applications that need to constantly run in the background with occasional user interaction put icons in the Notification area. (Not systray! &lt;strong&gt;Notification&lt;/strong&gt; area!)&lt;/p&gt;
&lt;img src='/2010/img/notification-area-messy.png'&gt;

&lt;p&gt;They treat it as a convenient place to "minimize" themselves without cluttering up the taskbar, and for easy access on all virtual desktops. This abuse undermines the intended use of the notification area: for important system status information and notification of events.&lt;/p&gt;
&lt;p&gt;Inconsistency also kills the user experience. Sometimes clicking the close button completely closes the program (GTG, Xchat), while sometimes it minimizes the program to the notification icon (Rhythmbox). Sometimes, clicking the notification icon raises the window immediately, but sometimes it only toggles the visibility state, meaning that it must be double-clicked if the window is open but covered. None of these correspond to what the user actually wants to do: What's that minimize button on the window for again?&lt;/p&gt;
&lt;p&gt;Managing background applications is a window management problem. It's a failure on the part of the window list (taskbar) that it does not handle these types of applications very well. It's also with the window list that there exists a solution.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://chrome.google.com"&gt;Google Chrome&lt;/a&gt; has a really nice feature called "Pin Tab." It shrinks a tab down to just its icon and forces it to the left of all normal tabs.&lt;/p&gt;
&lt;img src='/2010/img/chrome-pin-tab.png'&gt;

&lt;p&gt;What if the same were applied to window management?&lt;/p&gt;
&lt;p&gt;A little &lt;a href='http://library.gnome.org/devel/libwnck/stable/' title='Window Navigator Construction Kit'&gt;libwnck&lt;/a&gt; hacking later, and I had it implemented.&lt;/p&gt;
&lt;img src='/2010/img/taskbar.png'&gt;

&lt;p&gt;I commandeered the "sticky" ("Show on all desktops") state to pin windows, which means that the pinned windows are visible on all desktops, just like notification icons. They take up hardly any window list space, but are easily accessible. They remain right next to other taskbar entries, and are hidden with the minimize button, just like any other program.&lt;/p&gt;
&lt;p&gt;Another benefit is that this does not have to be implemented for each program. Users can put any application there just by right-clicking and choosing "Show on all desktops." One feature that may be useful is automatically pinning certain windows when they are started. I currently have a &lt;code&gt;wmctrl&lt;/code&gt; script for this purpose.&lt;/p&gt;
&lt;p&gt;To try this out on Ubuntu 9.10, just run&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo add-apt-repository ppa:kevin-mehall/libwnck
sudo apt-get update
sudo apt-get install libwnck22
killall gnome-panel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and start setting windows as visible on all desktops.&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/bringing_pin_tab_to_wnck#disqusthread</comments>
 <pubDate>Sun, 17 Jan 2010 00:00:00 MST</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/bringing_pin_tab_to_wnck</guid>
</item>
<item>
 <title>Multiple Selection + Drag and Drop in PyGTK</title>
 <link>http://blog.kevinmehall.net/2010/pygtk_multi_select_drag_drop</link>
 <description>&lt;p&gt;There's no easy way to make PyGTK's TreeView drag and drop operations work together with multiple selection. When clicking to drag, it deselects all items except for the one under the cursor.&lt;/p&gt;
&lt;p&gt;The solution is to trap the mouse click event. If the user does not drag, the click is synthesized when the mouse is released so that clicking one item to deselect others behaves normally.&lt;/p&gt;
&lt;p&gt;I implemented this in &lt;a href="https://launchpad.net/gtg"&gt;GTG&lt;/a&gt;, but here it is in isolated
form, under the MIT license, so you are free to re-use it.&lt;/p&gt;
&lt;script src="http://gist.github.com/278480.js?file=Multiple+Selection+DnD+class.py"&gt;&lt;/script&gt;

&lt;p&gt;The &lt;code&gt;MultiDragDropTreeView&lt;/code&gt; class, &lt;code&gt;DragDropTreeView&lt;/code&gt; class (that enables DnD operations) and a demo that compares them side-by-side can be downloaded below. &lt;/p&gt;
&lt;p&gt;&lt;a class='download' href='http://gist.github.com/raw/278461/46504a3aa0bc75bb36d2d3daf45a61e9e9d02150/Multiple%20Selection%20DnD%20demo.py'&gt;multi_select_drag_drop.py&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2010/pygtk_multi_select_drag_drop#disqusthread</comments>
 <pubDate>Thu, 14 Jan 2010 00:00:00 MST</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2010/pygtk_multi_select_drag_drop</guid>
</item>
<item>
 <title>Getting Things Gnome 0.2 Released</title>
 <link>http://blog.kevinmehall.net/2009/gtg0_2</link>
 <description>&lt;p&gt;The latest version of &lt;a href="http://gtg.fritalk.com/"&gt;GTG&lt;/a&gt; includes my contributions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integration with &lt;a href="http://projecthamster.wordpress.com"&gt;Hamster Time Tracking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Support for "fuzzy" due dates ("now", "soon", and "later")&lt;/li&gt;
&lt;li&gt;Hierarchical tag organization&lt;/li&gt;
&lt;/ul&gt;</description>
 <comments>http://blog.kevinmehall.net/2009/gtg0_2#disqusthread</comments>
 <pubDate>Tue, 15 Dec 2009 00:00:00 MST</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2009/gtg0_2</guid>
</item>
<item>
 <title>Bolo Toss</title>
 <link>http://blog.kevinmehall.net/2009/bolotoss</link>
 <description>&lt;p&gt;&lt;a class='download' href='http://kevinmehall.net/static/2009/bolotoss.pdf'&gt;View as PDF&lt;/a&gt;
&lt;a class='download' href='http://kevinmehall.net/static/2009/bolotoss.zip'&gt;Download SVG&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2009/bolotoss#disqusthread</comments>
 <pubDate>Sun, 18 Oct 2009 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2009/bolotoss</guid>
</item>
<item>
 <title>Javascript Canvas Spring Simulation</title>
 <link>http://blog.kevinmehall.net/2009/canvas_springsim</link>
 <description>&lt;p&gt;Here's another HTML5 Canvas demo, a physics/spring simulator. The physics
isn't terribly accurate, but it's interesting to play with. Just move
the mouse over the lines below.&lt;/p&gt;
&lt;iframe src='http://kevinmehall.net/p/canvas_springsim' style="width: 100%; height: 580px; border: 1px solid #ccc; overflow: hidden;"&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/476221"&gt;Source code&lt;/a&gt; under the MIT license.&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2009/canvas_springsim#disqusthread</comments>
 <pubDate>Mon, 05 Oct 2009 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2009/canvas_springsim</guid>
</item>
<item>
 <title>Flare of Magic</title>
 <link>http://blog.kevinmehall.net/2009/flare</link>
 <description>&lt;p&gt;&lt;a class='download' href='http://kevinmehall.net/static/art/flare/flare.svg'&gt;SVG&lt;/a&gt;
&lt;a class='download' href='http://kevinmehall.net/static/art/flare/flare.png'&gt;PNG&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://blog.kevinmehall.net/2009/flare#disqusthread</comments>
 <pubDate>Sun, 27 Sep 2009 00:00:00 MDT</pubDate>
 <dc:creator>Kevin Mehall</dc:creator>
 <guid isPermaLink="true">http://blog.kevinmehall.net/2009/flare</guid>
</item>

</channel>
</rss>

