<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Coding Odyssey</title>
    <link>http://blog.mantziaris.eu/en/</link>
    <description>Recent content on Coding Odyssey</description>
    <generator>Hugo -- 0.145.0</generator>
    <language>en</language>
    <lastBuildDate>Wed, 14 Mar 2018 19:00:10 +0200</lastBuildDate>
    <atom:link href="http://blog.mantziaris.eu/en/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Parallelize work using parwork</title>
      <link>http://blog.mantziaris.eu/en/post/go/20180314_parallelize_work_with_parwork/</link>
      <pubDate>Wed, 14 Mar 2018 19:00:10 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/go/20180314_parallelize_work_with_parwork/</guid>
      <description>&lt;p&gt;In order to process a lot of work we have to parallelize work across all cores, and especially if it&amp;rsquo;s CPU bound.
Go has goroutines, which can be used to parallelize the work, but there is the cost of context switching for a lot of goroutines.
Minimizing this context switching can be achieved by using a fork-join model when processing work.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/mantzas/parwork&#34;&gt;Parwork&lt;/a&gt; solves this problem by using goroutines, channels and waitgroups. It creates workers (goroutines) that pull
work of a queue (channel), process the work and report the work back to a queue (channel).
This is done in a abstracted way so the user has to provide implementation for:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Various .NET Benchmarks</title>
      <link>http://blog.mantziaris.eu/en/post/dotnet/20170711_dot_net_benchmarks/</link>
      <pubDate>Tue, 11 Jul 2017 07:36:33 +0300</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/dotnet/20170711_dot_net_benchmarks/</guid>
      <description>&lt;p&gt;A lot of times i was wondering what is the best performing code.
In order to determine that i had to benchmark my code, but benchmarks are hard to write.
Luckily there is a open source project that does this work perfectly good and very easy.&lt;/p&gt;
&lt;p&gt;The name of the library is BenchmarkDotNet and the documentation can be found &lt;a href=&#34;http://benchmarkdotnet.org/&#34;&gt;here&lt;/a&gt;.
The only thing you have to do is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a console application project (.NET/.NET Core)&lt;/li&gt;
&lt;li&gt;Install the nuget BenchmarkDotNet and it&amp;rsquo;s dependencies&lt;/li&gt;
&lt;li&gt;Always run in release mode!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following code is needed in the Program Main&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tripping the circuit</title>
      <link>http://blog.mantziaris.eu/en/post/patterns/20170106_tripping_the_circuit/</link>
      <pubDate>Fri, 06 Jan 2017 13:11:25 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/patterns/20170106_tripping_the_circuit/</guid>
      <description>&lt;p&gt;This is probably one of the most useful &amp;ldquo;cloud&amp;rdquo; patterns out there and it is fairly easy to implement.&lt;br&gt;
There are great articles and implementations, like &lt;a href=&#34;https://github.com/App-vNext/Polly&#34;&gt;Polly&lt;/a&gt;,
already on the internet about this pattern so why another one?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Κρείττον οψιμαθή είναι ή αμαθή.&lt;br&gt;
Socrates 469-399 BC., Philosopher&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Which translates to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Better too have learned lately than never, as he tried to explain why he learned to play
guitar in his old age.&lt;/p&gt;</description>
    </item>
    <item>
      <title>dotNETZone.gr meetup .NET core presentation</title>
      <link>http://blog.mantziaris.eu/en/post/presentations/20161123_dotnetzone_meetup_dotnetcore_presentation/</link>
      <pubDate>Thu, 24 Nov 2016 08:11:25 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/presentations/20161123_dotnetzone_meetup_dotnetcore_presentation/</guid>
      <description>&lt;p&gt;The presentation was about the current state of .NET Core in the Linux World.
Here are &lt;a href=&#34;http://go-talks.appspot.com/github.com/mantzas/presentations/20161106_shaken_to_the_dotnet_core/shaken_to_the_dotnet_core.slide#1&#34;&gt;the slides&lt;/a&gt; of the presentation
and the &lt;a href=&#34;https://github.com/mantzas/presentations/tree/master/20161106_shaken_to_the_dotnet_core&#34;&gt;github repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for attending.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Repository and Unit of Work pattern</title>
      <link>http://blog.mantziaris.eu/en/post/patterns/20161024_repository_and_uow/</link>
      <pubDate>Mon, 24 Oct 2016 22:30:54 +0300</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/patterns/20161024_repository_and_uow/</guid>
      <description>&lt;p&gt;Yes, i know not this again. Is this not the one millionth time that someone blogs about that?
Yes, yes and yes but…
It is always good to repeat things and we all know that&lt;/p&gt;
&lt;p&gt;“Repetition is the mother of learning, the father of action, which makes it the architect of accomplishment.” ― &lt;a href=&#34;https://en.wikipedia.org/wiki/Zig_Ziglar&#34;&gt;Zig Ziglar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are still implementations out there that might benefit from this…&lt;/p&gt;
&lt;p&gt;So let’s start with some definitions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TT || !TT aka To TAP or not to TAP</title>
      <link>http://blog.mantziaris.eu/en/post/presentations/20160525_to-tap-or-not-to-tap/</link>
      <pubDate>Wed, 25 May 2016 21:35:00 +0300</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/presentations/20160525_to-tap-or-not-to-tap/</guid>
      <description>&lt;p&gt;Ramblings on Tasks, async-await and ASP.NET. The &lt;a href=&#34;https://goo.gl/sO3ZGv&#34;&gt;slides&lt;/a&gt; from the &lt;a href=&#34;http://www.meetup.com/DotNetZone/events/231198572/&#34;&gt;meetup&lt;/a&gt;
do contain common issues encountered when working with TPL, async-await and ASP.NET along with some good practices. These are off course not all. Please let me know if you have any suggestions. Thanks for attenting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New go event sourcing library named incata</title>
      <link>http://blog.mantziaris.eu/en/post/go/20160201_initial_release_incata/</link>
      <pubDate>Mon, 01 Feb 2016 19:59:22 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/go/20160201_initial_release_incata/</guid>
      <description>&lt;p&gt;Event sourcing is capturing all changes of an application state as a sequence of events.
Since we only store events we only have to add events to a store, in contrast to updates for keeping the application state.
A much simpler model that scales very well. When needing the application state we just aggregate the events into&lt;/p&gt;
&lt;p&gt;More on this can be read all over the internet but two excellent links are available below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Initial release of adaptlog</title>
      <link>http://blog.mantziaris.eu/en/post/go/20160120_initial_release_adaptlog/</link>
      <pubDate>Wed, 20 Jan 2016 00:44:10 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/go/20160120_initial_release_adaptlog/</guid>
      <description>&lt;p&gt;Almost every application logs data one way or another. There are a plethora of logging packages available for &lt;a href=&#34;https://golang.org/&#34;&gt;golang&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There is the one that comes with the standard packages which takes a simple approach.&lt;/li&gt;
&lt;li&gt;There are many logging packages that follow the well established leveled approach, and there are really a lot of them.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The decision of choosing a specific library comes with the cost of a direct dependency.
But why should we depend directly on a specific package?
How painful is it to exchange a logging package for another when we already created a lot of code with a direct dependency?&lt;br&gt;
This is the reason why &lt;a href=&#34;https://github.com/mantzas/adaptlog&#34;&gt;apaptlog&lt;/a&gt; came to life.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup a blog with Hugo and Github Pages</title>
      <link>http://blog.mantziaris.eu/en/post/blogging/20151107_how_to_create_a_blog_with_hugo_and_github_pages/</link>
      <pubDate>Sat, 07 Nov 2015 13:42:43 +0200</pubDate>
      <guid>http://blog.mantziaris.eu/en/post/blogging/20151107_how_to_create_a_blog_with_hugo_and_github_pages/</guid>
      <description>&lt;p&gt;It was long my desire to write a blog with stuff that interests me.&lt;br&gt;
Lately i was studying &lt;a href=&#34;https://golang.org/&#34;&gt;Golang&lt;/a&gt; and i came across &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; which is a really nice and fast site generation utility.&lt;br&gt;
This was a great opportunity to start my own blog by using &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; and &lt;a href=&#34;https://pages.github.com/&#34;&gt;Github Pages&lt;/a&gt; in order to host it. Why?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it&amp;rsquo;s free&lt;/li&gt;
&lt;li&gt;it&amp;rsquo;s &lt;a href=&#34;https://github.com/&#34;&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;it&amp;rsquo;s easy and fast&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a walk through on how you can have a blog easy, fast and free! Let&amp;rsquo;s start! The only thing you need is:&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Me</title>
      <link>http://blog.mantziaris.eu/en/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.mantziaris.eu/en/about/</guid>
      <description>about</description>
    </item>
    <item>
      <title>Projects</title>
      <link>http://blog.mantziaris.eu/en/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>http://blog.mantziaris.eu/en/projects/</guid>
      <description>projects</description>
    </item>
  </channel>
</rss>
