Exotic destinationshttp://lab.objoo.org/2017-12-19T23:22:00+01:00Of Keyboards...2017-12-19T23:22:00+01:00Ytag:lab.objoo.org,2017-12-19:bepo keyboards.html<div class="sect1">
<h2 id="_i_m_back_once_again">I’m back (Once again)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>2 years since my last article. Wow ! Long long time !</p>
</div>
<div class="paragraph">
<p>As lots of us, I’m using a computer for extended periods of time.</p>
</div>
<div class="paragraph">
<p>And for this task, like everybody, I use a mouse and a keyboard. This is quite
striking that most of us use a default keyboard. For French people, that
means a membran or chicklet AZERTY 106 touch keyboard. This is quite unfortunate, as
we stupidly use sub-optimal technologies.</p>
</div>
<div class="paragraph">
<p>For a long period of time, more than 10 years, I used a keytronic ergoforce keyboard at home.
It was membran/rubber dome based, but very tactile. Really loved it. At work, was
just using default keyboard with much less enthousiasm.</p>
</div>
<div class="paragraph">
<p>Also striking to me is that I use a computer since I’m 12, and almost all my
days (and night) since I’m 18. Yup, more than 30 years ago, and never ever learn to type properly on a
keyboard.</p>
</div>
<div class="paragraph">
<p>Circa 2009, I began to (ligtly) experience wrist pain. After thinking a little about this, I decided to take the plunge and
try to improve typing comfort and speed by coverting my beloved keytronic at home to bépo (french dvorak equivalent), putting
stickers on it. This was a big mistake. I largely under estimated the task,
and cowardly gave up after two weeks or so… But stickers remained on the
keytronic with the secret hope that one day, I’ll really go for it. Of
course, this never happened. And this good keyboard collected dust for
years, while using an inferior keyboard instead. End of story. Sort of…</p>
</div>
<div class="paragraph">
<p>This inferior keyboard eventually broke down in november this year, giving
me another chance to try bépo layout. And this time, I tried to insist a
little, doing exercises (with klavaro) and also learning to blindly type
with all fingers.</p>
</div>
<div class="paragraph">
<p>This is a really frustrating experience. Really. I never was a very fast nor
precise typer. On Azerty, I usually barely surpass 55 Word Per Minutes which is not
stellar, and sometimes go under 50, due to excessive errors.</p>
</div>
<div class="paragraph">
<p>But first tries in bepo mode were so low I couldn’t bare it more than a few
minutes, it’s like mental torture ; see the numbers reported by klavaro,
after some days of training. That was the first full test I had enough
courage to finish :</p>
</div>
<div class="paragraph">
<p>8 words per minutes. Really frustating.
that was in november 2017, the 6.</p>
</div>
<div class="paragraph">
<p>Since, progression is steady but slow.</p>
</div>
<div class="paragraph">
<p>So, here are the numbers :</p>
</div>
<table class="tableblock frame-all grid-all" style="width: 80%;">
<caption class="title">Table 1. Typing speed progression</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">date</th>
<th class="tableblock halign-left valign-top">score</th>
</tr>
</thead>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-06</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">8.14</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-12</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">11.71</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-19</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">12.96*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-20</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">10.05</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-21</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">11.84</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-23</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">12.90*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-24</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">15.97</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-28</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">13.51*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-11-28</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">16.17</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-12-11</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">14.56*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-12-16</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">16.17</p></td>
</tr>
</tbody>
</table>
<table class="tableblock frame-all grid-all" style="width: 80%;">
<caption class="title">Table 2. Progression since publication</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">2017-12-19</th>
<th class="tableblock halign-left valign-top">17.40</th>
</tr>
</thead>
<tbody>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-12-26</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">18.57</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-12-27</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">15.27*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2017-01-05</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">16.60*</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-01-05</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">19.04</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-01-18</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">20.06</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-01-19</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">21.09</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-02-02</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">22.99</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-02-11</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">24.76</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-02-13</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">25.64</p></td>
</tr>
<tr>
<th class="tableblock halign-left valign-top"><p class="tableblock">2018-02-20</p></th>
<td class="tableblock halign-left valign-top"><p class="tableblock">27.84</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>I promise to keep posting my progression numbers here, but it’s slow…​
I must confess that for my work, I still use azerty, which is probably limiting progress, and at home, when in
hurry, i’m not going bépo systematically… Even today I’m not fast enough to
prevent me to switch. I’ll probably go for it when I’ll be able to surpass 35 MPM, which is a long way to go.</p>
</div>
<div class="paragraph">
<p>Interesting note : blindly typing on a keyboard gives you much more feedback on the quality of it ; Rubber domes seems much more crappy; Keytronic is much more better, but who can even beat the feeling of a mechanical keyboard…​</p>
</div>
<div class="paragraph">
<p>Proudly (and slowly) totally entered on a mechanical (outemu blue switches) bépo
keyboard. [Next article will probably be about mechanical keyboards…​]</p>
</div>
</div>
</div>
Banana pi custom Kernel (Part II, cross compiling)2015-08-27T11:05:00+02:00Yann Duponttag:lab.objoo.org,2015-08-27:Banana pi II.html<p>I'm back ! Long time ago (March 2015) <a class="reference external" href="http://lab.objoo.org/Banana pi.html">in banana pi custom kernel part I, I promised a follow-up</a> to explain how to cleanly compile a kernel for such beasts. This part was delayed, but here it is at last ! So this article is the follow-up of previous article.</p>
<p>I maintain .config for my bestiary of exotic computers : ARM computers (Bananapi, Odroid, Raspberry pi, Dockstar), MIPS (nexx WT3020), Risc-V (qemu and spikes for the moment).</p>
<p>These .config are available on github : <a class="reference external" href="https://github.com/objoo/custom-linux-kernels">https://github.com/objoo/custom-linux-kernels</a></p>
<p>More on that later, for the moment, let's focus on bananapi.</p>
<p>Please note that this particular .config is based on vanilla kernel 4.1 and targeted for particular small server duties (samba, lxc, XFS and ceph/kRBD support). I personally use this for an ARM ceph cluster.</p>
<div class="figure align-right">
<a class="reference external image-reference" href="../images/img_2455.jpg"><img alt="" src="../images/img_2455.jpg" style="width: 400px;" /></a>
<p class="caption">Nice professional looking ceph cluster, ehhh ?</p>
</div>
<p>Please note, there is <strong>NO</strong> video code on this kernel. <strong>Don't</strong> use it if you need a graphical environment.</p>
<p>Allwinner A20 chip powering bananapi is a quite capable processor and <strong>is</strong> able to compile a kernel, but it may take ages. A faster way is to use a more powerful machine, for example a X86 based PC, and use it to generate programs targeted for ARM. That's cross compilation.</p>
<p>Cross compilation is fast, but it's a complex and sometimes tricky process which requires the installation of lots of specific packages (when they're already available on the distribution and specific recompilations when they're not). A clean way to do this and not mess with the installed system is to use docker containers specially for this.</p>
<p>on the same github repository, there are scripts and Dockerfile to build all necessary parts.</p>
<p>On the building computer, git and docker need to be installed. Choose a clean directory, and check there is enough place for docker. Then :</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3</pre></div></td><td class="code"><div class="highlight"><pre><span class="go">git clone git://github.com/objoo/custom-Linux-kernels</span>
<span class="go">cd custom-Linux-kernels/docker/DockerFiles/X86-64/cross/Debian</span>
<span class="go">./build.sh</span>
</pre></div>
</td></tr></table><p>This will take lot of time for the first build, because this script creates a Debian Jessie docker image, with all cross-compile tools. When this image is run, it fetch uboot and Linux git repositories and compiles all with a pre-defined .config. uboot and linux kernel sources are installed on a persistant storage on the host computer, so next runs are far more speedier.</p>
<p>Upon termination of all these processes, you'll find the resulting files in :</p>
<div class="highlight"><pre><span class="go">../build/RESULT</span>
</pre></div>
<p>uboot install is <strong>optional</strong>, it only need to be installed if the current version sd-card is too ancient.</p>
<p>Installation of uboot is :</p>
<div class="highlight"><pre><span class="go">dd if=u-boot-sunxi-with-spl.bin of of=DEVICE_OF_THE_SDCARD bs=1024 seek=8</span>
</pre></div>
<p>Then, install the modules from / (they go to /lib/modules) and install uImage , sun7i-a20-bananapi.dtb in /boot and you're done. No need to build an Initrd.</p>
<p>If all goes well you'll see :</p>
<div class="highlight"><pre><span class="gp">root@banana-one:~#</span> uname -a
<span class="go">Linux banana-one 4.1.6YDoSHM #2 SMP Wed Aug 26 23:24:00 UTC 2015 armv7l GNU/Linux</span>
</pre></div>
<p>Have a nice hack !</p>
Banana pi custom Kernel (Part I)2015-08-26T11:00:00+02:00Yann Duponttag:lab.objoo.org,2015-03-24:Banana pi.html<p>Banana pi is a small ARM Board, quite cheap and capable. It's not the cheapest or fastest board around (I'll probably make an article about odroid C1 later), but it offers a good compromise.
Being built around Allwinner A20, it offers some interesting features : a Native SATA port, and a gigabit ethernet.</p>
<p>In the sick tradition of lots of ARM Soc makers, Linux support is not stellar, and Lemaker only propose a custom 3.4 kernel.
With these kernels, I encountered stability and performance problems. As I wanted to experiment Ceph on this kind of hardware it's problematic.</p>
<p>And that's where (<a class="reference external" href="http://linux-sunxi.org/Main_Page">http://linux-sunxi.org/Main_Page</a>) Linux Sunix community comes to rescue.
These guys (thanks A LOT to them) are leading Linuxmainlining effort (<a class="reference external" href="http://linux-sunxi.org/Linux_mainlining_effort">http://linux-sunxi.org/Linux_mainlining_effort</a>) and this is paying off.
Should I add it's really up to Allwinner to do this kind of job ?</p>
<p>Anyway. we now have all pieces for having a complete vanilla kernel support, at least for all server-relevant components.</p>
<p>---
I use these custom kernels on banana pi , for lxc & ceph (OSD , MON) usage. I promised a guide for compiling a complete kernel + uboot for bananapi.</p>
<p><a class="reference external" href="http://lab.objoo.org/Banana pi II.html">This is explained in banana pi custom kernel part II</a></p>
About this blog2015-08-26T11:00:00+02:00Yann Duponttag:lab.objoo.org,2015-03-24:About this blog.html<p>I resisted long, long, time -even longer than that-. Anyway, even if I think that, in general, blogs and social networks are of poor interest, sometimes they offer real value.
Some examples are <a class="reference external" href="http://dachary.org">http://dachary.org</a> or <a class="reference external" href="http://www.sebastien-han.fr">http://www.sebastien-han.fr</a></p>
<p>That's probably why I decided to start this technically oriented Blog.</p>
<p>This blog is about exotic destinations from a technophile point of view, that is, open-source technologies not yet mainstream. You'll find some tips about distributed storages, (ceph), embedded boards (ARM, for examples), and probably lots of other things - RiscV comes to mind..</p>
<p>Stay tuned, this will take a little time to shape it up, as my spare time is... very spare. I'm not doing wonders with HTML, I'm just discovering Pelican, which is probably the best tool for this aim.</p>