<?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" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[In my mind]]></title><description><![CDATA[from my mind to yours]]></description><link>https://carl.cedergren.me/</link><image><url>https://carl.cedergren.me/favicon.png</url><title>In my mind</title><link>https://carl.cedergren.me/</link></image><generator>Ghost 5.31</generator><lastBuildDate>Sat, 18 Apr 2026 12:54:22 GMT</lastBuildDate><atom:link href="https://carl.cedergren.me/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Smooth Calendar 2]]></title><description><![CDATA[<p>So, last week finally saw there release of the new version of smooth calendar, and its quite a lot of work after the release to try to please the users. It&apos;s quite interesting to see how people react to your work, to changes that you do and to</p>]]></description><link>https://carl.cedergren.me/smooth-calendar-2/</link><guid isPermaLink="false">640713244c4770a9c1d2db21</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Tue, 07 Mar 2023 10:41:19 GMT</pubDate><content:encoded><![CDATA[<p>So, last week finally saw there release of the new version of smooth calendar, and its quite a lot of work after the release to try to please the users. It&apos;s quite interesting to see how people react to your work, to changes that you do and to the need for them to do some work on their own.</p><p>The large majority of the users seems super happy to finaly get an update and to see that the application is alive, but they are sadly drowned out by all the entitled people who are disappointed because something has change or they just haven&apos;t understood how it works in the new version. Its fascinating how they choose to express this, seeing that it is an app that is free for all, that I do in my spare time for my own needs, and that I then choose to share with the world.</p><p>As always, I try to just work through it and help people with the issues they are experiencing, no matter in what terms they choose to express themselves, but at the same time it would save me time that I could use to continue the development if people just tried to solve the issues on their own, google it, read the documentation on this site, read the comments etc.</p>]]></content:encoded></item><item><title><![CDATA[Smooth Calendar 2.0.0-beta2]]></title><description><![CDATA[<p>Beta 2 of the 2.0.0 release is out, changes are:</p><ul><li>Enabled settings for text style</li><li>Removed broken layout preview</li><li>Added some error handling for user adding broken date/time formats</li><li>Changed minimum SDK level to 19</li></ul>]]></description><link>https://carl.cedergren.me/smooth-calendar-2-0-0-beta-2/</link><guid isPermaLink="false">637b9808e1b5d07574cc7c35</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Mon, 21 Nov 2022 15:24:43 GMT</pubDate><content:encoded><![CDATA[<p>Beta 2 of the 2.0.0 release is out, changes are:</p><ul><li>Enabled settings for text style</li><li>Removed broken layout preview</li><li>Added some error handling for user adding broken date/time formats</li><li>Changed minimum SDK level to 19</li></ul>]]></content:encoded></item><item><title><![CDATA[Smooth Calendar 2.0.0-beta1]]></title><description><![CDATA[<p>So, I got quite a lot of work done on the Smooth Calendar rewrite this week, and I will release the first beta after the weekend to the beta users on Google play.</p><p>Almost all of the basic functionality is in place and I feel that it is enough for</p>]]></description><link>https://carl.cedergren.me/smooth-calendar-2-0-beta1/</link><guid isPermaLink="false">6364a919e1b5d07574cc7c05</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Fri, 04 Nov 2022 06:05:10 GMT</pubDate><content:encoded><![CDATA[<p>So, I got quite a lot of work done on the Smooth Calendar rewrite this week, and I will release the first beta after the weekend to the beta users on Google play.</p><p>Almost all of the basic functionality is in place and I feel that it is enough for a release, where the last features will be added in a upcoming update. The following features are right now missing but will be added:</p><ul><li>The option to change the order of the items in each event</li><li>The option to change the style of the event text</li><li>The option to select what application is launched when touching the widget</li></ul><p>I have also decided that some features will no be returning as follows:</p><ul><li>The option to have different settings for portrait and horizontal</li><li>The option to set a custom image as the background</li><li>The option to set a custom image as the date icon</li><li>The am/pm option (it can still be configured via the time format option, its just the setting that has been removed)</li></ul><p>The following new features are also planned:</p><ul><li>Support for tasks / reminders</li><li>Support for different calendar providers</li><li>New options for the date icon (based on a vector version)</li><li>Scalable preview</li><li>Dynamic icon that shows the current date</li></ul><p>I have also decided to have all the features in the basic version, with the premium version just being a way for you to support the development. </p><p>That is all for now, stay tuned for the first beta release and hopefully for the first stable release soon.</p>]]></content:encoded></item><item><title><![CDATA[Caching in Ghost with nginx]]></title><description><![CDATA[<p>This site runs on <a href="https://ghost.org/">Ghost</a>, and i just updated it to the latest version. It is in turn served by <a href="https://www.nginx.com/">nginx</a> using a reverse proxy. Since this site is updated quite seldom a good cache strategy is needed, and this is handled by nginxs own cache function. This works great</p>]]></description><link>https://carl.cedergren.me/caching-in-ghost-with-nginx/</link><guid isPermaLink="false">6125e553dd246c771089f27c</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Wed, 25 Aug 2021 06:48:35 GMT</pubDate><content:encoded><![CDATA[<p>This site runs on <a href="https://ghost.org/">Ghost</a>, and i just updated it to the latest version. It is in turn served by <a href="https://www.nginx.com/">nginx</a> using a reverse proxy. Since this site is updated quite seldom a good cache strategy is needed, and this is handled by nginxs own cache function. This works great and nginx is super fast in sharing static and cached content. The only drawback is when i actually change the content i needed to clear the cache manually.</p><p>Ghost supports web hooks as a way to create custom integrations, and i decided to use a web hook to clear and warm the cache when ever the site is update. To do this i configured a web hook on the site changed trigger, that calls a script on the server to clear and warm the cache. I wrote it in php because that was the fastest way for me, but it can obviously be done in any language you prefer. The script consists of two parts:</p><!--kg-card-begin: markdown--><pre><code>function rmdir_recursive($dir) {
    $it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
    $it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
    foreach($it as $file) {
        if ($file-&gt;isDir()) rmdir($file-&gt;getPathname());
        else unlink($file-&gt;getPathname());
    }
}
</code></pre>
<!--kg-card-end: markdown--><p>The method is called and passing it the path to the nginx cache directory. Once that is completed the following code is run with the url to the sites sitemap.</p><!--kg-card-begin: markdown--><pre><code>function visit_urls($url) {
        $html = file_get_contents($url);
        $xml = new SimpleXMLElement($html);
        foreach ($xml-&gt;url as $url_list) {
                file_get_contents($url_list-&gt;loc);
        }
}

$html = file_get_contents(&apos;https://carl.cedergren.me/sitemap.xml&apos;);
$xml = new SimpleXMLElement($html);
foreach ($xml as $item) {
        visit_urls($item-&gt;loc);
}
</code></pre>
<!--kg-card-end: markdown--><p>This should give you a fresh cache that contains all of the pages on the site.</p>]]></content:encoded></item><item><title><![CDATA[Added the core shell page]]></title><description><![CDATA[<p>In the beginning of this century i wrote a replacement shell for windows that i call core. The project was abandoned during 2004 and there has been no development since then. I am unsure if it will even run on a modern version of windows, but to ensure that all</p>]]></description><link>https://carl.cedergren.me/added-the-core-shell-page/</link><guid isPermaLink="false">612497b9dd246c771089f25b</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Tue, 24 Aug 2021 06:57:49 GMT</pubDate><content:encoded><![CDATA[<p>In the beginning of this century i wrote a replacement shell for windows that i call core. The project was abandoned during 2004 and there has been no development since then. I am unsure if it will even run on a modern version of windows, but to ensure that all the work done isn&apos;t lost i have compiled a project page on this site where all the releases can be downloaded, in binary as well and in source code packages.</p>]]></content:encoded></item><item><title><![CDATA[State of Smooth Calendar 2.0]]></title><description><![CDATA[<p>During the summer i got a large part of Smooth Calendar 2.0 done. The main thing that is missing the the scheduling of when to refresh the widget, and i hope to find the time to write this in the upcoming weeks, so that i can do a beta</p>]]></description><link>https://carl.cedergren.me/state-of-smooth-calendar-2-0/</link><guid isPermaLink="false">61229b36dd246c771089f224</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Sun, 22 Aug 2021 18:49:46 GMT</pubDate><content:encoded><![CDATA[<p>During the summer i got a large part of Smooth Calendar 2.0 done. The main thing that is missing the the scheduling of when to refresh the widget, and i hope to find the time to write this in the upcoming weeks, so that i can do a beta release of the rewrite on google play.</p><p>I plan to remove the current option to pay for it to unlock the features that i am not using myself and just make all features available for everyone. If i do this, i might keep the option to just support the app by an in app purchase, or just replace it with a paypal link, time will tell.</p><p>I am also thinking about making it open source. I really like the concept behind open source software, and i have release a bunch of programs as open source over the years, and with the rewritten code base i feel that this would be an option for Smooth Calendar as well. The only thing that worries me is all the forks that will show up on google play and distract the users from the genuine release, but it might be a risk worth taking to get some more people to work on it, we&apos;ll just see how it feels when the release is ready.</p>]]></content:encoded></item><item><title><![CDATA[Some more progress on Smooth Calendar 2.0]]></title><description><![CDATA[<p>Those of you who have been following my progress on the rewrite of Smooth Calendar have probably figured out that its slow, super slow. Its just hard to work up the drive to do something that I have already done before, and that for me works fine. </p><p>Today I found</p>]]></description><link>https://carl.cedergren.me/some-more-progress-on-smooth-calendar-2-0/</link><guid isPermaLink="false">604b507107e18e0fcabca095</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Fri, 12 Mar 2021 11:45:00 GMT</pubDate><content:encoded><![CDATA[<p>Those of you who have been following my progress on the rewrite of Smooth Calendar have probably figured out that its slow, super slow. Its just hard to work up the drive to do something that I have already done before, and that for me works fine. </p><p>Today I found the drive to play around a bit with the rendering of the widget, trying to solve the one issue that I feel the current implementation has, namely that you can not position the time/date/event in a fixed position, that is maintained for each row. This is due to the widget being a list, and each row is just a line of text in that list. This is turn is due to limits set in Android on <a href="https://developer.android.com/reference/android/widget/RemoteViews">RemoteViews </a>which is the component used to build a widget.</p><p>I had a couple of ideas on how I could solve this, the first one was to use a <a href="https://developer.android.com/reference/android/widget/GridView">GridView</a> and letting each part of the row be its own item in the GridView, and by setting the <em>numColumns</em> to four each row would consist of the needed number of items. The reason this approach didn&apos;t work was that there is no way to control the width of the items, which in turn means that there is no way to control that the items &quot;on top&quot; of each other are the same size.</p><p>Android has a Layout that allows you to have a Grid, its fittingly called <a href="https://developer.android.com/reference/android/widget/GridLayout">GridLayout</a> and it is available to the RemoveViews, but its not scrollable, which is a feature that I wasn&apos;t prepared to sacrifice to get the positioning support, so this is the solution i now have come up with.</p><p>The main interface will contain a ListView that is scrollable, in turn backed by an adapter that only ever contains one item, a GridLayout. The ListView is then used as a RemoteViews able <a href="https://developer.android.com/reference/android/widget/ScrollView">ScrollView</a>, and allows the GridLayout to be scrolled if it is higher than widget. The GridLayout in turn has its own limitations, the first is that it is of a fixed size, we can not change the number of rows and columns at runtime, so what I have done is created a number of layouts, with increasing number of rows, that will be loaded when the widget is rendered to match the number of items the user has set the widget to show. The number of columns is easier handled since I can just set any elements I don&apos;t want to GONE and they will disappear. Since we still cant set the width of the columns in the GridView dynamically another trick was needed to allow the user to be able to add the desired amount of padding between the items, and this is by using <a href="https://developer.android.com/reference/android/widget/ImageView">ImageViews </a>with dynamically created transparent images matching the padding the user wants. </p><p>So, the conclusion to all this is that I now have a layout for the calendar items that allow them to be positioned in straight columns, while still being scrollable if the number of items is larger than the display area of the widget.</p><p>Hopefully it wont be another year until my next update.</p>]]></content:encoded></item><item><title><![CDATA[The journey to Smooth Calendar 2.0]]></title><description><![CDATA[<p>So, since i seem to be bad at writing here i thought i should document my journey to Smooth Calendar 2.0. Smooth Calendar is my android widget that i wrote over ten years ago, around the time that android 1.6 was release, and i have updated it ever</p>]]></description><link>https://carl.cedergren.me/the-journey-to-smooth-calendar-2-0/</link><guid isPermaLink="false">5e5f68a55d50e37582ce27f7</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Wed, 04 Mar 2020 08:54:53 GMT</pubDate><content:encoded><![CDATA[<p>So, since i seem to be bad at writing here i thought i should document my journey to Smooth Calendar 2.0. Smooth Calendar is my android widget that i wrote over ten years ago, around the time that android 1.6 was release, and i have updated it ever since. To say that both i and android have evolved during this time is a understatement, so to capitalize on all these improvements i have decided to rewrite it from scratch, using <a href="https://developer.android.com/kotlin">Kotlin</a> and with a modern architecture. So i will document this work in a couple of posts, trying to give the reader some insight to the process.</p><p><strong>Preferences</strong></p><p>A huge part of Smooth Calendar are the preferences, id say that the code for them is roughly 80% of all the code in there. These were made purely in code, in a not that well structured way, over the last ten years. The support for more exotic preferences were lacking and i mostly did what i had to do to support the feature i was writing. In Smooth Calendar 2.0 these will be done with a <a href="https://developer.android.com/reference/android/preference/PreferenceScreen">PreferenceScreen </a>XML backed by some <a href="https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat">PreferenceFragmentCompat </a>classes. </p><p>What i started to do was look at what general requirements i had, where one was the option to support multiple widget instances, each with their own settings. This is done by appending the widget instance id to the settings key, and is used for most but not all settings. So i wanted a way in the XML to differ between the settings that should have the widget instance id appended to the key and the ones that shouldn&apos;t. I looked around at extending every preference, but came to the conclusion that it wasn&apos;t needed, i am just going to use the <a href="https://developer.android.com/reference/android/preference/Preference#isPersistent()">isPersistent</a> property, if it is set to false, which is the most common scenario, i will append the widget id before saving the data, if not ill just save it as it is.</p><!--kg-card-begin: markdown--><pre><code>p.setOnPreferenceChangeListener { preference, any -&gt;
    var key = preference.key
    if (!preference.isPersistent) {
        // TODO add the widget id to these settings
        key = &quot;widgetid&quot; + key
       }
    when (any) {
        is Boolean -&gt; sharedPreferences.edit().putBoolean(key, any).apply()
        is Float -&gt; sharedPreferences.edit().putFloat(key, any).apply()
        is Int -&gt; sharedPreferences.edit().putInt(key, any).apply()
        is Long -&gt; sharedPreferences.edit().putLong(key, any).apply()
        is String -&gt; sharedPreferences.edit().putString(key, any).apply()
    }
    false
}
</code></pre>
<!--kg-card-end: markdown--><p>I also decided to use c<a href="https://en.wikipedia.org/wiki/Convention_over_configuration">onvention over configuration</a> by letting each properties title string be named the same as the key, adding _title to the end, and the summery be named as the key with _summery added. This way i don&apos;t need to map them in the XML and can just load them while creating the fragment. I also made sure to never overwrite anything that is already there, leaving me the option to not follow the convention should the need arise in the future.</p><!--kg-card-begin: markdown--><pre><code>for (p in list) {
    if (p.title == null) {
        p.title = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_title&quot;, &quot;string&quot;, packageName))
    }
    when (p) {
        is CheckBoxPreference -&gt; {
            if (p.summaryOn == null) {
                p.summaryOn = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_on&quot;, &quot;string&quot;, packageName))
            }
            if (p.summaryOff == null) {
                p.summaryOff = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_off&quot;, &quot;string&quot;, packageName))
            }
        }
        is SwitchPreference -&gt; {
            if (p.summaryOn == null) {
                p.summaryOn = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_on&quot;, &quot;string&quot;, packageName))
            }
            if (p.summaryOff == null) {
                p.summaryOff = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_off&quot;, &quot;string&quot;, packageName))
            }
        }
        else -&gt; {
            if (p.summary == null) {
                p.summary = getString(resources.getIdentifier(&quot;setting_&quot; + p.key + &quot;_summary&quot;, &quot;string&quot;, packageName))
            }
        }
}</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Site update]]></title><description><![CDATA[<p>So, its been like eight years since i posted anything of value here, but i finally got around to update ghost to the latest version and felt inspired to do something about the site.</p><p>I made a new theme &#xA0;for <a href="https://ghost.org">ghost</a> (heavily inspired by <a href="http://n-o-d-e.net">n-o-d-e.net</a>), i will also</p>]]></description><link>https://carl.cedergren.me/site-update-2/</link><guid isPermaLink="false">5d036ade0d7dbc45b3ddb689</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Fri, 14 Jun 2019 09:41:24 GMT</pubDate><content:encoded><![CDATA[<p>So, its been like eight years since i posted anything of value here, but i finally got around to update ghost to the latest version and felt inspired to do something about the site.</p><p>I made a new theme &#xA0;for <a href="https://ghost.org">ghost</a> (heavily inspired by <a href="http://n-o-d-e.net">n-o-d-e.net</a>), i will also try to go through the content to make sure that it all works as well as update the pages that are out of date.</p><p>And how knows, with a little luck ill start posting again ;)</p>]]></content:encoded></item><item><title><![CDATA[Imported my gaming blog]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Since i am not really blogging here nor there it thought it was a good idea to import the posts from my wargaming blog, and so i did. Lets see if that can motivate me to blog a bit more here onwards.</p>
<!--kg-card-end: markdown-->]]></description><link>https://carl.cedergren.me/imported-my-gaming-blog/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7ce5</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Sat, 22 Aug 2015 14:01:08 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Since i am not really blogging here nor there it thought it was a good idea to import the posts from my wargaming blog, and so i did. Lets see if that can motivate me to blog a bit more here onwards.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Times are changing]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Its been a long time since i wrote anything here, i moved this spring and that did take a lot of time that would have been spent gaming instead. I also tried Fantasy Flight Games <a href="http://www.fantasyflightgames.com/edge_minisite.asp?eidm=174">X-wing</a> and loved it, so a lot of my gaming time has been devoted to</p>]]></description><link>https://carl.cedergren.me/times_are_changing/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7cda</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Sat, 16 Aug 2014 17:25:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Its been a long time since i wrote anything here, i moved this spring and that did take a lot of time that would have been spent gaming instead. I also tried Fantasy Flight Games <a href="http://www.fantasyflightgames.com/edge_minisite.asp?eidm=174">X-wing</a> and loved it, so a lot of my gaming time has been devoted to it. And on top of that the 7th edition of 40k hasn&apos;t really inspired me to play more.</p>
<p>I have decided to try some games from other companies, and have ordered a 50 rice list of <a href="http://www.bushido-thegame.com/cult-yurei">Cult of Yurei</a> list for <a href="http://www.bushido-thegame.com">Bushido</a> as well as the new <a href="http://infinitythegame.com/store/articulo.php?o=3&amp;id=2344">Operation:Icestorm</a> as well as some more <a href="http://www.infinitythegame.com/infinity/en/category/nomads/">Nomads</a> for <a href="http://http://www.infinitythegame.com">Infinity</a>. I have friends that are devoted players of both games so i hope i will fancy them as well.</p>
<p>This in turn means that i will cut back on my 40k projects, i am getting rid of my 1000 sons as well as my emperors children armies. I am also selling of some smaller projects that i have had laying around for some time. I will keep my Death Guard as well as my Red Scorpions, Sons of Medusa and Eldar armies for now. Obviously i am keeping my older armies as well, but they dont see much play time as of late.</p>
<p>I am also looking forward to a couple of terrain projects, i am building a city fight table for 40k using the terrainscape urban board together with mixed buildings from GW, Pegasus etc. I am also building a small Bushido board, and if i like Infinity its the next terrain project on the list.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[JavaScript]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Javascript has gone from being the laughingstock of the web spehere to becoming the major power in all things web related. Back in the middle of the ninties when it was introduced it really didn&apos;t fill any purpose in the then fledgling technological platform that was the world</p>]]></description><link>https://carl.cedergren.me/javascript/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7cd8</guid><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Tue, 17 Jun 2014 11:51:17 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Javascript has gone from being the laughingstock of the web spehere to becoming the major power in all things web related. Back in the middle of the ninties when it was introduced it really didn&apos;t fill any purpose in the then fledgling technological platform that was the world wide web. Most of the sites that used Javascript tended to work bad or just to be pointless.</p>
<p>Javascript first gained any real tracktion with the introduction of AJAX, first in IE via the introduction of the XMLHTTP and then it was adapted as a standard feature in all modern browsers. It enabled web developers to update the web page content without reloading the page, which made it possible to create more application like websites.</p>
<p>The last couple of years Javascript have gone from being a tool to add some exotic feature to a website to be one of the driving technologies behind the web today. The introduction of server side Javascript via <a href="http://nodejs.org">node.js</a> is a huge change, now we can use the same langague on the server side as we do on the client side. Also new Javascrip frameworks like <a href="http://angularjs.org">AngularJs</a>, <a href="http://emberjs.com">ember.js</a>, <a href="http://backbonejs.org">backbone.js</a> build on the previous success of <a href="http://jquery.com">JQuery</a> and give developers a complete toolbox all based on Javascript.</p>
<p>I wrote my first node.js rest application (using <a href="http://mcavage.me/node-restify">restify</a>) a couple of months ago, and i have just started to look at the frontend frameworks and evalute which one to use to build the frontend for my backend application. I will try to track the progress and my findings here to hopefully assist others in the same situtation.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[New site]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Its been almost two years since my last post, and the site was in grave need of some love and care. I have moved from <a href="http://e107.org">e107</a> over to <a href="http://ghost.org">Ghost</a> to motivate me to learn more about <a href="http://nodejs.org">NodeJS</a>. Right now most of the content is in need of a overhaul since</p>]]></description><link>https://carl.cedergren.me/new-site/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7cd3</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Thu, 10 Apr 2014 06:56:57 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Its been almost two years since my last post, and the site was in grave need of some love and care. I have moved from <a href="http://e107.org">e107</a> over to <a href="http://ghost.org">Ghost</a> to motivate me to learn more about <a href="http://nodejs.org">NodeJS</a>. Right now most of the content is in need of a overhaul since i have just moved it from the old site to this one, and there are bound to be broken links and left over bbcodes etc, ill try to work through them under the next couple of weeks. I will also move the content from my miniature  gaming blog <a href="http://tinaddiction.blogger.se">tin addiction</a> to this site as well as my reviews from <a href="http://movinghands.net">moving hands</a> if i can retrive them.</p>
<p>After that i hope to extend Ghost with the announced plugin support that will be available in version 0.5 to add some more features, i want the site to feel like it belongs in 2014 and not 2004 ;)</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Emperor's Children]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Since both my Death Guard and my Thousand Sons armies are reaching completion, and since Forgeworld have released two beautiful sets (the <a href="http://www.forgeworld.co.uk/The_Horus_Heresy/Legiones_Astartes/Emperors_Children/EMPERORS_CHILDREN_LEGION_PALATINE_BLADES_SQUAD.html">Palatine Blades</a> and the <a href="http://www.forgeworld.co.uk/New_Stuff/EMPEROR&apos;S_CHILDREN_LEGION_KAKOPHONI.html">Kakaphoni</a>) I knew that the next Chaos army I wanted to do was the emperors children. This one will build of the Horus Heresy</p>]]></description><link>https://carl.cedergren.me/emperor_s_children/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7cd9</guid><category><![CDATA[40k]]></category><category><![CDATA[emperor's__children]]></category><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Wed, 20 Nov 2013 10:14:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Since both my Death Guard and my Thousand Sons armies are reaching completion, and since Forgeworld have released two beautiful sets (the <a href="http://www.forgeworld.co.uk/The_Horus_Heresy/Legiones_Astartes/Emperors_Children/EMPERORS_CHILDREN_LEGION_PALATINE_BLADES_SQUAD.html">Palatine Blades</a> and the <a href="http://www.forgeworld.co.uk/New_Stuff/EMPEROR&apos;S_CHILDREN_LEGION_KAKOPHONI.html">Kakaphoni</a>) I knew that the next Chaos army I wanted to do was the emperors children. This one will build of the Horus Heresy models, with current Chaos parts mixed in, together with a lot of mutations, to give the look of a warband that has been active since the heresy. I will be using the two forgeworld sets as a basis for my first two squads of Noise Marines, adding parts from the Noise Marine upgrade kit as well as mutations from different plastic kits. After they are done I want to do some jetbikes. I really hate the idea of Space Marines riding bikes, but i have fond memories of the jet bikes from Rouge Trader so I will be building a squad of these to go together with my Chaos lord. This army will also use Daemons, at least a herald, some seekers and a unit of Daemonettes.</p>
<p><img src="https://carl.cedergren.me/content/images/2015/Aug/noise-marines.jpg" alt="alt" loading="lazy"></p>
<p>The army list currently looks something like this: &gt; Chaos lord, MoS, Bike, Lightning claw, Power fist, Aura</p>
<ul>
<li>5 Bikers to go with the lord, MoS, melta, CCW</li>
<li>6 Noise marines, blastmaster, sonic blasters, doom siren</li>
<li>6 Noise marines, blastmaster, sonic blasters, doom siren</li>
<li>1 herald of Slaanesh on Seeker</li>
<li>5 Seekers to go the the herald</li>
<li>12 Daemonettes No idea of the point cost of these, but I am aiming for 1000pts to start with.</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Daemons]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I have been toying around with the idea of adding some Daemons to my Chaos Space Marine forces, the Thousand Sons are in need of all the help they can get and my Nurgle forces could use some Daemon allies to flesh out the available squads. I have been playing</p>]]></description><link>https://carl.cedergren.me/daemons/</link><guid isPermaLink="false">5a477b3ec1b1a62d34bd7cdb</guid><category><![CDATA[40k]]></category><category><![CDATA[thousand__sons]]></category><category><![CDATA[death__guard]]></category><dc:creator><![CDATA[Carl Cedergren]]></dc:creator><pubDate>Tue, 19 Nov 2013 13:27:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I have been toying around with the idea of adding some Daemons to my Chaos Space Marine forces, the Thousand Sons are in need of all the help they can get and my Nurgle forces could use some Daemon allies to flesh out the available squads. I have been playing around with about 500pts for each army and they look like this:</p>
<p><img src="https://carl.cedergren.me/asperon/content/images/2015/Aug/chaos-daemons-m.jpg" alt loading="lazy"></p>
<p><strong>Nurgle</strong></p>
<ul>
<li>HQ Great Unclean One, Exalted gift, Lvl 3</li>
<li>Troops 14 Plague Bearers</li>
<li>Heavy Soulgrinder DoN, Phlem</li>
</ul>
<p><strong>Tzeentch</strong></p>
<ul>
<li>HQ Lord of Change, Exalted gift</li>
<li>Troops 11 Pink Horros</li>
<li>Fast 6 Screamers</li>
</ul>
<p>I am looking forward to see how the GUO plays, I think that Biomancy will be quite useful for him. I have heard a lot of good about the Soulgrider and I just can&apos;t wait to get my hands on a Plague Hulk to use as mine. The lord of change will hopefully add some punch to the Thousand Sons list, along with the Screamers, they sure to need it!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>