<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[MacLemon]]></title>
  <link href="https://maclemon.at/atom.xml" rel="self"/>
  <link href="https://maclemon.at/"/>
  <updated>2019-06-25T18:11:54+02:00</updated>
  <id>https://maclemon.at/</id>
  <author>
    <name><![CDATA[Pepi Zawodsky]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Fixing OpenSSH CVE-2016-0777, CVE-2016-0778 on OS X]]></title>
    <link href="https://maclemon.at/blog/2016/01/14/fixing-openssh-cve-2016-0777/"/>
    <updated>2016-01-14T17:00:00+01:00</updated>
    <id>https://maclemon.at/blog/2016/01/14/fixing-openssh-cve-2016-0777</id>
    <content type="html"><![CDATA[<p><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0777" title="CVE-2016-0777 at Mitre">CVE-2016-0777</a>/<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0778" title="CVE-2016-0778 at Mitre">CVE-2016-0778</a> affects all OpenSSH <em>clients</em> since 5.4 up to, and including, 7.1. This means that the Apple provided SSH of the following OS X releases is vulnerable:</p>

<ul>
<li>OS X 10.7 (Lion): OpenSSH_5.6p1, OpenSSL 0.9.8za 5 Jun 2014</li>
<li>OS X 10.8 (Mountain Lion): OpenSSH_5.9p1, OpenSSL 0.9.8zc 15 Oct 2014</li>
<li>OS X 10.9 (Mavericks): OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011</li>
<li>OS X 10.10 (Yosemite): OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011</li>
<li>OX X 10.11 (El Capitan): OpenSSH_6.9p1, LibreSSL 2.1.7</li>
</ul>


<p>You can easily check if you&rsquo;re running an Apple provided, vulnerable version of OpenSSH by issuing the following command in a terminal. This checks the Apple provided OpenSSH binary!</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>/usr/bin/ssh -V</span></code></pre></td></tr></table></div></figure>


<p>On OS X Yosemite you&rsquo;ll get an output like this.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011</span></code></pre></td></tr></table></div></figure>


<p>Beware that you might not be using the Apple provided <code>ssh(1)</code> but a self-compiled one, like from <a href="http://www.finkproject.org/" title="Fink Project">fink</a>, <a href="http://brew.sh/" title="Mac Homebrew">MacPorts</a> or <a href="https://www.macports.org/" title="MacPorts">Homebrew</a> for your client connections. This applies to <em>all</em> OS X Versions, even ancient ones on PowerPC.</p>

<p>To check which <code>ssh(1)</code> your shell is using use:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>type ssh</span></code></pre></td></tr></table></div></figure>


<p>I use the MacPorts provided SSH package which gives me this output:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>ssh is /opt/local/bin/ssh</span></code></pre></td></tr></table></div></figure>


<p>Until an update for a patched package is provided, I get this version string.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>OpenSSH_7.1p1, OpenSSL 1.0.2e 3 Dec 2015</span></code></pre></td></tr></table></div></figure>


<p>There is now an updated package which also includes the +hpn variant which will give you this version string.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>OpenSSH_7.1p2, OpenSSL 1.0.2e 3 Dec 2015</span></code></pre></td></tr></table></div></figure>


<p>Changing all your <code>ssh_config</code> files is <em>still</em> recommended, even if you have an updated OpenSSH package on your system since the Apple provided OpenSSH may not get an update for a long time or even at all.</p>

<p>To make sure your system is fully patched you have to apply the fixes to all <code>ssh_config</code> files used by all your <code>ssh(1)</code> binaries.</p>

<ul>
<li>Apple OS X 10.7 - 10.10: <code>/etc/ssh_config</code></li>
<li>Apple OS X 10.11: <code>/etc/ssh/ssh_config</code></li>
<li>MacPorts: <code>/opt/local/etc/ssh/ssh_config</code></li>
<li>HomeBrew: <strong>Not sure if this one is correct!</strong> <code>/usr/local/etc/ssh/ssh_config</code></li>
<li>Fink: <code>/sw/etc/ssh_config</code></li>
</ul>


<p>These are the default locations used by the package managers, your path may differ if you&rsquo;ve used a different <code>$prefix</code> for installation.</p>

<p>To find out which config file your <code>ssh(1)</code> binary is using, try this command, provided by <a href="https://twitter.com/teilweise/status/687681247431139329" title="@teilweise on Twitter">@teilweise</a></p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>strings $(which ssh) | grep ssh_config</span></code></pre></td></tr></table></div></figure>


<p>To fix ssh(1) clients add these two lines to all <code>ssh_config</code> files with your favourite text editor under the general <code>Host *</code> section, or you might miss some hosts.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'># Fixing CVE-2016-0777
</span><span class='line'>UseRoaming no</span></code></pre></td></tr></table></div></figure>


<p>Yes, one is a comment, but in a year or two you&rsquo;ll be happy to know why you put that parameter there.</p>

<p>The <code>UseRoaming</code> parameter is <em>undocumented</em> and considered experimental. It&rsquo;s quite astonishing that it is on by default. We&rsquo;ll see if there are more of these undocumented parameters lurking in OpenSSH.</p>

<p>If you absolutely cannot change the system wide <code>ssh_config</code> file, since that requires root permissions, you must add this to your <code>~/.ssh/config</code> under the global <code>Host</code> setting.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>Host *
</span><span class='line'>    # Fixing CVE-2016-0777
</span><span class='line'>    UseRoaming no
</span></code></pre></td></tr></table></div></figure>


<p>If you do not already have a <code>~/.ssh/config</code> file, just create one and make yourself familiar with <code>man 5 ssh_config</code>. You won&rsquo;t regret that!</p>

<p>If you have connected to a malicious SSH server with one of the vulnerable versions you probably have lost private key material.<br/>
It&rsquo;s recommended that you regenerate all SSH keys on your clients. This is a good opportunity to move away from older RSA keys to the newer Ed25519 keys, provided your endpoints already support that. (Available since <a href="http://www.openssh.com/txt/release-6.5" title="OpenSSH 6.5 release notes">SSH 6.5</a>)</p>

<h2>Further reading</h2>

<p><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0777" title="CVE-2016-0777 at Mitre">CVE-2016-0777</a> (Mitre)<br/>
<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0778" title="CVE-2016-0778 at Mitre">CVE-2016-0778</a> (Mitre)<br/>
<a href="http://undeadly.org/cgi?action=article&amp;sid=20160114142733" title="OpenBSD Journal: OpenSSH: client bug CVE-2016-0777 and CVE-2016-0778">OpenBSD Journal: OpenSSH: client bug</a><br/>
<a href="https://www.mail-archive.com/misc@openbsd.org/msg144351.html" title="Theo de Raadt on openbsd-misc Mailing list">Theo de Raadt on openbsd-misc Mailing list</a><br/>
<a href="http://www.openssh.com/txt/release-7.1p2" title="OpenSSH 7.1p2 Release Notes">OpenSSH 7.1p2 Release notes</a><br/>
<a href="https://www.qualys.com/2016/01/14/cve-2016-0777-cve-2016-0778/openssh-cve-2016-0777-cve-2016-0778.txt" title="Qualys Security Advisory: Roaming through the OpenSSH client: CVE-2016-0777 and CVE-2016-0778">Qualys Security Advisory: Roaming through the OpenSSH client: CVE-2016-0777 and CVE-2016-0778</a></p>

<h2>Updates</h2>

<h3>Update 1 (2016-01-14 19:49):</h3>

<p>The path of <code>ssh_config</code> changed with OS X 10.11 (El Capitan). Thanks to <a href="https://twitter.com/chrisridd/status/687706920946393088" title="@chrisridd on Twitter">@chrisridd</a> for pointing me to it.</p>

<h3>Update 2 (2016-01-14 20:16):</h3>

<p>An <a href="https://lists.macosforge.org/pipermail/macports-changes/2016-January/131249.html" title="[144643] trunk/dports/net/openssh/Portfile">updated OpenSSH Package</a> to 7.1p2 is available from <a href="https://www.macports.org/" title="MacPorts">MacPorts</a>. You still must apply the fix to the Apple provided SSH.
If you&rsquo;re using the <code>openssh +hpn</code> variant, you still need to wait for a patch or switch to the vanilla openssh package in the meantime.</p>

<h3>Update 3 (2016-01-15 13:10)</h3>

<p><a href="https://twitter.com/raimue/status/687938495709638657" title="Rainer Müller on Twitter">Rainer Müller</a> has updated the OpenSSH +HPN Variant for MacPorts in <a href="https://trac.macports.org/changeset/144686" title="MacPorts Changeset 144686">Ticket 144686</a>.</p>

<h3>Update 4 (2016-02-11 21:20)</h3>

<p>Incorporated feedback by <a href="http://www.ral.ucar.edu/~sdowdy/" title="Stephen Dowdy">Stephen Dowdy</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[TLS FREAK Attack]]></title>
    <link href="https://maclemon.at/blog/2015/03/04/tls-freak/"/>
    <updated>2015-03-04T14:58:00+01:00</updated>
    <id>https://maclemon.at/blog/2015/03/04/tls-freak</id>
    <content type="html"><![CDATA[<p>Status of the <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0204" title="TLS FREAK CVE-2015-0204">TLS FREAK (CVE-2015-204)</a> vulnerability on OS X and iOS.</p>

<p>This vulnerability allows a downgrade of encrypted SSL and TLS connections to insecure ciphers that can be broken to eavesdrop on your communication. This does not only affect web browsers but <em>all</em> applications on all versions of OS X and iOS.</p>

<p>Update 2015-03-09
<s>At this time there is no software update available from Apple that fixes this vulnerability.</s></p>

<p>Apple has provided security Updates:
* iOS 8.2
* Security Update 2015-02 for
    * OS X 10.8.5 Mountain Lion
    * OS X 10.9.5 Mavericks
    * OS X 10.10.2 Yosemite</p>

<h2>All older releases of iOS and OS X will remain vulnerable forever.</h2>

<h1>Testing</h1>

<p>You can learn more about the technical details and vulnerable websites as well as <em>test any web browser</em> by visiting <a href="https://freakattack.com/" title="Freak Attack - Browser TEST">https://freakattack.com/</a></p>

<h1>Status of Web Browsers on OS X</h1>

<h2>Exploitable (Do not use these Browsers)</h2>

<ul>
<li>Safari (all versions available)</li>
<li>Opera 27.0.1689.76</li>
<li>Opera Next    BETA 26.0.1656.8</li>
</ul>


<p>All applications that use Apple&rsquo;s “SecureTransport” for SSL/TLS connections which is pretty much everything you run on OS X including Mail, iTunes, App Store, Calendar, Address Book, etc.</p>

<h2>Seem to be OK</h2>

<ul>
<li>Chromium 42.0.2292.0 (64-bit) (Canary)</li>
<li>Chrome 41.0.2272.76 (64-bit)</li>
<li>Opera 23.0.1522.77</li>
<li>Opera Next BETA 28.0.1750.15</li>
<li>Opera Next BETA 28.0.1750.36</li>
<li>Firefox 36</li>
<li>Tor Browser 4.0.4</li>
<li>Firefox Developer Edition 37.0a2 (2015-01-19) (Aurora)</li>
<li>Firefox Developer Edition 38.0a2 (2015-03-04) (Aurora)</li>
</ul>


<h2>Inconclusive</h2>

<ul>
<li>Chromium 38.0.2125.122 (290379)</li>
</ul>


<h1>Status of Web Browsers on iOS</h1>

<h2>Exploitable (Do not use these browsers)</h2>

<p>This applies to all versions of iOS and Apps. Testing was done on iOS 8.1.3 with all apps on the current version available in the iOS App Store.</p>

<p>This vulnerability affects <em>all</em> apps on iOS that do not specifically take counter measures!</p>

<ul>
<li>Safari</li>
<li>iCab mobile</li>
<li>Opera Mini</li>
<li>AirWeb</li>
<li>Built in browsers and web views in any app</li>
<li>1Password integrated Browser</li>
</ul>


<h2>Seems to be OK</h2>

<ul>
<li>Chromium</li>
</ul>


<h2>Inconclusive</h2>

<ul>
<li>Onion Browser</li>
</ul>


<h1>Recommendations</h1>

<p>Refrain from using exploitable browsers until Apple has released a Security-Update that fixes the vulnerability. Keep all 3<sup>rd</sup> party browsers <em>updated</em>.
Contact your sysadmins and service providers to make sure other servers like mail, jabber, calendar, contacts, etc. have been patched as well!</p>

<p>If you have any other browsers tested, please <a href="https://maclemon.at/Impressum" title="Contact information">contact me</a> so I can add the details. Using <a href="https://twitter.com/MacLemon" title="@MacLemon">Twitter</a> is fine as well!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OpenSSL Heartbeat CVE-2014-0160]]></title>
    <link href="https://maclemon.at/blog/2014/04/07/openssl-heartbeat-cve-2014-0160/"/>
    <updated>2014-04-07T23:33:11+02:00</updated>
    <id>https://maclemon.at/blog/2014/04/07/openssl-heartbeat-cve-2014-0160</id>
    <content type="html"><![CDATA[<p>To get more information on the effects of the heartbeat vulnerability in OpenSSL 1.0.1 - 1.0.1f see <a href="http://heartbleed.com/">http://heartbleed.com/</a></p>

<p>A <a href="http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html" title="Diagnosis of the OpenSSL Heartbleed bug">Diagnosis of the OpenSSL Heartbleed bug</a> by <a href="https://twitter.com/ex509" title="@ex509 on Twitter">@ex509</a>.</p>

<p>Check your installed version with <code>openssl version -a</code>. OpenSSL 0.9.8 is not vulnerable. OpenSSL 1.0.2 betas and later branches may not have received a patch yet, be careful if you need to use these versions. (1.1, etc.) On Linux (for example Debian or Ubuntu) be sure to check the distribution for backports! You can get a hint if you&rsquo;re facing a backport by looking at the build date. Anything newer than 2014-04-07 is a good candidate.</p>

<p>Sample output on OS X with MacPorts OpenSSL 1.0.1g:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>OpenSSL 1.0.1g 7 Apr 2014
</span><span class='line'>built on: Tue Apr  8 03:34:46 CEST 2014
</span><span class='line'>platform: darwin64-x86_64-cc
</span><span class='line'>options:  bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) idea(int) blowfish(idx)
</span><span class='line'>compiler: /usr/bin/clang -fPIC -fno-common -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
</span><span class='line'>OPENSSLDIR: "/opt/local/etc/openssl"</span></code></pre></td></tr></table></div></figure>


<p>There are a few ways to test your TLS enabled service:</p>

<ul>
<li>A Python script with STARTTLS support. <a href="https://gist.github.com/takeshixx/10107280" title="hb-test.py">hb-test.py</a> by <a href="https://twitter.com/_takeshix" title="@_takeshix on Twitter">@_takeshix</a></li>
<li>Another Python script without STARTTLS support. <a href="http://s3.jspenguin.org/ssltest.py" title="ssltest.py">ssltest.py</a> by <a href="http://www.jspenguin.org/" title="Jared Stafford">Jared Stafford</a></li>
<li>The <a href="http://filippo.io/Heartbleed/%22">Heartbleed Test Website</a> by <a href="https://twitter.com/filosottile" title="@filosottile on Twitter">@filosottile</a></li>
</ul>


<p>If you get an output of <code>TLS server extension "heartbeat" (id=15), len=1</code> your server is likely affected.</p>

<p>Keep in mind that these test tools aren&rsquo;t mature yet (obviously) and may report false positives or false negatives.</p>

<p>The use of <a href="https://en.wikipedia.org/wiki/Forward_secrecy" title="Wikipedia: Forward Secrecy">forward secrecy</a> ciphers seems to mitigate this mostly. Specific TLS sessions still may be affected if the session key has been leaked at that time. All recorded non-forward-secrecy traffic can be decrypted in retrospect.</p>

<p>Read the <a href="https://www.openssl.org/news/secadv_20140407.txt" title="OpenSSL security Advisory">OpenSSL security advisory</a> and if you like to dig into the code you can see the <a href="https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db9023b881d7cd9f379b0c154650d6c108e9a3" title="OpenSSL Diff 1.0.1f - 1.0.1g">git diff of 1.0.1f - 1.0.1g</a>.</p>

<p>Thanks to <a href="https://jve.linuxwall.info" title="Julien Vehent">Julien Vehent</a> (<a href="https://twitter.com/jvehent" title="@jvehent on Twitter">@jvehent</a>) for the OpenSSL testing command.</p>

<h2>Checking libraries</h2>

<p>If you find <code>libssl</code> 1.0.1-1.0.1f anywhere you need to upgrade that library immediately!</p>

<h3>OS X</h3>

<p>The version of <code>libssl</code> used by OS X.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>strings /usr/lib/libssl.dylib | grep "^OpenSSL "
</span><span class='line'>OpenSSL 0.9.8y 5 Feb 2013</span></code></pre></td></tr></table></div></figure>


<h3>MacPorts</h3>

<p>The version of <code>libssl</code> used by MacPorts.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>strings /opt/local/lib/libssl.1.0.0.dylib | grep "^OpenSSL "
</span><span class='line'>OpenSSL 1.0.1g 7 Apr 2014</span></code></pre></td></tr></table></div></figure>


<h3>any binary</h3>

<p>You can check if any binary on OS X dynamically links against <code>libssl</code></p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>otool -L file</span></code></pre></td></tr></table></div></figure>


<p>If you get a line about <code>libssl</code> you then need to check which specific version that OpenSSL library uses with the strings command as shown. If you do not get any <code>libssl</code> info but you know that a binary makes use of TLS/SSL then you need to check for statically linked libraries. Some binaries give you that info by passing <code>--version</code> | <code>-v</code> | <code>-V</code> as the only argument.</p>

<p>If you can recompile that binary update OpenSSL and link against that. If you don&rsquo;t have the sourcecode to that software contact the vendor. If that is not possible as well, <em>stop using that software</em> now.</p>

<h2>Where to go from here</h2>

<p>Firstly update your OpenSSL to 1.0.1g or newer! Download the <a href="https://www.openssl.org/source/openssl-1.0.1g.tar.gz" title="OpenSSL 1.0.1g">OpenSSL 1.0.1g source</a> and its <a href="https://www.openssl.org/source/openssl-1.0.1g.tar.gz.asc" title="OpenSSL 1.0.1g GPG signature">GPG signature</a> and <em>verify that signature</em>.
Check the public keys of Dr. Stephen Henson on the <a href="https://hkps.pool.sks-keyservers.net/pks/lookup?op=vindex&amp;search=0xA2D29B7BF295C759" title="Dr. Stephen Henson GPG Key">SKS Keyservers</a></p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>gpg --recv-key D3577507FA40E9E2; gpg --list-sigs D3577507FA40E9E2
</span><span class='line'>gpg --verify openssl-1.0.1g.tar.gz.asc</span></code></pre></td></tr></table></div></figure>


<p>Then rebuild all the binaries on your machine that link against OpenSSL. Restart all services that use those binaries. When in doubt do a full restart.</p>

<p>Now the really fun part starts.
Generate new keys for als SSL/TLS secured services. You may want to use this “opportunity” to upgrade your key length. Changing keys is necessary independently of your certificate authority in use. This also applies if you use self-signed certificates as the <em>private keys</em> themselves may be compromised.</p>

<p>Get new certificates for all the <em>new</em> keys and <em>revoke</em> the old certificates.</p>

<p>For secondary vulnerabilities see <a href="http://heartbleed.com/">http://heartbleed.com/</a> and act accordingly. Yes, this likely means changing a lot of passwords (again), deleting cookies, invalidating OAuth tokens, etc.</p>

<h2>Upgrading MacPorts</h2>

<p><a href="https://gist.github.com/takeshixx/10107280" title="hb-test.py">MacPorts</a> already has an updated openssl package thanks to maintainer Markus W. Weißmann (mww).</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>port selfupdate
</span><span class='line'>port upgrade openssl
</span><span class='line'>port selfupdate #yes again</span></code></pre></td></tr></table></div></figure>


<p>Check that your OpenSSL library is the correct one:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>strings /opt/local/lib/libssl.1.0.0.dylib | grep "^OpenSSL "
</span><span class='line'>OpenSSL 1.0.1g 7 Apr 2014</span></code></pre></td></tr></table></div></figure>


<p>Then check for packages that depend on OpenSSL.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>port depend openssl | cut -d " " -f 1</span></code></pre></td></tr></table></div></figure>


<p>To upgrade all packages that depend on OpenSSL</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>port upgrade --force -s $(port depend openssl | cut -d " " -f 1 | awk 1 ORS=' ')</span></code></pre></td></tr></table></div></figure>


<p>Then restart all services that you have just upgraded. This may for example be Apache or nginx.</p>

<h2>Long term “fun” with this bug</h2>

<p>A few ideas of devices that are likely to stay vulnerable for a long long time.</p>

<ul>
<li>Firewall/plastic router web interfaces which rarely get updates if at all</li>
<li>Printers which get even less upates will be vulnerable for years to come</li>
<li>Tesla anyone?</li>
<li>any kind of appliance</li>
<li>especially embedded boxes</li>
<li>network switches</li>
<li>Your fridge</li>
<li>home automation systems</li>
<li>APIs that nobody ever looks at</li>
<li>iOS Apps that use OpenSSL</li>
</ul>


<h2>Thanks</h2>

<p><a href="https://alpha.app.net/vividvisions" title="@vividvisions on App.net">@VividVisions</a> Feedback on backports in Linux
<a href="https://alpha.app.net/ferebee" title="@ferebee on App.net">@ferebee</a> Feedback on ambiguity of OpenSSL command line tests</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Eday 2014]]></title>
    <link href="https://maclemon.at/blog/2014/03/06/eday-2014/"/>
    <updated>2014-03-06T17:15:00+01:00</updated>
    <id>https://maclemon.at/blog/2014/03/06/eday-2014</id>
    <content type="html"><![CDATA[<h2>Sichere Kommunikation im Unternehmen</h2>

<p>Sichere Kommunikation für Unernehmen bedeutet heutzutage Einsatz von starker Verschlüsselung. Das klingt kompliziert und es wird leider sehr viel falsch gemacht dabei. Wie sie die richtigen Technologien einsetzen gab es in meinem Talk zu sehen.</p>

<p>Es gibt die Slides meines Talks als <a href="https://maclemon.at/downloads/eDay_2014.pdf" title="eDay 2014, Slidedeck als PDF - 3.6MB">PDF zum Runterladen</a>. (SHA256: ee364b95b649b3fa6f92a6ca785a5ed744205fe5f34c8e6d9fbf90c17ce058f2)</p>

<h3>Update 2014-03-13 Video</h3>

<p>Die Video Aufzeichnung meines Talks „Sichere Kommunikation im Unternehmen“ ist nun verfügbar. (23'47")</p>

<p><video width='720' height='404' preload='metadata' controls poster='https://maclemon.at/artwork/Eday_2014_Sichere_Kommunikation_im_Unternehmen.jpg'><source src='https://maclemon.at/downloads/Eday_2014_Sichere_Kommunikation_im_Unternehmen.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'></video></p>

<h3>Weiterbildung</h3>

<p>Einzelpersonen können bei einer der vielen <a href="https://cryptoparty.at/" title="CryptoParty Austria">CryptoParty</a> Veranstaltungen die korrekte Anwendung von Verschlüsselungstools einfach erlernen. In Wien findet dieses Event jeweils am letzten Montag eines Monats statt.</p>

<p>Für Unternehmen gibt es ebenfalls die Möglichkeit zur <a href="https://maclemon.at/Impressum/" title="MacLemon Kontakt">Schulung von MitarbeiterInnen, IT und Unternehmensführung</a>.</p>

<p>Der IT-Administration sei die Lektüre des Whitepapers <a href="https://bettercrypto.org/" title="Better Crypto - Applied Crypto Hardening">Applied Crypto Hardening</a> empfohlen. Der Guide gibt konkrete Anleitungen zur Umsetzung von sicheren Konfigurationen für viele Serverdienste. Das österreichische Projekt rund um Aaron Kaplan vom <a href="https://cert.at/" title="CERT Österreich">CERT</a> vereinfacht mit dem openSource Projekt die Implementation starker Verschlüsselung ganz enorm.</p>

<h3>Server Tests</h3>

<p>Diese Tests können von jeder Person, also auch von Ihren Kunden und Konkurrenten, vorgenommen werden. Alle Server die aus dem Internet erreichbar sind können getestet werden. Das trifft auf die meisten Server zu. Die Testergebnisse sind sehr <em>leicht verständlich</em> geben aber Fachkräften genug Detailinformation zur Fehlerkorrektur.</p>

<p>Sollten ein Server dort nicht mindestens ein „A“ als Bewertung bekommen besteht Handlungsbedarf. Alle Bewertungen die schlechter als ein „B“ sind deuten auf gravierende Sicherheitslücken in der Verschlüsselung hin.</p>

<p>Webserver auf korrekte Implementation von TLS Testen: <a href="https://www.ssllabs.com/ssltest/" title="Qualys SSLLabs - SSL Webserver Test">SSLLabs Servertest</a>.</p>

<p>Email Server auf TLS Testen: <a href="https://starttls.info/" title="StartTLS - Mailserver Test">StartTLS</a></p>

<p>XMPP/Jabber Server TLS Testen: <a href="https://xmpp.net/" title="XMPP/Jabber Server Test">XMPP</a></p>

<p><a href="https://www.owasp.org/index.php/Austria" title="OWASP Austria - Web Application Tests">OWASP Austria</a> hat gute Richtlinien um ihre Webapplikationen auf Sicherheitslücken zu testen. Als Beispiel eine Demonstration von <a href="https://j.mp/1hPTrIW" title="Cross Site Scripting Demonstration">Cross Site Scripting</a>. Falls die Lücke inzwischen behoben wurde gibt es auch einen <a href="https://maclemon.at/downloads/eday14_livestream_xss.png" title="Screenshot des Cross Site Scripting Demos">Screenshot</a> zur Dokumentation.)</p>

<h3>Unterhaltsames aus Sicherheitslücken</h3>

<p>Ein <a href="http://zed0.co.uk/crossword/" title="Adobe Passwörter Kreuzworträtsel">Kreuzworträtsel</a> aus den meistverwendeten Passwörtern bei <a href="http://www.heise.de/security/meldung/Passwoerter-von-Adobe-Kunden-geknackt-2039972.html" title="Heise Security: Adobe verliert 150.000 Passwörter von Kunden">Adobe</a>.</p>

<h4>Full Disclosure</h4>

<p>Ich bin Mitorganisator der <a href="https://cryptoparty.at/" title="CryptoParty Austria">CryptoParty Wien</a> und Mitautor des <a href="https://bettercrypto.org/" title="Better Crypto - Applied Crypto Hardening">Applied Crypto Hardening</a> Whitepapers.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Building an SFTP Media Server for Auphonic on SmartOS]]></title>
    <link href="https://maclemon.at/blog/2014/02/17/building-an-sftp-media-server-for-auphonic-on-smartos/"/>
    <updated>2014-02-17T00:42:45+01:00</updated>
    <id>https://maclemon.at/blog/2014/02/17/building-an-sftp-media-server-for-auphonic-on-smartos</id>
    <content type="html"><![CDATA[<p>Estimated reading time: 10', implementation takes longer</p>

<h2>Introduction</h2>

<p><a href="https://auphonic.com/" title="Auphonic, the automatic audio post production web service.">Auphonic</a> is an absolutely great web service to post process just about any audio file you want to throw at it. It audiomagically improves recordings of spoken word and is very popular with podcasters for a reason. The service likes to get some support by <a href="https://auphonic.com/donate" title="Donate to Auphonic to support them">donations</a> via <a href="https://flattr.com/thing/946786/auphonic" title="Support Auphonic with a flattr donation">flattr</a>, <a href="bitcoin:19BFygQ2aV1db6aEhtu7Mm1ZQpavAa9C4H?label=AuphonicDonation" title="Donate bitcoins to Auphonic to support them">bitcoin</a>, money transfer, credit card or even the evil PayPal. Auphonic is free to use and they&rsquo;ll shut up and take your money if you want to support them.</p>

<p>To import your source files and to export processed audio, Auphonic supports many external services it can interact with.
<img src="https://maclemon.at/artwork/auphonic_external_services.png" title="Auphonic, external services for media im-/export" alt="External services: FTP, SFTP, Dropbox, AmazonS3, YouTube, Archive.Org, SoundCloud, libsyn, WebDAV, blubrry" /><br/>
I like to use <a href="https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol" title="SFTP: SSH File Transfer Protocol">SFTP</a> which is using <a href="https://en.wikipedia.org/wiki/Secure_Shell" title="Secure Shell">SSH</a> as transport including authentication and encrypted data transfers.</p>

<p>I wanted to use <a href="http://smartos.org/" title="SmartOS - The Complete Modern Operating System">SmartOS</a> as the server plaform. SmartOS is a hypervisor based on the <a href="http://illumos.org/" title="Illumos">Illumos</a> project forked from <a href="https://en.wikipedia.org/wiki/OpenSolaris" title="WikiPedia - OpenSolaris">OpenSolaris</a>. You might wonder why I&rsquo;m not doing this on OS X Server as you&rsquo;d rightfully would expect from me. Chrooting SSH on OS X is quite a pain and SmartOS also uses <a href="https://en.wikipedia.org/wiki/Zfs" title="Wikipedia: ZFS - Zettabyte File System">ZFS</a> which is not a filesystem available on OS X Mavericks at the time of this writing. (I consider <a href="http://code.google.com/p/maczfs/" title="MacZFS">MacZFS</a> deprecated, <a href="http://open-zfs.org/" title="OpenZFS">OpenZFS</a> not yet production ready and <a href="http://getgreenbytes.com/solutions/zevo/" title="ZEVO - ZFS for OS X">ZEVO</a> is abandoned as well as incompatible with Mavericks.)</p>

<h2>Preparing a zone</h2>

<p>To begin, we&rsquo;ll start with a fresh SmartOS zone. I went with the current <code>base64</code> image. 10GB of storage looks ok to me and 128MB RAM seems plenty. <a href="https://us-east.manta.joyent.com/smartosman/public/man1/zlogin.1.html" title="zlogin(1)"><code>zlogin</code></a> to the fresh zone and update the package manager as usual.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>pkgin update
</span><span class='line'>pkgin full-upgrade</span></code></pre></td></tr></table></div></figure>


<p>We&rsquo;ll be using a separate user and group for <code>auphonic</code> to access the SFTP server, so let&rsquo;s create those first.</p>

<p><code>groupadd auphonic</code></p>

<p>Of course the new user needs a home directory where the audio files shall be stored.</p>

<p><code>mkdir /home/auphonic</code></p>

<p>Then we add the user and also assign it to the group we created a moment ago.</p>

<p><code>useradd -g auphonic -d /home/auphonic -m -s /bin/false auphonic</code></p>

<p>Of course every user needs a good and long passphrase.</p>

<p><code>passwd auphonic</code></p>

<p>Let&rsquo;s prepare the user&rsquo;s home directory for SFTP chrooted access, which means we need it to be owned by <code>root</code> or <code>sshd</code> will refuse logins. Of course the <code>auphonic</code> user also needs access to the files which means it would need either be owned by or have group write permissions for <code>auphonic</code>. These requirements conflict each other which we need to solve by adding an <a href="https://en.wikipedia.org/wiki/Access_control_list" title="WikiPedia - Access Control List">ACL</a>.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>chown -r root /home/auphonic
</span><span class='line'>/usr/bin/chmod A+user:auphonic:read_data/write_data:allow /home/auphonic/</span></code></pre></td></tr></table></div></figure>


<p>The home directory should look something like this now.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'># /usr/bin/ls -dV /home/auphonic
</span><span class='line'>drwxr-xr-x+  3 root     root          10 Feb  8 15:10 /home/auphonic
</span><span class='line'>          user:auphonic:rw------------:-------:allow
</span><span class='line'>                 owner@:rwxp--aARWcCos:-------:allow
</span><span class='line'>                 group@:r-x---a-R-c--s:-------:allow
</span><span class='line'>              everyone@:r-x---a-R-c--s:-------:allow</span></code></pre></td></tr></table></div></figure>


<h2>Configuring OpenSSH</h2>

<p>The preinstalled SunSSH does not support chrooting so we will use OpenSSH for the SFTP server. The OpenSSH package does have support for SMF, so we can comfortably enable, disable and restart the service with <a href="https://us-east.manta.joyent.com/smartosman/public/man1M/svcadm.1M.html" title="svcadm(1M)"><code>svcadm(1M)</code></a>.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>pkgin install openssh</span></code></pre></td></tr></table></div></figure>


<p>Before we can actually start and use OpenSSH we need to configure it and generate SSH host keys. Edit <code>/opt/local/etc/ssh/sshd_config</code> with your preferred <code>$EDITOR</code>. These are the things I configured:</p>

<p>Any port above 1024 and other than 22 should be fine. You don&rsquo;t want to have a public internet facing SSH server running on port 22. This is <em>not</em> a security measure, it only keeps your logs cleaner.</p>

<p><code>Port 44938</code></p>

<p>We&rsquo;re changing the sftp server to the interal one. Find the line that says</p>

<p><code>Subsystem     sftp    /opt/local/libexec/sftp-server</code></p>

<p>and change it to</p>

<p><code>Subsystem       sftp    internal-sftp</code></p>

<p>Since we will use a separate, chrooted user and group for the SFTP server we specify minimum privileges for that group as they don&rsquo;t need to use a remote shell or otherwise convenient SSH magic. Changing the root directory to <code>~/</code> prevents the user from accessing anything else on the server outside their home.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>Match Group auphonic
</span><span class='line'>        ChrootDirectory %h
</span><span class='line'>        ForceCommand internal-sftp
</span><span class='line'>        AllowTcpForwarding no
</span><span class='line'>        GatewayPorts no
</span><span class='line'>        X11Forwarding no</span></code></pre></td></tr></table></div></figure>


<h2>Security considerations</h2>

<p>Allowing <code>root</code> login and <code>AgentForwarding</code> is neither necessary nor recommended, so let&rsquo;s turn that off by setting</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>PermitRootLogin no
</span><span class='line'>AllowAgentForwarding no</span></code></pre></td></tr></table></div></figure>


<p>Auphonic&rsquo;s server will, for the forseable future, connect from one static IPv4 as Georg Holzmann confirmed. They cannot support IPv6 <em>yet</em>, which sadly is quite common in Austria. So we can restrict SSH logins to the IPv4 of Auphonic, the local LAN and other netblocks you expect your users to connect from.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>AllowGroups auphonic
</span><span class='line'>  #             auphonic.com,LAN          ,Other external
</span><span class='line'>  Match Address 78.46.81.106,10.123.0.0/16,203.0.113.0/24</span></code></pre></td></tr></table></div></figure>


<h2>Generating host keys</h2>

<p>OpenSSH doesn&rsquo;t automatically generate host keys for us like you&rsquo;re probably used to. So we need to generate our own keys. I will use RSA here and I prefer them to be rather long.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>cd /opt/local/etc/ssh
</span><span class='line'>ssh-keygen -b 8192 -C "Auphonic SmartOS" -t rsa -f ssh_host_rsa_key -N ""</span></code></pre></td></tr></table></div></figure>


<p>After successful creation you&rsquo;ll be presented with a shiny new fingerprint which you should make a note of as well as the key&rsquo;s random art image.</p>

<h2>Activating OpenSSH</h2>

<p>Now that OpenSSH is installed, configured and secured we can finally turn off SunSSH and enable OpenSSH.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>svcadm disable ssh
</span><span class='line'>svcadm enable openssh</span></code></pre></td></tr></table></div></figure>


<p>You can read the log output of sshd with <code>tail -f $(svcs -L openssh)</code> which should give you similar log output to this.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>[ Feb 13 01:22:45 Executing start method ("/opt/local/lib/svc/method/sshd start"). ]
</span><span class='line'>[ Feb 13 01:22:45 Method "start" exited with status 0. ]</span></code></pre></td></tr></table></div></figure>


<h2>Testing</h2>

<p>From the command line we can now test the <code>sftp</code> connection. Keep in mind that you have to specify the non-standard port and also need to originate from an IPv4 address that is allowed to connect as configured above.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ sftp -o "Port 44938" auphonic@example.com</span></code></pre></td></tr></table></div></figure>


<p>Upon first connect you&rsquo;ll be asked to confirm the host&rsquo;s fingerprint which you remember from the step before.</p>

<p>Once you&rsquo;re connected you can verify that chrooting works fine by entering <code>pwd</code> at the <code>sftp</code> prompt and then trying to <code>cd /</code> and <code>pwd</code> again. There shouldn&rsquo;t be any difference. You can try uploading a file now if you like.</p>

<p>To be sure that you actually cannot get a shell from there try to ssh into the host which should end something like this.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ ssh -p 44938 auphonic@example.com
</span><span class='line'>This service allows sftp connections only.</span></code></pre></td></tr></table></div></figure>


<p>Great, your OpenSSH server now allows <code>sftp</code> but no <code>ssh</code> logins authenticated by key or interactive password.</p>

<h2>Configuring Auphonic external service</h2>

<p>Login to your Auphonic account to <a href="https://auphonic.com/engine/sftp/create/" title="Auphonic - Create SFTP Service">create a new SFTP service</a> then select “services” then “SFTP”. You&rsquo;ll be presented with this form to complete.
<img src="https://maclemon.at/artwork/auphonic_add_sftp_service_empty.png" title="Auphonic: Add new SFTP service dialogue - yet empty" alt="Add new SFTP service" />
We&rsquo;ll simply be filling out the fields. The display name is just what you&rsquo;ll see as a source in your production so name it anything you like. The server hostname is the DNS name or IP number where Auphonic can contact your server. The port number is prepopulated with the standard ssh/sftp port 22 which we&rsquo;ll change to 44938. The directory will simply be <code>/</code> since we&rsquo;re chrooting anyway and <code>/</code> simply refers to the <code>auphonic</code> user&rsquo;s home directory in this case. The username is of course <code>auphonic</code> and we&rsquo;ll leave the password <em>empty</em>. When done it should resemble this screenshot.
<img src="https://maclemon.at/artwork/auphonic_add_sftp_service_filled.png" title="Auphonic: SFTP server form filled out" alt="SFTP service form filled out" /></p>

<p>Befor you hit save, klick on the “Use public key authentication” text. You&rsquo;ll be presented with the public key that Auphonic will use to connect to your SFTP server. Copy the whole text in that box, we need to add that to the <code>authorized_keys</code> on the server before we can save this service.</p>

<p>Back in the SmartOS zone, edit <code>~auphonic/.ssh/authorized_keys</code>. In case the directory <code>~/.ssh</code> doesn&rsquo;t exist yet, you need to <code>mkdir</code> it. Paste the Auphonoc public key into the file and at the end of the line add a space and then <em>yourAuphonicUsername</em> @auphonic.com. That way you will know which public key belongs to whom should you have several public keys in there. This will happen if you use this server for multiple Auphonic accounts, each of which will give you a <em>separate public key</em> to use. You can also authenticate your users that way where you also should add a comment at the end so you know which key belongs to which user in case you need to revoke access at some time in the future.</p>

<p>Once you&rsquo;re done adding the Auphonic public key and have saved the <code>authorized_keys</code> file you can hit save on the Auphonic website to add your external service. Auphonic will test the connection and balk at you in case something goes wrong. Only properly working server connections can be added. Configuring your firewall and probably necessary port forwardings are out of the scope of this article and are left as an exercise to you.</p>

<h2>Configuring an SFTP client application</h2>

<p>You&rsquo;ll likely use a graphical application to upload source files, unless you&rsquo;re like me and use <code>sftp</code> from the command line. Many people rightfully like to use <a href="https://cyberduck.io/" title="Cyberduck - Libre FTP, SFTP, WebDAV, S3 &amp; OpenStack Swift browser for Mac and Windows.">Cyberduck</a>. Setting up your connection there looks like this:
<img src="https://maclemon.at/artwork/auphonic_add_cyberduck_connection.png" title="Cyberduck - Add SFTP server" alt="Setting up the Auphonic SFTP server in Cyberduck" />
You <em>can</em> use password authentication here if you like, but it would be better to use public key authentication here as well. Don&rsquo;t forget that you have to add that public key to the <code>~/.ssh/authorized_keys</code> file as well. Just like you did with the Auphonic public key.</p>

<p>That&rsquo;s it, you&rsquo;re done with your shiny SFTP media source for Auhonic. Have fun with your audio productions! If you found a bug in my guide, please <a href="https://maclemon.at/impressum/" title="Many ways to reach me">contact me</a> so I can fix them.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Erratum Zum Artikel „Internet: NSA-Skandal Schärft Sicherheitsbewusstsein“ in Der Presse Vom 2013-06-24.]]></title>
    <link href="https://maclemon.at/blog/2013/06/24/Erratum_diePresse/"/>
    <updated>2013-06-24T13:00:00+02:00</updated>
    <id>https://maclemon.at/blog/2013/06/24/Erratum_diePresse</id>
    <content type="html"><![CDATA[<p>Geschätzte Zeit die zum Lesen benötigt wird: 0'45" und 3'25" Video</p>

<h2>Why is this in german?</h2>

<p>This is my errata to an article in the austrian newspaper „Die Presse“ which is in german. To accomodate the audience of said newspaper these errata are in german language as well. If you want to know what the article is about you can try the <a href="http://translate.google.com/translate?sl=de&amp;tl=en&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;u=http://diepresse.com/home/techscience/internet/1421922/Internet_NSASkandal-schaerft-Sicherheitsbewusstsein" title="Internet: NSA scandal raises safety awareness (via Google Tanslate)">automatic translation via Google translate</a> and <strong>maybe</strong> see <a href="https://translate.google.com/translate?sl=de&amp;tl=en&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;u=https://maclemon.at/blog/2013/06/24/Erratum_diePresse/" title="Errata to “Die Presse” article “Internet: NSA scandal raises safety awareness” (via Google Translate)">my errata in an automated Google translation</a> as well, provided Google fixes their site to use https links as well. (It doesn&rsquo;t at the time of this writing. 2013-06-24 13:35 CEST)</p>

<h2>Erratum</h2>

<p>Korrekturen zum Artikel „<a href="https://diepresse.com/home/techscience/internet/1421922/Internet_NSASkandal-schaerft-Sicherheitsbewusstsein" title="Internet: NSA-Skandal schärft Sicherheitsbewusstsein">Internet: NSA-Skandal schärft Sicherheitsbewusstsein</a>“ in der Print und Online Presse vom 2013-06-24.</p>

<h3>„einer von zwei Veranstaltern“</h3>

<p>Ich bin nur eine von vielen Personen die sich um die Organisation, die Veranstaltungen und die Inhalte kümmern.</p>

<h3>Pull-Quote: „Wöchentliche Partys seit 2012“</h3>

<p>Die CryptoParty Wien findet nicht wöchentlich sondern monatlich statt, jeweils am letzten Montag eines Monats.</p>

<h3>„vermittelt wird nur Wissen, das für den Betrieb wichtig ist“</h3>

<p>Nicht nur, aber vorrangig. Es ist nicht notwendig die gesamte Crypto-Mathematik verstanden zu haben oder selbst nachrechnen zu können um sie korrekt und sicher einsetzen zu können.</p>

<h3>Mein Name</h3>

<p>Mein Vorname ist Pepi. (Wurde korrigiert, danke.)</p>

<h3>CryptoParty International</h3>

<p>Das internationale CryptoParty Wiki findet sich auf <a href="https://cryptoparty.in/" title="Internationales CryptoParty Wiki">https://cryptoparty.in/</a>.</p>

<h3>CryptoParty in Österrreich</h3>

<p>Das österreichische CryptoParty Wiki findet sich auf <a href="https://cryptoparty.at/" title="CryptoParty Österreich">https://cryptoparty.at/</a>.</p>

<h1>Ergänzung</h1>

<p>Ein kurzes <a href="https://www.youtube.com/watch?v=uK6Cx7zxlDc" title="Asher Wolf: Cryptoparties and how to protect your data">Video Interview mit Asher Wolf</a> über CryptoParty und wie es dazu kam. (3'25", in englischer Sprache)</p>

<p>Die CryptoParty Wien erreichst Du auch über Twitter unter <a href="https://twitter.com/CryptoPartyWIEN" title="@CryptoPartyWIEN">@CryptoPartyWIEN</a> und App.net unter <a href="https://alpha.app.net/CryptoPartyWIEN" title="CryptoParty WIEN auf ADN">@CryptoPartyWIEN</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Technical Feasability: Apple “iWatch”]]></title>
    <link href="https://maclemon.at/blog/2013/06/19/technical-feasability-apple-watch/"/>
    <updated>2013-06-19T13:00:00+02:00</updated>
    <id>https://maclemon.at/blog/2013/06/19/technical-feasability-apple-watch</id>
    <content type="html"><![CDATA[<p>Estimated reading time: 07:25</p>

<h2>Preface</h2>

<p>This is the second part of the Apple “iWatch” article and covers the technical aspects of such a possible product. Read the first part if you&rsquo;re interested in the <a href="https://maclemon.at/blog/2013/04/20/pure-speculation-apple-watch/" title="Pure Speculation: Apple “Watch”">pure speculation and design side</a> of this fictious product.</p>

<p><img src="https://maclemon.at/artwork/Running_out_of_Space-Aaron_Parecki.jpeg" title="Running out of space by Aaron Parecki" alt="Running out of Space" /><br/>
Picture: Running out of space (Pebble, Jawbone UP, Nike Fuelband)<br/>
Thanks to <a href="http://www.flickr.com/photos/aaronpk/9023966358/" title="Running out of Space, Aaron Parecki on Flickr">Aaron Parecki on Flickr</a>, Creative Commons Attribution</p>

<h2>Technologcal overview</h2>

<h3>Connectivity</h3>

<p>A core feature of a personal device would be it&rsquo;s ability to communicate with other devices. For example another quite personal device like a mobile phone. <a href="https://en.wikipedia.org/wiki/Bluetooth_low_energy" title="WikiPedia: Bluetooth 4 Low Energy">Bluetooth 4 low energy</a> would be a suitable standard for such communication in many ways.</p>

<p>It was developed as an extension to the existing Bluetooth 4 specification for ultra low energy consumption. You wouldn&rsquo;t want to have your devices' batteries drained all the time, would you? Some Bluetooth 4 LE devices can operate for months on a coin cell. This low consumption also is a benefit for companion devices and their respective power sources.</p>

<p>This technology is not suited for continuous data transfers like streaming audio to your headphones. It&rsquo;s made for short burts to transfer small amounts of data. Like those taking place when sending a push message from your iPhone to be displayed on your personal device, for example an iMessage, location reminder or weather notification. Of course this would also work well for sensor data acquired by the device to be transferred to a phone or computer.</p>

<p>Another key aspect when displaying personal and possibly private data on a device is a secure communications channel. Bluetooth 4 LE allows for secure authentication between devices adhering to the <a href="https://en.wikipedia.org/wiki/Common_Criteria" title="WikiPedia: ISO/IEC 15408 Common Criteria">ISO/IEC 15408 Common Criteria</a> standard. So your private message should not end up being displayed on another person&rsquo;s device.</p>

<p>Lastly Apple&rsquo;s product palette already had support for this standard for quite a while. Particularly in the iPhone 4S and later models, the iPad since generation 3 (the larger form factor iPad with retina display) as well as the popular iPad mini. Cocoa, Apple&rsquo;s collection of programming frameworks, also has support for CoreBluetooth with proximity information and profiles for many device classes including human input devices like keyboards and trackpads as well as medical devices and proximity sensing.</p>

<h3>Sensors</h3>

<p>A device you&rsquo;re wearing all the time will be a great source of body function data. Provided it is connected to your body as much time as possible. Most of the current sport armbands are just an accellerometer/gyroscope and a tiny bit of storage to save sensor data for a few days and a battery. The nike fuel armband is an exception as it also has an LED display, allowing it to show the time. (Just like a watch.) Similarly the <a href="https://jawbone.com/up" title="Jawbone UP">Fitbit One</a> which is clipped to your belt instead of worn on your wrist. Other products like the <a href="http://www.fitbit.com/one" title="Fitbit One">Jawbone UP</a> do not have a display at all. It is basically just sensors, a battery and a connector.</p>

<p><img src="https://maclemon.at/artwork/Jawbone-UP_by_Junpei_Abe.jpeg" title="Jawbone UP - CC by Junpei Abe" alt="Jawbone UP" /><br/>
Picture: Jawbone UP<br/>
Thanks to <a href="http://www.flickr.com/photos/26958633@N02/8716760225/" title="Junpei Abe on Flickr">Junpei Abe on Flickr</a> - Creative Commons Attribution</p>

<p>Following the current trend of the <a href="https://en.wikipedia.org/wiki/Quantified_Self" title="WikiPedia: Quantified Self">quantified self</a> such a device would be the ideal bodily data source. Of course motion tracking only would not be enough to be interesting to users. If that device is to be carried at all times on your body, you certainly want more sensors checking your body. You could have it measure heart frequency, blood pressure, skin conductivity (recoginzing if you&rsquo;re sweating), blood glucose levels, etc. Many more things probably are possible to measure that way nowadays. Thus making the device not only interesting to those interested in aiding their fitness routine, but also helping those with diseases to improve their recovery or at least ease their chronic symptoms.</p>

<p><img src="https://maclemon.at/artwork/Fitbit_one-by_Tatsuo_Yamashita.jpeg" title="Fitbit one by Tatsuo Yamashita on Flickr" alt="Fitbit one" /><br/>
Picture: Fitbit one, Packaging<br/>
Thanks to <a href="http://www.flickr.com/photos/yto/8262106529/" title="Tatsuo Yamashita on Flickr">Tatsuo Yamashita on Flickr</a>, Creative Commons Attribution</p>

<p>There are <a href="http://blog.bluetooth.com/train-harder-and-smarter-15-bluetooth-sports-products/" title="15 Bluetooth Sports Products">many bluetooth sports products</a> on the market already, but they&rsquo;re mostly simple ones like those already described.</p>

<h3>Power Supply</h3>

<p>You don&rsquo;t want to take off your personal wearable device every night just to recharge it. This would make sensors less useful and also reduce the amount of body data captured. Times where it isn&rsquo;t connected to your body need to be minimized. Current iDevices and even MacBook Air models show that the better part of their weight and volume is the battery. This would be true for a wearable device as well.
This poses another challenge which is recharging said battery. All the currently available prodocts require you to take them off to recharge. Most devices will last for a few days. According to Martin Pittenauer the Pebble does get <a href="http://twitter.com/map/status/314067667046772736" title="@Map on Twitter about the battery of the Pebble smart watch">about 6 days of battery life</a>. Not really a comfortable time span for a wearable device even though most of us have gotten accustomed to charging our smart phone every night. One solution to this problem could be <a href="http://en.wikipedia.org/wiki/Inductive_charging" title="WikiPedia: Inductive Charging">inductive charging</a> as well as <a href="http://software.intel.com/en-us/blogs/2012/09/13/a-future-without-cords-wireless-charging-and-the-ultrabook" title="intel: Wireless Charging System">intel&rsquo;s resonance charging technology</a>. Inductive charging is used in electrical tooth brushes for example and can be considered common these days. Resonance charging is a newer technology allowing to distribute power over a greater distance. This would be ideal to recharge your personal device while still wearing it. For example with a small bedside charger that you could just leave plugged in there.</p>

<h3>Interaction</h3>

<p>Users of the Pebble immediately notice that getting notifications is fine. But if you receive an email, that you just want to delete, you can&rsquo;t do that. This clearly is a limitation of the device. Users certainly expect a wearable device to be able to fully interact with their smart phone or tablet device. It might as well be suitable as a remote control for a set-top media box. The black AppleTV has <a href="http://support.apple.com/kb/HT5633?viewlocale=en_US&amp;locale=en_US" title="Apple TV: Using the Apple Wireless Keyboard">support for Bluetooth keyboards</a> since firmware 5.2. This would pave the way for a wearable device being used as a remote control for your big screen.
The 5th generations of the <a href="http://www.apple.com/ipod-nano/" title="iPod nano">iPod nano</a> had a (two finger) touch enabled display with the current 6th generation is even capable of multi-touch. Certainly the preferred and expected way of user interaction.
Surely not enough space to provide a keyboard, but more than enough to provide a few custom buttons. Preprogrammed interaction to delete an email, reply to an iMessage with a premade message, pickup a call or anything your own app may need. Playback controls for your iPod sound like an obvious use case.</p>

<h3>Processing Power</h3>

<p>A small, thin and light wearable device can&rsquo;t have a lot of processing power. It doesn&rsquo;t need to actually if it can outsource expensive processing to the phone in your pocket. In fact, it would not really need a lot of CPU power. Apple has gained enough experience with ARM processors and embedded systems. Their iPod nano and Shuffle models show that they can sucessfully manufacture powerful systems with modest energy drain.
<img src="https://maclemon.at/artwork/ARM1176JZF-S.jpg" title="ARM1176JZF-S CPU on the Raspberry Pi" alt="ARM1176JZF-S CPU on the Raspberry Pi" /><br/>
Picture: ARM CPU used on the Raspberry Pi<br/>
Pepi Zawodsky (author)</p>

<p>A processor like the Samsung manufactured <a href="http://en.wikipedia.org/wiki/ARM11" title="WikiPedia: ARM11 CPU Architecture">ARM 11 type CPU ARM1176JZF-S</a> used in the <a href="http://www.raspberrypi.org" title="Raspberry Pi Foundation">Raspberry Pi</a> would already have way too much processing power and memory. Something like in the <a href="http://www.everymac.com/systems/apple/ipod/specs/ipod-6th-generation-6g-multitouch-nano-specs.html" title="6th generation iPod nano">6th generation iPod nano</a> would be more than sufficient and conserve power. But even that CPU might be too powerful for the needs of a wearable device. Something on the lines of an <a href="http://en.wikipedia.org/wiki/ARM_Cortex-M#Cortex-M3" title="WikiPedia: ARM Cortex M3">ARM Cortex M3</a> seems much more suited and is also the processor used in the Pebble Smartwatch.</p>

<h3>Enclosure</h3>

<p>A certain chique is exepected from all things Apple. The Jawbone UP and the Pebble, while being nice products, not really meet user&rsquo;s expectations from Cupertino when it comes to industrial design. Their material is plastics and rubber which are more cost effective than more noble materials like an aluminum-unibody casing would be. On the other hand they serve a quite necessary purpose which is being water resistant or even water proof. A not to be neglected property of a wearable device. Spilled <a href="https://en.wikipedia.org/wiki/Pi%C3%B1a_colada" title="WikiPedia: Piña Colada">Piña Coladas</a> over your arm or got caught in the rain? Your device should be able to cope with that easily. It is likely <a href="http://www.patentlyapple.com/patently-apple/2012/03/apple-continues-to-work-on-waterproofing-future-devices.html" title="Apple Patent No. 20120055767: Water profing devices with coating">Apple&rsquo;s Patent 20120055767</a> comes in handy for that which talks about the use of coatings to make electronic devices water resistant. Just like <a href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PG01&amp;p=1&amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.html&amp;r=1&amp;f=G&amp;l=50&amp;s1=%2220130074305%22.PGNR.&amp;OS=DN/20130074305&amp;RS=DN/20130074305" title="Apple Patent: 20130074305: Shot Peening, Shot Blasting Process for Part Flatness">Apple Patent: 20130074305</a> which coves special manufacturing and welding processes for very flat enclosures.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Pure Speculation: Apple “Watch”]]></title>
    <link href="https://maclemon.at/blog/2013/04/20/pure-speculation-apple-watch/"/>
    <updated>2013-04-20T21:11:00+02:00</updated>
    <id>https://maclemon.at/blog/2013/04/20/pure-speculation-apple-watch</id>
    <content type="html"><![CDATA[<p>Estimated reading time: 05:30, plus Video 05:53</p>

<h2>Disclaimer</h2>

<p>This article is pure speculation. I neither have any sources inside Apple, Apples manufacturing partners or Apple&rsquo;s supply chain nor do I consume the same drugs as stock market analysts do to gain their “insights”. I&rsquo;m just collecting the rumours that are out on the interwebs and try to see if mixing and matching them creates anything interesting.</p>

<p>Due to the growing extent on the technical part of this rumored device I&rsquo;ve decided to split this article into two parts so you can already enjoy my speculation while I&rsquo;m still working on the tech aspects.</p>

<h2>Preface</h2>

<p>To be honest, I really have a hard time understanding the hype behind the <a href="https://www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android" title="Pebble Kickstarter Project">Pebble</a>. Their <a href="https://www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android" title="Pebble Kickstarter Project">Kickstarter Campaign</a> gained over 10 million $ in backers for a wristwatch with an <a href="https://en.wikipedia.org/wiki/E-paper" title="Wikipedia: E-Paper">e-paper display</a> that can connect to a smartphone via bluetooth. But 68,929 backers can hardly be wrong, can they? So there certainly seems to be a market for a “smart” wristwatch.
<img src="https://maclemon.at/artwork/Pebble_by_Hugo_Bessa.jpg" title="Pebble Watch, Photo © Hugo Bessa, used with permission" alt="Pebble smart watch" /></p>

<p><em>Pebble Smart Watch</em>, picture © by <a href="https://alpha.app.net/bessa" title="Hugo Bessa on AppDotNet">Hugo Bessa</a> from <a href="http://dedosemchamas.com/blog/2013/3/10/analise-pebble-o-relogio-inteligente" title="Análise: Pebble, o relógio inteligente — Dedos em Chamas">his blog article about the Pebble</a> (in portuguese language), used <a href="https://alpha.app.net/bessa/post/4554135" title="@Bessa on AppDotNet: @maclemon you can use any photo of my review (in Portuguese) with credits, please.">with permission</a></p>

<p>There even is a <a href="http://developer.getpebble.com/" title="Pebbel Smart Watch SDK">Software development kit</a> available to build your own clock faces for the Pebble like this “<a href="http://www.mypebblefaces.com/view?fID=1092&amp;aName=monkeydom&amp;pageTitle=Sideways&amp;auID=1283" title="Sideways Pebble face by Dominik Wagner">Sideways</a>” face by <a href="https://alpha.app.net/monkeydom" title="Dominik Wagner, @monkeydom on AppDotNet">Dominik Wagner</a>.</p>

<p><img src="https://maclemon.at/artwork/Pebble_Sideways_face_by_monkeydom.png" title="Pebble Sideways face by @monkeydom" alt="Pebble Sideways face" /></p>

<h2>What is a wristwatch used for?</h2>

<p>What are people using a wristwatch for today? Certainly the functionality to display a more or less linear <a href="https://en.wikipedia.org/wiki/Time" title="WikiPedia: Time">time</a> is not of the utmost importance anymore. There are clocks everywhere, on your smartphone, on your computer screen, at trainstations, airports, etc. Realtime clocks are everywhere these days, so just to read the time you don&rsquo;t need a wristwatch anymore.</p>

<p>Another use case for a beautiful device charming your forearm is jewelry. So the wristwatch you carry is used as a status symbol or affiliation with a certain group, like the local yachting club or golf resort. Devices by companies like <a href="http://www.tagheuer.com/" title="TAG Heuer">TAG Heuer</a> or <a href="http://www.rolex.com/" title="ROLEX">ROLEX</a>, while being prescision instruments, are sold as lifestyle and prestige objects, their ability to display the time and date are secondary to being a status symbol.</p>

<p>Wrist watches are also used to show the love for technology. An example for this would be the <a href="http://www.junghans.de/productsearch-detail/search/MEGA/items/189.html#opened" title="Junghans Milano Mega Solar">Junghans Mega</a> Series. They&rsquo;ve got a <a href="https://en.wikipedia.org/wiki/DCF77" title="Wikipedia: DCF77">DCF77</a> receiver which means it can set itself to the correct time.
<img src="https://maclemon.at/artwork/Junghans_erste_Funkuhr_Mega1.jpg" title="Junghans MEGA 1" alt="Junghans MEGA 1" /></p>

<p>Junghans MEGA 1 (1990), picture by <a href="https://commons.wikimedia.org/wiki/File:Junghans_erste_Funkuhr_Mega1.jpg?uselang=de" title="WikiMedia Commons: Junghans MEGA 1, Picture von Uhrenfabrik Junghans (Uhrenfabrik Junghans GmbH &amp; Co.KG) [CC0], via Wikimedia Commons">Uhrenfabrik Junghans (Uhrenfabrik Junghans GmbH &amp; Co.KG) [CC0], via Wikimedia Commons</a></p>

<p>It was followed within a year by a model with analog hands as well as solar powered model in 1995 which also sported a, back then recolutionary, ceramic enclosure.
<img src="https://maclemon.at/artwork/Junghans_MEGA_Solar_Ceramic.jpg" title="von MichaelDiederich at de.wikipedia [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)], vom Wikimedia Commons" alt="Junghans MEGA Solar Ceramic" /></p>

<p>Junghans MEGA Solar Ceramic (1995), Picture <a href="https://maclemon.at/artwork/Junghans_MEGA_Solar_Ceramic.jpg" title="von MichaelDiederich at de.wikipedia [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)], vom Wikimedia Commons">by MichaelDiederich at de.wikipedia</a> <a href="https://creativecommons.org/licenses/by-sa/3.0/" title="CreativeCommons License BY-SA, 3.0 unported">CC-BY-SA-3.0</a>, <a href="https://maclemon.at/artwork/Junghans_MEGA_Solar_Ceramic.jpg" title="von MichaelDiederich at de.wikipedia [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)], vom Wikimedia Commons">von Wikimedia Commons</a>
(If you have a better picture you&rsquo;d like to contribute, please <a href="https://maclemon.at/Impressum/" title="Contact Pepi (eMail, Jabber, send a raven, etc.)">contact me</a>)</p>

<p>Being solar powered means it never runs out of batteries. Likewise the <a href="http://www.seiko-astron.com/" title="Seiko Astron">SEIKO Astron</a> which extends the functionality of the Junhans Mega series with a GPS receiver allowing it to set the correct timezone automatically. This creates it&rsquo;s very own problem since <a href="https://en.wikipedia.org/wiki/Time_zone" title="WikiPedia: Time Zones">time zones</a> change ridiculously often so this watch would need a way to update time zone information as well. These are devices that are likely worn for the affection to the technology shown off and to some extent for their industrial design as trappings.</p>

<p>The Pebble watch falls into this technology geeky niche, and is rather not worn just because of its appearance. Certainly not for the materials used, since it&rsquo;s made from plain plastic with some models sporting a paint job.</p>

<h2>Understanding the Apple way</h2>

<p>Apple does not simply make another product for an existing market. Apple has different ways of entering a market. One way is to essentially create the market from scratch like they did with the <a href="https://www.apple.com/ipad/" title="Apple iPad product page">iPad</a>. Of course there have been tablet-computer like devices before the iPad, but this class of devices didn&rsquo;t have a relevant market volume.
Another way for Apple to enter a market is to sidestep into an existing ecosystem like the mobile handset makers had to notice in 2007 when the <a href="https://www.apple.com/iphone/" title="Apple iPhone product page">iPhone</a> was introduced. This was achieved by totally rethinking the existing range of devices. Back then the iPhone was totally different from almost every other mobile phone because Apple did not think of designing a new “phone” but a “communications device”. The term “communications device” is key to the approach Apple is taking. Designing a new “phone” would already constrain thinking about a future device. <a href="https://www.apple.com/pr/bios/jonathan-ive.html" title="Apple Leadership: Jonathan Ive">Jonathan Ive</a> (Senior Vice President, Apple Design) did talk about freeing your thinking from constraints when designing new products.</p>

<p>Watch <a href="https://www.youtube.com/watch?v=FLUn7xCuQxo">iJonathan Ive on Blue Peter</a> on Youtube. (05:35)</p>

<p>Apple has the ability to tickle early adopters of geeky gadgets, just like the Pebble watch does. Though a ficticious device would have a more appealing industrial design and choice of material.
Regarding market segment Apple has always chosen a top-down approach. They start at a high-price with a very focused product, then iterating over the functionality as customers respond with their desire. Though Apple doesn&rsquo;t necessarily regard their customer&rsquo;s wishes as relevant for product evolution.</p>

<blockquote><blockquote><p>But in the end, for something this complicated, it&rsquo;s really hard to design products by focus groups. A lot of times, people don&rsquo;t know what they want until you show it to them.<br/>
— Steve Jobs in <a href="http://www.businessweek.com/bwdaily/dnflash/may1998/nf80512d.htm" title="Business Week, May 12, 1998">Business Week, May 12, 1998</a></p></blockquote></blockquote>

<h3>Approaching a new product</h3>

<p>I&rsquo;m certain that Apple would not even be starting to design “a wristwatch” for the reasons lined out. Honestly having no clue about the wristwatch market I still consider it to be sufficiently saturated with existing products and brands covering just about any timey-wimey fetish imaginable.
Apple also would not only want to appeal to traditional buyers of status symbols or the geeky gadget afficionadi but create a <em>device</em> that would be of interest to a much broader audience.</p>

<h2>Thanks and credits</h2>

<p>These thoughts mostly came up during a prolonged talk with my dear friend <a href="http://convida.at/" title="Convida">Christian</a> who does excellent Apple support work in the Graz/Styria area. We irregularly waffle and rant about all things Apple releated</p>

<p>Thanks to <a href="https://alpha.app.net/bessa" title="Hugo Bessa on AppDotNet">Hugo Bessa</a> for <a href="https://alpha.app.net/bessa/post/4554135" title="@Bessa on AppDotNet: @maclemon you can use any photo of my review (in Portuguese) with credits, please.">giving me permission</a> to use his wonderful photograph of the Pebble watch from his <a href="http://dedosemchamas.com/blog/2013/3/10/analise-pebble-o-relogio-inteligente" title="Análise: Pebble, o relógio inteligente — Dedos em Chamas">Análise: Pebble, o relógio inteligente</a> blog article.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Save a Tree(1)]]></title>
    <link href="https://maclemon.at/blog/2013/03/18/save-a-tree/"/>
    <updated>2013-03-18T01:26:00+01:00</updated>
    <id>https://maclemon.at/blog/2013/03/18/save-a-tree</id>
    <content type="html"><![CDATA[<p>Estimated reading time: 3:30</p>

<h3>Where are my files?</h3>

<p>Do you know what&rsquo;s on your storage devices? Well, of course you know, everything is there. Your whole life these days is stored on harddrives and USB thumbdrives or some kind of server. But what <em>exactly</em> is everything when your significant other or a user asks you if that precious file that supposedly was on the harddrive that just died actually was really there in the first place? This is where a tree comes in handy.</p>

<h3>tree(1)</h3>

<p>Meet <a href="http://mama.indstate.edu/users/ice/tree/" title="The Tree Command for Linux Homepage"><code>tree(1)</code></a> a handy utility that lists contents of directories in a tree-like format. For example the <a href="https://maclemon.at/downloads" title="downloads">downloads</a> directory of this site looks like this when listed by <code>tree(1)</code>.</p>

<figure class='code'><figcaption><span>tree output of downloads/ </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'><span class="nv">$ </span>tree
</span><span class='line'>.
</span><span class='line'>├── J.mp.textexpander.zip
</span><span class='line'>├── MacLemon.vcf
</span><span class='line'>├── Unicode+Snippets.textexpander.zip
</span><span class='line'>├── mlbackup-142-3.0.6.tar.gz
</span><span class='line'>├── mlbackup-157-3.0.7.tar.gz
</span><span class='line'>├── mlbackup-160-3.0.8.tar.gz
</span><span class='line'>├── mlbackup-195-3.0.9.tar.gz
</span><span class='line'>├── pepi.zawodsky.gpgkey
</span><span class='line'>├── pepi.zawodsky.gpgkey.zip
</span><span class='line'>└── tree.html
</span><span class='line'>
</span><span class='line'>0 directories, 10 files
</span></code></pre></td></tr></table></div></figure>


<p>You could easily get the same level of insight with <code>ls</code> you rightfully think now. Unless, you start digging into deeper directory structures. For example your <code>/Library/Application Support</code> directory.</p>

<figure class='code'><figcaption><span>abbreviated tree output of Library </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'><span class="nv">$ </span>tree /Library/Application<span class="se">\ </span>Support | less
</span><span class='line'>/Library/Application<span class="se">\ </span>Support
</span><span class='line'>├── Aperture
</span><span class='line'>│   └── Plug-Ins
</span><span class='line'>│       ├── Edit
</span><span class='line'>│       │   └── BorderFXEditPlugin.ApertureEdit
</span><span class='line'>│       │       └── Contents
</span><span class='line'>│       │           ├── Frameworks
</span><span class='line'>│       │           │   └── IFImageView.framework
</span><span class='line'>│       │           │       ├── IFImageView -&gt; Versions/Current/IFImageView
</span><span class='line'>│       │           │       ├── PrivateHeaders -&gt; Versions/Current/PrivateHeaders
</span><span class='line'>│       │           │       ├── Resources -&gt; Versions/Current/Resources
</span><span class='line'>│       │           │       └── Versions
</span><span class='line'>│       │           │           ├── A
</span><span class='line'>│       │           │           │   ├── IFImageView
</span><span class='line'>│       │           │           │   ├── PrivateHeaders
</span><span class='line'>│       │           │           │   │   ├── CGImageView.h
</span><span class='line'>│       │           │           │   │   ├── IFImageBrowser.h
</span><span class='line'>│       │           │           │   │   ├── IFImageObject.h
</span><span class='line'>│       │           │           │   │   ├── IFImageView.h
</span><span class='line'>│       │           │           │   │   ├── IFLayer.h
</span><span class='line'>│       │           │           │   │   ├── IFLayerController.h
</span><span class='line'>│       │           │           │   │   ├── IFLayerImage.h
</span><span class='line'>│       │           │           │   │   ├── IFLayerImageMask.h
</span><span class='line'>│       │           │           │   │   ├── IFLayerStack.h
</span><span class='line'>│       │           │           │   │   ├── IFLayerTiltShift.h
</span><span class='line'>│       │           │           │   │   ├── IFPreviewCanvas.h
</span><span class='line'>│       │           │           │   │   ├── IFSelectionGuides.h
</span><span class='line'>│       │           │           │   │   ├── IFSplitView.h
</span><span class='line'>│       │           │           │   │   ├── MUPhotoView.h
</span><span class='line'>│       │           │           │   │   ├── SelectionDefocus.h
</span><span class='line'>│       │           │           │   │   ├── SelectionMarker.h
</span><span class='line'>│       │           │           │   │   ├── SelectionMarkerBorder.h
</span><span class='line'>│       │           │           │   │   ├── SelectionMarkerImage.h
</span><span class='line'>│       │           │           │   │   └── SelectionTiltShift.h
</span><span class='line'>│       │           │           │   └── Resources
</span><span class='line'>│       │           │           │       ├── Info.plist
</span><span class='line'>│       │           │           │       ├── ReferenceImage.tiff
</span><span class='line'>│       │           │           │       ├── hud-edit_cancel-N.tiff
</span><span class='line'>│       │           │           │       ├── hud-edit_cancel-P.tiff
</span><span class='line'>│       │           │           │       ├── zoom_larger.tif
</span><span class='line'>│       │           │           │       └── zoom_smaller.tif
</span><span class='line'>│       │           │           └── Current -&gt; A
</span><span class='line'>│       │           ├── Info.plist
</span><span class='line'>│       │           ├── MacOS
</span><span class='line'>│       │           │   └── BorderFXEditPlugin
</span><span class='line'>│       │           ├── PlugIns
</span><span class='line'>│       │           │   └── SoftRectangleImageUnit.plugin
</span><span class='line'>│       │           │       └── Contents
</span><span class='line'>│       │           │           ├── Info.plist
</span><span class='line'>│       │           │           ├── MacOS
</span><span class='line'>│       │           │           │   └── SoftRectangleImageUnit
</span><span class='line'>│       │           │           └── Resources
</span><span class='line'>│       │           │               ├── Description.plist
</span><span class='line'>│       │           │               ├── English.lproj
</span><span class='line'>│       │           │               │   ├── Description.strings
</span><span class='line'>│       │           │               │   └── InfoPlist.strings
</span><span class='line'>│       │           │               └── SoftRectangle.cikernel
</span></code></pre></td></tr></table></div></figure>


<p>Now you get the idea why this can be quite helpful in determining the contents of a folder.</p>

<p>How about a nice list of your Podcasts in iTunes? Here we make use of the <code>-N</code> flag to output diacritic characters like the german umlauts (äöüÄÖÜ), instead of octal escaping them. The OS X Terminal as well as iTerm are well UTF-8 capable.</p>

<figure class='code'><figcaption><span>tree output of iTunes Podcasts </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'><span class="nv">$ </span>tree -N ~/Music/iTunes/iTunes<span class="se">\ </span>Media/Podcasts
</span><span class='line'>/Users/pepi/Music/iTunes/iTunes Media/Podcasts
</span><span class='line'>├── Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_
</span><span class='line'>│   ├── 01 CHAT001 Woher kommen eigentlich diese Cocoaheads und was machen die so_ 1.m4a
</span><span class='line'>│   ├── 02 CHAT002 AirPort Express, Xcode 4.0.2, Git Achievements, Pow.m4a
</span><span class='line'>│   ├── 03 CHAT003 iOS 4.3.3 &amp; Jailbreak, IRC, CodingKitchen Wien, BarCamp Graz, Mobile CouchBase, SuperPin, What License_, Git CheatSheet 1.m4a
</span><span class='line'>│   ├── 27 CHW027_ D-Scrum_ Modernes IT-Projektmanagement auch für Freelancer und KMUs 1.m4v
</span><span class='line'>│   └── CHAT000 Hallo Welt 1.m4a
</span><span class='line'>├── Hot Cocoa
</span><span class='line'>│   ├── Hot Cocoa 3_ The Coin Flipper.m4v
</span><span class='line'>│   ├── Hot Cocoa 4_ CoreData - Part I.mp4
</span><span class='line'>│   ├── Hot Cocoa 5_ Core Data - Part II.mp4
</span><span class='line'>│   └── Hot Cocoa 6_ Intro to iPhone Programming.mp4
</span><span class='line'>├── Learn By The Drop Videos
</span><span class='line'>│   └── Creating An RSS Feed Using Views.m4v
</span><span class='line'>├── Mac Power Users
</span><span class='line'>│   ├── Screencast_ OmniFocus Ninja Tricks <span class="o">(</span>Part 2 of 3<span class="o">)</span>.m4v
</span><span class='line'>│   └── Screencast_ OmniFocus Ninja Tricks <span class="o">(</span>Part 3 of 3<span class="o">)</span>.mov
</span><span class='line'>├── MacBreak Dev
</span><span class='line'>│   ├── Checking Applications with Instruments.mov
</span><span class='line'>│   ├── Data Structures within Core Data.mov
</span><span class='line'>│   ├── How Properties and Core Data work together.mov
</span><span class='line'>│   └── What is DTrace_.mov
</span><span class='line'>├── Unknown Podcast
</span><span class='line'>│   ├── 9<span class="o">)</span> Cathy Shive on Design.mp3
</span><span class='line'>│   ├── Chatting with Sofa.m4a
</span><span class='line'>│   ├── Indie Support with Kirby Turner.mp3
</span><span class='line'>│   ├── Jiva Devoe.mp3
</span><span class='line'>│   └── NSBrief_11_Appsterdam.m4a
</span><span class='line'>└── iOS Programmierung <span class="o">(</span>iPad, iPhone, Xcode, objective-c<span class="o">)</span>
</span><span class='line'>    ├── Die ToDoList <span class="o">(</span>Podcast 004<span class="o">)</span>.mp4
</span><span class='line'>    ├── Macoun 2012 UICollectionView <span class="o">(</span>Podcast 036<span class="o">)</span>.mp4
</span><span class='line'>    └── iOS-Hybrid bzw. iOS-UniversalApp <span class="o">(</span>Podcast 003<span class="o">)</span>.mp4
</span><span class='line'>
</span><span class='line'>7 directories, 24 files
</span></code></pre></td></tr></table></div></figure>


<p>A trip down the memory lane for those who have seen the old <a href="https://en.wikipedia.org/wiki/Bulletin_board_system" title="Wikipedia: Bulletin Board System">BBS</a> days with an <a href="https://en.wikipedia.org/wiki/Acoustic_coupler" title="Wikipedia: Acoustic Coupler">Acoustic coupler</a> or analog <a href="https://en.wikipedia.org/wiki/Modem" title="Wikipedia: Modem">modem</a>. Back in those days, and even in the early days of the internet many FTP servers had an index file for you to download locally. Search functions did not exists and connection speeds were slow, so you just downloaded a full file tree and searched through that one locally. Such a listing can be created with <code>tree(1)</code> as well.</p>

<figure class='code'><figcaption><span>tree output of Podcasts in FTP archive style </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
</pre></td><td class='code'><pre><code class='sh'><span class='line'><span class="nv">$ </span>tree -Nifh ~/Music/iTunes/iTunes<span class="se">\ </span>Media/Podcasts
</span><span class='line'>/Users/pepi/Music/iTunes/iTunes Media/Podcasts
</span><span class='line'><span class="o">[</span> 238<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_
</span><span class='line'><span class="o">[</span>2.0M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_/01 CHAT001 Woher kommen eigentlich diese Cocoaheads und was machen die so_ 1.m4a
</span><span class='line'><span class="o">[</span>1.4M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_/02 CHAT002 AirPort Express, Xcode 4.0.2, Git Achievements, Pow.m4a
</span><span class='line'><span class="o">[</span>2.1M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_/03 CHAT003 iOS 4.3.3 &amp; Jailbreak, IRC, CodingKitchen Wien, BarCamp Graz, Mobile CouchBase, SuperPin, What License_, Git CheatSheet 1.m4a
</span><span class='line'><span class="o">[</span>457M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_/27 CHW027_ D-Scrum_ Modernes IT-Projektmanagement auch für Freelancer und KMUs 1.m4v
</span><span class='line'><span class="o">[</span> 75K<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Cocoaheads Austria - Die freundlichste Entwickler Gemeinschaft für Mac OS X und iOS_/CHAT000 Hallo Welt 1.m4a
</span><span class='line'><span class="o">[</span> 204<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Hot Cocoa
</span><span class='line'><span class="o">[</span> 98M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Hot Cocoa/Hot Cocoa 3_ The Coin Flipper.m4v
</span><span class='line'><span class="o">[</span> 25M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Hot Cocoa/Hot Cocoa 4_ CoreData - Part I.mp4
</span><span class='line'><span class="o">[</span> 20M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Hot Cocoa/Hot Cocoa 5_ Core Data - Part II.mp4
</span><span class='line'><span class="o">[</span> 32M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Hot Cocoa/Hot Cocoa 6_ Intro to iPhone Programming.mp4
</span><span class='line'><span class="o">[</span> 102<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Learn By The Drop Videos
</span><span class='line'><span class="o">[</span> 19M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Learn By The Drop Videos/Creating An RSS Feed Using Views.m4v
</span><span class='line'><span class="o">[</span> 136<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Mac Power Users
</span><span class='line'><span class="o">[</span>146M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Mac Power Users/Screencast_ OmniFocus Ninja Tricks <span class="o">(</span>Part 2 of 3<span class="o">)</span>.m4v
</span><span class='line'><span class="o">[</span>158M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Mac Power Users/Screencast_ OmniFocus Ninja Tricks <span class="o">(</span>Part 3 of 3<span class="o">)</span>.mov
</span><span class='line'><span class="o">[</span> 204<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/MacBreak Dev
</span><span class='line'><span class="o">[</span> 39M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/MacBreak Dev/Checking Applications with Instruments.mov
</span><span class='line'><span class="o">[</span> 41M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/MacBreak Dev/Data Structures within Core Data.mov
</span><span class='line'><span class="o">[</span> 64M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/MacBreak Dev/How Properties and Core Data work together.mov
</span><span class='line'><span class="o">[</span> 57M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/MacBreak Dev/What is DTrace_.mov
</span><span class='line'><span class="o">[</span> 238<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast
</span><span class='line'><span class="o">[</span> 18M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast/9<span class="o">)</span> Cathy Shive on Design.mp3
</span><span class='line'><span class="o">[</span> 27M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast/Chatting with Sofa.m4a
</span><span class='line'><span class="o">[</span> 47M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast/Indie Support with Kirby Turner.mp3
</span><span class='line'><span class="o">[</span> 49M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast/Jiva Devoe.mp3
</span><span class='line'><span class="o">[</span> 50M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/Unknown Podcast/NSBrief_11_Appsterdam.m4a
</span><span class='line'><span class="o">[</span> 170<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/iOS Programmierung <span class="o">(</span>iPad, iPhone, Xcode, objective-c<span class="o">)</span>
</span><span class='line'><span class="o">[</span>153M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/iOS Programmierung <span class="o">(</span>iPad, iPhone, Xcode, objective-c<span class="o">)</span>/Die ToDoList <span class="o">(</span>Podcast 004<span class="o">)</span>.mp4
</span><span class='line'><span class="o">[</span>262M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/iOS Programmierung <span class="o">(</span>iPad, iPhone, Xcode, objective-c<span class="o">)</span>/Macoun 2012 UICollectionView <span class="o">(</span>Podcast 036<span class="o">)</span>.mp4
</span><span class='line'><span class="o">[</span> 97M<span class="o">]</span>  /Users/pepi/Music/iTunes/iTunes Media/Podcasts/iOS Programmierung <span class="o">(</span>iPad, iPhone, Xcode, objective-c<span class="o">)</span>/iOS-Hybrid bzw. iOS-UniversalApp <span class="o">(</span>Podcast 003<span class="o">)</span>.mp4
</span><span class='line'>
</span><span class='line'>7 directories, 24 files
</span></code></pre></td></tr></table></div></figure>


<p>I&rsquo;ve included <code>-h</code> in this example to also give me a human readable size information in addition to the full (unescaped, unquoted) path to each file. There are flags to adapt the output to your liking.</p>

<p>With a rather large fileserver, like for a small office, that tree file can grow substantially. My tests have shown that a (probably non-typical) 1TB office server sharepoint with 369910 directories and 1285341 files took up 346MB which boiled down to just 17MB when compressed with <code>gzip(1)</code>. So this is quite well suited for archiving over time.</p>

<p>The last example I want to show you is a nice file listing for a webserver. So here is this server&rsquo;s download directory index as somewhat nice HTML created with <code>tree(1)</code>.</p>

<figure class='code'><figcaption><span>tree output of downloads on this server </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="cp">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
</span><span class='line'><span class="nt">&lt;html&gt;</span>
</span><span class='line'><span class="nt">&lt;head&gt;</span>
</span><span class='line'> <span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span class="s">&quot;Content-Type&quot;</span> <span class="na">content=</span><span class="s">&quot;text/html; charset=UTF-8&quot;</span><span class="nt">&gt;</span>
</span><span class='line'> <span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;Author&quot;</span> <span class="na">content=</span><span class="s">&quot;Made by &#39;tree&#39;&quot;</span><span class="nt">&gt;</span>
</span><span class='line'> <span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">&quot;GENERATOR&quot;</span> <span class="na">content=</span><span class="s">&quot;$Version: $ tree v1.6.0 (c) 1996 - 2011 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro $&quot;</span><span class="nt">&gt;</span>
</span><span class='line'> <span class="nt">&lt;title&gt;</span>MacLemon downloads<span class="nt">&lt;/title&gt;</span>
</span><span class='line'> <span class="nt">&lt;style </span><span class="na">type=</span><span class="s">&quot;text/css&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="o">&lt;!</span><span class="nt">--</span>
</span><span class='line'>  <span class="nt">BODY</span> <span class="p">{</span> <span class="k">font-family</span> <span class="o">:</span> <span class="n">ariel</span><span class="o">,</span> <span class="k">monospace</span><span class="o">,</span> <span class="k">sans-serif</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nt">P</span> <span class="p">{</span> <span class="k">font-weight</span><span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">font-family</span> <span class="o">:</span> <span class="n">ariel</span><span class="o">,</span> <span class="k">monospace</span><span class="o">,</span> <span class="k">sans-serif</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span> <span class="nb">black</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nt">B</span> <span class="p">{</span> <span class="k">font-weight</span><span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">color</span><span class="o">:</span> <span class="nb">black</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nt">A</span><span class="nd">:visited</span> <span class="p">{</span> <span class="k">font-weight</span> <span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">text-decoration</span> <span class="o">:</span> <span class="k">none</span><span class="p">;</span> <span class="k">background-color</span> <span class="o">:</span> <span class="k">transparent</span><span class="p">;</span> <span class="k">margin</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">padding</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">display</span><span class="o">:</span> <span class="k">inline</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nt">A</span><span class="nd">:link</span>    <span class="p">{</span> <span class="k">font-weight</span> <span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">text-decoration</span> <span class="o">:</span> <span class="k">none</span><span class="p">;</span> <span class="k">margin</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">padding</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">display</span><span class="o">:</span> <span class="k">inline</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nt">A</span><span class="nd">:hover</span>   <span class="p">{</span> <span class="k">color</span> <span class="o">:</span> <span class="m">#000000</span><span class="p">;</span> <span class="k">font-weight</span> <span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">text-decoration</span> <span class="o">:</span> <span class="k">underline</span><span class="p">;</span> <span class="k">background-color</span> <span class="o">:</span> <span class="nb">yellow</span><span class="p">;</span> <span class="k">margin</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">padding</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">display</span><span class="o">:</span> <span class="k">inline</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nt">A</span><span class="nd">:active</span>  <span class="p">{</span> <span class="k">color</span> <span class="o">:</span> <span class="m">#000000</span><span class="p">;</span> <span class="k">font-weight</span><span class="o">:</span> <span class="k">normal</span><span class="p">;</span> <span class="k">background-color</span> <span class="o">:</span> <span class="k">transparent</span><span class="p">;</span> <span class="k">margin</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">padding</span> <span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span> <span class="k">display</span><span class="o">:</span> <span class="k">inline</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nc">.VERSION</span> <span class="p">{</span> <span class="k">font-size</span><span class="o">:</span> <span class="n">small</span><span class="p">;</span> <span class="k">font-family</span> <span class="o">:</span> <span class="n">arial</span><span class="o">,</span> <span class="k">sans-serif</span><span class="p">;</span> <span class="p">}</span>
</span><span class='line'>  <span class="nc">.NORM</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">black</span><span class="p">;</span>  <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.FIFO</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">purple</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.CHAR</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">yellow</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.DIR</span>   <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">blue</span><span class="p">;</span>   <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.BLOCK</span> <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">yellow</span><span class="p">;</span> <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.LINK</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">aqua</span><span class="p">;</span>   <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.SOCK</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">fuchsia</span><span class="p">;</span><span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nc">.EXEC</span>  <span class="p">{</span> <span class="k">color</span><span class="o">:</span> <span class="nb">green</span><span class="p">;</span>  <span class="k">background-color</span><span class="o">:</span> <span class="k">transparent</span><span class="p">;}</span>
</span><span class='line'>  <span class="nt">--</span><span class="o">&gt;</span>
</span><span class='line'> <span class="nt">&lt;/style&gt;</span>
</span><span class='line'><span class="nt">&lt;/head&gt;</span>
</span><span class='line'><span class="nt">&lt;body&gt;</span>
</span><span class='line'>  <span class="nt">&lt;h1&gt;</span>MacLemon downloads<span class="nt">&lt;/h1&gt;&lt;p&gt;</span>
</span><span class='line'>  <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads&quot;</span><span class="nt">&gt;</span>https://maclemon.at/downloads<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [1.4K<span class="ni">&amp;nbsp;</span>Jan<span class="ni">&amp;nbsp;</span>17<span class="ni">&amp;nbsp;</span>16:32]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/J.mp.textexpander.zip&quot;</span><span class="nt">&gt;</span>J.mp.textexpander.zip<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [<span class="ni">&amp;nbsp;</span>29K<span class="ni">&amp;nbsp;</span>Jan<span class="ni">&amp;nbsp;</span>17<span class="ni">&amp;nbsp;</span>15:52]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/MacLemon.vcf&quot;</span><span class="nt">&gt;</span>MacLemon.vcf<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [2.8M<span class="ni">&amp;nbsp;</span>Jan<span class="ni">&amp;nbsp;</span>17<span class="ni">&amp;nbsp;</span>16:34]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/Unicode%2BSnippets.textexpander.zip&quot;</span><span class="nt">&gt;</span>Unicode+Snippets.textexpander.zip<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [1.8M<span class="ni">&amp;nbsp;</span>Feb<span class="ni">&amp;nbsp;</span>21<span class="ni">&amp;nbsp;&amp;nbsp;</span>2011]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/mlbackup-142-3.0.6.tar.gz&quot;</span><span class="nt">&gt;</span>mlbackup-142-3.0.6.tar.gz<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [2.9M<span class="ni">&amp;nbsp;</span>Mar<span class="ni">&amp;nbsp;&amp;nbsp;</span>7<span class="ni">&amp;nbsp;&amp;nbsp;</span>2011]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/mlbackup-157-3.0.7.tar.gz&quot;</span><span class="nt">&gt;</span>mlbackup-157-3.0.7.tar.gz<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [3.5M<span class="ni">&amp;nbsp;</span>Mar<span class="ni">&amp;nbsp;</span>28<span class="ni">&amp;nbsp;&amp;nbsp;</span>2011]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/mlbackup-160-3.0.8.tar.gz&quot;</span><span class="nt">&gt;</span>mlbackup-160-3.0.8.tar.gz<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [3.5M<span class="ni">&amp;nbsp;</span>Mar<span class="ni">&amp;nbsp;</span>22<span class="ni">&amp;nbsp;&amp;nbsp;</span>2012]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/mlbackup-195-3.0.9.tar.gz&quot;</span><span class="nt">&gt;</span>mlbackup-195-3.0.9.tar.gz<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [1.7K<span class="ni">&amp;nbsp;</span>Sep<span class="ni">&amp;nbsp;</span>24<span class="ni">&amp;nbsp;&amp;nbsp;</span>2009]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/pepi.zawodsky.gpgkey&quot;</span><span class="nt">&gt;</span>pepi.zawodsky.gpgkey<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  ├── [1.9K<span class="ni">&amp;nbsp;</span>Jan<span class="ni">&amp;nbsp;</span>17<span class="ni">&amp;nbsp;</span>15:35]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/pepi.zawodsky.gpgkey.zip&quot;</span><span class="nt">&gt;</span>pepi.zawodsky.gpgkey.zip<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  └── [<span class="ni">&amp;nbsp;&amp;nbsp;&amp;nbsp;</span>0<span class="ni">&amp;nbsp;</span>Mar<span class="ni">&amp;nbsp;</span>18<span class="ni">&amp;nbsp;&amp;nbsp;</span>2:36]<span class="ni">&amp;nbsp;&amp;nbsp;</span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://maclemon.at/downloads/tree.html&quot;</span><span class="nt">&gt;</span>tree.html<span class="nt">&lt;/a&gt;&lt;br&gt;</span>
</span><span class='line'>  <span class="nt">&lt;br&gt;&lt;br&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/p&gt;</span>
</span><span class='line'>  <span class="nt">&lt;p&gt;</span>
</span><span class='line'>
</span><span class='line'>0 directories, 10 files
</span><span class='line'>  <span class="nt">&lt;br&gt;&lt;br&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/p&gt;</span>
</span><span class='line'>  <span class="nt">&lt;hr&gt;</span>
</span><span class='line'>  <span class="nt">&lt;p</span> <span class="na">class=</span><span class="s">&quot;VERSION&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>       tree v1.6.0 © 1996 - 2011 by Steve Baker and Thomas Moore <span class="nt">&lt;br&gt;</span>
</span><span class='line'>       HTML output hacked and copyleft © 1998 by Francesc Rocher <span class="nt">&lt;br&gt;</span>
</span><span class='line'>       Charsets / OS/2 support © 2001 by Kyosuke Tokoro
</span><span class='line'>  <span class="nt">&lt;/p&gt;</span>
</span><span class='line'><span class="nt">&lt;/body&gt;</span>
</span><span class='line'><span class="nt">&lt;/html&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can see what the output looks like on the web at <a href="https://maclemon.at/downloads/tree.html" title="Tree HTML output of Downloads">/downloads/tree.html</a>. Certainly beats the standard Apache directory listing aesthetics and it can be further customized by adding some CSS.</p>

<p>For a full list of customisation options for output see <a href="http://linux.die.net/man/1/tree" title="man tree(1)"><code>man 1 tree</code></a> as usual.</p>

<p><code>tree</code> is not a standard command that comes included with OS X but is available from most popular package managers like <a href="http://www.macports.org/" title="MacPorts"><code>port(1)</code></a> or build your own <a href="http://mama.indstate.edu/users/ice/tree/" title="The Tree Command for Linux Homepage">from source</a>.</p>

<p>Please don&rsquo;t print this blog post, save a tree!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Home Screen Optimisation]]></title>
    <link href="https://maclemon.at/blog/2013/03/18/home-screen-optimisation-part-1/"/>
    <updated>2013-03-18T00:14:00+01:00</updated>
    <id>https://maclemon.at/blog/2013/03/18/home-screen-optimisation-part-1</id>
    <content type="html"><![CDATA[<p>Estimated reading time: 3:35</p>

<h3>What&rsquo;s on your homescreen?</h3>

<p>I&rsquo;m regularly thinking about optimising my workflows in the hope to increase my prodctivity. (Or at least to make procrastination more effective.) I don&rsquo;t want to spend a lot of time hunting for an App I regularly use. Some apps I want to have available immediately, even though I don&rsquo;t use them often.</p>

<p>This is what my homescreen looked back in spring of 2011 on my iPhone 4 running iOS 4.3.x.<br/>
<img src="https://maclemon.at/artwork/Part_1_Homescreen_09-2012.png" title="My 0th homescreen from spring 2011" alt="My iPhone homescreen in spring 2011" /></p>

<p>It was arranged to carry most of the apps I used regulary back then. I just empirically put there what I felt belonged there.</p>

<h3>Fast forward to Spring 2013.</h3>

<p>Quite a lot has changed since then. I&rsquo;ve upgraded from an iPhone 4 to a 4S and iTunes tells me that there are <s>509</s> way too many Apps on my pocket computer. Of course iOS 6 happened and many of the apps have received substantial updates. The background, surprising to myself as well, is still the same. So this is what greets me at the moment.
<img src="https://maclemon.at/artwork/Part_1_Homescreen_0.png" title="My current 0th conhomescreen on an iPhone 4S" alt="My homescreen on an iPhone 4S" /></p>

<h4>The present</h4>

<p>So, what Apps do we see here, what do I use them for and why did I keep them in this precious space?</p>

<ul>
<li><a href="https://itunes.apple.com/us/app/icab-mobile-web-browser/id308111628?mt=8" title="iCab Mobile">iCabMobile</a> (Universal) In my opinion <em>the</em> best web browser available for iOS. (Includes an AdBlocker for example which you do not need here since I don&rsquo;t put any ads on my website. How nice.)</li>
<li>/GSM - See below</li>
<li><a href="https://itunes.apple.com/us/app/lift/id530911645?mt=8" title="Lift">Lift</a> An attempt at <a href="https://en.wikipedia.org/wiki/Quantified_Self" title="Wikipedia: Quantified self">Quantified Self</a> and to force myself to build a few new habits. You&rsquo;re welcome to cheer at my efforts to help my motivation. I&rsquo;m MacLemon on Lift.</li>
<li><a href="https://itunes.apple.com/us/app/app-for-trovebox-formerly/id511845345?mt=8" title="Trovebox">Trovebox</a> A native client for the like named <a href="https://trovebox.com/" title="Trovebox">photo box platform</a>. The source is <a href="https://github.com/photo/" title="Trovebox Github repository">available on Github</a> and you can see a few of my photos and screenshots on my <a href="http://openphoto.maclemon.at/" title="MacLemon Openphoto">self-hosted instance</a>. (Formerly named OpenPhoto)</li>
<li>Photos (Standard iOS App)</li>
<li>Calendar  (Standard iOS App)</li>
<li>Reminders (Standard iOS App)</li>
<li>Clock (Standard iOS App)</li>
<li>Notes (Standard iOS App)</li>
<li><a href="https://itunes.apple.com/us/app/simplenote/id289429962?mt=8" title="Simplenote">Simplenote</a> All my note taking goes in here. I sync to my Mac with the <a href="http://simplenote.com/" title="Simplenote Web service">simplenote.com</a> Webservice. On the Mac this is complemented by the excellent <a href="http://brettterpstra.com/projects/nvalt/" title="nvALT for Mac">nvALT</a>.</li>
<li>Maps (Standard iOS App)</li>
<li><a href="https://itunes.apple.com/us/app/saver-control-your-expenses/id429136857?mt=8" title="Saver">Saver</a> Super simple capturing of my expenses and a little budget info. Helps me keep track of my spending.</li>
<li><a href="https://itunes.apple.com/us/app/light-led-flashlight/id379753015?mt=8" title="LED Light">Light</a> The omnipresent flashlight app. As simple as it is, it comes in handy every now and then.</li>
<li><a href="http://subzero.eu/" title="Subzero">Wann</a> Gives me the next public transport arrivals in my vicinity. This is actually a beta version by <a href="http://subzero.eu/" title="Subzero">subzero</a> for testing the data in Vienna/Austria. Sadly this cannot yet be released since the <a href="http://www.wienerlinien.at/" title="Wiener Linien">Wiener Linien</a> do not release their schedule and realtime data as <a href="https://en.wikipedia.org/wiki/Opendata" title="Wikipedia: OpenData">OpenData</a>.</li>
<li>Camera (Standard iOS App)</li>
<li><a href="https://itunes.apple.com/us/app/camera+/id329670577?mt=8" title="Camera+">Camera+</a> A quite good camera app that allows a lot more settings than Apple&rsquo;s stock app. I&rsquo;m currently testing <a href="https://itunes.apple.com/us/app/procamera/id300216827?mt=8" title="ProCamera">ProCamera</a> which is likely to become my main photo taking app in the future.</li>
</ul>


<h5>Dock</h5>

<ul>
<li><a href="https://itunes.apple.com/us/app/omnifocus-for-iphone/id284885288?mt=8" title="OmniFocus">OmniFocus</a> A powerful <a href="https://en.wikipedia.org/wiki/Getting_things_done" title="Wikipedia: Getting Things Done">Getting things done</a> methodology TODO list application which syncs all my OS X and iOS devices via my private server.</li>
<li><a href="https://itunes.apple.com/us/app/tweetbot-for-twitter-iphone/id428851691?mt=8" title="Tweetbot">Tweetbot</a> My Twitter Client of choice.</li>
<li><a href="https://itunes.apple.com/us/app/procamera/id300216827?mt=8" title="ProCamera">ProCamera</a> Currently my main photo taking app. I do take <s>a lot of</s> too many pictures and I want a camera app to support me in doing that.</li>
<li><a href="https://itunes.apple.com/us/app/instacast-3/id577056377?mt=8" title="Instacast 3">Instacast 3</a> I&rsquo;m a total <a href="https://en.wikipedia.org/wiki/Podcast" title="Wikipedia: Podcast">Podcast</a> addict, therefor I don&rsquo;t get by with Apple&rsquo;s iPod or Podcast apps for my listening needs. <a href="https://itunes.apple.com/us/app/instacast-3/id577056377?mt=8" title="Instacast 3">Instacast 3</a> does the job of managing my subscriptions exceptionally well and also does support triple speed playback.</li>
</ul>


<h5>/GSM</h5>

<p>Not really a good name for that folder, I totally agree. Why are those Apps tucked away anyway? Because I really don&rsquo;t make that many calls. In fact I hate phonecalls more than email.</p>

<p><img src="https://maclemon.at/artwork/Part_1_Homescreen_0_GSM.png" title="GSM folder contents on my homescreen" alt="Contents of the GSM folder on my homescreen" /></p>

<ul>
<li>Phone (Standard iOS App)</li>
<li>Messages (Standard iOS App)</li>
<li><a href="https://itunes.apple.com/at/app/prowl-growl-client/id320876271?l=en&amp;mt=8" title="Prowl">Prowl</a> Mostly for push messages from a multitude of servers.</li>
<li><a href="https://itunes.apple.com/at/app/closeby-your-contacts-by-location/id504487902?l=en&amp;mt=8" title="CloseBy">CloseBy</a> Shows all my contacts on a map. Not sure if I&rsquo;ll keep that one since it&rsquo;s temporarily in here for testing.</li>
</ul>


<h3>The Future</h3>

<p>I agree that many things are awry here and this is why I&rsquo;ve decided to do something about it and analyze my actual app usage to get a better feeling for what should be on my 0th home screen.</p>

<p>Over the next few weeks I&rsquo;ll be collecting my daily app usage to determine which apps I use on a daily basis and which are less often in use. With that gained statistics I hope to gain enough insight to rearrange my homescreen in a more efficient way. Stay tuned!</p>
]]></content>
  </entry>
  
</feed>
