<?xml version="1.0" encoding="iso-8859-1"?>

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title type="text">Menno's Musings</title>
<subtitle type="html"><![CDATA[
software | life | whatever
]]></subtitle>
<id>http://freshfoo.com/blog/index.atom</id>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog" />
<link rel="self" type="application/atom+xml" href="http://freshfoo.com/blog/index.atom" />


<author>
<name>Menno Smits</name>
<uri>http://freshfoo.com/blog/index.atom</uri>
<email>menno AT freshfoo DOT com</email>
</author>
<rights>Copyright 2009 Menno Smits</rights>
<generator uri="http://pyblosxom.sourceforge.net/" version="1.4.3 01/10/2008">
PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.3 01/10/2008
</generator>

<updated>2013-05-06T22:40:00Z</updated>
<!-- icon?  logo?  -->

<entry>
<title type="html">Raspberry Pi: driving a VU meter using a digital-to-analog converter</title>
<category term="" />
<id>http://freshfoo.com/blog/2013/05/06/raspberry_pi_vu_meter</id>
<updated>2013-05-06T22:40:00Z</updated>
<published>2013-05-06T22:40:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/raspberry_pi_vu_meter" />
<content type="html">&lt;p&gt;As I&apos;ve mentioned in previous &lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/blog/pulseaudio_monitoring&quot;&gt;blog&lt;/a&gt; &lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/blog/overengineered_blinking_leds&quot;&gt;articles&lt;/a&gt;, my wife and I have
been working on driving an analog VU meter based on the sound going
out the Raspberry Pi&apos;s audio outputs. This now works!&lt;/p&gt;
&lt;p&gt;Here&apos;s a video demonstrating the result:&lt;/p&gt;
&lt;iframe 
  class=&quot;youtube&quot;
  width=450 
  height=300
  src=&quot;http://www.youtube.com/embed/K0NM2YxhWtI&quot; 
  frameborder=&quot;0&quot; 
  hd=&quot;1&quot; 
  allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;The music &lt;a class=&quot;footnote-reference&quot; href=&quot;#id2&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt; is playing from a Raspberry Pi, with software running
on the Pi digitally sampling the peak output audio level and writing
that out to an 8-bit &lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/Digital-to-analog_converter&quot;&gt;digital-to-analog converter&lt;/a&gt; (DAC). The DAC
output is then used to drive the analog meter. If you&apos;re interesting
in knowing how all this hangs together, keep reading.&lt;/p&gt;
&lt;a href=&quot;http://freshfoo.com/blog/raspberry_pi_vu_meter&quot;&gt;Read more...&lt;/a&gt;</content>
</entry>

<entry>
<title type="html">IMAPClient 0.9.2</title>
<category term="" />
<id>http://freshfoo.com/blog/2013/03/28/IMAPClient-0.9.2</id>
<updated>2013-03-28T23:35:00Z</updated>
<published>2013-03-28T23:35:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.9.2" />
<content type="html">&lt;p&gt;IMAPClient 0.9.2 was released yesterday. In this release:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;The IMAP THREAD command is now supported. Thanks to Lukasz Mierzwa
for the patches.&lt;/li&gt;
&lt;li&gt;Enhanced CAPABILITY querying&lt;/li&gt;
&lt;li&gt;Better documentation for contributors (see &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/mjs0/imapclient/src/tip/HACKING&quot;&gt;HACKING&lt;/a&gt; file)&lt;/li&gt;
&lt;li&gt;Copyright date update for 2013.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/mjs0/imapclient/src/tip/NEWS&quot;&gt;NEWS&lt;/a&gt; file and &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.readthedocs.org/&quot;&gt;manual&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;IMAPClient can be installed from PyPI (&lt;tt class=&quot;docutils literal&quot;&gt;pip install imapclient&lt;/tt&gt;) or
downloaded from the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;IMAPClient site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that the official project source repository is now &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/mjs0/imapclient/&quot;&gt;on
Bitbucket&lt;/a&gt;. &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;http://imapclient.freshfoo.com/&lt;/a&gt; is still the offical home
page and is still used for project tracking. It is only the source
respository that has moved.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Monitoring Audio Levels with PulseAudio</title>
<category term="" />
<id>http://freshfoo.com/blog/2013/02/10/pulseaudio_monitoring</id>
<updated>2013-02-10T22:05:00Z</updated>
<published>2013-02-10T22:05:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/pulseaudio_monitoring" />
<content type="html">&lt;p&gt;I&apos;m working on driving an analog &lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/VU_meter&quot;&gt;VU meter&lt;/a&gt; from my &lt;a class=&quot;reference external&quot; href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt;
using whatever audio is going out the Pi&apos;s sound outputs. The de facto
Linux sound system, &lt;a class=&quot;reference external&quot; href=&quot;http://www.freedesktop.org/wiki/Software/PulseAudio&quot;&gt;PulseAudio&lt;/a&gt;, allows any sound output (or &amp;quot;sink&amp;quot;
in PulseAudio&apos;s nonclementure) to be monitored. In PulseAudio land,
each sink has a corresponding &amp;quot;source&amp;quot; called the monitor source which
can be read just like any other other PulseAudio input such as a
microphone. In fact, to help with volume meter style applications,
PulseAudio even allows you to ask for peak level measurements, which
means you can sample the monitor sink at a low frequency, with low
CPU utilisation, but still produce a useful volume display. When this
feature is used, each sample read indicates the peak level since the
last sample.&lt;/p&gt;
&lt;a href=&quot;http://freshfoo.com/blog/pulseaudio_monitoring&quot;&gt;Read more...&lt;/a&gt;</content>
</entry>

<entry>
<title type="html">IMAPClient 0.9.1</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/11/12/IMAPClient-0.9.1</id>
<updated>2012-11-12T22:52:00Z</updated>
<published>2012-11-12T22:52:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.9.1" />
<content type="html">&lt;p&gt;IMAPClient 0.9.1 is out! In this release:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;OAUTH2 support: OAUTH v1 is still supported by Gmail but is now
deprecated. Thanks to Zac Witte for the patch for version 2 support.&lt;/li&gt;
&lt;li&gt;Stream support: It is now possible to have IMAPClient run an
external command to establish a connection to an IMAP server. This
is useful for exotic connection or authentication setups. Thanks to
Dave Eckhardt for the original patch.&lt;/li&gt;
&lt;li&gt;livetest updates to deal with the way Gmail now handles with new
messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/browser/NEWS&quot;&gt;NEWS&lt;/a&gt; file and &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.readthedocs.org/&quot;&gt;manual&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;As always, IMAPClient can be installed from PyPI (&lt;tt class=&quot;docutils literal&quot;&gt;pip install
imapclient&lt;/tt&gt;) or downloaded from the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;IMAPClient site&lt;/a&gt;.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Tiling addiction</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/09/30/tiling_addiction</id>
<updated>2012-09-30T20:15:00Z</updated>
<published>2012-09-30T20:15:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/tiling_addiction" />
<content type="html">&lt;p&gt;So I have this problem ... Well it&apos;s not really a problem - I can stop
whenever I want, really I can. My problem is that I have a thing for
&lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/Tiling_window_manager&quot;&gt;tiling window managers&lt;/a&gt; (WMs) &lt;a class=&quot;footnote-reference&quot; href=&quot;#id5&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt;. I love the efficient window
management, keyboard focussed operation, extensive customisability and
lightweight feel that most tiling WMs offer. For the X Window System
&lt;a class=&quot;footnote-reference&quot; href=&quot;#id6&quot; id=&quot;id2&quot;&gt;[2]&lt;/a&gt; there&apos;s an &lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/Tiling_window_manager#List_of_tiling_window_managers_for_X&quot;&gt;awful lot to choose from&lt;/a&gt;, and I&apos;ve been obsessed
for some time now with finding a great tiling WM that works for me and
then configuring it to perfection.&lt;/p&gt;
&lt;a href=&quot;http://freshfoo.com/blog/tiling_addiction&quot;&gt;Read more...&lt;/a&gt;</content>
</entry>

<entry>
<title type="html">Somewhat over-engineered blinking LEDs</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/07/20/overengineered_blinking_leds</id>
<updated>2012-07-20T12:52:00Z</updated>
<published>2012-07-20T12:52:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/overengineered_blinking_leds" />
<content type="html">&lt;p&gt;My &lt;a class=&quot;reference external&quot; href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt; arrived a couple of weeks ago and I&apos;ve been working
on turning it into a mini-audio server to connect to the home stereo
in the living room.&lt;/p&gt;
&lt;p&gt;As part of the project I&apos;d like to drive an analog &lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/VU_meter&quot;&gt;VU meter&lt;/a&gt; from
the sound signal.&lt;/p&gt;
&lt;p&gt;This week my (enthusiastic!) wife and I played around with attaching
some basic electronics to the GPIO ports so that we could get more
comfortable the Raspberry Pi. Our electronics knowledge is more than a
little rusty but surprisingly everything we tried worked first go.&lt;/p&gt;
&lt;a href=&quot;http://freshfoo.com/blog/overengineered_blinking_leds&quot;&gt;Read more...&lt;/a&gt;</content>
</entry>

<entry>
<title type="html">IMAPClient 0.9 released</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/05/16/IMAPClient-0.9</id>
<updated>2012-05-16T15:02:00Z</updated>
<published>2012-05-16T15:02:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.9" />
<content type="html">&lt;p&gt;I&apos;m pleased to announce version 0.9 of IMAPClient, the easy-to-use and
Pythonic IMAP client library.&lt;/p&gt;
&lt;p&gt;Highlights for this release:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Support for Gmail&apos;s label API. Thanks to Brian Neal for the patches for this.&lt;/li&gt;
&lt;li&gt;Significant cleanup and refactoring in preparation for Python 3 compatibility.&lt;/li&gt;
&lt;li&gt;The &amp;quot;livetest&amp;quot; module can now be safely used against IMAP accounts
with real data. Previously it could only be used with dummy accounts
due to the destructive nature of the tests.&lt;/li&gt;
&lt;li&gt;Fixed handling of IMAP servers that return all-digit folder name
without quotes. Thanks to Rhett Garber for the bug report.&lt;/li&gt;
&lt;li&gt;Much improved test coverage (again, in preparation for Python 3 support)&lt;/li&gt;
&lt;li&gt;Fixed rename live test so that it uses folder namespaces&lt;/li&gt;
&lt;li&gt;Parse STATUS responses robustly - fixes folder_status() with MS
Exchange.&lt;/li&gt;
&lt;li&gt;Numerous livetest fixes to work around oddities with the MS
Exchange IMAP implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/browser/NEWS&quot;&gt;NEWS&lt;/a&gt; file and &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.readthedocs.org/&quot;&gt;manual&lt;/a&gt; have more details on all of the above.&lt;/p&gt;
&lt;p&gt;As always, IMAPClient can be installed from PyPI (&lt;tt class=&quot;docutils literal&quot;&gt;pip install
imapclient&lt;/tt&gt;) or downloaded from the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;IMAPClient site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main focus of the next release (0.10) will be Python 3 support as
this is easily the most requested feature. Watch this space for more
news on this.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Introducing elemental</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/04/07/introducting_elemental</id>
<updated>2012-04-07T22:04:00Z</updated>
<published>2012-04-07T22:04:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/introducting_elemental" />
<content type="html">&lt;p&gt;The first release of my first Elisp project is out. The project is
called &amp;quot;elemental&amp;quot; and the intro from the README goes:&lt;/p&gt;
&lt;blockquote&gt;
elemental is a set of Emacs Lisp functions for intelligently jumping
between and transposing list/tuple/dictionary/function-parameter
elements. These functions are primarily useful when editing software
source code.&lt;/blockquote&gt;
&lt;p&gt;It&apos;s probably easier to get an understanding what it does by
demonstration so I&apos;ve uploaded a &lt;a class=&quot;reference external&quot; href=&quot;http://www.youtube.com/watch?v=V9MRMm884mo&quot;&gt;quick screencast&lt;/a&gt; to Youtube.&lt;/p&gt;
&lt;p&gt;The project is hosted on Bitbucket: &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/mjs0/elemental&quot;&gt;https://bitbucket.org/mjs0/elemental&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Feedback and patches welcome!&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">IMAPClient 0.8.1 released</title>
<category term="" />
<id>http://freshfoo.com/blog/2012/01/11/IMAPClient-0.8.1</id>
<updated>2012-01-11T23:20:00Z</updated>
<published>2012-01-11T23:20:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.8.1" />
<content type="html">&lt;p&gt;Version 0.8.1 of IMAPClient has just been released. This version works around a
subtle bug in distutils which was preventing installation on Windows from
working. Thanks to Bob Yexley for the bug report.&lt;/p&gt;
&lt;p&gt;This release also contains a few small documentation updates and packaging
fixes. The &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/browser/NEWS&quot;&gt;NEWS&lt;/a&gt; file has more details.&lt;/p&gt;
&lt;p&gt;As always, IMAPClient can be installed from PyPI (&lt;tt class=&quot;docutils literal&quot;&gt;pip install
imapclient&lt;/tt&gt;) or downloaded from the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;IMAPClient site&lt;/a&gt;.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">IMAPClient 0.8 released</title>
<category term="" />
<id>http://freshfoo.com/blog/2011/11/09/IMAPClient-0.8</id>
<updated>2011-11-09T22:10:00Z</updated>
<published>2011-11-09T22:10:00Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.8" />
<content type="html">&lt;p&gt;Version 0.8 of IMAPClient is out! Although I didn&apos;t get everything
into this release that I had hoped to, there&apos;s still plenty
there. Thanks to Johannes Heckel and Andrew Scheller for their
contributions to this release.&lt;/p&gt;
&lt;p&gt;Highlights for 0.8:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;OAUTH authentication support&lt;/li&gt;
&lt;li&gt;IDLE support (&lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/browser/imapclient/examples/idle_example.py&quot;&gt;example&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Full NOOP support&lt;/li&gt;
&lt;li&gt;Comprehensive Sphinx based docs. A HTML version of the docs is
included in the source distribution. They are also hosted online at
&lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.readthedocs.org/&quot;&gt;http://imapclient.readthedocs.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Folder rename support&lt;/li&gt;
&lt;li&gt;New &amp;quot;debug&amp;quot; property to simplify protocol debugging&lt;/li&gt;
&lt;li&gt;Live test and interactive shell features are now part of the imapclient Python
package and can be called from the command-line. (For example:
&lt;tt class=&quot;docutils literal&quot;&gt;python &lt;span class=&quot;pre&quot;&gt;-m&lt;/span&gt; imapclient.interact ...&lt;/tt&gt;)&lt;/li&gt;
&lt;li&gt;New normalise_times attribute allows caller to select whether
datetimes returned by fetch() are native or not&lt;/li&gt;
&lt;li&gt;interactive shell now works with both IPython 0.10 and 0.11 (and
later)&lt;/li&gt;
&lt;li&gt;BODY/BODYSTRUCTURE parsing fixes&lt;/li&gt;
&lt;li&gt;Programmer friendly version information now available (imapclient.version_info)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/browser/NEWS&quot;&gt;NEWS&lt;/a&gt; file and &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.readthedocs.org/&quot;&gt;main documentation&lt;/a&gt; has more details on all of
the above.&lt;/p&gt;
&lt;p&gt;As always, IMAPClient can be installed from PyPI (&lt;tt class=&quot;docutils literal&quot;&gt;pip install
imapclient&lt;/tt&gt;) or downloaded from the &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/&quot;&gt;IMAPClient site&lt;/a&gt;.&lt;/p&gt;
</content>
</entry>
</feed>
