<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>zerokspot.com</title>
    <link>https://zerokspot.com/index.xml</link>
    <description>Recent content on zerokspot.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 29 Jan 2017 20:11:31 +0100</lastBuildDate>
    <atom:link href="https://zerokspot.com/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>ScriptConf 2017 in Linz</title>
      <link>https://zerokspot.com/weblog/2017/01/29/scriptconf/</link>
      <pubDate>Sun, 29 Jan 2017 20:11:31 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/29/scriptconf/</guid>
      <description>&lt;figure&gt;
&lt;img src=&#34;https://zerokspot.com/media/2017/scriptconf-heilmann.jpg&#34; alt=&#34;&#34; /&gt;
&lt;figcaption&gt;&lt;p&gt;Christian Heilmann giving his keynote about the state of the community.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Thanks to &lt;a href=&#34;https://netconomy.net&#34;&gt;Netconomy&lt;/a&gt;, some friends and I had a lovely trip to Linz last
Friday for &lt;a href=&#34;https://scriptconf.org/&#34;&gt;ScriptConf&lt;/a&gt;, a one-day JavaScript conference. The event started at
1pm, which was extremely convenient for us as we could use the morning - and the
beautiful weather then - to drive north from Graz, grab a quick lunch and be
there just in time for the talks to begin!  Definitely a nice advantage if
you&amp;rsquo;re living in driving distance! &lt;a href=&#34;https://zerokspot.com/weblog/2015/11/08/a-foggy-flightplan/&#34;&gt;But never rely on that&lt;/a&gt; as I learnt the
hard way 2 years ago 😉&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://zerokspot.com/media/2017/scriptconf-alpaca.jpg&#34; alt=&#34;&#34; style=&#34;float:left;margin:0 1.5rem 0.5rem 0;padding:0.5rem;border: 5px solid #EFEFEF;max-width:280px&#34;&gt;
Anyway, back to ScriptConf!
This was the first conference organized by this crew but you wouldn&amp;rsquo;t have
noticed it. The schedule was near-perfect, the venue excellent, the catering
great; in short: The organization was top-notch!  Perhaps the only aspect I
didn&amp;rsquo;t like (but that&amp;rsquo;s a matter of opinion) was the session length of 40 - 50
minutes. Personally, I prefer 20 - 30 minute-slots but that&amp;rsquo;s just me 😊&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://usersnap.com/&#34;&gt;Usersnap&lt;/a&gt;, one of the sponsors, had also a beautiful plush alpaca everyone
made selfies with in order to get a chance to win an iPad … or simply because it
was so cute! Sadly, it didn&amp;rsquo;t want to accompany us back to Graz 😞&lt;/p&gt;

&lt;p&gt;Now with all the meta out of the way, let&amp;rsquo;s get to the main attraction: The
talks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.christianheilmann.com/&#34;&gt;Christian Heilmann&lt;/a&gt; presented the opening keynote about the state of the
JavaScript community using buffets as a metaphor. Criticizing some parts of
the community he presented a basic etiquette for everyone inspired by how
everyone should normally behave at a buffet and how to apply that here.&lt;/li&gt;
&lt;li&gt;Next, &lt;a href=&#34;http://rckbt.me/&#34;&gt;Raquel Vélez&lt;/a&gt; from NPM gave an overview over how &lt;a href=&#34;https://npmjs.com&#34;&gt;npmjs.com&lt;/a&gt;
evolved over time: Like how they came to pick React and Hapi and the story
about search on the site 😉&lt;/li&gt;
&lt;li&gt;After a quick coffee-break, &lt;a href=&#34;http://www.nikgraf.com/&#34;&gt;Nik Graf&lt;/a&gt; gave an introduction about the
server-less architecture with a focus on orchestration and how the
infrastructure around the containers are defined.&lt;/li&gt;
&lt;li&gt;In case you were not up-to-date with &lt;a href=&#34;https://ghost.org/&#34;&gt;Ghost&lt;/a&gt;&amp;rsquo;s road to 1.0, &lt;a href=&#34;https://twitter.com/ErisDS&#34;&gt;Hannah Wolfe&lt;/a&gt;
definitely changed that. So many great stories about why certain things were
done in a particular way!&lt;/li&gt;
&lt;li&gt;Before dinner-break, &lt;a href=&#34;https://felixrieseberg.com/&#34;&gt;Felix Reiseberg&lt;/a&gt; from &lt;a href=&#34;https://slack.com&#34;&gt;Slack&lt;/a&gt; gave probably the best
talk about &lt;a href=&#34;http://electron.atom.io/&#34;&gt;Electron&lt;/a&gt; I&amp;rsquo;ve seen so far! And all that with live-coding!&lt;/li&gt;
&lt;li&gt;Wanted to know more about how to profile your code on V8 with some additional
knowledge about internal caches? &lt;a href=&#34;https://twitter.com/fhinkel&#34;&gt;Franziska Hinkelmann&lt;/a&gt; had you covered!&lt;/li&gt;
&lt;li&gt;Last but not least came &lt;a href=&#34;http://www.p01.org/&#34;&gt;Mathieu Henri&lt;/a&gt; with a live-coded demo-scene&amp;rsquo;esque
audio-visual presentation. Party before the party!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The moment the talks make their way online, don&amp;rsquo;t do cherry-picking. Just watch
them all 😉&lt;/p&gt;

&lt;p&gt;This amazing day ended with a nice little party were everyone got one last
chance to relax, talk to some of the speakers and collect stickers (Big thanks
to Raquel for the &lt;a href=&#34;https://twitter.com/rockbot/status/824952328319021056&#34;&gt;custom NPM stickers&lt;/a&gt; ❤️) before heading home. As with
everything else, even this final schedule-entry was perfectly organized.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Selecting an OpenPGP key in MailMate</title>
      <link>https://zerokspot.com/weblog/2017/01/22/selecting-openpgp-key-in-mailmate/</link>
      <pubDate>Sun, 22 Jan 2017 19:35:31 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/22/selecting-openpgp-key-in-mailmate/</guid>
      <description>&lt;p&gt;For pretty much all my not-work-related mail &lt;a href=&#34;https://freron.com/&#34;&gt;MailMate&lt;/a&gt; has become my favorite
tool. It is fast, lightweight, supported OpenPGP through GnuPG 2.x, and has
decent shortcuts. I also really like that even if the author hasn&amp;rsquo;t the found
time to put a GUI around a feature&amp;rsquo;s settings, &lt;em&gt;there are settings&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In a recent example I wanted to make sure that for one particular e-mail address
a certain OpenPGP encryption key was used. MailMate doesn&amp;rsquo;t have any kind of GUI
for managing keys but you can still choose which one to be used for which e-mail
address through the &lt;code&gt;~/Library/Application Support/MailMate/Security.plist&lt;/code&gt;
file. In there you basically just create a simple mapping like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
	map = (
		{
			address = &amp;quot;&amp;lt;e-mail address&amp;gt;&amp;quot;;
			userID = &amp;quot;&amp;lt;key id&amp;gt;&amp;quot;;
		}
	);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can learn the details deep down in the &lt;a href=&#34;https://manual.mailmate-app.com/hidden_preferences#openpgp--smime&#34;&gt;hidden-preferences section&lt;/a&gt; of the
MailMate manual. Perhaps the only slightly complicated part here is learning the
value you should put into the &lt;code&gt;userID&lt;/code&gt; field. The example in the documentation
uses the old long-form key ID, which is a bit complicated to get from most
GUIs. Here it&amp;rsquo;s much easier (and also recommended by the gpg2 manpage) to go
with the fingerprint (&lt;code&gt;--fingerprint&lt;/code&gt; option) without spaces. As a fallback (for
whatever reason) you could also use the 8-char key ID normally printed right in
front of your key when using &lt;code&gt;--list-keys&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fixing macOS&#39;s CharacterPicker madness </title>
      <link>https://zerokspot.com/weblog/2017/01/18/macos-characterpicker-madness-fix/</link>
      <pubDate>Wed, 18 Jan 2017 20:45:25 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/18/macos-characterpicker-madness-fix/</guid>
      <description>&lt;p&gt;Ever since updating to macOS Sierra I had a weird issue: the character picker
(&amp;ldquo;Emoji &amp;amp; Symbols&amp;rdquo;) behaved erratically. I could only open it every couple of
minutes and then it might appear out of nowhere whenever I focused a native
text input field. Today I was close to simply re-installing the whole machine as
I was also facing some other issues but decided to check first if the behaviour
could be reproduced in a fresh account.&lt;/p&gt;

&lt;p&gt;But before that I went through the list of third-party kernel extensions to see
if anything might be relevant. &lt;code&gt;kextstat | grep -v com.apple&lt;/code&gt; is really nice for
that 😉 Just don&amp;rsquo;t &lt;code&gt;kextunload&lt;/code&gt; any extension directly 😉&lt;/p&gt;

&lt;p&gt;After removing some old extensions of apps I had previously uninstalled the
manual way (and restarting as I definitely kextunloaded things I shouldn&amp;rsquo;t
have), I tested if I could still reproduce the issue. Yep, CharacterPicker was
still drunk. So on to creating a new dummy account and another
reproduction-attempt.&lt;/p&gt;

&lt;p&gt;Turns out, it was gone. Plans for operation &amp;ldquo;Nuke and rebuild&amp;rdquo; were cancelled
and I started sifting through &lt;code&gt;~/Library&lt;/code&gt;. I even moved that whole folder but
&amp;ldquo;Emoji &amp;amp; Symbols&amp;rdquo; was still hanging in the Activity Monitor. I dug a bit deeper
and learnt that the &lt;code&gt;CharacterPicker.app&lt;/code&gt; (which is just localized with that
name) was launched or at least controlled by a background service:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;launchctl list | grep Char
605	0	com.apple.CharacterPicker.FileService
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Whenever I had that issue, that service would die a horrible death after a
minute or so with the exit code -9. But during that time there was another
service called &lt;code&gt;com.apple.CharacterPaletteIM.&amp;lt;some number&amp;gt;&lt;/code&gt; visible in that
listing. Googling for &lt;code&gt;com.apple.CharacterPaletteIM&lt;/code&gt; on DuckDuckGo lead me to a
support article by apple
titled
&lt;a href=&#34;https://support.apple.com/en-us/HT203221&#34;&gt;&amp;ldquo;Mac OS X Leopard: Keyboard Viewer, Character Palette does not appear&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hm&amp;hellip; there are most likely no traces of that OSX on my current machine simply
because I had a completely different backup-strategy back then. Anyway, I opted
to follow the steps mentioned there after inspecting the mentioned folders
first:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo rm /System/Library/Caches/com.apple.IntlDataCache*
sudo rm /var/folders/*/*/-Caches-/com.apple.IntlDataCache*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The latter wasn&amp;rsquo;t relevant as I didn&amp;rsquo;t have any matching files, though. After a
reboot, everything was working fine again 😄 And yes, there was definitely some
&amp;ldquo;Migration Assistant&amp;rdquo; in the past of my current setup. I&amp;rsquo;m just not sure if I
used it for Sierra or El Capitan.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The end of App.net</title>
      <link>https://zerokspot.com/weblog/2017/01/15/the-end-of-appnet/</link>
      <pubDate>Sun, 15 Jan 2017 01:07:35 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/15/the-end-of-appnet/</guid>
      <description>&lt;p&gt;Sadly, it looks like the end for &lt;a href=&#34;https://app.net&#34;&gt;app.net&lt;/a&gt; is near. According to &lt;a href=&#34;http://blog.app.net/2017/01/12/app-net-is-shutting-down/&#34;&gt;this post&lt;/a&gt;
by Dalton Caldwell and Bryan Berg the site will be shutting down in March. It
has been in maintenance mode since 2014 after failing to get enough adoption and
therefore financial funding for new features to be developed.&lt;/p&gt;

&lt;p&gt;Now, it looks like even the funding for keeping the system up and running has
run out and so it will be shut down. Given that I myself haven&amp;rsquo;t had a paid
account for quite a while, I feel hardly in a position to complain. That being
said, esp. in the light of what platform Twitter has become over the last years,
any alternative should be welcome and worth saving.&lt;/p&gt;

&lt;p&gt;As Dalton wrote in his post, the biggest issue of App.net was probably the
chicken-and-egg problem. I really enjoyed the service but Tweetbot was simply
the far superior mobile app and so I posted less and less and eventually quit
altogether. Looks like I wasn&amp;rsquo;t the only one.&lt;/p&gt;

&lt;p&gt;But that wasn&amp;rsquo;t the only reason why I stopped using the service. It didn&amp;rsquo;t solve
another of Twitter&amp;rsquo;s problematic aspects: It being centralized. I haven&amp;rsquo;t yet
seen any good solution here, but perhaps something like &lt;a href=&#34;https://joindiaspora.com/&#34;&gt;diaspora&lt;/a&gt; might in
the end attract enough users to become more mainstream.&lt;/p&gt;

&lt;p&gt;Perhaps the only good thing that&amp;rsquo;s coming out of all this is that we might see
all of App.net&amp;rsquo;s code eventually and for the foreseeable future
on &lt;a href=&#34;https://github.com/appdotnet&#34;&gt;Github&lt;/a&gt;. I&amp;rsquo;m still curious what the developers have been up to over the
last years as their respective Github profiles look rather empty 😦&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Goals for 2017</title>
      <link>https://zerokspot.com/weblog/2017/01/14/goals-for-2017/</link>
      <pubDate>Sat, 14 Jan 2017 23:44:35 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/14/goals-for-2017/</guid>
      <description>

&lt;p&gt;This year it took me even longer to come up with some goals for the new year 😊
2016 was a bit of a weird ride and 2017 set out to be even more of an
extraordinary year for me judging by its first two weeks. As such I thought I&amp;rsquo;d
try to change my focus for my goals a bit this time around:&lt;/p&gt;

&lt;h2 id=&#34;get-a-life&#34;&gt;Get a life&lt;/h2&gt;

&lt;p&gt;This is probably the hardest topic of anything in here to write about. Over the
last couple of years I&amp;rsquo;ve prioritized work- and OSS-related topics over pretty
much everything else, probably in part due to feeling a bit like an imposter
whatever I do. This also put sleep extremely high on my priority list with the
obvious consequences.&lt;/p&gt;

&lt;p&gt;This year I will try to move things around a little bit. Slightly less sleep,
slightly less being obsessed with the craft, more time for my friends (I love
you, folks!) and for getting to know new people!&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not yet sure how this will involve or affect my moving plans/ideas but an
effect it definitely will have.&lt;/p&gt;

&lt;h2 id=&#34;less-grumpy&#34;&gt;Less grumpy&lt;/h2&gt;

&lt;p&gt;From time to time I tend to be a bit too grumpy when something annoys me (and
quite a lot of things do). This is not helpful as it distracts from looking for
a solution to what made me grumpy in the first place. For this reason I&amp;rsquo;ll aim
at being less grumpy this year 😉&lt;/p&gt;

&lt;h2 id=&#34;deeper-knowledge&#34;&gt;Deeper knowledge&lt;/h2&gt;

&lt;p&gt;You might have noticed some TIL posts appearing here from time to time. I want
to do more of these as they help me digging really deep into certain topics, far
below the point needed for actually resolving the original issue I had.&lt;/p&gt;

&lt;p&gt;This will hopefully also lead me more down the OS, security, and hardware layers
again.&lt;/p&gt;

&lt;h2 id=&#34;even-more-writing&#34;&gt;Even more writing&lt;/h2&gt;

&lt;p&gt;Somehow related to that I want to do even more writing than last year. This
isn&amp;rsquo;t limited to my blog, though, as I do quite a lot of documentation related
work. Something that I&amp;rsquo;ve come to enjoy more and more ever since attending my
very first &lt;a href=&#34;https://zerokspot.com/weblog/2015/09/05/i-loved-writethedocs-europe-2015/&#34;&gt;WriteTheDocs&lt;/a&gt; event in 2015.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not yet sure how I&amp;rsquo;ll integrate that into my career planning as I&amp;rsquo;ll
probably still be a software developer but perhaps also with something like a
&amp;ldquo;technical-writer light&amp;rdquo; add-on. For that I&amp;rsquo;d also love to look around for how
formal education is done in that area and at least read some relevant books
there.&lt;/p&gt;

&lt;h2 id=&#34;becoming-an-angel-and-or-contributing-more&#34;&gt;Becoming an Angel and/or contributing more&lt;/h2&gt;

&lt;p&gt;Pretty much what I wrote last year. At least for 34C3 now I&amp;rsquo;m going to have a
DECT phone as it arrived last week 😉&lt;/p&gt;

&lt;p&gt;And regarding contributing: I want to look around more actively for things I
could help out with. This isn&amp;rsquo;t limited to OSS or related fields but perhaps
also some social initiatives. I&amp;rsquo;m not yet sure what exactly I want to do here,
just that I want to do &lt;em&gt;something&lt;/em&gt;; and if it&amp;rsquo;s just donating blood more
frequently. Putting this up on my yearly-goals list should help with the
motivation.&lt;/p&gt;

&lt;p&gt;There are also some other topics that might become relevant over the year but
that I don&amp;rsquo;t really see as primary goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attending more diverse conferences. This is something I&amp;rsquo;ve started about two
years ago and which will reach a new peak this year with me even skipping
DjangoCon Europe.&lt;/li&gt;
&lt;li&gt;More Linux in my life again. This doesn&amp;rsquo;t mean that I will abandon mayo&amp;rsquo;s
completely but I want to slowly move in a direction where I could actually
migrate away from it again 😊&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let&amp;rsquo;s see in 11.5 months how many of this I will have been able to achieve, but
this time I at least want to aim high 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The Three-Body Problem</title>
      <link>https://zerokspot.com/weblog/2017/01/08/the-three-body-problem/</link>
      <pubDate>Sun, 08 Jan 2017 10:47:15 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/08/the-three-body-problem/</guid>
      <description>&lt;p&gt;&lt;a style=&#34;float:left;margin:0 1em 0 0;border:2px solid #CCC;padding:3px;display:block&#34;
href=&#34;https://www.goodreads.com/book/show/20518872-the-three-body-problem?utm_medium=api&amp;amp;utm_source=blog_book&#34;&gt;&lt;img
style=&#34;display:block&#34; alt=&#34;The Three-Body Problem (Remembrance of Earth’s Past, #1)&#34; src=&#34;https://images.gr-assets.com/books/1415428227m/20518872.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While I wrote in 2015 that I&amp;rsquo;d love to be part of a book club again, for some
reason I didn&amp;rsquo;t really read all that many of the &lt;a href=&#34;http://swordandlaser.com/&#34;&gt;Sword &amp;amp; Laser&lt;/a&gt; assignments
since then. At least I punished myself for that by listening to their podcast
and hearing all about those awesome stories I was missing. In order to resolve
this, in 2017 I&amp;rsquo;ll try to read at least most of their Scifi assignments starting
with the one for January: &lt;a href=&#34;https://www.goodreads.com/book/show/20518872-the-three-body-problem&#34;&gt;The Three-Body Problem&lt;/a&gt; by Liu Cixin (in the
English translation by Ken Liu). The fact that I&amp;rsquo;m already writing a review only
a week after I picked this book up should already tell you something 😉 Turns
out, this was one of the most interesting reads I&amp;rsquo;ve had in a while!&lt;/p&gt;

&lt;p&gt;First, the story takes place in China and spans all the way from
the &lt;a href=&#34;https://en.wikipedia.org/wiki/Cultural_Revolution&#34;&gt;Cultural Revolution&lt;/a&gt; to the early 21st century. I think this is the first
book I&amp;rsquo;ve read taking place during that era and in that region so I was already
hooked! The early parts of the book follow Ye Wenjie. Her father was killed
during the first days of the Cultural Revolution and she is sent to a labor
camp. Later thanks to being one of the last real experts in her field she gets
the chance to work on a top-secret government facility tasked with the search
for extraterrestrial life.&lt;/p&gt;

&lt;p&gt;The latter half follows Wang Miao, another nanotech-scientist in Beijing who gets
pulled into a huge mystery threatening the very basics of scientific
exploration. While the story jumps between these two eras the time-line is still
mostly linear. Once Wang is introduced, the story bits in the 1960s up to the
1980s are explored as accounts from some characters living in that era or
through protocols.&lt;/p&gt;

&lt;p&gt;The book mostly deals with classic Scifi questions like what would happen if a
civilization learnt it wasn&amp;rsquo;t alone in the universe. That being said, the way
this topic is handled is quite interesting as the focus here is on how a culture
could be manipulated from the outside. While this may sound like something out
of the X-Files, it certainly isn&amp;rsquo;t. Rather, what would it take to bring every
scientific progress to a halt?&lt;/p&gt;

&lt;p&gt;What also drew me in was the to-the-point writing style. Very little time is
spent on decoration, still the world-building works quite well. And there is
tons of building going on here! Yet the author doesn&amp;rsquo;t shy away from going
hard-scifi in some places. Especially during the last chapters lots of time is
spent on exploring topics like n-dimensional space. I cannot really write more
without turning this post into a huge spoiler but I&amp;rsquo;ll say it this way: I simply
couldn&amp;rsquo;t stop reading! Sadly, the book ends in a cliffhanger which is also
pretty much the only unfavorable aspect that I could make out 😊&lt;/p&gt;

&lt;p&gt;So far the series consists of three books. I&amp;rsquo;m pretty sure I will also read at
least the second entry but not right away. First I should really make some
progress with my pile-of-shame 😉 But if you haven&amp;rsquo;t picked up this book yet,
please do so!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>2016 retrospective</title>
      <link>https://zerokspot.com/weblog/2017/01/06/2016-retrospective/</link>
      <pubDate>Fri, 06 Jan 2017 21:10:37 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/06/2016-retrospective/</guid>
      <description>

&lt;figure&gt;
&lt;img src=&#34;https://zerokspot.com/media/2017/portland-in-2016.jpg&#34; alt=&#34;&#34; /&gt;
&lt;figcaption&gt;&lt;p&gt;The absolute highlight of the year: My trip to Portland.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;2016 was a bit of a weird year for me. I always had in the back of my head that
I should finally move away from Graz but at the same time I wasn&amp;rsquo;t sure if I
actually wanted to. This is something that will probably keep being an issue for
the next couple of months 😉&lt;/p&gt;

&lt;h2 id=&#34;conferences-and-traveling&#34;&gt;Conferences and traveling&lt;/h2&gt;

&lt;p&gt;But in general, I think it was a good year. I, once again, went to tons of great
conferences, albeit not as many as in previous years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/02/05/back-from-fosdem2016/&#34;&gt;FOSDEM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/04/13/this-was-djangocon-europe-2016/&#34;&gt;DjangoCon Europe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/05/20/my-first-craftconf/&#34;&gt;CraftConf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/06/08/writethedocs-2016/&#34;&gt;WriteTheDocs US&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/06/19/pycon2016/&#34;&gt;PyCon US&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2016/10/15/writethedocs-europe/&#34;&gt;WriteTheDocs Europe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DotGo&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zerokspot.com/weblog/2017/01/01/33c3/&#34;&gt;33C3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No idea, why I didn&amp;rsquo;t write about DotGo esp. since this was probably the most
enjoyable event of that series so far for me!&lt;/p&gt;

&lt;p&gt;That being said, the absolute highlight of the year was my trip to Portland for
WriteTheDocs US and PyCon US in May. This city now has a very special place in
my heart and I cannot wait to return in a couple of months.&lt;/p&gt;

&lt;h2 id=&#34;pyvideo-contributing-to-oss&#34;&gt;PyVideo &amp;amp; contributing to OSS&lt;/h2&gt;

&lt;p&gt;There I also started contributing to the &lt;a href=&#34;http://pyvideo.org/&#34;&gt;PyVideo&lt;/a&gt; project. Sadly, over the
last months I&amp;rsquo;ve done far less than I set out to but I hope I can find some time
during my trip to Brussels for FOSDEM (and ideally in the time before that) to
work on a couple of things that have bother me for some time 😊&lt;/p&gt;

&lt;p&gt;In general, I&amp;rsquo;ve tried to be more active when it comes to contributing code to
various projects. Whenever I see something that is bothering me, I try to write
a report and ideally even a PR for that. I&amp;rsquo;m still struggling with keeping a
balance between contributing to OSS and my other hobbies (esp. reading and
listening to podcasts) but I think I&amp;rsquo;m starting to see a light at the end of
that particular tunnel.&lt;/p&gt;

&lt;h2 id=&#34;learning-french-on-duolingo&#34;&gt;Learning French on Duolingo&lt;/h2&gt;

&lt;p&gt;During the year I was working really hard on my &lt;a href=&#34;https://www.duolingo.com/&#34;&gt;Duolingo&lt;/a&gt; streak. Except for
one or two accidental interruptions I managed to keep the streak going
throughout the year and finished the French course right before New Year&amp;rsquo;s
Eve. I&amp;rsquo;m not yet sure what I&amp;rsquo;ll do as a next step, though. I definitely want to
avoid the situation I faced right after my final high-school French exam all
those years ago, when I forgot everything within a month because of neglect.&lt;/p&gt;

&lt;p&gt;Perhaps I&amp;rsquo;ll start reading French news or Wikipedia entries alongside German and
English ones. As for Duolingo, I will most likely not continue practicing there
for now, but perhaps I will return for a different language in the future 😊&lt;/p&gt;

&lt;h2 id=&#34;technology&#34;&gt;Technology&lt;/h2&gt;

&lt;p&gt;Technology-wise this year has probably been the year of containers
and &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt; for me. By now I&amp;rsquo;ve moved pretty much every project I&amp;rsquo;m actively
working on over to Docker (if possible) and am integrating it more and more into
my local development workflow.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not yet completely happy with how configuration is handled in those
projects, though, as having plain-text passwords flying around in environment
files is sub-optimal to say the least. There I&amp;rsquo;m currently looking
into &lt;a href=&#34;https://www.vaultproject.io/&#34;&gt;Vault&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With regards to other tools and technologies, not all that much has changed
in 2016. &lt;a href=&#34;https://www.gnu.org/software/emacs/&#34;&gt;Emacs&lt;/a&gt; is still my editor of choice after a quick sight-seeing tour
in &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VSCode&lt;/a&gt;-land. Go, JavaScript, and Python are still my preferred languages
and I don&amp;rsquo;t see that changing anytime soon. Sadly, Django hasn&amp;rsquo;t really
resurfaced for me but React is becoming more and more important as the tool-chain
around it matures.&lt;/p&gt;

&lt;h2 id=&#34;content-ownership-and-privacy&#34;&gt;Content ownership and privacy&lt;/h2&gt;

&lt;p&gt;Content ownership and privacy were also becoming even more important for me this
year. With the road both Twitter and Facebook are both on, I&amp;rsquo;ve decided to
prioritize my blog. That was also the reason why I spent half of 33C3
re-integrating a search engine and yearly archive into it after moving
to &lt;a href=&#34;http://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; earlier this year. Everything important to me will be reflected here
(alongside these other channels).&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve started to rely on messengers like &lt;a href=&#34;https://threema.ch/en&#34;&gt;Threema&lt;/a&gt; and &lt;a href=&#34;https://whispersystems.org/&#34;&gt;Signal&lt;/a&gt; (with
WhatsApp as a last resort) more and more. That being said, I&amp;rsquo;m really not happy
with the way this whole market is fragmented and how mediocre some of the
provided UIs are. At least I could avoid things like Telegram so far.&lt;/p&gt;

&lt;p&gt;My use of GnuPG has also gone up quite significantly. There are still far too
few people I communicate with this way, but that&amp;rsquo;s another issue 😉&lt;/p&gt;

&lt;h2 id=&#34;the-world-and-everything-else&#34;&gt;The world and everything else&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Soldiers on the streets and in the airports of Brussels and Paris while I was
there 😔&lt;/li&gt;
&lt;li&gt;Trump, Brexit, right-wing populism, terror attacks all around the world… 😞&lt;/li&gt;
&lt;li&gt;Austria has a (former) green president 💚&lt;/li&gt;
&lt;li&gt;Big thanks to Jonny Cruz for
the
&lt;a href=&#34;https://twitter.com/JonnyCruzzz/status/796096902794080256&#34;&gt;most uplifting tweet of the year&lt;/a&gt; and
to &lt;a href=&#34;https://twitter.com/dog_rates&#34;&gt;WeRateDogs&lt;/a&gt; for at least one smile per day!
❤️&lt;/li&gt;
&lt;li&gt;Overwatch ❤️&lt;/li&gt;
&lt;li&gt;I managed not to play a single minute of Pokémon Go 😉&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;how-about-last-year-s-goals&#34;&gt;How about last year&amp;rsquo;s goals?&lt;/h2&gt;

&lt;p&gt;Last but not least, I want to review the &lt;a href=&#34;https://zerokspot.com/weblog/2016/01/09/goals-for-2016/&#34;&gt;goals&lt;/a&gt; I had set for myself last
January:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Become an angel: As I already wrote in my post about the &lt;a href=&#34;https://zerokspot.com/weblog/2017/01/01/33c3/&#34;&gt;33C3&lt;/a&gt;, I sadly
didn&amp;rsquo;t angel this year. That being said, I just ordered a DECT phone so not
having one will definitely no longer be an excuse 😉 ❌&lt;/li&gt;
&lt;li&gt;More blogging: Well, last year I managed to write 60 blog posts! ✓&lt;/li&gt;
&lt;li&gt;I didn&amp;rsquo;t move out of Graz last year. In the end, that was a good decision,
though. Especially during last months of the year I got to know a few really
nice people 😊 ❌&lt;/li&gt;
&lt;li&gt;Re-learning French: Just in time for the new year I&amp;rsquo;ve managed to get through
the core Duolingo course material. ✓&lt;/li&gt;
&lt;li&gt;Contributing more: I&amp;rsquo;m not sure how I should measure this one but to me it
feels like a success. Quite a few pull-requests were made, I tried to help
here and there with documentation, and I donated more than during 2015. ✓&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.5 out of 5 (as I don&amp;rsquo;t really want to count me not moving as a complete
failure) doesn&amp;rsquo;t sound too bad 😄 Now I just have to come up with some goals for
2017…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>33C3: The 33rd Chaos Congress</title>
      <link>https://zerokspot.com/weblog/2017/01/01/33c3/</link>
      <pubDate>Sun, 01 Jan 2017 08:57:56 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2017/01/01/33c3/</guid>
      <description>

&lt;p&gt;&lt;img src=&#34;https://zerokspot.com/media/2017/33c3.jpg&#34; alt=&#34;&#34; style=&#34;float:left;margin:0 1.5rem 0.5rem 0;padding:0.5rem;border: 5px solid #EFEFEF;max-width:280px&#34;&gt;
 It&amp;rsquo;s really hard to write about an event
like the &lt;a href=&#34;https://events.ccc.de/congress/2016/wiki/Main_Page&#34;&gt;Chaos Communication Congress&lt;/a&gt; simply because it has so many
facets. It pretty much boils down to you how awesome an event you make it for
yourself. For me it is simply an amazing event with great people and just the
best way to end a year!&lt;/p&gt;

&lt;p&gt;And that despite me not doing all that much there, and perhaps even being
somehow out of place. There&amp;rsquo;s just so much to look at, so many awesome
communities presenting what they&amp;rsquo;re working on over the year, and let&amp;rsquo;s not
forget the great talks and parties &amp;hellip; ok, no parties for me since I&amp;rsquo;m not
really a party-person, but I&amp;rsquo;ve heard they&amp;rsquo;re amazing 😊&lt;/p&gt;

&lt;p&gt;If you want to get a great overview of what 33C3 was in general, please take a
look at &lt;a href=&#34;http://hackaday.com/2016/12/30/33c3-works-for-me/&#34;&gt;this great post&lt;/a&gt; by
Elliot Williams over on hackaday.com.&lt;/p&gt;

&lt;h2 id=&#34;getting-things-done&#34;&gt;Getting things done&lt;/h2&gt;

&lt;p&gt;Just like last year I wanted to work on a couple of projects. Originally, I had
planned to do a bit of styling work on the &lt;a href=&#34;http://pyvideo.org/&#34;&gt;pyvideo.org&lt;/a&gt; website and
help &lt;a href=&#34;https://twitter.com/ulope&#34;&gt;Ulrich&lt;/a&gt; with moving &lt;a href=&#34;https://pyformat.info/&#34;&gt;pyformat.info&lt;/a&gt; to &lt;a href=&#34;https://www.getlektor.com/&#34;&gt;Lektor&lt;/a&gt;. Instead, I spent
most of the first two days adding a search index to this blog using &lt;a href=&#34;http://www.blevesearch.com/&#34;&gt;bleve&lt;/a&gt;
and &lt;a href=&#34;https://vuejs.org/&#34;&gt;VueJS&lt;/a&gt;. Giving these two a try had been on my list for a really long
time, so I don&amp;rsquo;t feel any shame here 😉&lt;/p&gt;

&lt;p&gt;Right on the first evening we found a really nice and remarkably quiet table in
the first floor of the CCH which was simply to inviting &lt;em&gt;not&lt;/em&gt; to get any work
done 😉&lt;/p&gt;

&lt;h2 id=&#34;talks&#34;&gt;Talks&lt;/h2&gt;

&lt;p&gt;This was probably also the place were I saw most of the talks during Congress
thanks to a really stable internet connection (compared to other events) and
great work by the &lt;a href=&#34;https://twitter.com/c3voc&#34;&gt;VOC&lt;/a&gt; (Video Operation Center). That being said, I still haven&amp;rsquo;t
seen that many yet. Something I&amp;rsquo;ve started to correct the minute I got home on
Saturday afternoon.&lt;/p&gt;

&lt;p&gt;During the event my personal highlight was probably the &amp;ldquo;space-night&amp;rdquo; which
consisted of five talks on the &lt;a href=&#34;https://fahrplan.events.ccc.de/congress/2016/Fahrplan/schedule/2.html&#34;&gt;third evening&lt;/a&gt; in the huge Hall 1. From
learning what &lt;a href=&#34;https://media.ccc.de/v/33c3-8406-the_moon_and_european_space_exploration&#34;&gt;ESA&lt;/a&gt; was working on to getting a quick tour
on &lt;a href=&#34;https://media.ccc.de/v/33c3-7861-the_universe_is_like_seriously_huge&#34;&gt;how large the known universe is&lt;/a&gt;, there was something for everyone with
even the slightest interest in space exploration. I really can&amp;rsquo;t wait watching
many of the other talks already available for &lt;a href=&#34;https://media.ccc.de/c/33c3&#34;&gt;streaming and download&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;everything-else&#34;&gt;Everything else&lt;/h2&gt;

&lt;p&gt;What makes the Congress every year so special is simply the openess and
welcoming atmosphere. You see something exciting? Just walk over to the person
next to it and they will give you a tour!&lt;/p&gt;

&lt;p&gt;Sure, there are some not so pleasant folks (I&amp;rsquo;m looking at those of you who
critizise people simply because they don&amp;rsquo;t have GNU Linux as their primary OS),
but they are kept in check and balance by the vast, vast, vast, &amp;hellip;, majority of
nice people there.&lt;/p&gt;

&lt;p&gt;During day zero (the day before the Congress actually starts) I also stumbled
accidentally through the kids area (which was still under construction) which
basically consisted of a whole floor. But don&amp;rsquo;t get the impression that that&amp;rsquo;s
the only area safe for kids. Except perhaps for some of the party areas I cannot
think of any place were children (young and old 😉) weren&amp;rsquo;t welcome and looked
after. While many other events (e.g. in the Python community) try to make it
possible for parents to bring their children, Congress has IMHO perfected that.&lt;/p&gt;

&lt;h2 id=&#34;things-left-undone&#34;&gt;Things left undone&lt;/h2&gt;

&lt;p&gt;Sadly, there were also quite a few things that I wanted to do but simply didn&amp;rsquo;t,
for one reason or another:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Being an angel: Angels are at the heart of what makes Congress
feasible. Hundreds of volunteers doing small or big jobs (all important) like
picking up bottles, helping out the bars, doing session-chairing, &amp;hellip; After
last year I absolutely wanted to contribute more than just a small donation on
top of the ticket price. But sadly, at first it sounded like you&amp;rsquo;d need a DECT
phone in order to become an angel. Later, I learnt that wasn&amp;rsquo;t necessarily
true but registration was already closed 😞&lt;/li&gt;
&lt;li&gt;Visit more assemblies: These are the areas dedicated to hacker spaces from all
over the world to exhibit their creations. There are also assemblies focused
on specific technologies like Python, Ruby, or Rust where you usually find
folks running local meetup groups. Sadly &amp;hellip; probably the only one I visited
was &lt;a href=&#34;https://events.ccc.de/congress/2016/wiki/Assembly:Aaaaaaaaaaaa&#34;&gt;Aaaaaaaaaaaa&lt;/a&gt; by various Austrian (and neighboring) hacker-spaces. The
model train was simply a great point to meet 😉&lt;/li&gt;
&lt;li&gt;Side events: No parties (for reasons see top), no lockpicking workshop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well, hopefully, I can get all that off my list next year.&lt;/p&gt;

&lt;p&gt;That being said, we found a &lt;a href=&#34;http://de.altes-maedchen.com/&#34;&gt;really nice restaurant near Sternschanze&lt;/a&gt; with
good beer and I also had &lt;a href=&#34;https://www.facebook.com/pages/Hanmi-Restaurant/177636755615362&#34;&gt;korean food&lt;/a&gt; for the first time in my life. And
it was delicious! Oh, and we managed to take a group picture of everyone from
&lt;a href=&#34;https://www.netconomy.net/&#34;&gt;Netconomy&lt;/a&gt; attending 😉&lt;/p&gt;

&lt;p&gt;All in all it was once again a great event and I&amp;rsquo;m really looking forward to
whatever the CCC plans for next year. A big thank you to all the organisers and
angels who helped make this such a great time. Sadly, Congress won&amp;rsquo;t be in the
CCH for the foreseeable future anymore, as that building is being renovated.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Books in 2016</title>
      <link>https://zerokspot.com/weblog/2016/12/29/books-in-2016/</link>
      <pubDate>Thu, 29 Dec 2016 12:30:29 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/29/books-in-2016/</guid>
      <description>&lt;p&gt;In the last Sword &amp;amp; Laser &lt;a href=&#34;http://swordandlaser.com/home/2016/12/21/sl-podcast-276-by-hook-or-by-rook&#34;&gt;episode&lt;/a&gt; of the year Veronica and Tom mentioned a
nice &lt;a href=&#34;https://www.goodreads.com/topic/show/18388001-2016-the-year-in-review&#34;&gt;post&lt;/a&gt; by Iain Bertram on Goodreads where he analysed all the books he
read during the last year. While he focused on the authors&amp;rsquo; and main
protagonists&amp;rsquo; gender, I wanted to take a look at the reading formats and genres
I had been reading throughout the year. Goodreads itself already has a very
simple &lt;a href=&#34;https://www.goodreads.com/user/year_in_books/2016/1285145&#34;&gt;overview page&lt;/a&gt; but I wanted to also see some other metrics here.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&#34;https://zerokspot.com/media/2016/books2016-genres.png&#34; alt=&#34;&#34; /&gt;
&lt;figcaption&gt;&lt;p&gt;Genres read in 2016&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;After a bit of spreadsheet magic here&amp;rsquo;s what I&amp;rsquo;ve learnt: I&amp;rsquo;ve read 20 books,
with about 30% of them being technical and another 30% being
science-fiction. I&amp;rsquo;ve even read 2 fantasy books. Most of these books (50%) were
PDFs purchased on platforms like &lt;a href=&#34;https://www.inkshares.com/&#34;&gt;Inkshares&lt;/a&gt;, &lt;a href=&#34;http://www.oreilly.com/&#34;&gt;O&amp;rsquo;Reilly&lt;/a&gt;, or even the
respective author&amp;rsquo;s website. The average book had ~263 pages with the longest one
ending after 720 pages (the usual suspect).&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&#34;https://zerokspot.com/media/2016/books2016-formats.png&#34; alt=&#34;&#34; /&gt;
&lt;figcaption&gt;&lt;p&gt;Format distribution in 2016&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I&amp;rsquo;m actually pretty happy with the mix of genres and the lead of non-Kindle
books this year. Inkshares, especially, has become an important place when
looking for new things to read. I&amp;rsquo;m pretty that won&amp;rsquo;t change in 2017.&lt;/p&gt;

&lt;p&gt;Sadly, I&amp;rsquo;ve also started to amass quite a pile-of-shame
with &lt;a href=&#34;https://www.goodreads.com/book/show/25770528-cooking-for-geeks&#34;&gt;Cooking for Geeks&lt;/a&gt; and &lt;a href=&#34;https://www.goodreads.com/book/show/26620312-learning-swift&#34;&gt;Learning Swift&lt;/a&gt; having been on my &amp;ldquo;in-progress
list&amp;rdquo; since January and June, respectively. I&amp;rsquo;m still trying to make my way
through them 😉&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>1-pixel Moon and the Solar System</title>
      <link>https://zerokspot.com/weblog/2016/12/19/one-pixel-moon/</link>
      <pubDate>Mon, 19 Dec 2016 22:12:54 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/19/one-pixel-moon/</guid>
      <description>&lt;figure&gt;
&lt;img src=&#34;https://zerokspot.com/media/2016/one-pixel-moon.png&#34; alt=&#34;&#34; /&gt;
&lt;figcaption&gt;&lt;p&gt;An amazing journey through our solar system at scale!&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Just while watching &lt;a href=&#34;https://en.wikipedia.org/wiki/The_Expanse_(TV_series)&#34;&gt;The Expanse&lt;/a&gt; (and thanks to &lt;a href=&#34;http://boingboing.net/2016/12/19/visualizing-the-vast-distances.html&#34;&gt;BoingBoing&lt;/a&gt;) I stumbled
upon this amazing little website by &lt;a href=&#34;http://www.joshworth.com/&#34;&gt;Josh Worth&lt;/a&gt; called
&lt;em&gt;&lt;a href=&#34;http://www.joshworth.com/dev/pixelspace/pixelspace_solarsystem.html&#34;&gt;If the Moon where only 1 Pixel&lt;/a&gt;&lt;/em&gt;. Here our known solar system is depicted on
a scale where our moon is represented by just one pixel.&lt;/p&gt;

&lt;p&gt;The whole journey from the Sun to the outer edge of the system is filled with
clever comments and observations about our view of the solar system and the
universe in general.&lt;/p&gt;

&lt;p&gt;Among other thanks it visualizes extremely well how close Mercury is actually to
the Sun and how much empty space is coming after Saturn… and pretty much
everywhere else. No wonder it took so longer to discover anything beyond it.&lt;/p&gt;

&lt;p&gt;And my personal highlight? The lightspeed-button in the lower right corner 💝&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Automatic mode selection in Emacs</title>
      <link>https://zerokspot.com/weblog/2016/12/16/automatic-mode-selection-in-emacs/</link>
      <pubDate>Fri, 16 Dec 2016 16:53:15 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/16/automatic-mode-selection-in-emacs/</guid>
      <description>&lt;p&gt;Depending on which file you&amp;rsquo;re opening in Emacs, you normally want to have
different behaviour or different highlighting patterns to be loaded. This is
something where you&amp;rsquo;d normally use the &lt;code&gt;auto-mode-alist&lt;/code&gt; variable to bind a
file name pattern to a major mode:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(add-to-list &#39;auto-mode-alist &#39;(&amp;quot;\\.js\\&amp;quot; . js2-mode))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now I was in the situation where I wanted to use js2-mode pretty much everywhere
close to JavaScript except for files that contained JSX. There I prefer web-mode
or js2-jsx-mode for now. Turns out, the whole mode-selection process is
extremely customizable and is explained in detail &lt;a href=&#34;http://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html#Choosing-Modes&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At first I thought I might add file-local variables to each JSX file. That&amp;rsquo;s not
really a good option, though, as it would force my mode-selection onto basically
everyone else working on such files:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;// -*- mode: web -*-
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For what I had in mind, it should be enough to just take a look at the first
line of a JavaScript file. If it contains something like &lt;code&gt;import React ...&lt;/code&gt;
web-mode should be used. That&amp;rsquo;s pretty much what the magic-mode-alist allows.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(add-to-list &#39;magic-mode-alist &#39;(&amp;quot;^import React&amp;quot; . js2-jsx-mode))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That&amp;rsquo;s obviously not really bulletproof (as that import might be in a complete
different line or I&amp;rsquo;d be dealing with an CommonJS import), but for the most part
it should do what I want 😊&lt;/p&gt;

&lt;p&gt;During playing with these settings I finally also got a chance to give Wilfred
Hughes excellent &lt;a href=&#34;https://github.com/Wilfred/refine&#34;&gt;refine&lt;/a&gt; command a try. It made modifying the various
something rather long alists extremely easy!&lt;/p&gt;

&lt;p&gt;I also learnt about the &lt;code&gt;normal-mode&lt;/code&gt; command which allow you to reset the
mode-selection in a buffer back to what would be picked automatically.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Alert resolution timeouts in Prometheus</title>
      <link>https://zerokspot.com/weblog/2016/12/11/alert-resolution-timeouts-in-prometheus/</link>
      <pubDate>Sun, 11 Dec 2016 12:09:28 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/11/alert-resolution-timeouts-in-prometheus/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m currently using &lt;a href=&#34;https://prometheus.io/&#34;&gt;Prometheus&lt;/a&gt; for quite a few services and esp. in
combination with Grafana and &lt;a href=&#34;https://github.com/prometheus/alertmanager&#34;&gt;AlertManager&lt;/a&gt; it has proven to be an extremely
handy tool. For instance, we usually have alerts for every single major
component of a service. If this component becomes unreachable, alerts are sent
to a specific Slack channel.&lt;/p&gt;

&lt;p&gt;What bothered me, though, was how long it took for the resolution message to
arrive.  By default, it takes 5 minutes; luckily, though, you can customize this
in AlertManager&amp;rsquo;s global settings:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;global:
  resolve_timeout: 20s
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This would set the timeout to only 20 seconds, feels much more usable to me
given that most of our check intervals are somewhere in the 5-15s range and the
alerts are set to something between a 10-20s range. I&amp;rsquo;m pretty sure I will be
tuning this setting in the future but for now this should do 😉&lt;/p&gt;

&lt;p&gt;I have no idea why I didn&amp;rsquo;t see this setting in the &lt;a href=&#34;https://prometheus.io/docs/alerting/configuration/#configuration-file&#34;&gt;documentation&lt;/a&gt; the first
time around, but now I&amp;rsquo;m glad I looked again (albeit using a detour through the
source code 😉)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>A Night Without Stars</title>
      <link>https://zerokspot.com/weblog/2016/12/08/a-night-without-stars/</link>
      <pubDate>Thu, 08 Dec 2016 17:26:37 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/08/a-night-without-stars/</guid>
      <description>

&lt;p&gt;&lt;a style=&#34;float:left;margin:0 1em 0 0;border:2px solid #CCC;padding:3px;display:block&#34;
href=&#34;https://www.goodreads.com/book/show/28530221-a-night-without-stars?utm_medium=api&amp;amp;utm_source=blog_book&#34;&gt;&lt;img
style=&#34;display:block&#34; alt=&#34;A Night Without Stars&#34; src=&#34;https://images.gr-assets.com/books/1452665444m/28530221.jpg&#34; /&gt;&lt;/a&gt;
It took me quite a while but I&amp;rsquo;ve finally managed to finish the second part of
Peter F. Hamilton&amp;rsquo;s &lt;a href=&#34;https://www.goodreads.com/series/131791-commonwealth-chronicle-of-the-fallers&#34;&gt;Chronicles of the Fallers&lt;/a&gt; duology. This post will contain
spoilers so if you want to avoid these, here&amp;rsquo;s a quick tl;dr:&lt;/p&gt;

&lt;p&gt;Same as with the first book and big parts of &lt;a href=&#34;https://www.goodreads.com/series/43520&#34;&gt;the Void trilogy&lt;/a&gt; this book takes
place outside the Commonwealth on the world of Bienvenido, which is to some
degree comparable to early 20th century Earth. So, no utopia 😉 Most of the
story is all about the distrust between the people with and those without
biononics and their fight against the Fallers introduced in the first book. And
thanks to them no longer being inside the Void, there are no more mental super
powers. That being said, there is new hope on the horizon due to some unexpected
help from the Commonwealth&amp;hellip;&lt;/p&gt;

&lt;p&gt;If you enjoyed the first book or any of the Void ones, I&amp;rsquo;m pretty sure you will
like &lt;a href=&#34;https://www.goodreads.com/book/show/28439513-a-night-without-stars&#34;&gt;A Night Without Stars&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&#34;spoilers-ahead&#34;&gt;Spoilers ahead&lt;/h2&gt;

&lt;p&gt;So, now to the details:&lt;/p&gt;

&lt;p&gt;The first book ended basically with the planet being tossed out of the Void. The
story here picks up about one hundred years after that when people have finally
acclimated to a universe without providing its inhabitants free special mental
abilities. Due to this change the powers that emerged at the end of the last
book have tried to cling to their influence as much as possible, basically
simply converting one regime into another. The post-Slvasta world felt very
close to the governments of the Captains.&lt;/p&gt;

&lt;p&gt;The whole world is controlled through a military system that somehow feels
completely unchecked, being judge, jury, and executioner at the same time. On
the receiving end of this system is the Eliter shadow-society. Basically
Commonwealth-like Advancers they are treated with a lot of suspicion and hate by
the successors of Slvasta and his revolution.&lt;/p&gt;

&lt;p&gt;This whole inner-human conflict feels extremely real. The authors goes into
quite some detail on what kind of &amp;ldquo;advanced interrogation techniques&amp;rdquo; are
available to the military and police when dealing with Eliters.&lt;/p&gt;

&lt;p&gt;Most of the first half of the book focused on that. The second half tries to
catch up with bringing the Fallers into focus again. Personally, that felt a bit
rushed. It all went from &amp;ldquo;Eliters are evil!&amp;rdquo; to &amp;ldquo;we are overrun by Fallers&amp;rdquo;
within a couple of pages.&lt;/p&gt;

&lt;p&gt;One the other hand, esp. these last 50 percent of the book where awesome. I
especially enjoyed the trip to the southern pole and the planet-hopping
afterwards. It&amp;rsquo;s just pure scifi with all the technical marvels you can expect
from a Commonwealth book. The last 30% alone made me give the book a &lt;sup&gt;5&lt;/sup&gt;&amp;frasl;&lt;sub&gt;5&lt;/sub&gt; rating
on GoodReads 😉&lt;/p&gt;

&lt;p&gt;Just the final minutes of the conflict could have lasted a bit
longer. Personally, esp. the end of Jenifa was a bit underwhelming. Sure, there
were only two options: Either she would come around or go all-out mad. Still&amp;hellip;&lt;/p&gt;

&lt;p&gt;That also shows how well crafted all characters were. From Florian, Ry, Chaing,
Essie, to the Warrior Angel and even Roxwolf. They all felt very real and full
of stories. Heck, who wouldn&amp;rsquo;t sit in the prime minister&amp;rsquo;s chair if they got a
chance and mess around, right Corilla?&lt;/p&gt;

&lt;p&gt;There were simply all shades of grey here. Nobody was purely good or purely
bad. As much as Jenifa was misguided and borderline-crazy, she still seemed to
just wanted the best for her people. It was also great to see perhaps the most
&amp;ldquo;evil&amp;rdquo; character not being in some kind of leading position. Usually, the
antagonist is the head of some organisation, while in this case Jenifa is
mid-tier at best.&lt;/p&gt;

&lt;p&gt;This book also did a good job finishing up the story-arch. As interesting as
Bienvenido was, I fell like everything relevant has been said about it and its
solar system. IMO revealing so much in so few pages at the end of the duology
was perfect, but at least all the major story-lines have been concluded.&lt;/p&gt;

&lt;p&gt;I can&amp;rsquo;t wait for what will come next 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Apple Watch: First impressions</title>
      <link>https://zerokspot.com/weblog/2016/12/04/apple-watch-first-impressions/</link>
      <pubDate>Sun, 04 Dec 2016 21:26:32 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/12/04/apple-watch-first-impressions/</guid>
      <description>&lt;p&gt;About two years ago, when Apple released their first smartwatch, I was pretty
sure I wouldn&amp;rsquo;t get it any time soon. I had recently been burnt by Android Wear
and didn&amp;rsquo;t think Apple&amp;rsquo;s competitor could be that much better justifying the big
price difference.&lt;/p&gt;

&lt;p&gt;Then, in September or October I started too look into smartwatches again. The
concept was still very appealing to me since I&amp;rsquo;m on a bike basically every day
and having a notification and navigation interface available without having to
get my phone out at every corner was great with Android Wear. What drove me away
from that was mostly quality concerns on every level. The hardware was mediocre
as was the software.&lt;/p&gt;

&lt;p&gt;So I read up about the new newer Pebble Watches (also does that had just
completed the latest Kickstarter at that time) and &lt;a href=&#34;http://www.apple.com/at/apple-watch-series-2/&#34;&gt;Apple Watches&lt;/a&gt;. And it
would have been quite a hard decision were the new &lt;a href=&#34;https://www.pebble.com/buy-pebble-time-2-smartwatch&#34;&gt;Pebble Time 2&lt;/a&gt; available
now. I had also seen the Series 1 Apple Watch thanks to a friend and therefore
knew mostly what I was getting myself into and for that and a handful of other
reasons opted to go with Apple&amp;rsquo;s product.&lt;/p&gt;

&lt;p&gt;A little over a week ago I finally got my Apple Watch Series 2. Naively, I opted
to install all the apps I had on my phone also onto my watch. That made for a
really bad first impression as while the watch kept running for at least 18
hours, it drained my phone within 6 hours (which normally lasts for 2 days). I
hadn&amp;rsquo;t thought about that but once I had removed all the apps that I didn&amp;rsquo;t want
on the watch anyway, thinks improved significantly.&lt;/p&gt;

&lt;p&gt;Now, the watch&amp;rsquo;s battery lasts for about 4 days and doesn&amp;rsquo;t affect the phone at
all anymore. After 2-3 days I also finally started to understand the activity
meters and am really enjoying them. They kind of feel like a more wholistic
approach to the step-counter by Fitbit I&amp;rsquo;ve been carrying around for the last
couple of years. There are some articles out there that try to explain the
differences but for me it simply boils down to &amp;ldquo;stand up&amp;rdquo; meaning standing up
and moving about 😉&lt;/p&gt;

&lt;p&gt;Weirdly enough, I haven&amp;rsquo;t used the Overcast remote app all the much so far, but
it&amp;rsquo;s pretty much what I wanted so far. That&amp;rsquo;s also a nice summary of the watch
so far. It is extremely well-made on the hardware side while the software is
good. There are some things I&amp;rsquo;d have liked to be handled differently mostly
related to the mail app, but only minor things.&lt;/p&gt;

&lt;p&gt;In general, though, I&amp;rsquo;m very happy with it. A rugged version would be awesome,
though 😉 I thought about getting one of the cases available but none are
optimised for the Series 2 so water all of a sudden becomes an issue
again. Well, perhaps next year 😊&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>TIL: Directory modification times</title>
      <link>https://zerokspot.com/weblog/2016/11/27/directory-mtimes/</link>
      <pubDate>Sun, 27 Nov 2016 08:13:48 +0100</pubDate>
      
      <guid>https://zerokspot.com/weblog/2016/11/27/directory-mtimes/</guid>
      <description>&lt;p&gt;Recently, I needed a way to check when the content of a folder had last been
updated. If it hadn&amp;rsquo;t seen any changes within the last couple of days I wanted
to remove it.&lt;/p&gt;

&lt;p&gt;One solution for this would be to recursively check the modification time of
every single file in that folder but I also got curious about what actually
defines the modification time of the folder itself.&lt;/p&gt;

&lt;p&gt;As this is something that can be different from file-system to file-system,
let&amp;rsquo;s look at some of the more popular systems for macOS, Linux, and
Windows. All of them are basically handling the mtime of a folder in pretty much
the same way:&lt;/p&gt;

&lt;p&gt;The mtime of a folder is only modified if a file directly below it is added,
renamed, or removed. Changing anything about the content of any of the files or
their attributes won&amp;rsquo;t change the mtime of the directory that contains them
(&lt;a href=&#34;http://stackoverflow.com/questions/3620684/directory-last-modified-date&#34;&gt;Source&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To verify this I&amp;rsquo;ve created a &lt;a href=&#34;https://gist.github.com/zerok/420056668b71a2d057233e101c62d445&#34;&gt;little Python script&lt;/a&gt; and tried it on my local
machine (macOS), a Linux box, and a Windows box.&lt;/p&gt;

&lt;p&gt;There still seem to be some differences between the various file-systems,
though, esp. regarding the amount of precision they provide.&lt;/p&gt;

&lt;p&gt;For HFS+ (macOS) it was pretty easy to find some details in the &lt;a href=&#34;http://web.archive.org/web/20090214212148/http://developer.apple.com/technotes/tn/tn1150.html&#34;&gt;specs&lt;/a&gt; that
specify the basic behavior:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;contentModDate: The date and time the folder&amp;rsquo;s contents were last
changed. This is the time when a file or folder was created or deleted inside
this folder, or when a file or folder was moved in or out of this folder. See
HFS Plus Dates for a description of the format.&lt;/p&gt;

&lt;p&gt;attributeModDate: The last date and time that any field in the folder&amp;rsquo;s
catalog record was changed. An implementation may treat this field as
reserved. In Mac OS X, the BSD APIs use this field as the folder&amp;rsquo;s change time
(returned in the st_ctime field of struct stat). All versions of Mac OS 8 and
9 treat this field as reserved. See HFS Plus Dates for a description of the
format.&lt;/p&gt;

&lt;p&gt;[&amp;hellip;]&lt;/p&gt;

&lt;p&gt;HFS Plus Dates:
HFS Plus stores dates in several data structures, including the volume header
and catalog records. These dates are stored in unsigned 32-bit integers
(UInt32) containing the number of seconds since midnight, January 1, 1904,
GMT. This is slightly different from HFS, where the value represents local
time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Compared to more modern systems the mtime et al. are only exposed in seconds,
while others are exposing nanoseconds. That also shows when you look at the
&lt;code&gt;st_mtime_ns&lt;/code&gt; value in Python (inspecting one of the source files of this blog):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import pathlib
&amp;gt;&amp;gt;&amp;gt; pathlib.Path(&#39;32c3.md&#39;).stat().st_mtime_ns
1473583000000000000
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&#34;https://www.kernel.org/doc/Documentation/filesystems/ext4.txt&#34;&gt;ext4&lt;/a&gt; (Linux) on
the other hand offers nanosecond precision through some additional fields which
are then merged on the API layer for Python et al. to use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import pathlib
&amp;gt;&amp;gt;&amp;gt; pathlib.Path(&amp;quot;README.md&amp;quot;).stat().st_mtime_ns
1457287154109435711
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On Windows NTFS seems to handle modification times in a similar way to ext4 and
HFS+ according to
the
&lt;a href=&#34;https://support.microsoft.com/en-us/kb/299648&#34;&gt;Description of NTFS date and time stamps for files and folders&lt;/a&gt; document,
but I couldn&amp;rsquo;t yet find anywhere in what precision that value is actually
stored. It is exposed as nanoseconds according
to
&lt;a href=&#34;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724290.aspx&#34;&gt;File Times&lt;/a&gt; and
also the little Python snippet returned a result similar to ext4.&lt;/p&gt;

&lt;p&gt;While looking into all that I also learnt something about how the different
file-systems handle things like creation time &amp;hellip; a whole other can of worms,
though (&lt;a href=&#34;http://superuser.com/questions/973547/how-can-i-display-all-8-ntfs-timestamps&#34;&gt;some details&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Personally, I&amp;rsquo;m just glad that mtime doesn&amp;rsquo;t seem to come close to the
configurable nightmare that atime is.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>