<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
         xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://kaeru.my/journal/kaerus-journal/RSS">
  <title>Kaeru's Online Journal</title>
  <link>http://kaeru.my/journal/kaerus-journal</link>
  
  <description>
    
       
       
  </description>
  
  
  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2008-12-06T14:50:30Z</syn:updateBase>
        
  
  <image rdf:resource="http://kaeru.my/logo.gif"/>

  <items>
    <rdf:Seq>
        
            <rdf:li rdf:resource="http://kaeru.my/journal/tmux"/>
        
        
            <rdf:li rdf:resource="http://kaeru.my/journal/dont-know-jack"/>
        
        
            <rdf:li rdf:resource="http://kaeru.my/journal/ipython-zope-buildout"/>
        
    </rdf:Seq>
  </items>

</channel>

    <item rdf:about="http://kaeru.my/journal/tmux">
<title>tmux</title>
<link>http://kaeru.my/journal/tmux</link>
<description>&lt;p&gt;A lot of users are probably familar with &lt;a class="reference" href="http://www.gnu.org/software/screen/"&gt;GNU Screen&lt;/a&gt;. I often need to run and see the output
of multiple terminals. For example, you may want to see log output in one
screen while editing a file in another.&lt;/p&gt;
&lt;p&gt;Previously I would do this with multiple terminals, and then later with
&lt;a class="reference" href="http://www.tenshu.net/terminator/"&gt;terminator&lt;/a&gt; to group them all together.
The problem is that if I lost connection, or switch to working on a laptop, I
have to recreate the environment again.&lt;/p&gt;
&lt;p&gt;Wouldn't it be great, if I could detach and restore terminal windows (think
virtual desktops), and panes easily and continue where I left off?&lt;/p&gt;
&lt;p&gt;Enter &lt;a class="reference" href="http://tmux.sourceforge.net/"&gt;tmux&lt;/a&gt;&lt;/p&gt;
&lt;a class="reference image-reference" href="http://kaeru.my/journal/images/screenshot-tmux-1.png"&gt;&lt;img alt="http://kaeru.my/journal/images/screenshot-tmux-1.png/image_preview" src="http://kaeru.my/journal/images/screenshot-tmux-1.png/image_preview" /&gt;&lt;/a&gt;
&lt;p&gt;For the server that hosts this blog, I wanted to do some application upgrades
and I wanted to see with top what the server load was. So I have a window, with
portmaster running and top in side by side panes.&lt;/p&gt;
&lt;p&gt;On the same server, also I'd like to work on some &lt;a class="reference" href="http://plone.org"&gt;Plone&lt;/a&gt;
stuff and would like to edit a file, while viewing some stats from varnish.
Instead of opening another terminal, I create another window in tmux, call it
Zope and split it into two panes again.&lt;/p&gt;
&lt;a class="reference image-reference" href="http://kaeru.my/journal/images/screenshot-tmux-zope.png"&gt;&lt;img alt="http://kaeru.my/journal/images/screenshot-tmux-zope.png/image_preview" src="http://kaeru.my/journal/images/screenshot-tmux-zope.png/image_preview" /&gt;&lt;/a&gt;
&lt;p&gt;So now when I detach and reattach tmux on this server, I get back to my working
environment where I left of with both the portupgrade and Zope window setup as they were. You can do a lot more with tmux then just this of
course, but this is the main reason for me to switch to it from GNU Screen.&lt;/p&gt;
&lt;p&gt;A good intro can be found in a two part blog post at &lt;a class="reference" href="http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/"&gt;Hawk Host&lt;/a&gt;&lt;/p&gt;
</description>
<dc:publisher>No publisher</dc:publisher>
<dc:creator>kaeru</dc:creator>
<dc:rights></dc:rights>

<dc:subject>Development</dc:subject>


<dc:subject>FOSS</dc:subject>

<dc:date>2010-07-25T13:01:34Z</dc:date>
<dc:type>Journal Entry</dc:type>
</item>
    <item rdf:about="http://kaeru.my/journal/dont-know-jack">
<title>Don't Know Jack</title>
<link>http://kaeru.my/journal/dont-know-jack</link>
<description>&lt;p&gt;The digital audio/music world is totally new to me, so I'm starting from basics
and taking one baby step at a time. So I'm starting with the most basic setup
with Jack first.&lt;/p&gt;
&lt;p&gt;Line-out output from a &lt;a class="reference" href="http://en.wikipedia.org/wiki/Synthesizer"&gt;synth keybaoard&lt;/a&gt; to line-in of my sound card. At
this stage, you can't hear anything, until that line-in connection is plugged
into a recording app and played back, much like what you do with standard
desktop setup with pulseaudio. Unless the synth has speakers (most high-end ones
don't), or another line-out is connected to a set of speakers, you're not going
to know what's being recorded until it's played back.&lt;/p&gt;
&lt;p&gt;To do this, you want to be able to monitor (hear) the input, by connecting it to
some output. In this case, the line-out of my sound card (playback). You also
want this to be in real time.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://jackaudio.org/"&gt;Jack&lt;/a&gt;  provides the features to do this.&lt;/p&gt;
&lt;p&gt;This sounds overly complicated to hear something, but there are a couple
of things in play here.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Keyboard synth being pressed, sends a signal to it's tone generator&lt;/li&gt;
&lt;li&gt;Tone generator converts it into audio signal, which is sent to line-out&lt;/li&gt;
&lt;li&gt;Line-out audio into line-in of sound card, which converts it into digital
signal (Analog to Digital Converter)&lt;/li&gt;
&lt;li&gt;Digital signal gets converted and amplified into audio signal (Digital to Audio
Converter) in sound card.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In future, all these things may be interchanged with other applications and
devices. For example, the keyboard press will generate MIDI output, that will go
to a software synth on the PC to generate a digital audio signal, which then
goes to an effects processor before going into a recording app. Alternatively,
a midi sequencer such as &lt;a class="reference" href="http://www.rosegardenmusic.com/"&gt;Rosegarden&lt;/a&gt; may be sending MIDI output to the synth keyboard to generate sounds.&lt;/p&gt;
&lt;p&gt;Before it get's all complicated, let's get the basic connection working first.&lt;/p&gt;
&lt;p&gt;Startup Jack Audio Control (qjackctl)&lt;/p&gt;
&lt;img alt="http://kaeru.my/articles/music/images/jack-panel-started.png" src="http://kaeru.my/articles/music/images/jack-panel-started.png" /&gt;
&lt;p&gt;Jack Control will nicely suspend pulseaudio automatically first.&lt;/p&gt;
&lt;p&gt;Once it's started, clicking on the Connect button will show under Audio tab,
system (my Xonar sound card), and capture_1 and capture_2 (left and right,
line-in) as an Output Port and system playback_1 and playback_2 as line-out left
and right of the sound card.&lt;/p&gt;
&lt;img alt="http://kaeru.my/articles/music/images/jack-connect.png" src="http://kaeru.my/articles/music/images/jack-connect.png" /&gt;
&lt;p&gt;You highlight it and click connect. You can of course do cross-overs or
merge.&lt;/p&gt;
&lt;p&gt;These connections are not saved, and system, capture_1 etc are not exactly
intuitive names. As the setup gets more complicated, we're going to need to use
the Patchbay, which you can access by clicking on the button.&lt;/p&gt;
&lt;img alt="http://kaeru.my/articles/music/images/jack-patchbay.png" src="http://kaeru.my/articles/music/images/jack-patchbay.png" /&gt;
&lt;p&gt;With Patchbay, you can have aliase's for the devices so it makes more sense,
and also be able to save and activate different setups.&lt;/p&gt;
&lt;p&gt;Next I'll be learning on how to add basic MIDI support.&lt;/p&gt;
</description>
<dc:publisher>No publisher</dc:publisher>
<dc:creator>kaeru</dc:creator>
<dc:rights></dc:rights>

<dc:subject>FOSS</dc:subject>


<dc:subject>Audio</dc:subject>


<dc:subject>Music</dc:subject>


<dc:subject>Jack</dc:subject>

<dc:date>2010-07-11T10:30:24Z</dc:date>
<dc:type>Journal Entry</dc:type>
</item>
    <item rdf:about="http://kaeru.my/journal/ipython-zope-buildout">
<title>iPython Zope buildout</title>
<link>http://kaeru.my/journal/ipython-zope-buildout</link>
<description>&lt;p&gt;You can get a &lt;em&gt;lot&lt;/em&gt; of what you need to do in Plone, simply using the built-in content management tools and web configuration options. This is why I like Plone, it empowers users who know more about the content, to organize and manage their own sites.&lt;/p&gt;
&lt;p&gt;A case for example, in which a user would like to have a calendar of all events for their office, on a specific theme, with Plone does not require a technical person to accomplish.&lt;/p&gt;
&lt;p&gt;For development, with Archgenxml combined with the content management features above, again, you don't really need much development skills &lt;a class="reference" href="http://www.archive.org/details/SeanKellyGettingYourFeetWetwithPlone"&gt;to get what you need done&lt;/a&gt; (video).&lt;/p&gt;
&lt;p&gt;As we FOSS developers know however, is that you need to develop the features that make it simple for users and that involves writing code, going through code from others and debugging.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://blog.kagesenshi.org/"&gt;Kagesenshi&lt;/a&gt; showed me how to debug with Zope debug shell. Unfortunately the shell is kinda painful with no auto completion or history. &lt;a class="reference" href="http://ipython.scipy.org/moin/"&gt;iPython&lt;/a&gt; is much nicer to use.&lt;/p&gt;
&lt;p&gt;Luckily it's rather easy now using buildout&lt;/p&gt;
&lt;pre class="literal-block"&gt;
[ipzope]

# a IPython Shell for interactive use with zope running.
# you also need to put
# https://svn.plone.org/svn/collective/dotipython/trunk/ipy_profile_zope.py
# to your $HOME/.ipython directory for the following to work.

recipe = zc.recipe.egg
eggs =
                ipython
                ${instance1:eggs}
initialization =
                import sys, os
                os.environ[&amp;quot;SOFTWARE_HOME&amp;quot;] = &amp;quot;${zope2:location}/lib/python&amp;quot;
                os.environ[&amp;quot;INSTANCE_HOME&amp;quot;] = &amp;quot;${instance1:location}&amp;quot;
                sys.argv[1:1] = &amp;quot;-p zope&amp;quot;.split()
extra-paths = ${zope2:location}/lib/python
scripts = ipython=ipzope
&lt;/pre&gt;
&lt;p&gt;Follow the instructions in the comment, run buildout, and you've got yourself an ipzope
script that will start up Zope debug with ipython shell with app bound to your
Zope root instance already.&lt;/p&gt;
&lt;p&gt;Thanks to the &lt;a class="reference" href="http://seattleplone.org/"&gt;Seattle Plone Gathering&lt;/a&gt; for sharing
the &lt;a class="reference" href="http://seattleplone.org/presentations/buildout-examples"&gt;example&lt;/a&gt;. Lots
of other useful buildout examples on that link too.&lt;/p&gt;
</description>
<dc:publisher>No publisher</dc:publisher>
<dc:creator>kaeru</dc:creator>
<dc:rights></dc:rights>

<dc:subject>Python</dc:subject>


<dc:subject>Zope</dc:subject>


<dc:subject>Plone</dc:subject>

<dc:date>2010-07-06T23:28:56Z</dc:date>
<dc:type>Journal Entry</dc:type>
</item>





</rdf:RDF>
