<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Alexej Bondarenko</title><generator>teletype.in</generator><description><![CDATA[Alexej Bondarenko]]></description><image><url>https://teletype.in/files/47/e4/47e45e96-4268-406e-9119-486cc45cc5b5.jpeg</url><title>Alexej Bondarenko</title><link>https://teletype.in/@alexej.bondarenko</link></image><link>https://teletype.in/@alexej.bondarenko?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/alexej.bondarenko?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/alexej.bondarenko?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 19 Apr 2026 12:30:35 GMT</pubDate><lastBuildDate>Sun, 19 Apr 2026 12:30:35 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@alexej.bondarenko/installing-gitlab-group-runners</guid><link>https://teletype.in/@alexej.bondarenko/installing-gitlab-group-runners?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko</link><comments>https://teletype.in/@alexej.bondarenko/installing-gitlab-group-runners?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko#comments</comments><dc:creator>alexej.bondarenko</dc:creator><title>Installing GitLab Group Runners</title><pubDate>Sun, 10 Jan 2021 08:57:50 GMT</pubDate><category>Gitlab CI</category><description><![CDATA[In this post I would like to explain what I usually do to register a group runner. It is a very easy task, if you know the commands and the steps.]]></description><content:encoded><![CDATA[
  <p>In this post I would like to explain what I usually do to register a group runner. It is a very easy task, if you know the commands and the steps.</p>
  <p>Let’s examine the scenario first: We have different projects on GitLab in one group (for me, this group is named according to my company “ersocon”). For each project we would like to set up CI builds and run them. Of course, we could easily use our free runners which are provided by GitLab. But in this case we usually don’t know what kind of machine will run our build and we can reach RAM/CPU limits for bigger applications. As well, there is a limit of minutes that you can run for free per month.</p>
  <p>To overcome both limitations I prefer to go with a VM (DigitalOcean/Linode/ Scaleways, …) and install several group runners on this machine. In this post I will use a Debian distro with a pre-installed Docker and Docker-Compose Tool. Here are the steps to make it happen:</p>
  <p>First, we create a directory to persist the configuration file for the runner:</p>
  <pre>sudo mkdir -p /srv/docker/gitlab-runner-ersocon-group/config</pre>
  <p>The directory path is not very important here. Just I am using the <code>/srv/docker </code>folder for my application and name the application shared folder according to the name of the app.</p>
  <p>We will use this directory to register a new runner like this:</p>
  <pre> docker run --rm -it -v /srv/docker/gitlab-runner-ersocon-group/config:/etc/gitlab-runner gitlab/gitlab-runner register</pre>
  <p>For the installation you will need to go into your Group administration account on gitlab.com and copy the token which is displayed in the CI/Runner section for your group. The command will prompt for some details and register a new runner with a proper configuration file in the directory that we have created previously.</p>
  <p>We can use the configuration file now to create a new docker-compose.yml file with the following content:</p>
  <pre> version: &#x27;2&#x27;gitlab-runner-ersocon-group:    image: gitlab/gitlab-runner:latest    restart: always    container_name: gitlab-runner-ersocon-group    volumes:    - /srv/docker/gitlab-runner-ersocon-group/config:/etc/gitlab-runner    - /var/run/docker.sock:/var/run/docker.sock</pre>
  <p></p>
  <p>Now, when we execute <code>docker-compose up -d</code> we will have a nice runner, which is enabled for the whole group. It should now be visible in the Runners section in your projects on gitlab.com. For debugging you can omit the <code>-d</code> parameter or attach to the logs after starting up by running <code>docker-compose logs</code></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@alexej.bondarenko/dev-environments-with-direnv-and-nix</guid><link>https://teletype.in/@alexej.bondarenko/dev-environments-with-direnv-and-nix?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko</link><comments>https://teletype.in/@alexej.bondarenko/dev-environments-with-direnv-and-nix?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko#comments</comments><dc:creator>alexej.bondarenko</dc:creator><title>Dev environments with direnv and Nix</title><pubDate>Mon, 04 Jan 2021 13:22:10 GMT</pubDate><category>nix</category><description><![CDATA[With direnv you are able to configure development environments for your projects.
]]></description><content:encoded><![CDATA[
  <p>With <code>direnv</code> you are able to configure development environments for your projects.<br /></p>
  <h3>What does this mean?</h3>
  <p><br />Well, let&#x27;s say you have two projects that you maintain. One is using a Haskell/Yesod/Purescript and the other one a Haskell/Servant/Elm combination (the used frameworks are not relevant). </p>
  <p>The point is, you have different dependencies in each of your project. For instance, one obvious difference is Purescript and Elm. For each you will have a different approach how to compile the code. Furthermore you may have a different environment variables on how you configure the project. </p>
  <p>All sounds like it can be handled with nix only, right? Well, yes. But, <code>direnv</code> is the sherry on the cake. First, it enables us to define environment variables easier, second it can create this development environment for us automatically when we enter the directory of the project. And, we can as well implement a useful file watcher mechanism.<br /></p>
  <h3>Install and Activate direnv<br /></h3>
  <p>In this post I assume that you are either running NixOS or you have your nix environment already set up. </p>
  <p></p>
  <p>To install direnv we can use nix-env like this:</p>
  <pre>nix-env -iA nixpkgs.direnv</pre>
  <p></p>
  <p>Add direnv to your <code>bash</code> or <code>zsh</code> to be evaluated in <code>~/.bashrc</code></p>
  <pre>eval &quot;$(direnv hook bash)&quot;  # for bash
eval &quot;$(direnv hook zsh)&quot;   # for zsh</pre>
  <p></p>
  <p>To use <code>direnv</code> we can add a <code>.envrc</code> file to our project and allow direnv</p>
  <pre>touch .envrc
direnv allow</pre>
  <p></p>
  <h3>Adding Nix environment to your Project</h3>
  <p></p>
  <p>If you have no <code>shell.nix</code> file already in your project, you can create a sample shell.nix with the following content:</p>
  <pre># save this as shell.nix
{ pkgs ? import &lt;nixpkgs&gt; {}}:

pkgs.mkShell {
  nativeBuildInputs = [ pkgs.hello ];
}</pre>
  <p></p>
  <p>For linking nix and direnv there is a useful project called <a href="https://github.com/nix-community/nix-direnv" target="_blank">nix-direnv</a> which can be installed with nix-env as well:</p>
  <pre>nix-env -iA nixos.nix-direnv </pre>
  <p><br />After this installation we can add nix to direnv within our project:</p>
  <pre>echo &quot;use nix&quot; &gt;&gt; .envrc</pre>
  <p></p>
  <p>With this Set-up a <code>nix shell</code> with all defined dependencies will be loaded when you <code>cd</code> into your project. Happy coding!</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@alexej.bondarenko/sailfish-os-review</guid><link>https://teletype.in/@alexej.bondarenko/sailfish-os-review?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko</link><comments>https://teletype.in/@alexej.bondarenko/sailfish-os-review?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=alexej.bondarenko#comments</comments><dc:creator>alexej.bondarenko</dc:creator><title>Review of Sailfish OS 3</title><pubDate>Mon, 04 Jan 2021 10:36:44 GMT</pubDate><category>SailfishOS</category><description><![CDATA[Recently I checked for alternatives to the two big players (Apple and Google) in the mobile OS market. As one of the alternatives I decided to give Sailfish OS a try. Let's see how the OS fits my daily needs.]]></description><content:encoded><![CDATA[
  <p>Recently I checked for alternatives to the two big players (Apple and Google) in the mobile OS market. As one of the alternatives I decided to give Sailfish OS a try. Let&#x27;s see how the OS fits my daily needs.</p>
  <p>I bought the Sony Xperia XA2 Plus with the Sailfish OS which supports Android 8.1 Apps. But first, let&#x27;s see how I use my Phone:</p>
  <ul>
    <li>I check my mails approx. 50 times per day</li>
    <li>In the morning, I need to know the weather (since I go to work by bike)</li>
    <li>My main social app is WhatsApp (I don&#x27;t use Twitter, Instagram or Facebook very often, so I can live without or just with the web version)</li>
    <li>I use the browser to access several admin dashboards (for instance the one for this site) and as well to get information on stocks (Seeking Alpha) or other different news sites</li>
    <li>Furthermore I have a little daughter. I think half of my device storage is full of images and videos capturing nice moments regarding my little family. Let&#x27;s say I take 5 Images per day and from time to time one or two videos</li>
    <li>Of course, I watch videos and listen to music using my phone, nothing special here, right?</li>
  </ul>
  <p>I think those are the minimum requirements a Phone should have in 2021. So let&#x27;s see what Sailfish OS has to offer.</p>
  <p></p>
  <h3>Installation</h3>
  <p>The installation was (for me) quite easy. But I am as well used to Linux and I am a Developer myself. The whole process took approx. 20 minutes in total. <br />You need to buy Sailfish OS, download the files, unlock your device, flash the new system. I don&#x27;t want to go too much into details, since the step by step tutorial is very well written.<br />So, good job here!</p>
  <h3>Apps</h3>
  <p>What about WhatsApp for instance? It doesn&#x27;t exist. So I tried to enable the (beta) Android Support and install it from the Aptoide market. Which worked! It&#x27;s a bit choppy, but it works. Or let&#x27;s say, it&#x27;s installed? You can clearly see that the app is not running as smooth as on an Android device. And by just using it for 20 minutes, you can tell that there are heavy issues with Android apps. They freeze very often or reject to accept any input (no scrolling, no text input). I found myself closing and restarting apps very frequently.</p>
  <h3>Web Browser</h3>
  <p>I was super happy to see a native web browser. So of course I gave it a try. Unfortunately the first site I checked, was broken left and right. This browser clearly ignores any standards in HTML and CSS. on top, it messes up JavaScript and CSS animation pretty bad. So, this is not usable like this, i&#x27;m sorry. Why developing a new Browser from scratch anyway? Why didn&#x27;t the company just pay developers to port Firefox to their OS? This would be much more efficient. </p>
  <p>Anyway, I needed a browser which works. So, again, let&#x27;s fall back on Android apps. I installed Firefox / Firefox Focus. And again, they work, yes. But they are slow and sometimes they just pass out, like the WhatsApp app.</p>
  <h3>Media</h3>
  <p>Using the camera was easy. The native has not so many Features as my previous phone, but since I never use those features, I could live without. So I took some photos, videos and checked if everything worked. It was very well done. So, as the second step, I decided to install a microSD card to extend the internal storage. The Xperia XA2 Plus shippes with 32GB. After installation I had only 16GB left. 16GB in 2019 is nothing! So I bought a 400GB microSD card (the maximum amount the phone can handle) and installed it. You need to format and mount the new card. Afterwards you can configure your camera app to put all images and videos on this card. PRETTY COOL!</p>
  <p>Yeah... Not really. As soon as you switch. Your Android apps will not be able to see those photos and videos anymore. So, forget about attaching pictured somewhere in Android apps (WhatsApp, Firefox, ...). Pretty sad story. I&#x27;m sure you can fix it somehow, my giving permissions and tweak around. For me, it was just too much of a hassle, sorry.</p>
  <h3>Mails</h3>
  <p>I have to say, I was pretty fed up at this point but still motivated to stick to the phone and find workarounds. So I thought, &quot;Let&#x27;s configure the mail client&quot;. At Ersocon, we use Zoho Mail. So entered my credentials, all configuration data for IMAP4 and SMTP and.... Connection Timeout. I checked again, password correct, email address correct, all configurations correct. And.... Connection Timeout. I switched off any 2FA for my email account, tried again, and... Connection Timeout. You don&#x27;t know why, and you don&#x27;t know how to fix it. The mail app is just useless at this point. So, the only solution was to install the Android Mail Client App. It &quot;works&quot;. Or, let&#x27;s say &quot;it starts&quot; and you can read your mails.</p>
  <p></p>
  <h3>The final KnockOut</h3>
  <p>To be honest, I forgot to mention one key point at the beginning. I use my phone for banking as well, to generate TANs or to confirm payments. Of course those app do not exist in the Jolla Store. But you still can use the Android versions... no? NO! Most of them not even start. They crash directly after startup. And this is something which makes this OS unusable as my primary Phone. It&#x27;s really sad, because I really loved the idea to no use Android or iOS which send 50 request per hour to their main companies (Apple and Google/Alphabet).</p>
  <p></p>
  <h2>Conclusion</h2>
  <ul>
    <li> Web browser: Android works with freezes and low performance, Native is not usable</li>
    <li>WhatsApp: Andoid version works with freezes and need to restart from time to time</li>
    <li>Media: Works!</li>
    <li>Mails: Total fail, not usable here</li>
  </ul>
  <p>I will keep the phone anyway, since it&#x27;s relatively cheap and in the hope of improvements made by the developers of Sailfish OS. The OS itself is really great, but it misses apps, good apps. I think this will be the key to the success of this OS.<br /></p>

]]></content:encoded></item></channel></rss>