<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="https://pekonen.cc/feeds/blog.xml" rel="self" type="application/rss+xml" />
<title>Jussi Pekonen - Blog</title>
<link>https://pekonen.cc/blog/</link>
<description>The RSS feed for stuff published at https://pekonen.cc/blog/, written by Jussi Pekonen</description>
<pubDate>Tue, 27 Oct 2015 14:59:00 +0200</pubDate>
<lastBuildDate>Sat, 16 Sep 2023 10:14:17 +0300</lastBuildDate>

<item>
<title>On my personal &quot;brand&quot;</title>
<description>
<![CDATA[<section>

<p>As one of the most senior people in the company I work for, my job description includes also a task to participate in employer branding activities. Such activities include attending various events, giving presentations, etc. I have nothing against doing such things, but I have a couple of reservations with it.</p>

<p>The first and foremost ”problem” is that I am currently 100% allocated to a customer project. That means that all my work time is spent on doing work within that project and any work external to that scope, such as attending events and giving presentations, would need to happen outside my regular working hours. That, in turn, is something I currently cannot do as my free time is pretty much fully booked already. Also, I would rather spend the time outside of working hours by relaxing and unwinding from the actual day job.</p>

<p>Alternatively, I could do these external things as part of my regular working hours, but then I would need to take away working hours from the project. While we <em>should</em> have 10% allocation on non-project work in our company<a href="https://pekonen.cc/blog/2023/09/16/On-my-personal-brand.html#fn:1" id="fnref:1" title="see footnote" class="footnote"><sup>1</sup></a>, which I could more than happily use for events and presentations, I would need a permission from the customer to use my time for such non-project activities.</p>

<p>The second issue I have with the whole ”employer branding” thing is that it can easily become a matter of personal branding. If you give talks at various events about a certain topic, you can easily be ”mistaken” as the expert in that topic, thus mixing up the employer and personal branding activities. This mix-up gets more prevalent in cases where you are the only person (or one of the very few) in the company who knows about that (niche) topic.</p>

<p>Also, participating events and especially giving presentations at the event may become opportunities for other prospective employers to target you as a potential new employee for <em>their</em> company. That, in turn, can amplify the confusion between the employer and personal branding activities even more if one let’s this attention to boost one’s ego.</p>

<p>You might have guessed what my take on the whole personal branding thing is. Yes, I find it actually rather awkward and cumbersome. But I will try to do that anyway. As a part of such activities, I have plans to write about some selected topics to my <a href="https://pekonen.cc/software">software blog</a>. So stay tuned.</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>1. The COVID shenanigans changed this in such a way that our project allocations were changed to full 100% instead of 90%. <a href="https://pekonen.cc/blog/2023/09/16/On-my-personal-brand.html#fnref:1" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Employer-branding/">Employer branding</a>, <a href="https://pekonen.cc/blog/tags/Personal-branding/">Personal branding</a>, <a href="https://pekonen.cc/blog/tags/Blogging/">Blogging</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2023/09/16/On-my-personal-brand.html</link>
<pubDate>Sat, 16 Sep 2023 10:14:17 +0300</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20230916-branding/</guid>
</item>

<item>
<title>What I am good at?</title>
<description>
<![CDATA[<section>

<p>The title of this post is a question I have been asking myself a lot lately. &#8220;Why?&#8221;, you might ask. That&#8217;s a fair question. Actually, I&#8217;m not sure. Maybe it has something to do with the fact that I have been working as a software developer for 10 years,<a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fn:1" id="fnref:1" title="see footnote" class="footnote"><sup>1</sup></a> a role that I jumped from the academic world where I had only done some small scripts and analysis tools<a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fn:2" id="fnref:2" title="see footnote" class="footnote"><sup>2</sup></a> but no major software applications or tools. Even after all these years as a software professional I <em>feel</em> like I am still a total beginner. In other words, I am suffering from <a href="https://www.apa.org/gradpsych/2013/11/fraud">the impostor syndrome</a>.</p>

<p>Here are some things I have done during these 10 years:</p>

<ul>
<li>I have developed (objectively) high-quality code using numerous programming languages.<a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fn:3" id="fnref:3" title="see footnote" class="footnote"><sup>3</sup></a></li>
<li>The code I have written is used by thousands (or millions or even potentially billions) of users.</li>
<li>I have learned dozens of new tools and plenty of new programming languages, platforms, and frameworks from scratch just to do the work I was asked to do.</li>
<li>I have taken care of and looked after integrations within the applications, between different applications running in a multithreaded multi-application system, between the application and a backend, and between numerous backend services.</li>
<li>I have lead teams and projects of varying sizes and mentored a handful of junior developers in their work.</li>
</ul>

<p>Reflecting on these things, no wonder my job title is nowadays &#8220;Software Architect&#8221;. Also, based on these remarks I should definitely <em>not</em> have an impostor syndrome. But still I do. The most probable cause to this is that I feel like I still have a ton of things to learn to be an expert. Also, I don&#8217;t seem to have any time to spend on learning those things apart from the working hours that are already filled with other stuff I need to take care of. You probably are getting it now why I feel like a fraud.</p>

<p>So, to the original question: What I am good at? Well, of course this is a <em>totally</em> biased opinion, but I would say that at least in the following things:</p>

<ul>
<li>Handling complex projects<a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fn:4" id="fnref:4" title="see footnote" class="footnote"><sup>4</sup></a></li>
<li>Managing dependencies between various parts of the project both on the code and the product management levels</li>
<li>Finding (optimal) solutions to a problem</li>
<li>Aiming of high-quality code</li>
<li>Leading teams to succeed in their work</li>
<li>Learning things fast</li>
</ul>

<p>The last one is not a surprise. One can (and should) expect that from a person who has a post-graduate degree. Learning new things has never been a problem for me as I am inherently a curious person. If I want to learn something, I am willing to do a lot of work to learn the needed skill(s). This applies to, in practice, everything in I do in life, from reversing the car to a parking slot<a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fn:5" id="fnref:5" title="see footnote" class="footnote"><sup>5</sup></a> to learning a new programming language or a new musical instrument. Therefore, I can do whatever is needed, which makes me a pretty versatile employee in the IT business.</p>

<p>How about my previous career, academic research? Do I miss it? Yes and no. I do miss the idea of doing research, finding solutions to a problem, tweaking the solution and trying out what kind of changes it would produce. Also, I miss my research subject, audio signal processing, as I <em>love</em> music and musical instruments, and I am still very, very interested in how human hearing works. What I do not miss at all is the constant begging of funding. This lack of money was obviously reflected on the pay as well. It seemed that the researchers were required to work with a salary that is peanuts compared to what one can get from the private sector. Even though doing a work that one loves might be a good reason to accept a lower pay than otherwise, it is unacceptable how so highly talented people like researchers are paid.</p>

<p>Was I a good researcher? Yes, I think I was. One of my papers got awarded and my publications were considered to be really good by my peers. Was I among the absolutely best researchers? Obviously not, otherwise I would have gotten funding from everywhere. But as a rank and file researcher, I was pretty darn good. I came up with new ideas and I was able to expand existing knowledge with some new insight. I loved challenging problems and was not afraid of the complex mathematics that was needed to solve those issues. Based on these, I think I was a good researcher. Would I like to return to do research? It depends. With total academic freedom and a <em>decent</em> pay, why not. But with the scenario I described above, absolutely not. I might do some small research here and there, but that will happen on my own terms and, most likely, on this site.</p>

<p>How about my musicianship? Am I a great musician? Hell no! I am just an amateur who has played a variety of instruments. I have known some of them better than others, but I cannot say I am a great musician, a decent hobbyist at most. I have started practicing again but because there was a long break, I will be starting from the basics again. Luckily this time I do have some experience, which should translate to a faster re-learning process. What and how I will be practicing? That is a topic for another blog post…</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>I joined LM Ericsson on January 2, 2012. <a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fnref:1" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

<li id="fn:2">
<p>As an academic one can work with a lot of (semi&#8211;)obscure languages and frameworks, but nowadays the &#8220;standard&#8221; tools are becoming more and more popular among the academics as well. &#8220;Back in the day&#8221; that was still not the case. <a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fnref:2" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

<li id="fn:3">
<p>On one day at Ericsson I counted that I worked with 6 different programming languages: C++, Java, Bash, Groovy, TTCN3, Ruby, Python. And that was not all languages I worked with while working there. <a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fnref:3" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

<li id="fn:4">
<p>The complexity can composed of the number of integrations to be done, the difficulty of the problem, etc. <a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fnref:4" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

<li id="fn:5">
<p>If the parking lot has slots in 90 degree angle relative to the &#8220;road&#8221;, I prefer to reverse to it. Why? Because it is easier to observe the other traffic when leaving. Reversing in is easier than reversing out because there is no crossing traffic, or at least should not be. <a href="https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html#fnref:5" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Impostor-syndrome/">Impostor syndrome</a>, <a href="https://pekonen.cc/blog/tags/Professionalism/">Professionalism</a>, <a href="https://pekonen.cc/blog/tags/Skills/">Skills</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2022/01/14/What-I-am-good-at.html</link>
<pubDate>Fri, 14 Jan 2022 16:50:26 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20220114-impostor/</guid>
</item>

<item>
<title>Back in writing &quot;business&quot;</title>
<description>
<![CDATA[<section>

<p>It has been almost 4 years since the last blog post on this site. Though I have had many,
many plans for this site, I have not had time to do any of those. I have just been way too
&#8220;busy&#8221;, thanks to life throwing a couple of things at me and squeezing my limited free time
to even smaller than before.</p>

<p>But, I am back. And with a thing I teased about almost 20 months ago. Yes, I have now a
<a href="https://pekonen.cc/software">blog for software things!</a> As the first software blog post, I write <a href="https://pekonen.cc/s/20200905-Bash">how to write safe, re-usable, and testable Bash code</a>.
There is also a <a href="https://pekonen.cc/feeds/software.xml">new RSS feed</a> for the posts on that part of this site.
The posts are also included in <a href="https://pekonen.cc/feeds/rss.xml">the main RSS feed</a>, so if you want to get
<em>everything</em> I write, feel free to subscribe to that feed. You don&#8217;t have to though, in the
end I don&#8217;t give a damn how many users are subscribing to my feeds.</p>

<p>So, will this &#8220;regular&#8221; blog be abandoned after this change? No, not at all. I just wanted
to have a separate section of the site for software things so that I can keep the Blog
for other, more generic things and observations of the surrounding world.</p>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Website/">Website</a>, <a href="https://pekonen.cc/blog/tags/Blogging/">Blogging</a>, <a href="https://pekonen.cc/blog/tags/Software/">Software</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2020/09/05/Back-in-writing-business.html</link>
<pubDate>Sat, 05 Sep 2020 16:54:50 +0300</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20200905-Back/</guid>
</item>

<item>
<title>The Future of &quot;Western&quot; Societies?</title>
<description>
<![CDATA[<section>

<p>When I launched this blog, I made a promise to myself to <em>not</em> write about politics.
The reason was obvious: my opinions are my own and they do not represent the
ultimately correct alternative for that particular
question/situation/country/whatever. But in this post I will talk about
recent<a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a> development in the politics of the so-called Western societies.</p>

<p>The contents of this blog post have been stewing for a while. The final push to write
this post was today&#8217;s (that is, November 8, 2016) presidential election in the United
States of America. However, this post will not be about the election. It will focus on
the rise of populism in Europe (and the USA).</p>

<h3 id="thepasttimesarenotcomingback">The past times are not coming back</h3>

<p>The major selling point of a populistic political viewpoint is during the &#8220;good times
of the past&#8221; <em>everything</em> was better than now. Any progress in various areas of life
(like healthcare, overall quality of life, etc.) can be ignored because some, most likely
very irrelevant things (may) have changed to worse for some people. The populists pick
such things up and blow them out of their real proportions. That is why everything seems
to be really, really bad, and only they can Make Things Great Again™.</p>

<p>Similarly, when the world is changing in a big way, the populists oftentimes resist
the change and they try to stop the change with legislation. If the populists happen
to be in the position where they can make such a legislation, they will do
that<a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>. If they are not, they will use all their verbal (at least hopefully
only verbal) power to attack the politicians in that position<a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a>. Because
their cause always gets popular among their supporters, those people get alienated
from the other politicians. This leads to a never-ending loop, where the people trust
politicians and the political process less and less.</p>

<p>I have bad news for you who think the populists are right: <em>the past times are not
coming bac</em>k. Life moves forward and dwelling in the good olden times makes more harm
to you than embracing the change. Yes, the change may be painful, but if you get through
it you will be better equiped for the inevitable future.</p>

<h3 id="nomanisanisland.">&#8220;No man is an island.&#8221;</h3>

<p>That is a excerpt from <a href="http://www.phrases.org.uk/meanings/no-man-is-an-island.html">a poem</a>
written by an English poet John Donne. It reminds me of the fact that no choice, personal
or political, happens in a vacuum. The word &#8220;man&#8221; could be replaced by practically anything
(a nation, a political action) and the excerpt would be still true. The populists often claim
that a political action will affect only this one thing, only locally, etc., but they seem to
forget that it has often wide-reaching ramifications they did not take into account, either
deliberately or out of pure ignorance.</p>

<p>A common theme in populists&#8217; agenda is a boost to a local economy that has suffered over the
years because of global economic changes. Like we people, local economies just need to suck
it up and adapt to the changing world. Sticking with the things that made the local economy
boom 30, 40, 50 years ago may lead to worsening (local) recession when the world around
thrives. For example, if a local mine was closed some time ago because its finances did not
make sense to keep it running, it will not be financially viable in the future either. Unless
the global economy takes a huge dive. The likelihood of that happening, though? Once again,
I have got bad news for you. It is practically impossible to happen. The global economy
survives. It will find a way. Always.</p>

<p>Similarly, a political action in one country can cause major global reverberations. Wars
have been started because of seemingly minor changes in politics (such as in the attitude
towards other nations, nationalities, religions, political opponents). Today, the larger
the impact of the political actor to the global economy is, the larger the global
ramifications of the action are. Yet, even a small actor can (still) start a world war if
they so will.</p>

<h3 id="theworldafternovember82016">The world after November 8, 2016</h3>

<p>The terrorist attacks in the USA on September 11, 2001, changed the world in a dramatic
way. In my opinion, today marks another major day in the history of that nation and, by the
global economic proxy explained above, the history of this planet.</p>

<p>Why a Finn is so concerned about the stupid presidential election of a nation he is not a
citizen of? For two reasons. First, if Hillary Clinton wins, Donald Trump has said he will
blame the political system for crooking the result. If Donald Trump wins, who knows what will
happen. Either way, the internal politics of that nation will be a huge mess for who knows how
long. In the worst case, if the country gets severely divided because of this, I fear that
they will end up having a second civil war. I truly wish the mess does not get that ugly.</p>

<p>Second, I fear the global ramifications when one of the major global political actors is
incapacitated due to its internal fighting. How the global economy will be impacted? Will
another major actor take a bigger role or will there be a fight for the leadership? What I
fear the most is that nations around the world use the result of the election as a reason
for boosting nationalism and intolerance. If such things happens, I see that we will be
heading towards a new world war. For the sake of the future of humanity, let&#8217;s hope that
will not happen. Ever.</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>And by recent I mean the past 20 years. <a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>Case in point, Poland. <a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p>This happens everywhere. Even in your own country. Just take a closer look at it. <a href="https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Politics/">Politics</a>, <a href="https://pekonen.cc/blog/tags/Future/">Future</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2016/11/08/The-Future-of-Western-Societies.html</link>
<pubDate>Tue, 08 Nov 2016 14:23:00 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20161108-Future/</guid>
</item>

<item>
<title>The technical implementation of this site, Part 2</title>
<description>
<![CDATA[<section>

<p>As promised in the <a href="https://pekonen.cc/b/20151222-SiteTech/">Part 1 of this blog post miniseries</a>,
this second part will discuss the files this site consists of and how I manage
them. As also mentioned in that post, all the pages on this site are <em>static</em>.
This post will explain <em>why</em> I have chosen to use static files.</p>

<p>Because it is the year 2016, the technologies used on this site consist of
HTML, CSS, and JavaScript. The content that is &#8220;dynamic&#8221; (like the latest
updates section on the <a href="https://pekonen.cc/">main page</a>) is, in fact, parsed using JavaScript
from other static files (that are JSON, XML, or HTML). That is the reason why
this site appears to be fairly fast to load. For example, this page weighs only
450 KiB (with all associated fonts, and JavaScript and CSS files), meaning that
it should not take long to load over a practical Internet connection.</p>

<h3 id="staticsitegenerator">Static site generator?</h3>

<p>Now, the obvious question is which static site generator I use. The answer is
simply <em>none</em>. The simple pages (like the main page) are handcoded HTML and I
write all CSS and JavaScript by hand. Why I am such a pervert who does not use
a fancy-pants WYSIWYG editor and the latest and awesomemest JavaScript wrapper
framework? Well, first of all I want to <em>learn</em> HTML, CSS, and JavaScript, not
just the ins and outs of those tools.</p>

<p>The only exception to the write-by-hand rule is the blog. The pages for the
blog are generated by few Bash scripts<a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a>. The actual blog post pages, like
this one, I compile from (simplified)
<a href="http://fletcherpenney.net/multimarkdown/">MultiMarkdown</a> files. Once I am
satisfied with the post content, I run one Bash script that adds some
MultiMarkdown headers (that is, the common CSS and JavaScript files) to the
original file, converts it to HTML using the <kbd>multimarkdown</kbd> command,
and cleans up the HTML output a bit. That script also generates the needed data
for blog subpages (for example <a href="https://pekonen.cc/blog/2016/">the 2016</a> page) and <a href="https://pekonen.cc/blog/tags/">blog tag
pages</a> using a pair of Bash scripts. The post generator script
also adds the permalink of the post to the master permalinks JSON file (from
which the permalink in the footer, see below, is parsed from) and to the
redirect rules used on this site.</p>

<h3 id="oncreatingthecontentofthissite">On creating the content of this site</h3>

<p>As mentioned above, I do not use any fancy editors when I write the content and
code for this site. I use just a plain text editor, mainly in Terminal<a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>
because I have a &#8220;coding&#8221; setup always open. I could try out some editors that
have been designed to this kind of workflow, but I kind of like the simplicity
of my current setup.</p>

<p>I try to write HTML5 compliant pages, but I have not fully validated the HTML
code on all pages. Similarly, I try to write valid CSS3 cide, but I cannot
guarantee 100% validity. I write <em>pure</em> JavaScript (not jQuery or anything like
that), and it has been written so that it targets the use cases found on this
site. I have written the functionality found in the code in the &#8220;minimum viable
product&#8221; way by doing only the steps that are needed for this site to work as
it is today.</p>

<p>As I mentioned in the Part 1 of this blog post miniseries, the RSS feeds are
<a href="https://pekonen.cc/b/20151222-SiteTech1/#automaticgenerationoftherssfeeds">autogenerated</a> using
a Bash script. The JSON files that I use to store some data are mostly written
by hand. The only exception to that rule is the addition of the permalink of a
new blog post that gets added by the publishing script. Why I write my JSON
files by hand? The data I store in JSON files is small enough to handle
manually. Maybe one day when my site becomes big enough I need to reconsider
my workflow and start managing the JSON data using a specialized editor. Yeah,
right, like that day would ever come&hellip;</p>

<h3 id="adsanalyticsusertracking">Ads, analytics, user tracking</h3>

<p><em>If</em> you have (ever) visited the site, you may have noticed that it is devoid
of ads. While the terms and conditions of <a href="https://www.kapsi.fi">Kapsi</a> (the
Finnish non-profit for Finnish Internet users, that hosts this site) do not
allow commercial activities<a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a>, they would allow me to have ads on
the site. However, I have decided not to have them. Why? Well, I personally
dislike what online ads (and ad networks) have become. Furthermore, ads would
never fit to the overall look and feel of the site.</p>

<p>Similarly, I do not have any analytics packages running on this site. I do not
like what they do, and furthermore they would bloat the pages, which is
something I do not want to do. I value speed and lean site size more than the
information of what you do on my site. Besides, what would I do with that
information? You came here to find something that you wanted, and you probably
found it. If you did not, you most likely can send me an email where you ask
about it.</p>

<p>The same reasons apply to social media sharing buttons. They bloat the site and
do nasty things in the background. Besides, most likely your browser has
existing share functionality built in. Learn to use it, it is really handy.
Also, it is more flexible than a button <em>I</em> would need to add on my site.</p>

<p>That is it. This post concludes the miniseries on the technical implementation
of this site. It also gives a glimpse of the workflow I use when writing for
the site. Hopefully you have enjoyed reading about these technical tidbits.</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p><a href="https://pekonen.cc/b/20151222-SiteTech1/#fn:2">The comment in Part 1</a>
applies also here. <a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>Lately it has been Vim, which I seem to open every time. At the
moment I should actually be using Emacs (it is my current $EDITOR), just to
keep in touch with it and its shortcuts too. <a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p>That is, I cannot sell products/services/whatever that would
bring in money on this site. <a href="https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Website/">Website</a>, <a href="https://pekonen.cc/blog/tags/Blogging/">Blogging</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2016/02/18/The-technical-implementation-of-this-site-Part-2.html</link>
<pubDate>Thu, 18 Feb 2016 16:06:04 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20160218-SiteTech2/</guid>
</item>

<item>
<title>The technical implementation of this site, Part 1</title>
<description>
<![CDATA[<section>

<p>After I <a href="https://pekonen.cc/b/20151109-Announcements/">announced my new microblog</a>
<a href="https://pekonen.cc/blips/">Blips</a>, I was asked how I implement the feature. Because it is closely tied
to the technical implementation of this site, I thought I should write about the
complete implementation instead of that one particular subsection of the site.</p>

<p>Here is a blog post that describes the technical solutions used on this site. However,
this post does not cover what files the site consists of are or how I manage them.
That will be the topic of Part 2 of this blog post miniseries. For this post, it suffices
to know that all pages of this site are static and that all the dynamic content is
parsed from other static files using JavaScript.</p>

<p>I use the web hosting service provided by <a href="https://www.kapsi.fi">Kapsi</a>, a Finnish
non-profit organization for Finnish Internet users, included in the membership of the
organization. Other services they provide include email hosting, disk space (for remote
backups, for example), and IRC access. For technical solution of the web server, feel
free to consult the Kapsi pages, where the relevant information is explained (only in
Finnish, unfortunately).</p>

<h3 id="contentmanagementandautomaticdeployment">Content management and automatic deployment</h3>

<p>All the files for the site are managed in a <a href="http://www.git-scm.com">Git</a> repository<a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a>.
That allows me to fix possible screw-ups by reverting individual commits and it lets me to
work on the site from any device that has Git installed. Why Git and not something else? When
I started this site I was learning Git and wanted to try it out also for this &#8220;project&#8221; of mine.</p>

<p>At the moment the repository contains both text and binary files. As you probably know,
tracking binary files in a Git repository is not the best possible solution. Therefore, I
have been planning to move the binary files to a <a href="https://subversion.apache.org">Subversion</a>
repository. The migration of the binary files is currently ongoing, but it is not done when
this post goes live.</p>

<p>How do I deploy my changes to the server then? The automatic deployment strategy I use was
inspired by <a href="http://joemaller.com/990/a-web-focused-git-workflow/">this blog post</a>. I use a
<a href="http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks">Git post-receive hook</a> written
in Bash<a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a> that pulls all changes pushed to the <em>master</em> branch<a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a> to the folder that
acts as the root of this site<a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fn:4" id="fnref:4" title="see footnote" class="footnote">[4]</a>. The post-receive hook allows me to track the files
that have changed, which is handy for the automatic generation of the RSS feeds of the site.</p>

<h3 id="automaticgenerationoftherssfeeds">Automatic generation of the RSS feeds</h3>

<p>Based on the files that have changed, the different RSS feeds are automatically generated.
For the automatic RSS feed generation I use a set of Bash functions defined in a few files
that are also tracked by the repository. The generated feed files are not tracked by the Git
(or the upcoming SVN repository).</p>

<p>When there is a <em>new</em> blog post, the post-receive hook calls a Bash function that parses the
necessary information from the HTML file and adds it as a new RSS item to the blog and main
feeds of the site. However, if a published blog post got updated (or deleted, which is yet to
happen), the feeds do not get updated.</p>

<p>Whereas any new blog post triggers the autogeneration of the blog and main feeds, I use a single
text file for tracking the Blips. If it was modified<a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fn:5" id="fnref:5" title="see footnote" class="footnote">[5]</a>, a new Blips RSS feed item is
created with the contents of the tracked file. This approach publishes only the latest update,
meaning that if I have created several commits that updated the file, only the latest version of
the file gets published.</p>

<p>Similarly to Blips, the generic site updates are tracked with another text file. While the Blips
file will use plain links because they are crossposted to other media, the site updates file will
be parsed for Markdown-formatted links before its content is added to the main RSS feed. Also,
only the latest update to that file gets published, similarly to Blips.</p>

<h3 id="crosspostingsiteupdatesandblips">Crossposting site updates and Blips</h3>

<p>As mentioned in the <a href="https://pekonen.cc/b/20151109-Announcements/">announcement blog post</a>, I
crosspost all new items in the Blips RSS feed to my <a href="https://twitter.com/JussiPekonen">Twitter</a>
and <a href="https://app.net/JussiPekonen">App.net</a> accounts. I use <a href="https://ifttt.com/">IFTTT</a> recipes that
take the Blips RSS feed and create the needed updates on the aforementioned services.</p>

<p>The main RSS feed also goes to my Twitter account via an IFTTT recipe, similarly to the Blips. Unlike
with Blips, I manually create an App.net Broadcast of the updates to my site using <a href="https://app.net/pekonen">another
account</a>. I will then repost, manually again, the autogenerated post using my
personal account. I could create an IFTTT recipe for that too, but I do not mind doing the thing manually,
especially because the original post was also created manually.</p>

<p>This ends this first post in this miniseries. Part 2 will focus on the <em>how</em> I update this site, the Blips,
and so forth. It will be published when it is ready.</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>You can verify this by <em>trying</em> to open <a href="https://pekonen.cc/.git/">this link to the .git directory</a>. However,
I have blocked the access to that directory, so you should get the 403 Forbidden error page instead. <a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>Why Bash and not something like Python or Ruby? Well, Bash is most likely available
on any server I may want to move the site contents to. Python, Ruby, or any other sexy scripting
language would have their own problems, starting from being available on the server and having the
correct version (case in point, Legacy Python 2 vs. Python 3). <a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p>I also have a test site to which a checkout is performed when I push to the test branch.
However, that site is not public and it is also password-protected. I try out different things there
first before I push the changes to master. <a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:4">
<p>For the binary files in an SVN repository, I will be using the SVN <a href="http://svnbook.red-bean.com/en/1.7/svn.reposadmin.create.html#svn.reposadmin.create.hooks">post-commit
hook</a> that
checkouts the master repository to the root of both this site and the test site. That way I can ensure
that the data is correct on both sites. <a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fnref:4" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:5">
<p>Or added, in case I accidentally the file. <a href="https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html#fnref:5" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Website/">Website</a>, <a href="https://pekonen.cc/blog/tags/Blogging/">Blogging</a>, <a href="https://pekonen.cc/blog/tags/Social-media-networks/">Social media networks</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2015/12/22/The-technical-implementation-of-this-site-Part-1.html</link>
<pubDate>Tue, 22 Dec 2015 10:30:50 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20151222-SiteTech1/</guid>
</item>

<item>
<title>Relaunching old, launching new, and reactivating a dormant account</title>
<description>
<![CDATA[<section>

<p>This blog post is atypical to me: it is not a long-form essay. But it may be the most
important post I will write in a while. Keep on reading to see why.</p>

<h3 id="relaunchingtheblog">Relaunching the blog</h3>

<p>First of all, I am relaunching my blog. And yes, you are right, this &#8220;relaunch&#8221; does not
come with any major changes to the look of the blog. All the changes are under-the-hood
changes that should make the blog more accessible and easier to browse<a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a>. Actually,
some of these changes has been live for a while, so you may have noticed them already<a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>.
The most notable things are that there is now a <a href="https://pekonen.cc/blog/">main page for the blog</a> that shows
a summary of the latest few blog posts and that there are similar summary pages for the various
<a href="https://pekonen.cc/blog/tags/">tags</a> I have used in my blog posts.</p>

<p>Furthermore, there is now an <a href="https://pekonen.cc/feeds/blog.xml">RSS feed</a> for the blog that you can subscribe to.
That feed will contain <em>only the blog posts</em>, but in case you want to subscribe to all future
changes of this site (that are not necessarily announced as blog posts), feel free to subscribe
to the <a href="https://pekonen.cc/feeds/rss.xml">main RSS feed</a>. Note, however, that neither of these RSS feeds will
contain all my blog posts but they will start with my <a href="https://pekonen.cc/b/20151027-NiceThings/">previous blog post</a>.
That means that this blog post will be the second item in those feeds.</p>

<p>I hope this relaunch of my blog will posivitely drive me to write more on the blog. I have written
maximum 2 posts per year since I started with this site, and in my opinion that is way too seldom.
I am not giving any promises how often I will write, but I hope I can start doing it fairly regularly.</p>

<h3 id="launchingmynewmicroblog:blips">Launching my new microblog: <a href="https://pekonen.cc/blips/">Blips</a></h3>

<p>Alongside with the blog relaunch, I am launching my new microblog, <a href="https://pekonen.cc/blips/">Blips</a>. Why I am
creating my own microblog when there are popular existing microblogging platforms, like Twitter and
even App.net (that is still alive)? The reason is the very same as for <a href="http://manton.org/">Manton Reece</a>
and many other indie web people: I want to own <em>all content</em> I produce. That way I can ensure that
everything I write does not go the way of the dodo when the latest and coolest microblogging
platform goes belly up<a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a>.</p>

<p>In addition to the main <a href="https://pekonen.cc/blips/">Blips</a> page, the microblog posts will be available as an <a href="https://pekonen.cc/feeds/blips.xml">RSS feed</a>
if you want to subscribe to them that way. Unlike the <a href="https://pekonen.cc/feeds/blog.xml">blog RSS feed</a>, the Blips will
not be included in the <a href="https://pekonen.cc/feeds/rss.xml">main RSS feed</a> of my site.</p>

<p>Blips will be short, max 140 characters long quick posts that will contain quick comments, questions,
et cetera. Why do I call them &#8220;Blips&#8221;? Because they are short and most likely they are published fairly
seldom<a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:4" id="fnref:4" title="see footnote" class="footnote">[4]</a> and at random schedule, they are <a href="http://www.merriam-webster.com/dictionary/blip">something relatively small or inconsequential within a
larger context</a><a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:5" id="fnref:5" title="see footnote" class="footnote">[5]</a>. Then why they are max 140
characters long? Well, I think you already guessed&#8230;</p>

<h3 id="reactivatingmytwitteraccount">Reactivating my <a href="https://twitter.com/JussiPekonen/">Twitter account</a></h3>

<p>Yes, you read it right. I am indeed reactivating my Twitter account, <a href="https://twitter.com/JussiPekonen/">@JussiPekonen</a>
and I have made it public again. However, you should note, that my tweets will be crossposted Blips and
other updates of this site (I will be using the main RSS feed). Furthermore, like my bio says, I will <em>not</em>
reply to @mentions nor I will be following anyone. I will, however, receive the mentions and I will read
your comments. If you are <a href="https://pekonen.cc/b/20151027-NiceThings/">behaving badly</a>, I <em>will</em> block you.
Furthermore, some of the Blips will be posted to my <a href="https://www.linkedin.com/in/jussipekonen">LinkedIn account</a>
too, but only when I choose to do so.</p>

<p>What does this reactivation of my Twitter account mean to my <a href="https://alpha.app.net/JussiPekonen/">App.net account</a>?
<em>Absolutely nothing</em>. I will continue using App.net until the bitter end, and I will be replying to mentions
there. However, I will be crossposting my Blips also to App.net, which means that my
<a href="https://jasonirwin.ca/2014/05/14/thinking-about-nicerank/">NiceRank</a> may take a small hit, but I think
I can live with that. I have not cared about these kinds of things before, so why should I start now?</p>

<p>In summary, this website will become my publishing hub for all kinds of content. Everything<a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fn:6" id="fnref:6" title="see footnote" class="footnote">[6]</a>
I will write will be published here first and crossposted to other media after it has appeared here. If
you do not like that, you can stop following me now.</p>

<section class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>However, I am not adding search functionality to this site. I will write about why I chose
to do so in a future post. <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>Of course you have <em>not</em> noticed, you have not been here since my latest blog post, right? <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p>Yes, <em>when</em>. It is only a matter of time. The platforms cannot either make it or people get bored of them. <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:4">
<p>By seldom I mean a handful of times per week. More often than I will write blog posts, though. <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:4" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:5">
<p>I found that definition to match the best, though the other definitions also describe them well. <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:5" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:6">
<p>Well, almost everything. I will be still posting to App.net as I have been. <a href="https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html#fnref:6" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</section>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Blogging/">Blogging</a>, <a href="https://pekonen.cc/blog/tags/Social_media_networks/">Social media networks</a>, <a href="https://pekonen.cc/blog/tags/Twitter/">Twitter</a>, <a href="https://pekonen.cc/blog/tags/LinkedIn/">LinkedIn</a>, <a href="https://pekonen.cc/blog/tags/App.net/">App.net</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2015/11/09/Relaunching-old-launching-new-and-reactivating-a-dormant-account.html</link>
<pubDate>Mon, 09 Nov 2015 10:47:20 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20151109-Announcements/</guid>
</item>

<item>
<title>Why we cannot have nice things</title>
<description>
<![CDATA[<section>

<p>This blog post was originally meant to be released on my third anniversary
on the social media network called <a href="https://app.net/">App.net</a>, which was on
August 22. However, life got in the way and I did not have time to finish the
post until now, 2 months after that date.</p>

<p>Unlike <a href="https://pekonen.cc/b/20140822-ADN/">a year</a> or <a href="https://pekonen.cc/b/20130822-ADN/">two</a>
ago, I will not go through what has happened on App.net during the last year.
Instead, this blog post was in part inspired by the following articles:
<a href="https://medium.com/bad-words/why-twitter-s-dying-and-what-you-can-learn-from-it-9ed233e37974#.k55hnzrne">Why Twitter’s Dying (And What You Can Learn From It)</a>
by Umair Haque and
<a href="http://tidbits.com/article/16009">A Not So Short List of People to Blame for Internet Content Woes</a>
by Adam C. Engst.</p>

<p>As it is today, the landscape of social media networks looks depressive.
There are a handful of services that have a lot of users and that are
considered to be a part of the core Internet experience. Yet, only a
couple of them have been able to make the service self-sustaining. The
others have just pumped VC/investor funding to the service in the hopes of
finding a way it could become profitable without being able to make a
positive number under the line.</p>

<p>But there is one thing that is common to all these social media networks:
they show advertisements to their users who, in return, get to use the
service for &#8220;free&#8221;. How those ads are displayed to the users depends on the
service. Many consider those ads and the intrusive user tracking they do to
be annoying, and they blame them to be the reason why they do not find
social media enjoyable anymore. I used to be in that camp, but I have found
a much better explanation why these free services seem to suck the joy out
of the whole social media experience.</p>

<p>In short, the reason is, as Mr. Engst suggests for the ad blocking controversy,
we, the people. Because the services are free, anyone can join the service. And
with anyone I mean literally anyone. And those people can have whatever agenda
they want. And that has lead to situations where one can create anonymous accounts
and use them to harass and attack against other people just because they did
something the bully did not like. Having a civilized conversation online has
become a difficult task and social media networks where one can expect to stay
(mostly) safe from abuse are far and few between if not completely non-existent.</p>

<p>The obvious follow-up question for that previous paragraph is <em>Why</em>. I have
no answer to that but I may have some ideas why we act like idiots online.
One thing that, in my opinion, contributes to the bad behavior is the fact
that we humans make everything a race. There is not a thing that we would
not make a competition out of. Sports, business, life, you name it. Online
we can see this happening with people trying to get the maximum reach (that
is, the number of followers), to make the wittiest joke (counted by the
number of retweets/likes/whatever, for example), to stir the pot the hardest
(that is, result in the biggest number of follow-up posts), et cetera.</p>

<p>Another contributing factor to the horrible online behavior related to making
everything a race is that people seem to have unjustly high expectations for
everything. No matter what cool things others do and how fast the things become
popular, there are always people for whom nothing is enough. This can be seen,
for example, every time a new service is launched to compete against a
well-established player. No matter how fast it grows, these people keep on
comparing it to the 800-pound gorilla that have had a lot more time to gain
its popularity. Also, even if people are getting a service/app/whatever for
free, they will find any fault, missing feature, and/or lack/slowness of support
to be a totally plausible reason to yell at the developer/service
provider/publisher/whatever.</p>

<p>Finally, we people are also cheap bastards. That can be proved by looking
at what is the dominant business model for online services and publications.
Even if there were a paid alternative, let it be superior or equally good,
to the free, ad-supported service, people tend to lean towards the option
where they do not need to pay a dime. And because the services want to
maximize their (ad) revenues, they are willing to get as high number of
users as possible, which leads to the situation where the online bullies
can run rampant on those services. And now we are back in the original
problem.</p>

<p>The title of this post says <em>cannot</em>, not <em>will not</em>. That means that I
believe that there is still hope. If we would start acting like civilized
adults again, we could make the whole Internet experience much, much better
for all of us, and especially for those who have been the target of abuse.
Please, prove the pessimists wrong and make this hope come true.</p>

<p id="tags">
<strong>Tags:</strong> <a href="https://pekonen.cc/blog/tags/Internet/">Internet</a>, <a href="https://pekonen.cc/blog/tags/Social_media_networks/">Social media networks</a>, <a href="https://pekonen.cc/blog/tags/App.net/">App.net</a>
</p>
</section>]]>
</description>
<link>https://pekonen.cc/blog/2015/10/27/Why-we-cannot-have-nice-things.html</link>
<pubDate>Tue, 27 Oct 2015 14:59:00 +0200</pubDate>
<guid isPermaLink="true">https://pekonen.cc/b/20151027-NiceThings/</guid>
</item>

</channel>
</rss>
