Adventurous Computinghttps://blog.cyplo.net/Boldly go where no programmer has gone before.enMon, 07 Aug 2017 15:49:23 GMTNikola (getnikola.com)http://blogs.law.harvard.edu/tech/rssAdding graphs to posts in Nikolahttps://blog.cyplo.net/posts/2017/07/adding-graphs-to-posts-in-nikola.htmlCyryl Płotnicki<div><p>I really like to teach, try to explain things in a simple manner. There is often no better way of making an explanation than visualizing it.
The problem is that I really can't draw, especially on a computer.
Wouldn't it be awesome if I could make the computer draw for me ?
I found out that, unsurprisingly, there is a software for that already. The one I like is called mermaid - it renders a simple text description of a graph or diagram into an html representation. Can look something like this.</p>
<div class="mermaid">
graph TB
subgraph one
a1--&gt;a2
end
subgraph two
b1--&gt;b2
end
subgraph three
c1--&gt;c2
end
c1--&gt;a2
</div><p>This blog is rendered by Nikola hence I would like to show you how I've added mermaid support to my Nikola installation.
I use <tt class="docutils literal">USE_BUNDLES = False</tt> in <tt class="docutils literal">conf.py</tt> as for it gives me more control and is more HTTP/2 friendly.
With that disabled I can include mermaid's style and js files like so (also in <tt class="docutils literal">conf.py</tt>):</p>
<pre class="code python"><a name="rest_code_55db36d78ceb440ea61888f84f01aafc-1"></a><span class="n">EXTRA_HEAD_DATA</span> <span class="o">=</span> <span class="s2">"""</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-2"></a><span class="s2">&lt;link rel="stylesheet" type="text/css" href="/assets/css/fontawesome.css"&gt;</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-3"></a><span class="s2">&lt;link rel="stylesheet" type="text/css" href="/assets/css/titillium.css"&gt;</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-4"></a><span class="s2">&lt;link rel="stylesheet" type="text/css" href="/assets/css/mermaid.forest.css"&gt;</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-5"></a><span class="s2">"""</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-6"></a>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-7"></a><span class="n">BODY_END</span> <span class="o">=</span> <span class="s2">"""</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-8"></a><span class="s2">&lt;script src="/assets/js/mermaid.js"&gt;&lt;/script&gt;</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-9"></a><span class="s2">&lt;script&gt;mermaid.initialize({startOnLoad:true, cloneCssStyles: false});&lt;/script&gt;</span>
<a name="rest_code_55db36d78ceb440ea61888f84f01aafc-10"></a><span class="s2">"""</span>
</pre><p>Where do all these files come from though ? In my case, I have a custom theme, based on <tt class="docutils literal">zen</tt> called <tt class="docutils literal"><span class="pre">zen-cyplo</span></tt>. The assets in the sources are located under <tt class="docutils literal"><span class="pre">themes/zen-cyplo/assets/</span></tt>.
Oh, and <tt class="docutils literal">cloneCssStyles: false</tt> is there as the default of <tt class="docutils literal">true</tt> made the different css styles on my blog clash.
Finally, to use mermaid in the post do (for reStructured Text):</p>
<pre class="code restructuredtext"><a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-1"></a><span class="p">..</span> <span class="ow">raw</span><span class="p">::</span> html
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-2"></a>
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-3"></a> &lt;div class="mermaid"&gt;
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-4"></a> graph TB
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-5"></a> subgraph one
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-6"></a> a1--&gt;a2
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-7"></a> end
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-8"></a> subgraph two
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-9"></a> b1--&gt;b2
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-10"></a> end
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-11"></a> subgraph three
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-12"></a> c1--&gt;c2
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-13"></a> end
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-14"></a> c1--&gt;a2
<a name="rest_code_bbe38d68b27a4d8fb1623a5805df278e-15"></a> &lt;/div&gt;
</pre><p>You can click on <tt class="docutils literal">source</tt> button located below the title of this post to see it in action. If you are interested in the build process and how all these come together - the complete sources for this blog are hosted under <a class="reference external" href="https://github.com/cyplo/blog">https://github.com/cyplo/blog</a></p></div>bloggraphmermaidnikolarsthttps://blog.cyplo.net/posts/2017/07/adding-graphs-to-posts-in-nikola.htmlSat, 15 Jul 2017 20:13:50 GMTUpload your site to Netlify using their incremental deployment APIhttps://blog.cyplo.net/posts/2017/03/netlify-incremental-deployer.htmlCyryl Płotnicki<p>I've recently switched to a setup where I do all my builds for this blog on <a class="reference external" href="https://travis-ci.org/cyplo/blog">Travis</a>. While doing so I needed to migrate away from using Netlify's internal build infrastructure. This resulted in a quick <a class="reference external" href="https://github.com/cyplo/netlify_deployer">python script</a> that allows you to upload arbitrary directory tree to Netlify and does so using their <a class="reference external" href="https://www.netlify.com/docs/api/#deploying-to-netlify">incremental deployment API</a>. All that means that while this site is quite big in size the deployments go rather quickly ! There are some <a class="reference external" href="https://github.com/cyplo/netlify_deployer/issues">known issues</a> but apart from them the script should just work for any custom Netlify deployment you would like to have. I use it on this very site, to have a preview of any PR before merging it as well as for deploying the main site after the PR is merged. I hope you will find it useful and please do not hesitate if you want to post an issue or a PR !</p>blogdeploymentnetlifypythonhttps://blog.cyplo.net/posts/2017/03/netlify-incremental-deployer.htmlMon, 20 Mar 2017 19:25:25 GMTRunning host programs in isolation inside one-off Docker containershttps://blog.cyplo.net/posts/2017/02/one-off-docker-runjessie.htmlCyryl Płotnicki<div><p>I am quite bad at remembering how to launch docker to have everything set up correctly. Hence the following - a script that launches any commandline specified in its arguments inside a new docker container. Current directory is mounted inside the container automatically, so the thing you are executing can have its local dependencies satisfied.</p>
<pre class="code bash"><a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-1"></a><span class="ch">#!/bin/bash</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-2"></a><span class="nv">USERNAME</span><span class="o">=</span><span class="sb">`</span>whoami<span class="sb">`</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-3"></a><span class="nv">MOUNT_PATH</span><span class="o">=</span><span class="s2">"/mnt"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-4"></a><span class="nv">CURRENT_DIRECTORY</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span> -P<span class="sb">`</span> <span class="c1"># untangle symbolic links if needed - SELinux needs the real path</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-5"></a><span class="nv">IMAGE</span><span class="o">=</span><span class="s2">"debian:jessie"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-6"></a>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-7"></a><span class="k">if</span> <span class="o">[[</span> -z <span class="nv">$1</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-8"></a> <span class="nb">echo</span> <span class="s2">"usage: `basename </span><span class="nv">$0</span><span class="s2">` command_to_run_inside_a_container"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-9"></a> <span class="nb">exit</span> <span class="m">1</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-10"></a><span class="k">fi</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-11"></a>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-12"></a><span class="nv">RESOLVED_ARGUMENTS</span><span class="o">=</span><span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-13"></a>docker run -i -t -v <span class="s2">"</span><span class="nv">$CURRENT_DIRECTORY</span><span class="s2">"</span>:<span class="s2">"</span><span class="nv">$MOUNT_PATH</span><span class="s2">"</span>:Z <span class="nv">$IMAGE</span> bash -c <span class="s2">"useradd -M -d '</span><span class="nv">$MOUNT_PATH</span><span class="s2">' </span><span class="nv">$USERNAME</span><span class="s2"> &amp;&amp; cd '</span><span class="nv">$MOUNT_PATH</span><span class="s2">' &amp;&amp; bash -c '</span><span class="nv">$RESOLVED_ARGUMENTS</span><span class="s2">'"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-14"></a>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-15"></a><span class="c1"># restore SELinux context for the current directory</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-16"></a><span class="nv">restorecon_path</span><span class="o">=</span><span class="sb">`</span>which restorecon<span class="sb">`</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-17"></a><span class="k">if</span> <span class="o">[[</span> -x <span class="s2">"</span><span class="nv">$restorecon_path</span><span class="s2">"</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-18"></a> restorecon -R <span class="s2">"</span><span class="nv">$CURRENT_DIRECTORY</span><span class="s2">"</span>
<a name="rest_code_ce22e899ae9c479c82d7d3e41cddaedf-19"></a><span class="k">fi</span>
</pre><p>I use vanilla Debian Jessie as a run platform there, mostly because this is what most of my servers run.
The script covers setting up SELinux and mounting the directory from which it is run as <tt class="docutils literal">/mnt</tt> inside the container while also having the default non-root user added.</p>
<p>Run Jessie, run !</p></div>containerdockerjessielinuxhttps://blog.cyplo.net/posts/2017/02/one-off-docker-runjessie.htmlFri, 17 Feb 2017 22:08:46 GMTUsing ad hoc Docker volumes on SELinux systemshttps://blog.cyplo.net/posts/2016/12/ad-hoc-docker-volumes-selinux.htmlCyryl Płotnicki<div><p>I've recently tried running some quick Docker commands using host's directory as a volume:</p>
<pre class="code console"><a name="rest_code_9cb47fa5111f4927b76e03bfe1d38ff0-1"></a><span class="go">docker run -i -t -v `pwd`:/mnt debian:jessie bash -c "ls -hal /mnt"</span>
<a name="rest_code_9cb47fa5111f4927b76e03bfe1d38ff0-2"></a><span class="go">ls: cannot open directory /mnt: Permission denied</span>
</pre><p>I use Fedora as my main OS, which, it turns out, has some pretty nice SELinux settings. These deny access from inside the container to the outside.
Said Fedora consists mostly of almost-newest-but-stable everything though, which makes Docker to be in a fairly recent version.
A version that understands how to change a SELinux context for the directory we're mounting, by itself !
You need at least Docker v1.7 for this.</p>
<pre class="code console"><a name="rest_code_9d18c9f665a240f7a2249105430dc12a-1"></a><span class="go">docker run -i -t -v `pwd`:/mnt:Z debian:jessie bash -c "ls -hal /mnt"</span>
<a name="rest_code_9d18c9f665a240f7a2249105430dc12a-2"></a><span class="go">total 8.0K</span>
<a name="rest_code_9d18c9f665a240f7a2249105430dc12a-3"></a><span class="go">drwxrwxr-x. 2 1000 1000 4.0K Dec 30 18:34 .</span>
<a name="rest_code_9d18c9f665a240f7a2249105430dc12a-4"></a><span class="go">drwxr-xr-x. 21 root root 242 Dec 30 19:07 ..</span>
</pre><p>Please notice the capital <cite>Z</cite> as a mount parameter.
And that is it. Mostly. Some cleanup remains, as docker leaves the host's directory with a changed SELinux context.
To restore it you need to</p>
<pre class="code console"><a name="rest_code_5ae4b524a5e14710b9c9a11c7c308b9e-1"></a><span class="go">restorecon -R `pwd`</span>
</pre><p>Or use any other path you'd like instead of <cite>`pwd`</cite> in the examples above.
Happy dockerizing !</p></div>containerdatadockerpermissionsselinuxvolumehttps://blog.cyplo.net/posts/2016/12/ad-hoc-docker-volumes-selinux.htmlFri, 30 Dec 2016 18:28:50 GMTRustFest - organization was the best. Also rhymes.https://blog.cyplo.net/posts/2016/09/rustfest-organization-was-the-best.htmlCyryl Płotnicki<div><div class="section" id="i-went-to-rustfest-and-it-was-amazing">
<h2>I went to RustFest and it was amazing !</h2>
<p>It was clearly the best conference organizational-wise I've been to so far.
It made me think of what I really liked there. What made it so awesome and welcomy ?
To me this was a large number of small things just coming together. I listing them here for me to remember and for others to use.
Let's make conferences at least this friendly, together !</p>
</div>
<div class="section" id="before-the-event">
<h2>Before the event:</h2>
<ul class="simple">
<li>very clear emails, repeating messages couple of times in different emails for the important stuff</li>
<li>maps of the popular routes provided, e.g. from the airport and bus station</li>
<li>supporter ticket sale - two times the price - you pay for another person that wouldn't be able to get a ticket otherwise</li>
<li>survey on dietary requirements/allergies</li>
<li>survey on childcare needs</li>
<li>clear statement of the code of conduct for the conference</li>
</ul>
</div>
<div class="section" id="during-the-event">
<h2>During the event:</h2>
<ul>
<li><p class="first">very good MC person</p>
<blockquote>
<ul class="simple">
<li>keeping people entertained through the tech breaks</li>
<li>keeping tabs on the talk length, allowing appropriate amount of questions if the time allowed</li>
</ul>
</blockquote>
</li>
<li><p class="first">live captioning of all talks - small screen outside of the view of the main screen with the text live</p>
</li>
<li><p class="first">getting the next speaker prepared and mic-tested before the end of the current talk</p>
</li>
<li><p class="first">quiet room to rest with clear rules on no talking and interrupting there</p>
</li>
<li><p class="first">clear signage for the different parts of the venue (washrooms, quiet room, party space etc)</p>
</li>
<li><p class="first">washrooms</p>
<blockquote>
<ul>
<li><p class="first">all same, ungendered</p>
</li>
<li><p class="first">basic items for free in said washrooms</p>
<blockquote>
<ul class="simple">
<li>chewing gum</li>
<li>tooth paste</li>
<li>tampons, pads</li>
<li>baby wipes</li>
</ul>
</blockquote>
</li>
</ul>
</blockquote>
</li>
<li><p class="first">info desk/registration</p>
<blockquote>
<ul class="simple">
<li>clear info during registration, handing out programme</li>
<li>asking people if they want to be on the photos - giving out lanyards accordingly - flashy red lanyards for people who do not want photos of them taken</li>
</ul>
</blockquote>
</li>
<li><p class="first">emergency number to call with stated purpose</p>
<blockquote>
<ul class="simple">
<li>code of conduct violation</li>
<li>if you are lost in the city</li>
</ul>
</blockquote>
</li>
</ul>
</div></div>https://blog.cyplo.net/posts/2016/09/rustfest-organization-was-the-best.htmlSun, 18 Sep 2016 18:43:47 GMTThe best terminal emulator for Windows 10's Bash or how to run X applicationshttps://blog.cyplo.net/posts/2016/07/06/terminal-emulator-windows-10-bash.htmlCyryl Płotnicki<div><div class="line-block">
<div class="line"><strong>update as of 03/2017</strong></div>
<div class="line">As this article is by far the most popular on my site right now I feel that an update is necessary, as the landscape evolved a bit since the original publish date.</div>
<div class="line"><a class="reference external" href="https://conemu.github.io/">Conemu</a> started to support Bash on Windows properly now and this is what I settled on in the end.</div>
<div class="line">The article below is still relevant for <em>the running X applications on Windows</em> part though.</div>
</div>
<hr class="docutils">
<p>I've been playing a bit with
<a class="reference external" href="https://mikegerwitz.com/2016/04/GNU-kWindows">GNU/kWindows</a> a.k.a.
Bash on Windows a.k.a Windows Subsystem for Linux (Beta). I was
especially interested whether I can use my regular Linux
<a class="reference external" href="https://github.com/cyplo/dotfiles/">dotfiles</a> to recreate my working
environment of zsh + tmux + vim. The biggest troubles I had were with
the terminal emulator. While the default one, invoked by saying <strong>bash</strong>
is much better than powershell or cmd.exe already - it lacks some things
I've learned to rely on, like 256-colour palette support. Thus the
search for the ultimate terminal emulator begun. I tried <strong>ConEmu</strong>,
<strong>cmder</strong> and their spinoffs to no avail. Either the colours were
lacking, or the emulator would swallow up certain strokes like the arrow
keys. Then I thought - hey, I use <strong>terminator</strong> on Linux, maybe it
would be possible to use it here as well. To my surprise the answer was - yes !</p>
<ul class="simple">
<li>install Windows Subsystem for Linux</li>
<li>restart Windows</li>
<li>install <a class="reference external" href="https://sourceforge.net/projects/vcxsrv">VcXsrv</a></li>
<li>run VcXsrv</li>
<li>invoke the following from the bash console:</li>
</ul>
<pre class="code console"><a name="rest_code_2d745d0876b84128909de00792388128-1"></a><span class="go">sudo apt-get install terminator</span>
<a name="rest_code_2d745d0876b84128909de00792388128-2"></a><span class="go">DISPLAY=:0 terminator -u</span>
</pre><ul class="simple">
<li>profit !</li>
</ul>
<p><a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/07/Capture.png"><img alt="Capture" class="size-large wp-image-2136" src="https://blog.cyplo.net/wp-content/uploads/2016/07/Capture-1024x525.png" style="width: 1024px; height: 525px;"></a></p>
<p>The font rendering is not ideal and the borderless mode does
not work, but hey, it is quite usable nonetheless ! It even has
bidirectional clipboard sharing with Windows' windows, which is good.
P.S. konsole and gnome-terminal do seem to have troubles launching
(crashy-crashes there)</p></div>bashemulatorlinuxterminalterminatorwindows 10https://blog.cyplo.net/posts/2016/07/06/terminal-emulator-windows-10-bash.htmlWed, 06 Jul 2016 19:21:13 GMTDon't throw away. Fix.https://blog.cyplo.net/posts/2016/06/12/dont-throw-away-fix.htmlCyryl Płotnicki<div><div class="line-block">
<div class="line">Try fixing your things. It's already broken - no need to sweat.</div>
<div class="line">You might learn something.</div>
<div class="line">Level 2 - push for things to be easily fixable.</div>
<div class="line">It's good for you. It's good for the planet.</div>
</div>
<p><a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120814.jpg"><img alt="image0" src="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120814-150x150.jpg"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_121012.jpg"><img alt="image1" src="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_121012-150x150.jpg"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120945.jpg"><img alt="image2" src="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120945-150x150.jpg"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120730.jpg"><img alt="image3" src="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120730-150x150.jpg"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120723.jpg"><img alt="image4" src="https://blog.cyplo.net/wp-content/uploads/2016/06/IMG_20160612_120723-150x150.jpg"></a></p></div>bagfix stuffrepairhttps://blog.cyplo.net/posts/2016/06/12/dont-throw-away-fix.htmlSun, 12 Jun 2016 12:25:34 GMTConferences you did not know existed and now you know you just need to go tohttps://blog.cyplo.net/posts/2016/03/13/conferences.htmlCyryl Płotnicki<div><div class="section" id="go-to-conferences-it-s-good-for-you">
<h2>Go to conferences. It's good for you.</h2>
<p>Ever wondered why to go to conferences ? Is it worth it, especially if
you <a class="reference external" href="http://sarah.thesharps.us/2016/02/02/first-timers-guide-to-foss-conferences/">do not feel
confident</a>
that the conference is on something that would be in an immediate realm
of your day-to-day interests ? Just go ! You might end up learning
something and meeting new people. And new people mean more variables to
mix up your life. A bit scary, I know. Still worth it though. Wondered
what conference in <strong>Europe</strong> are weird enough so people wouldn't mind
having another misfit ? Here you go.</p>
</div>
<div class="section" id="nucl-ai">
<h2>nucl.ai</h2>
<p>Now imagine something niche within the industry. To me, AI comes to
mind. Mages in robes in their towers, sending out autonomous robot
armies against each other. Right ? There's a conference for that ! At
<a class="reference external" href="http://nucl.ai/">nucl.ai</a>, in July, in Vienna, you can meet AI
professionals from academia and industry alike, most of them coming from
game development background. The atmosphere is very newcomer-friendly,
the only requirement is that you're interested in AI, not necessarily
having anything to do with it professionally. Petra and Alex, the
organizers, are wonderful people that make this conference quite unique.
It's happy fun to see ideas floating from academia to the industry and
vice versa. Don't forget the presentations on work-in-progress major AAA
games ! I've learned there that the everyday programming in the games
industry is quite different than the one I do in terms of best practices
and patterns. Definitely worth a try !</p>
</div>
<div class="section" id="erlang-user-conference">
<h2>Erlang User Conference</h2>
<p>Speaking of something completely different. Erlang ! Was functional
before being functional was <a class="reference external" href="https://www.youtube.com/watch?v=xrIjfIjssLE">considered
cool</a>. Very practical,
very fast, parallelize everything ! Processes everywhere ! Message
passing ! Want to feel the groove as well ? Visit Stockholm in September
for <a class="reference external" href="http://www.erlang-factory.com/">Erlang User Conference</a>. Meet
creators of the language, talk about massive scale deployments. Other FP
languages are welcome. I would even say, the more strange the better.
<a class="reference external" href="http://www.idris-lang.org/">Idris</a> seems to be the topic of interest
as well. Eat good food, walk the city of dynamite. Erlang has a quite
close-knit community which gives you this warm family feeling.</p>
</div>
<div class="section" id="socrates">
<h2>SoCraTes</h2>
<p>Speaking of family. There's a family of conferences known as
<a class="reference external" href="https://www.socrates-conference.de/">SoCraTes</a>. Software
Crafstmanship and Testing. SoCraTes. Get it ? :D As it's more than one
conference a year, it's harder to go to all of them. I only went to
<a class="reference external" href="http://www.codefreeze.fi/">Codefreeze</a>, in Finland, in January, and
only once, but loved it already. Codefreeze, Finland, in January. Get it
?! :D First thing is that you don't know what will happen there. You
just go, meet the people and then you sit down and everyone talks about
what they would like to learn and what they can share. This way you come
up with some loose agenda you follow more or less. One track, very
intense. Talking, swimming in ice water, learning, sauna going. Very
intimate feel, not many people, lots of things to learn.</p>
</div>
<div class="section" id="chaos-communication-congress">
<h2>Chaos Communication Congress</h2>
<p>Speaking of lots of people and intimate feel. <a class="reference external" href="https://en.wikipedia.org/wiki/Chaos_Communication_Congress">Chaos Communication
Congress</a>
is, I think, the biggest gathering of all nerds and freaks in Europe,
yet being there feels quite at home. The best organized conference I've
been to. Friendly people showing their wares on their humble tables, 4
simultaneous tracks, huge building with intricate hallways. It's
cyberpunk, it's inclusive, it's about hardcore infosec topics, it's
about politics. Everything's there, everyone's there. 4 days of data
being constantly uploaded to your brain, on the waves of <a class="reference external" href="https://en.wikipedia.org/wiki/Club-Mate">Club
Mate</a>. Feels like an
extended holiday present, as it's happening in the last week of
December.</p>
</div>
<div class="section" id="the-camps">
<h2>The Camps</h2>
<p><a class="reference external" href="https://en.wikipedia.org/wiki/Chaos_Communication_Camp">Chaos Communication
Camp</a> and
<a class="reference external" href="https://en.wikipedia.org/wiki/Observe._Hack._Make.">The Dutch Camp</a>.
Imagine CCC, the Congress, but in the woods. Middle of nowhere,
multigigabit internet connection. sleeping in the tent, then going to a
world-class lecture. Both CCC, the camp, and The Dutch Camp, the camp,
are happening every 4 years, each of them taking alternating slots. So
every 2 years there is a camp somewhere. Did I mention that the location
changes every event ? Happy camping !</p>
</div>
<div class="section" id="summary">
<h2>Summary</h2>
<p>So go out there. Explore. Meet people. Learn. Have fun. None of the
above are much expensive and most of the events have a policy of "write
to us if you want to go but can't afford the ticket". Friendly people
fixing problems together.</p>
<div class="line-block">
<div class="line">nucl.ai: July, tickets around 250EUR</div>
<div class="line">EUC: September, tickets around 350EUR</div>
<div class="line">SoCraTes: the cost and the time depend on the event</div>
<div class="line">CCC: last week of December, tickets around 100EUR</div>
<div class="line">The Camps: summer, tickets around 125EUR</div>
</div>
</div></div>artificial intelligencecampingcccchaoscodefreezeconferenceserlangfunctional programmingkiller segwaysnuclaisocratestalkstravelhttps://blog.cyplo.net/posts/2016/03/13/conferences.htmlSun, 13 Mar 2016 11:43:03 GMTProductive New Year's Evehttps://blog.cyplo.net/posts/2015/12/31/productive-new-years-eve.htmlCyryl Płotnicki<div><p>It turns out that the last day of the year can be quite productive. I've
managed to sneak in a PCB layout for the input measurement and
protection board for my <a class="reference external" href="https://blog.cyplo.net/2015/05/02/grafana-influx/">sunpowered
server</a> . Got it
ordered, can't wait to test it ! I got carried away with via stitching
there a bit - we'll see how hard it will be to solder the larger
components because of that. The whole project is hosted
<a class="reference external" href="https://lab.cyplo.net/cyplo/sunpowered/tree/master">here</a> - it's
open hardware so please do take a look.</p>
<p><a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2015/12/angled.png"><img alt="image0" src="https://blog.cyplo.net/wp-content/uploads/2015/12/angled-150x150.png"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2015/12/bottom.png"><img alt="image1" src="https://blog.cyplo.net/wp-content/uploads/2015/12/bottom-150x150.png"></a> <a class="reference external" href="https://blog.cyplo.net/wp-content/uploads/2015/12/top.png"><img alt="image2" src="https://blog.cyplo.net/wp-content/uploads/2015/12/top-150x150.png"></a></p></div>kicadlayoutpcbsunpoweredhttps://blog.cyplo.net/posts/2015/12/31/productive-new-years-eve.htmlThu, 31 Dec 2015 20:11:35 GMTSporting Let's Encrypt certificatehttps://blog.cyplo.net/posts/2015/11/17/lets-encrypt-certificate.htmlCyryl Płotnicki<p><a class="reference external" href="https://letsencrypt.org/">Let's Encrypt</a> is soon to be publicly
available service to provide TLS certificates for free and in automated
fashion. I'm helping them test their systems by participating in the
<a class="reference external" href="https://letsencrypt.org/2015/11/12/public-beta-timing.html">beta
program</a>.
Because of that this site is now sporting, publicly recognizable
certificate from Let's Encrypt. Yay ! The work they are doing I believe
is of much importance. Lack of easy path for getting TLS certificate was
a major hurdle for the most of the website owners, otherwise keen on
getting their traffic encrypted. This, in turn, is important for two
reasons. Not allowing the content you are viewing on the internet to be
snooped at, not leaking you private data is one thing. Other, less
known, but as much important, is countering the ability of injecting any
malicious code/data into the responses from the servers you got and in
turn preventing lots of man in the middle attacks. Hopefully, when Let's
Encrypt becomes publicly available we would be on the path to much more
friendly internet for all.</p>automationcaletsencryptpkissltlshttps://blog.cyplo.net/posts/2015/11/17/lets-encrypt-certificate.htmlTue, 17 Nov 2015 09:51:25 GMT