<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Heidar Bernhardsson]]></title><description><![CDATA[Writer for Semaphore and ButterCMS. Previously Staff Engineer at Deliveroo and in technical leadership at various public sector organisations.]]></description><link>https://heidarb.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1734729563586/c481230e-de7f-4e0a-88a1-02ba76c9be34.png</url><title>Heidar Bernhardsson</title><link>https://heidarb.com</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 11:58:39 GMT</lastBuildDate><atom:link href="https://heidarb.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Own Your Calendar & Contacts With OpenBSD, Baïkal, and FOSS Android]]></title><description><![CDATA[In this tutorial I explain how I use Baïkal running on OpenBSD to host my own calendar and address book, and how to consume them with FOSS apps on Android.
Feel free to skip the introduction if you just want to dive straight into the tutorial, it's j...]]></description><link>https://heidarb.com/own-your-calendar-contacts-with-openbsd-baikal-and-foss-android</link><guid isPermaLink="true">https://heidarb.com/own-your-calendar-contacts-with-openbsd-baikal-and-foss-android</guid><category><![CDATA[baikal]]></category><category><![CDATA[openbsd]]></category><category><![CDATA[Android]]></category><category><![CDATA[FOSS]]></category><dc:creator><![CDATA[Heidar Bernhardsson]]></dc:creator><pubDate>Sat, 14 May 2022 21:18:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1734730789382/2dc5215c-d316-4686-8fa8-0e156b848486.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this tutorial I explain how I use Baïkal running on OpenBSD to host my own calendar and address book, and how to consume them with FOSS apps on Android.</p>
<p>Feel free to skip the introduction if you just want to dive straight into the tutorial, it's just there to provide context for those who are new to these topics.</p>
<h2 id="heading-introduction">Introduction</h2>
<p>Before I got back into self hosting, I was using Hey as an email provider. They do not provide a calendar, so I was still using Google calendar. To get away from Google, I just wanted a service that would just host my calendar for me, nothing else.</p>
<p>Now this was a while ago, but at least back then there were just no sane options. There was a plethora of bloated calendar products and startups, but none of them just offered a simple hosted calendar, incredible. Maybe I was looking for the wrong things?</p>
<p>The only other thing I found were email services that also provide a calendar, but I only wanted a calendar.</p>
<p>Now that I'm self hosting again, I thought surely this is a solved problem without having to run NextCloud or get a calendar as a module of some big and complex software. Enter <a target="_blank" href="https://sabre.io/baikal/">Baïkal</a>.</p>
<h3 id="heading-what-is-baikal">What is Baïkal?</h3>
<p>Baïkal is a lightweight CalDAV+CardDAV server. It's written in PHP and uses MySQL or SQLite as a database.</p>
<p>Baïkal is a great example of a small and simple piece of software which does one thing and does it well. Well, it does two things, but it does them both really well.</p>
<p>What it boils down to is that we can self host a Baïkal server that allows you to manage calendars and address books using CalDAV and CardDAV via HTTP.</p>
<h4 id="heading-what-are-caldav-and-carddav">What are CalDAV and CardDAV?</h4>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/CalDAV">CalDAV</a> is an internet standard used to represent and communicate calendar data. <a target="_blank" href="https://en.wikipedia.org/wiki/CardDAV">CardDAV</a> is the same thing but for contacts.</p>
<p>CalDAV and CardDAV are both implemented on top of WebDAV (Web Distributed Authoring and Versioning) which itself is an extension of HTTP. I'm not going to get into more details about this in this post as it's not really relevant.</p>
<h3 id="heading-why-openbsd">Why OpenBSD?</h3>
<p>In case you've not been exposed to <a target="_blank" href="https://www.openbsd.org/index.html">OpenBSD</a> before, it's an operating system focused on security and correctness, amongst other things.</p>
<p>It provides a really simple, batteries included way to host something like Baïkal. I run my OpenBSD machines on Vultr (<a target="_blank" href="https://www.vultr.com/?ref=9119489">affiliate link</a>, <a target="_blank" href="https://www.vultr.com">non-affiliate link</a>). They make it super easy to spin up a VPS with OpenBSD and the prices are great.</p>
<h3 id="heading-foss-android">FOSS Android?</h3>
<p>By FOSS Android I just mean a free (as in freedom (and beer in this case)) and open source software calendar and contacts applications for Android. I use the ones from <a target="_blank" href="https://simplemobiletools.com/">Simple Mobile Tools</a>, they are really good, but more on this later.</p>
<p>If you're on iOS, you can still follow this tutorial and skip the Android specific steps. As for iOS calendar applications, I guess you can use the built in one, I'm not sure what FOSS calendar applications are available for iOS.</p>
<h2 id="heading-tutorial">Tutorial</h2>
<p>We'll start by getting an OpenBSD VPS up and running, then we'll install and configure Baïkal on it. Once everything is up and running we'll install and configure Android applications to talk to our server.</p>
<h3 id="heading-setting-up-openbsd">Setting up OpenBSD</h3>
<p>I'll be starting from a clean install of OpenBSD. I get there by deploying a new VPS on Vultr, but it should be the same as installing one yourself.</p>
<p>OpenBSD has pretty sane defaults, so I'm not going to be making any configuration changes. Create a user for yourself and setup credentials to SSH to the server, then things are good to go to install Baïkal.</p>
<h3 id="heading-setting-up-baikal">Setting up Baïkal</h3>
<p>Start by install Baïkal:</p>
<pre><code class="lang-bash">pkg_add baikal
</code></pre>
<p>Before configuring Baïkal, you probably want to sort out an SSL certificate for your web server. It's very quick and painless to do, the <a target="_blank" href="https://www.openbsdhandbook.com/services/webserver/ssl/">OpenBSD Handbook</a> has great documentation for this.</p>
<p>Next, let's setup httpd to point to Baïkal. Thankfully the OpenBSD README for Baïkal has all the steps needed for setup. Here's what my <code>httpd.conf</code> looks like:</p>
<pre><code class="lang-nginx"><span class="hljs-attribute">server</span> <span class="hljs-string">"calendar.baak6.com"</span> {
        <span class="hljs-attribute">listen</span> <span class="hljs-literal">on</span> * tls port <span class="hljs-number">443</span>

        tls {
                <span class="hljs-attribute">certificate</span> <span class="hljs-string">"/etc/ssl/calendar.baak6.com.fullchain.pem"</span>
                key <span class="hljs-string">"/etc/ssl/private/calendar.baak6.com.key"</span>
        }

        location <span class="hljs-string">"/.well-known/ca*dav"</span> {
                <span class="hljs-attribute">block</span> return <span class="hljs-number">301</span> <span class="hljs-string">"http://calendar.baak6.com/baikal/dav.php"</span>
        }

        location <span class="hljs-string">"/baikal/*.php*"</span> {
                <span class="hljs-attribute">root</span> <span class="hljs-string">"/baikal/html"</span>
                request strip <span class="hljs-number">1</span>
                fastcgi socket <span class="hljs-string">"/run/php-fpm.sock"</span>
                directory index index.php
        }

        location <span class="hljs-string">"/baikal/*"</span> {
                <span class="hljs-attribute">root</span> <span class="hljs-string">"/baikal/html"</span>
                request strip <span class="hljs-number">1</span>
                directory index index.php
        }
}

server <span class="hljs-string">"calendar.baak6.com"</span> {
        <span class="hljs-attribute">listen</span> <span class="hljs-literal">on</span> * port <span class="hljs-number">80</span>
        location <span class="hljs-string">"/.well-known/acme-challenge/*"</span> {
                <span class="hljs-attribute">root</span> <span class="hljs-string">"/acme"</span>
                request strip <span class="hljs-number">2</span>
        }
}
</code></pre>
<p>The first server block makes Baïkal available at <code>https://calendar.baak6.com/baikal/</code> (made up URL for this tutorial) via HTTPS and the second server block just redirects any non-HTTPS traffic to HTTPS.</p>
<p>Next up you have the choice between MySQL and SQLite. I use SQLite since it is a lot simpler and suitable for my needs. Install the PHP module for SQLite, when it asks for a version, pick the one that matches your PHP version.</p>
<pre><code class="lang-bash">pkg_add php-pdo_sqlite
</code></pre>
<p>Next up we need to enable SQLite in PHP. Open up <code>/etc/php-8.0.ini</code> and uncomment (remove the <code>;</code>) the following line:</p>
<pre><code class="lang-ini"><span class="hljs-comment">;extension=pdo_sqlite</span>
</code></pre>
<p>Now enable and start PHP and httpd:</p>
<pre><code class="lang-bash">rcctl <span class="hljs-built_in">enable</span> php80_fpm
rcctl start php80_fpm
rcctl <span class="hljs-built_in">enable</span> httpd
rcctl start httpd
</code></pre>
<p>Now you should be able to navigate to <code>https://calendar.baak6.com/baikal/admin/</code> (replace with your server's hostname of course) and complete the setup, create an account, etc.</p>
<p>I have an admin account for managing the server and a separate user account for myself. Once you've created a user account for yourself in Baïkal you can start using managing your calendar and contacts with a client. I'll demonstrate how to do this with FOSS Android applications.</p>
<h3 id="heading-setting-up-android">Setting up Android</h3>
<p>In this section we'll go through installing and setting up Simple Calendar and Simple Contacts, and having them use your Baïkal server using <a target="_blank" href="https://www.davx5.com/">DAVx⁵</a>.</p>
<p>I use <a target="_blank" href="https://f-droid.org/">F-Droid</a> to install these applications, but you might be able to find them on other platforms.</p>
<h4 id="heading-setting-up-davx">Setting up DAVx⁵</h4>
<p>On Android the OS normally takes care of abstracting things like calendar and contacts from your applications. This is done under <code>Passwords &amp; Accounts</code> in settings and depending on your device and what applications you have, certain platforms will be available, like Google, Facebook, etc.</p>
<p>To make our Baïkal server available, we need to install DAVx⁵ and point it to our server. It will make the calendars and contacts on whatever you point it to available on your phone, that's all it does.</p>
<p>So head to F-Droid and find <a target="_blank" href="https://f-droid.org/en/packages/at.bitfire.davdroid/">DAVx⁵</a>, then install it.</p>
<p>Once it's installed, open it up and add an account. Select <code>Login with URL and user name</code>, then put in your username and password.</p>
<p>For the base URL, put in <code>https://calendar.baak6.com/baikal/dav.php/</code>, replacing the hostname with your server of course.</p>
<p>Once you authenticate, you should see your calendars under the <code>CALDAV</code> tab and your address books under <code>CARDDAV</code>. There you can choose which ones to enable, if you created multiple, and you can also create, delete, and update them.</p>
<p>In case you run into trouble with URLs in this step (I recall that happening to me), here are example URLs for a calendar and address book on my setup. My calendar is just called <code>calendar</code> and my address book is called <code>contacts</code>.</p>
<pre><code class="lang-bash">https://calendar.baak6.com/baikal/dav.php/calendars/baak6/calendar
https://calendar.baak6.com/baikal/dav.php/addressbooks/baak6/contacts
</code></pre>
<p>Now calendars and contacts from your Baïkal server should be available on your Android device.</p>
<h4 id="heading-using-simple-calendar-amp-simple-contacts">Using Simple Calendar &amp; Simple contacts</h4>
<p>Go back to F-Droid and install <a target="_blank" href="https://f-droid.org/en/packages/com.simplemobiletools.contacts.pro/">Simple Contacts</a> and <a target="_blank" href="https://f-droid.org/en/packages/com.simplemobiletools.calendar.pro/">Simple Calendar</a>.</p>
<p>Then open them up and your calendar events and address book contacts should be visible to you.</p>
<p>Now your setup is complete, start using your new calendar and address book. I manually migrated my data over, I'll leave it up to you to figure that part out.</p>
<p>But, before you leave, setup a backup process for your server. At least back up the SQLite database regularly if nothing else.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this tutorial we went through setting up Baïkal on OpenBSD, configuring DAVx⁵ to connect to Baïkal and using Simple Contacts and Simple Calendar to view your address books and calendars.</p>
<p>Now you have full control over your calendar and address book data and a fully end to end open source experience (assuming you run a FOSS Android based OS).</p>
]]></content:encoded></item><item><title><![CDATA[Book Review: Your Money or Your Life]]></title><description><![CDATA[Your Money or Your Life is a book about how to build a healthier relationship with money and how to improve your personal finances. It focuses on reducing excess consumption, and encouraging frugality while also providing steps to gain financial inde...]]></description><link>https://heidarb.com/book-review-your-money-or-your-life</link><guid isPermaLink="true">https://heidarb.com/book-review-your-money-or-your-life</guid><category><![CDATA[books]]></category><category><![CDATA[finance]]></category><dc:creator><![CDATA[Heidar Bernhardsson]]></dc:creator><pubDate>Thu, 28 Apr 2022 22:26:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1734732127593/2f2cc1ba-7422-4d15-99e3-805f43290068.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Your Money or Your Life is a book about how to build a healthier relationship with money and how to improve your personal finances. It focuses on reducing excess consumption, and encouraging frugality while also providing steps to gain financial independence (FI).</p>
<p>But perhaps more importantly, it helps you understand that when you spend money you are spending the time (life) you used to earn that money. It also helps you rebalance and to look at work as just work, rather than the root of your identity as a person and a source of self worth.</p>
<h2 id="heading-book-summary">Book Summary</h2>
<p>The book is split into nine different parts called the 9-Step Program. The idea is that you follow these steps and you'll be in control of your finances and on the way to financial independence.</p>
<ul>
<li><p>Step 1: Figure out your net worth.</p>
</li>
<li><p>Step 2: Figure out your real hourly wage, considering work related expenses.</p>
</li>
<li><p>Step 3: Track all income and expenses and calculate how many hours of your life you spent on expenses.</p>
</li>
<li><p>Step 4: Look at the output from step 3 and ask yourself if it was worth it.</p>
</li>
<li><p>Step 5: Create a chart to track income and expenses over time.</p>
</li>
<li><p>Step 6: Minimize your spending.</p>
</li>
<li><p>Step 7: Maximize your income.</p>
</li>
<li><p>Step 8: Track your investment income on your chart.</p>
</li>
<li><p>Step 9: Investing for FI.</p>
</li>
</ul>
<h2 id="heading-opinion">Opinion</h2>
<p>It all might sound rather simple, but I particularly liked how this book makes you compute a real hourly wage that you think of as your life energy, and then using that to think about expenses in terms of time.</p>
<p>I also really liked how it emphasizes that work is for income. If you get satisfaction from your job, then great, but it's probably not healthy to draw all your self-esteem and identity from your job.</p>
<p>The book has a running theme of sustainability as well. The authors recognize that we live in a society focused on over consumption and that it is unsustainable. But more importantly, consumption doesn't really make us happy.</p>
<p>Step 4 is all about looking at where your money has gone and asking yourself if it was worth trading hours of your life for whatever you spent it on, was it really worth it? Did it bring you fulfillment?</p>
<p>My main criticism of this book is probably that is doesn't talk much about leveraging debt, it only talks about paying debt.</p>
<h2 id="heading-recommendation">Recommendation</h2>
<p>Despite practicing a lot of what this book teaches prior to reading it, I really enjoyed this book and I found a lot of little nuggets of wisdom in it. I will definitely be recommending it to friends.</p>
<p>I think this book will be most useful for people who don't already have their personal finances in order, and are looking for a step by step guide to do that.</p>
<p>The last chapter is about investing conservatively for IF and I think reading the Intelligent Investor would be a great fit once you finish this book.</p>
]]></content:encoded></item><item><title><![CDATA[Migrating email from Gmail to Maildir (Dovecot)]]></title><description><![CDATA[Migrating email from Gmail to Maildir (Dovecot)
In this post I explain how I moved my email from Gmail to my own mail server
running Dovecot with the emails in Maildir format.
Introduction
This is not the only way to do this. This might not even be t...]]></description><link>https://heidarb.com/migrating-email-from-gmail-to-maildir-dovecot</link><guid isPermaLink="true">https://heidarb.com/migrating-email-from-gmail-to-maildir-dovecot</guid><dc:creator><![CDATA[Heidar Bernhardsson]]></dc:creator><pubDate>Wed, 23 Feb 2022 22:26:23 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-migrating-email-from-gmail-to-maildir-dovecot">Migrating email from Gmail to Maildir (Dovecot)</h1>
<p>In this post I explain how I moved my email from Gmail to my own mail server
running Dovecot with the emails in Maildir format.</p>
<h2 id="heading-introduction">Introduction</h2>
<p>This is not the only way to do this. This might not even be the best way, but
it worked for me and I had full control over each step, as well as certainty
that the mails were imported in a way that made them (almost) impossible to
differentiate from emails already on the server.</p>
<p>Given how specific this topic is, I am not going to give an introduction to the
concepts referenced in this post.</p>
<h3 id="heading-the-maildir-format">The Maildir Format</h3>
<p>I highly recommend reading up on the Maildir format to understand the
directories and what each part of the filename does. Dovecot have a good
explanation on <a target="_blank" href="https://doc.dovecot.org/admin_manual/mailbox_formats/maildir/">their website</a>
(<a target="_blank" href="https://web.archive.org/web/20211202140410/https://doc.dovecot.org/admin_manual/mailbox_formats/maildir/">archive link</a>).</p>
<p>In case you do not, I do briefly explain the bits that are relevant to the
migration.</p>
<h3 id="heading-note-about-imap-method">Note About IMAP Method</h3>
<p>There is another way documented on Dovecot's website on how to do this with
<code>doveadm</code> and IMAP. I did not try this.</p>
<h3 id="heading-make-a-backup">Make a Backup</h3>
<p>Before doing anything, make a backup of the Maildir on your server, I take no
responsibility for anything going wrong. I found most of this process quite
scary, but knowing it is easy to extract a tarball to restore a backup brings
peace of mind.</p>
<h2 id="heading-exporting-from-gmail">Exporting From Gmail</h2>
<p>The first step of this journey is to get our emails out of Gmail. Google makes
this easy with their <a target="_blank" href="https://google.com/takeout">Takeout</a> feature. It lets you
download your emails in the mbox format, one file per Gmail category.</p>
<p>Head over there and export your emails, I will not explain the exact steps here
as it is fairly straightforward and it might change with time. If the above
link is broken, Google (or duck) "Google Takeout".</p>
<p>For the remainder of the steps, I recommend doing one mbox file at a time.</p>
<h2 id="heading-converting-to-maildir">Converting to Maildir</h2>
<p>There is a script called <a target="_blank" href="https://github.com/dovecot/tools/mb2md.pl">mb2md.pl</a> 
currently available on <a target="_blank" href="https://github.com/dovecot/tools/">Dovecot's GitHub tools section</a>.</p>
<p>This is an unmaintained script and can be found in various places online. It is
also available in some Linux distribution packages. As of writing this the
easiest way is to grab it off the links above.</p>
<p>All this script does is convert an mbox file to Maildir. I had to look at the
source to figure out how to use it. The top of the file has a pretty useful
section of comments explaining everything.</p>
<p>The main thing to be aware of is that the directories you pass in are relative
to your user's home directory. All I needed was to give it a source and
destination directory, and I threw in <code>-R</code> to make it recursively search
through the source folder.</p>
<p>I created a folder called <code>input</code> where I put my mbox file, and an empty folder
called <code>output</code> for the script to place the Maildir files. Then I ran the
script.</p>
<pre><code>$ ./mb2md.pl -s downloads/gmail/Takeout/input -R -d \
downloads/gmail/Takeout/ouput
</code></pre><h2 id="heading-preparing-maildir-files">Preparing Maildir Files</h2>
<p>Now we have our emails as Maildir files, there are a few things missing. The
conversion script does not provide us with any size attributes normally present
in Maildir email files, these are the S and W attributes. Normally, Maildir
files have the server name in them as well, whereas the script gives us a
placeholder, <code>mbox</code>.</p>
<p>We are also missing the category which is the number towards the end of the
file, this (usually) is <code>2</code> in my case. Given the emails are old, you will
probably want them marked as read, which is done with an <code>S</code> at the end of the
filename.</p>
<p>Finally, all the emails will have the UNIX timestamp of the time you ran the
conversion script. This results in Dovecot serving you up the emails as if they
were received today (unless your client is smart enough maybe).</p>
<h3 id="heading-size-and-server-name-attributes">Size and Server Name Attributes</h3>
<p>There is a script on GitHub to add the <code>S</code> (size) attribute, but it does not
add <code>W</code> (wsize), so it is not ideal. I found the easiest way to fix this was
just to import the files to my mail server. It has the added bonus of setting
the correct server name as well.</p>
<p>I realised while writing this that you could potentially skip the previous step
and just import the mbox file here (replace <code>maildir:</code> with <code>mbox:</code> in the
command). I have not tested this though.</p>
<p>The key here is to tell the importer to put the imported emails in a separate
mailbox in your Maildir, so you can easily move them out. This should not
affect the rest of your emails.</p>
<p>I placed my emails on the root of the filesystem and changed the ownership to
the user used by Dovecot. Then I ran the import.</p>
<pre><code># doveadm -D <span class="hljs-keyword">import</span> -u &lt;EMAILUSER&gt; maildir:<span class="hljs-regexp">/gmail/</span>NewArchived/ \
NewArchived ALL
</code></pre><p>This imported all of my emails into a new mailbox in my Maildir called
<code>NewArchived</code>. Once it finished I moved the folder (<code>.NewArchived</code> for me) out
of my Maildir to my home directory.</p>
<p>I then made a tarball of the emails and imported them to my laptop, then
extracted them, ready for the next step.</p>
<h3 id="heading-category-and-read-attributes">Category and Read Attributes</h3>
<p>For this step we need to add <code>:2,S</code> to all the email files in the directory
called <code>new</code>. The emails in the <code>cur</code> folder will already have this.</p>
<p>I had a lot of emails and I have an old laptop, so I just kicked off a <code>find |
xargs</code> and went to bed. You could also achieve this with <code>rename</code>, but there
are two flavours of it.</p>
<pre><code>$ find . -type f | xargs -I <span class="hljs-string">'{}'</span> mv <span class="hljs-string">'{}'</span> <span class="hljs-string">'{}'</span>:<span class="hljs-number">2</span>,S
</code></pre><p>Once this finishes, move all the files from <code>new</code> into <code>cur</code>, all your mails
should be in this folder now, you can get rid of everything else except this
folder at this point.</p>
<h3 id="heading-timestamp-attribute">Timestamp Attribute</h3>
<p>To fix the timestamps on our emails, there is another script we need to run.
It is called <a target="_blank" href="https://gist.githubusercontent.com/mwodz/ceba436e4590073db61930551cba9ec1/raw/7ddc95592563ae5b83366bea22cd35ca5e12c01e/maildir-timestamp-fix.sh">maildir-timestamp-fix.sh</a>
available as a <a target="_blank" href="https://gist.github.com/mwodz/ceba436e4590073db61930551cba9ec1">GitHub Gist</a>.</p>
<p>I downloaded it an ran it on the cur folder. This might take a while if you
have a lot of emails.</p>
<pre><code>$ ./fix-timestamps.sh cur/
</code></pre><h2 id="heading-importing-files-to-dovecot">Importing files to Dovecot</h2>
<p>I wanted to import all the emails from Gmail into an existing mailbox on my
server, rather than a new one, so that is what I will describe here.</p>
<p>I made a tarball from the <code>cur</code> folder from the previous step and used <code>scp</code> to
get it on to my mail server. I then extracted it on my server and changed the
ownership of all the files to the user Dovecot runs as.</p>
<p>Then I moved all the files from the <code>cur</code> folder into the <code>cur</code> folder of the
mailbox I wanted the files to end up in, <code>.Archive</code> in my case.</p>
<h3 id="heading-recreating-dovecot-index">Recreating Dovecot index</h3>
<p>I realised that emails were not showing up properly on my client however. Some
new mails were not showing up despite being on the server and some general
weirdness was going on. </p>
<p>To fix this all I did was delete the Dovecot files in the <code>.Archive</code> folder.</p>
<pre><code># rm dovecot*
</code></pre><h2 id="heading-conclusion">Conclusion</h2>
<p>If you followed the steps, all your emails should now load into your client in
the correct order, both old and new. If you did not follow it step by step,
then I hope at least the information and methods used were helpful in some way.</p>
]]></content:encoded></item><item><title><![CDATA[Book Review: Why We Eat (Too Much)]]></title><description><![CDATA[Book Review: Why We Eat (Too Much)
Why We Eat (Too Much) is a book about the science of appetite, written by NHS
bariatric surgeon Dr Andrew Jenkinson. I see it as a very red-pilled take on
nutrition and why we are experiencing an obesity epidemic.
B...]]></description><link>https://heidarb.com/book-review-why-we-eat-too-much</link><guid isPermaLink="true">https://heidarb.com/book-review-why-we-eat-too-much</guid><dc:creator><![CDATA[Heidar Bernhardsson]]></dc:creator><pubDate>Sun, 06 Feb 2022 20:47:37 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-book-review-why-we-eat-too-much">Book Review: Why We Eat (Too Much)</h1>
<p>Why We Eat (Too Much) is a book about the science of appetite, written by NHS
bariatric surgeon Dr Andrew Jenkinson. I see it as a very red-pilled take on
nutrition and why we are experiencing an obesity epidemic.</p>
<h2 id="heading-book-summary">Book Summary</h2>
<p>There are three parts to the book.</p>
<h3 id="heading-part-1-lessons-in-energy">Part 1: Lessons In Energy</h3>
<p>The first part of the book is all about how our body controls weight. It starts
by debunking the idea of calories in and calories out being the main factor
affecting our weight. It's also done in a way that is incredibly obvious.</p>
<p>The book then goes on to explain what does actually control our weight, how our
metabolism changes, and how our appetite works and normally outweighs our free
will.</p>
<h3 id="heading-part-2-lessons-in-obesogenics">Part 2: Lessons In Obesogenics</h3>
<p>In part two we learn why nutritional science is for the most part harmful,
based on studies paid for by food companies with an agenda. It talks about how
sugar is a drug and how insulin affects our weight.</p>
<p>The most interesting and potentially most controversial part of the book is
also in this part, where it explains how important the ratio of omega-3 and
omega-6 fats in our bodies is.</p>
<p>The theory put forward is that obesity is a deficiency disease, caused by a too
high ratio of omega-6 in our cells, compared to omega-3. While the theory makes
a lot of sense, there's a lack of studies on humans on the subject.</p>
<h3 id="heading-part-3-blueprint-for-a-healthier-weight">Part 3: Blueprint For a Healthier Weight</h3>
<p>In the third and final part of the book it explains how to lose weight without
going on a diet. Instead the book suggests to eat real food cooked at home from
scratch, resting more, and making sure to do muscle training.</p>
<h2 id="heading-opinion">Opinion</h2>
<p>I found this book incredibly interesting. A lot of the topics and ideas it
talks about are backed by good science, referencing papers and studies. The
author has more experience than most working with obese patients, giving him
unique insight into the issue.</p>
<p>It talked about something I have always thought about, that our modern diet is
composed of a lot of highly processed, unnatural foods that we did not evolve
to eat, causing all kinds of health problems.</p>
<p>I think it is important to treat some of the book like any other information,
with a grain of salt. That said, I think all the ideas presented make sense and
I applaud the author's courage to introduce them.</p>
<h2 id="heading-recommendation">Recommendation</h2>
<p>I highly recommend reading this book, regardless of your weight. I think it
introduces some good ideas which anyone can incorporate into their life. I sure
have.</p>
]]></content:encoded></item><item><title><![CDATA[Differences Between Quantitative, Qualitative, Objective and Subjective Data]]></title><description><![CDATA[Differences Between Quantitative, Qualitative, Objective and Subjective Data
Qualitative data and quantitative data refer to different kinds of data and
originate from statistics. Both of these types of data can be subjective or
objective. Neither is...]]></description><link>https://heidarb.com/differences-between-quantitative-qualitative-objective-and-subjective-data</link><guid isPermaLink="true">https://heidarb.com/differences-between-quantitative-qualitative-objective-and-subjective-data</guid><dc:creator><![CDATA[Heidar Bernhardsson]]></dc:creator><pubDate>Sat, 18 Oct 2014 20:03:13 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-differences-between-quantitative-qualitative-objective-and-subjective-data">Differences Between Quantitative, Qualitative, Objective and Subjective Data</h1>
<p><em>Qualitative</em> data and <em>quantitative</em> data refer to different kinds of data and
originate from statistics. Both of these types of data can be <em>subjective</em> or
<em>objective</em>. Neither is exclusive to the other.</p>
<p><strong>Subjectivity</strong> is used to refer to the condition of being a subject; the
quality of a subject’s perspective, experiences, feelings, beliefs, and desires.
Subjective information is one person’s opinion.</p>
<p><strong>Objectivity</strong> is the idea that scientists, in attempting to uncover truths
about the natural world, must aspire to eliminate personal biases, a priori
commitments, emotional involvement, etc.</p>
<p><strong>Quantitative</strong> data comes from the word quantity, indicating amount. It is a
measure of something, number, size, etc.</p>
<p><strong>Qualitative</strong> data comes from the word quality. Indicates a description of
something. It focuses on the subject’s properties, characteristics, features,
etc.</p>
<h2 id="heading-examples">Examples</h2>
<p><strong>Objective, Quantitative:</strong> “The chip speed of my computer is 2 GHz”<br /><strong>Subjective, Quantitative:</strong> “On a scale of 1–10, my computer scores 7 in terms
of its ease of use”<br /><strong>Objective, Qualitative:</strong> “Yes, I own a computer”<br /><strong>Subjective, Qualitative:</strong> “I think computers are too expensive”</p>
]]></content:encoded></item></channel></rss>