﻿<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text" xml:lang="en">MfGames .NET Libraries</title>
  <link type="application/atom+xml" href="https://mfgames.com/mfgames-cil/atom.xml" rel="self" />
  <link type="text/html" href="https://mfgames.com/mfgames-cil/" rel="alternate" />
  <updated>2026-06-13T17:52:29Z</updated>
  <id>https://mfgames.com/mfgames-cil/</id>
  <author>
    <name>D. Moonfire</name>
  </author>
  <rights>Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International</rights>
  <entry>
    <title>Renaming MfGames.Crypto to MfGames.Cryptography (MfGames .NET Libraries)</title>
    <link rel="alternate" href="https://mfgames.com/blog/2024/04/21/renaming-mfgames-crypto/" />
    <updated>2024-04-21T05:00:00Z</updated>
    <id>https://mfgames.com/blog/2024/04/21/renaming-mfgames-crypto/</id>
    <category term="mfgames-net-libraries" scheme="https://mfgames.com/categories/" label="MfGames .NET Libraries" />
    <content type="html">&lt;p&gt;For many years, &amp;ldquo;crypto&amp;rdquo; really meant only one thing in the programming world: cryptozoology. No, actually &amp;ldquo;cryptography.&amp;rdquo; However, with the advent of web3 and cryptocurrencies, the world &amp;ldquo;crypto&amp;rdquo; is becoming muddled and no-longer obvious of its purpose.&lt;/p&gt;
&lt;p&gt;Recently, &lt;a href="https://www.bouncycastle.org/"&gt;BouncyCastle&lt;/a&gt; has gone through a little refactoring themselves after starting with &lt;code&gt;BouncyCastle&lt;/code&gt; then renaming themselves to &lt;code&gt;Portable.BouncyCastle&lt;/code&gt; and finally &lt;code&gt;BouncyCastle.Cryptography&lt;/code&gt;. Overally, we like the final name and it was inspiration for us doing the same.&lt;/p&gt;
&lt;p&gt;So, it isn't really marked as a &amp;ldquo;breaking&amp;rdquo; change, but &lt;code&gt;MfGames.Crypto&lt;/code&gt; is being renamed to &lt;code&gt;MfGames.Cryptography&lt;/code&gt;. And, to avoid the struggle we had with BouncyCastle, the namespace also was changed to reflect that change.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Create iCalendar Files with Nitride (MfGames .NET Libraries)</title>
    <link rel="alternate" href="https://mfgames.com/blog/2024/06/01/nitride-icalendar/" />
    <updated>2024-06-01T05:00:00Z</updated>
    <id>https://mfgames.com/blog/2024/06/01/nitride-icalendar/</id>
    <category term="mfgames-net-libraries" scheme="https://mfgames.com/categories/" label="MfGames .NET Libraries" />
    <content type="html">&lt;p&gt;One of the more useful features in previous versions of &lt;a href="//d.moonfire.us"&gt;Dylan's&lt;/a&gt; static site generators was the ability to create an iCalendar file of the posts, both past and future. It wasn't only just to see little entries pop up for the dopamine rush, but also to give them a head's up when a new chapter for &lt;a href="//fedran.com"&gt;Fedran&lt;/a&gt; needs to be written or its been a few months since a blog post has been written.&lt;/p&gt;
&lt;p&gt;We use iCalendar because it's a solid standard format that can easily be added into Nextcloud, put on a phone, or otherwise used anywhere to keep it in mind.&lt;/p&gt;
&lt;p&gt;(Technicaly, it could also be used to create task lists for sites that are missing links or other things but out of scope for this iteration).&lt;/p&gt;
&lt;p&gt;We put this into the &lt;code&gt;MfGames.Nitride.Temporal&lt;/code&gt; even though it adds an extra dependency (&lt;a href="https://github.com/rianjs/ical.net"&gt;Ical.Net&lt;/a&gt;) because it is a relatively small feature and it hit that ratio of package management verses three additional classes. Like the rest of the temporal packages, this built to use &lt;a href="https://nodatime.org/"&gt;Noda.Time&lt;/a&gt; for coordinating times.&lt;/p&gt;
&lt;p&gt;The &lt;a href="//mfgames.com/mfgames-cil/docs/nitride/temporal/"&gt;documentation&lt;/a&gt; has some notes on how to include and use it inside a Nitride project.&lt;/p&gt;
&lt;h2&gt;New Entity Constructor&lt;/h2&gt;
&lt;p&gt;We also added new constructor to &lt;code&gt;MfGames.Gallium.Entity&lt;/code&gt; that allows multiple components to be set as part of the constructor.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;// These are all the same.
var entity1 = new Entity();
entity1 = entity1.Add(&amp;quot;bob&amp;quot;);
entity1 = entity1.Add(13);

var entity2 = new Entity().Add(&amp;quot;bob&amp;quot;).Add(13);

var entity3 = new Entity().SetAll(&amp;quot;bob&amp;quot;, 13);

// These are the new features.
var entity4 = new Entity(&amp;quot;bob&amp;quot;, 13);

var entity5 = new Entity(13, &amp;quot;bob&amp;quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It seemed like a no-brainer, mainly because it is a pattern we use a lot in the code, but Dylan finds that the formatting is less than &amp;ldquo;pretty&amp;rdquo; when it comes to multi-line chaining operations.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var notPretty = new Entity(
    &amp;quot;bob&amp;quot;,
    13,
    instant,
    path)
    .AddTextContent(content);

var pretty = new Entity()
    .SetAll(
        &amp;quot;bob&amp;quot;,
        13,
        instant,
        path)
    .AddTextContent(content);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Either work though, so it will end up reducing some of the clutter for common use cases.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Online Documentation (MfGames .NET Libraries)</title>
    <link rel="alternate" href="https://mfgames.com/blog/2024/04/20/online-documentation/" />
    <updated>2024-04-20T05:00:00Z</updated>
    <id>https://mfgames.com/blog/2024/04/20/online-documentation/</id>
    <category term="mfgames-net-libraries" scheme="https://mfgames.com/categories/" label="MfGames .NET Libraries" />
    <content type="html">&lt;p&gt;When we started Nitride in May 2021, we always intended to convert all our websites to use the new system. Admitedly, we started with the most complex sites because that would iron out the more complex problems we were trying to solve with Nitride. And there were some rather significant patterns to iron out over the years.&lt;/p&gt;
&lt;p&gt;But &lt;a href="/"&gt;mfgames.com&lt;/a&gt; was one of those lynchpins for the entire migration because if a program or library isn't documented, it can't be ever be done. And we had examples and patterns, but no good place to point someone who might be interested in using Nitride with something narrative instead of &amp;ldquo;look at the tests&amp;rdquo; or &amp;ldquo;look at these examples.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Now we have it. Adding documentation to our &lt;code&gt;./docs/&lt;/code&gt; folder will automatically show up on the &lt;a href="//mfgames.com/mfgames-cil/"&gt;website&lt;/a&gt;. That will also open up the ability to write tutorials on how to use the library, news of what is going on that can be subscribed with feed readers (and maybe a mailing list), and generally those little polish things needed to call something &amp;ldquo;done.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Here is to the next big step.&lt;/p&gt;
</content>
  </entry>
</feed>
