<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The ILNumerics Blog &#187; configuration</title>
	<atom:link href="https://ilnumerics.net/blog/tag/configuration/feed/" rel="self" type="application/rss+xml" />
	<link>https://ilnumerics.net/blog</link>
	<description>The Productivity Machine  &#124;  A fresh attempt for scientific computing  &#124;  http://ilnumerics.net</description>
	<lastBuildDate>Thu, 05 Dec 2024 09:09:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>ILNumerics: High Performance as Default</title>
		<link>https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/</link>
		<comments>https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/#comments</comments>
		<pubDate>Mon, 01 Apr 2024 11:25:09 +0000</pubDate>
		<dc:creator><![CDATA[haymo]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Scientific Computing]]></category>
		<category><![CDATA[accelerator]]></category>
		<category><![CDATA[autonomous]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[v7]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=1091</guid>
		<description><![CDATA[<p>ILNumerics releases Version 7.0 The ILNumerics team is proud and excited to announce the availability of a new major release of its ILNumerics Ultimate VS product line. This milestone represents a significant advancement in compiler technology: it introduces the first autonomously parallelizing array compiler, ILNumerics Accelerator. Array codes, such as numpy and Matlab, are popular within &#8230; <a href="https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/" class="more-link">Continue reading <span class="screen-reader-text">ILNumerics: High Performance as Default</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/">ILNumerics: High Performance as Default</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>ILNumerics releases Version 7.0</h2>
<p>The ILNumerics team is proud and excited to announce the availability of a new major release of its ILNumerics Ultimate VS product line. This milestone represents a significant advancement in compiler technology: it introduces the first autonomously parallelizing array compiler, ILNumerics Accelerator.</p>
<p>Array codes, such as numpy and Matlab, are popular within the scientific community. They simplify the description of complex numerical algorithms. However, when these numerical codes are implemented into industrial-grade products, distributed to customers, and maintained by a larger development team for many years, existing tools reveal considerable limitations, with execution speed being possibly the greatest limitation.</p>
<p>ILNumerics Accelerator is here to resolve this issue once and for all. Built on the convenient language of ILNumerics Computing Engine for authoring scientific array codes directly in C# /.NET, our intelligent Accelerator compiler reformulates array codes and executes them in the most efficient manner, unguided and autonomously.</p>
<h2>Short Dive: Building an Array Compiler &#8230;</h2>
<p>The key to optimal hardware utilization today is, of course, the ability to efficiently parallelize the workload. Therefore, ILNumerics Accelerator compiler automatically detects and utilizes parallel potential within subsequent array instructions of your algorithm.</p>
<p>The prevalent approach to automatic parallelization today involves analyzing your code to detect instructions that can execute in parallel. The code is then rewritten to allow these independent instructions to run concurrently. This approach originated at a time when C/C++ and FORTRAN were considered &#8216;high-level&#8217; languages. While these languages offer some basic array support, numerical algorithms written in them inherently deal with <em>scalar</em> data.</p>
<p>In contrast, the algorithms we handle use n-dimensional arrays as the fundamental data type. When striving for real efficiency, the arrays&#8217; complexity prohibits any compile-time decision about data independence, a suitable execution device, or a low-level implementation using vector instructions, among other factors. Too many variables determine the optimal execution strategy, and their variation is too extensive to identify at development time.</p>
<h2>&#8230; with a fresh Approach to Parallelization &#8230;</h2>
<p>ILNumerics takes a data-driven approach to parallelization, making all crucial decisions &#8216;just in time&#8217; at <em>runtime</em>. This method enables us to implement the low-level internals of array instructions efficiently and eliminates the need for expensive dependency analysis of large program segments. It&#8217;s easier to determine at runtime whether an instruction relies on other data and when that data will be available.</p>
<p>However, this increases the compiler&#8217;s complexity significantly. Instead of producing fixed code for an array instruction found in the original program, we now generate an intermediate program, often representing several subsequent array instructions. This intermediate program is then transformed at runtime to reflect the original instructions in a manner that respects all influencing factors and enables optimal efficiency.</p>
<h2>&#8230; with Intelligence and Freedom</h2>
<p>These programs all run asynchronously, scheduling themselves onto suitable devices for execution at runtime. They connect with previous and subsequent asynchronous neighbors on the fly, even as they progress in calculating results. They autonomously determine the optimal implementation on the device they select. Significant decision-making power comes with immense responsibility. The final program code builds up asynchronously and autonomously at runtime.</p>
<p>Executing the same code branch twice may result in very different machine instructions. As the creators of the compiler, we can&#8217;t predict many details of the final implementation. We can&#8217;t even forecast the actual number of asynchronous programs, which we refer to as segments, executing concurrently. The decision now rests with the computer. It has a better understanding of the situation than we do and can process information and make educated decisions much faster and more effectively.</p>
<h2>Why another Beta, then?</h2>
<p>The first autonomous array compiler has arrived. Are you eager to try it out? Great! <a title="Getting Started: ILNumerics Accelerator" href="https://ilnumerics.net/accelerate-sum-examples.html" target="_blank">Go ahead and test</a> the current beta from nuget.org. Its performance is genuinely impressive.</p>
<p>The majority of our users are building industrial products and have chosen ILNumerics for its reliability and seamless integration into .NET (which means all of .NET, since 2005). The compiler will become a regular part of the ILNumerics Computing Engine once it&#8217;s ready. Currently, it&#8217;s like a young child, learning new things each day. It&#8217;s learning to walk and talk, occasionally stumbling over previously unknown obstacles. Sometimes, it even surprises its creators with unexpected efficiency.</p>
<p>With recent advancements, the Accelerator compiler is now set to &#8216;always on&#8217; mode. This marks a significant milestone in the development of a compiler. It&#8217;s now trusted to be stable and flexible enough to handle all codes, even unseen ones, ensuring it produces correct results and serves its primary purpose: to enhance efficiency.</p>
<p>The compiler will continue to <a title="Roadmap: ILNumerics Accelerator Compiler" href="https://ilnumerics.net/roadmap.html" target="_blank">develop</a> until the final release. It will become more <a title="State if the Art: Progressing Development of Accelerator Compiler" href="https://ilnumerics.net/accelerator-limitations.html" target="_blank">stable</a> and gain more real-world exposure. We would greatly appreciate if your feedback contributes to its maturity by then.</p>
<p>All previous modules of ILNumerics have been adapted for the new Accelerator. They are thoroughly tested, have undergone many <a title="ILNumerics Changelog" href="https://ilnumerics.net/changelog.html">bugfixes and improvements</a>, and are available for production on nuget.org as of today.</p>
<hr />
<p>&nbsp;</p>
<p>Introducing the ILNumerics Accelerator:</p>
<div style="width: 474px; " class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<video class="wp-video-shortcode" id="video-1091-1" width="474" height="267" preload="metadata" controls="controls"><source type="video/mp4" src="https://ilnumerics.net/media/andere/ILNumerics_Segments_2022.mp4?_=1" /><a href="https://ilnumerics.net/media/andere/ILNumerics_Segments_2022.mp4">https://ilnumerics.net/media/andere/ILNumerics_Segments_2022.mp4</a></video></div>
<p>[ Video does not show? Download here: <a href="/media/andere/ILNumerics_Segments_2022.mp4">https://ilnumerics.net/media/andere/ILNumerics_Segments_2022.mp4</a> ]</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/">ILNumerics: High Performance as Default</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/ilnumerics-high-performance-as-default/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="https://ilnumerics.net/media/andere/ILNumerics_Segments_2022.mp4" length="1709355" type="video/mp4" />
		</item>
		<item>
		<title>Getting to know your Scene Graph</title>
		<link>https://ilnumerics.net/blog/getting-to-know-your-scene-graph/</link>
		<comments>https://ilnumerics.net/blog/getting-to-know-your-scene-graph/#comments</comments>
		<pubDate>Mon, 29 Dec 2014 12:21:09 +0000</pubDate>
		<dc:creator><![CDATA[haymo]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Usage]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[scene graph]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=703</guid>
		<description><![CDATA[<p>Did you ever miss a certain feature in your ILNumerics scene graph? You probably did. But did you know, that most of the missing &#8220;features&#8221; mean nothing more than a missing &#8220;property&#8221;? Often enough, there is only a convenient access to a certain scene graph object needed in order to finalize a required configuration. Recently, &#8230; <a href="https://ilnumerics.net/blog/getting-to-know-your-scene-graph/" class="more-link">Continue reading <span class="screen-reader-text">Getting to know your Scene Graph</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/getting-to-know-your-scene-graph/">Getting to know your Scene Graph</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Did you ever miss a certain feature in your <a href="/Visualization-API.html">ILNumerics scene graph</a>? You probably did. But did you know, that most of the missing &#8220;features&#8221; mean nothing more than a missing &#8220;property&#8221;? Often enough, there is only a convenient access to a certain scene graph object needed in order to finalize a required configuration.</p>
<p>Recently, a user asked how to turn the background of a legend object in ILNumerics plots transparent. There doesn&#8217;t seem to be a straight forward way to that. One might expect code like the following to work:</p>
<pre class="brush: csharp; title: ; notranslate">
var legend = new ILLegend(&quot;Line 1&quot;, &quot;Line 2&quot;);
legend.Background.Color = Color.FromArgb(200, Color.White);
</pre>
<p><span id="more-703"></span>Unfortunately, it does not. Legend objects do not implement a &#8216;Background&#8217; property which would give convenient access to the background object. However, the background object obviously exists. And ILLegend &#8211; likewise most of the more complex scene graph / plotting objects in ILNumerics &#8211; is derived from ILGroup! <a href="http://ilnumerics.net/group-nodes.html">Group nodes</a> represent the common way to store and manage any number of child objects. At the same time, group nodes gives the user flexible access to their children.<br />
In case of ILLegend we can utilize one of the access methods of ILGroup in order to access the scene graph node which implements the background of the legend. Once we have the background object, we can go out and manipulate it freely. In order to do that, let&#8217;s first investigate, which nodes exist inside a legend object!</p>
<h2>Stepping into living Scene Graphs</h2>
<p>ILNumerics and Visual Studio make it very easy to investigate even complex scenes. Let&#8217;s create a simple line plot application first! We start with a fresh new C# Windows Forms Application and add a Plotting Form Template to it. A detailed instruction is given on the getting started page, at &#8220;<a href="/Getting-Started-with-ILNumerics.html">Creating Visualizations with ILNumerics</a>&#8220;.<br />
Double click on the auto-generated Program.cs file and change the last line to read:</p>
<pre class="brush: csharp; title: ; notranslate">
    Application.Run(new Plotting_Form1());
</pre>
<p>Starting the project via F5 brings up the newly generated example plot. We make one more addition. Double click the Plotting_Form1.cs to show the form in the designer. Now, double click on the white panel1 background to go to the code implementing the scene setup. At the end of the code creating the new plot cube and adding the line plot we add another line which adds a new legend object:</p>
<pre class="brush: csharp; title: ; notranslate">
// Initial plot setup, modify this as needed
private void ilPanel1_Load(object sender, EventArgs e) {

    // create some test data, using our private computation module as inner class
    ILArray&lt;float&gt; Pos = Computation.CreateData(4, 300);

    // setup the plot (modify as needed)
    ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
        new ILLinePlot(Pos, tag: &quot;mylineplot&quot;) {
            Line = {
                Width = 2,
                Color = Color.Red,
                Antialiasing = true,
                DashStyle = DashStyle.Dotted
            }
        }, new ILLegend(&quot;MyLineItem&quot;)
    });
    // register event handler for allowing updates on right mouse click:
    ilPanel1.Scene.First&lt;ILLinePlot&gt;().MouseClick += (_s, _a) =&gt; {
        if (_a.Button == MouseButtons.Right)
            Update(ILMath.rand(3, 30));
    };
}
</pre>
<p>Starting via F5 should give a form similar like this:<br />
<a href="http://ilnumerics.net/blog/wp-content/uploads/2014/12/PlotFormPlain.png"><img class="aligncenter size-full wp-image-704" src="http://ilnumerics.net/blog/wp-content/uploads/2014/12/PlotFormPlain.png" alt="PlotFormPlain" width="675" height="562" /></a>Now, let&#8217;s start the fun! Investigating living objects works best when the objects are alive, right? So let&#8217;s set a breakpoint in Visual Studio right after the legend has been created:</p>
<p><a href="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-12_51_22-WindowsFormsApplication4-Debugging-Microsoft-Visual-Studio.png"><img class="aligncenter size-full wp-image-705" src="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-12_51_22-WindowsFormsApplication4-Debugging-Microsoft-Visual-Studio.png" alt="2014-12-29 12_51_22-WindowsFormsApplication4 (Debugging) - Microsoft Visual Studio" width="655" height="292" /></a>As you know, Visual Studio allows for a nice feature &#8216;Edit and Continue&#8217;. Let&#8217;s add a variable as reference to our legend right in Debug mode! This is not really necessary, but eases the inspection. Note, it does not matter, where to add the code line, as long as we step over it in the debugger:</p>
<pre class="brush: csharp; title: ; notranslate">
    var leg = ilPanel1.Scene.First&lt;ILLegend&gt;();
</pre>
<p>Scene graph nodes are clever enough to give reasonable insights into their state and content at runtime. Just hover over the newly created variable &#8216;leg&#8217; with the mouse and Visual Studio will display helpful debugger visualizers. Expand any node to show its content:</p>
<p><a href="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-12_57_16-WindowsFormsApplication4-Debugging-Microsoft-Visual-Studio.png"><img class="aligncenter size-full wp-image-706" src="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-12_57_16-WindowsFormsApplication4-Debugging-Microsoft-Visual-Studio.png" alt="2014-12-29 12_57_16-WindowsFormsApplication4 (Debugging) - Microsoft Visual Studio" width="616" height="306" /></a>Inspecting the legend object that way makes it immediately clear, which object legends are made out of: a triangle shape realizes the background, a line strip shape the border. A common group holds the individual legend items and will be filled dynamically at rendering time.</p>
<h2>Configuration Flexibility at its Extreme</h2>
<p>Having access to every single child item in the scene graph obviously brings an extreme flexibility for configurations. Now it is easy to change the color of the background object to make the legend transparent:</p>
<pre class="brush: csharp; title: ; notranslate">
var leg = ilPanel1.Scene.First&lt;ILLegend&gt;();
leg.First&lt;ILTriangles&gt;(&quot;ScreenObjectBackground&quot;).Color = Color.FromArgb(200, Color.White);
</pre>
<p>Which gives us our transparent legend:</p>
<p><a href="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-13_10_50-Form1.png"><img class="aligncenter size-full wp-image-707" src="http://ilnumerics.net/blog/wp-content/uploads/2014/12/2014-12-29-13_10_50-Form1.png" alt="2014-12-29 13_10_50-Form1" width="520" height="253" /></a></p>
<h2>Do not stop here!</h2>
<p>This is the message to take away: any object in any visualization and any plot in ILNumerics is composed out of individual smaller objects. You can access them and manipulate them freely without limits! Most &#8216;convenience&#8217; properties like &#8220;colorbar.Background&#8221; barely do more than we have done here: they give easy access to inner children (and add Intellisense support, of course). But if you need access &#8211; you can easily gain it yourself by inspecting the scene graph and its objects by the methods described here.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/getting-to-know-your-scene-graph/">Getting to know your Scene Graph</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/getting-to-know-your-scene-graph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dark color schemes with ILPanel</title>
		<link>https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/</link>
		<comments>https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/#comments</comments>
		<pubDate>Fri, 18 Apr 2014 15:35:10 +0000</pubDate>
		<dc:creator><![CDATA[haymo]]></dc:creator>
				<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Usage]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Color]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Dark]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=580</guid>
		<description><![CDATA[<p>I recently got a request for help in building an application, where ILPanel was supposed to create some plots with a dark background area. Dark color schemes are very popular in some industrial domains and ILNumerics&#8217; ILPanel gives the full flexibility for supporting dark colors. Here comes a simple example: And here comes the code &#8230; <a href="https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/" class="more-link">Continue reading <span class="screen-reader-text">Dark color schemes with ILPanel</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/">Dark color schemes with ILPanel</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>I recently got a request for help in building an application, where ILPanel was supposed to create some plots with a dark background area. Dark color schemes are very popular in some industrial domains and ILNumerics&#8217; <code>ILPanel </code>gives the full flexibility for supporting dark colors. Here comes a simple example:</p>
<p><a href="http://ilnumerics.net/blog/wp-content/uploads/2014/04/TorusPartBlackBG1.png"><img class="aligncenter size-full wp-image-587" src="http://ilnumerics.net/blog/wp-content/uploads/2014/04/TorusPartBlackBG1.png" alt="" width="566" height="544" /></a><span id="more-580"></span></p>
<p>And here comes the code used to create this example:</p>
<pre class="brush: csharp; title: ; notranslate">
private void ilPanel1_Load(object sender, EventArgs e) {
    // create some test data
    ILArray&lt;float&gt; A = ILSpecialData.torus(1.3f, 0.6f);

    // create the plot: a simple surface
    ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
        new ILSurface(A, colormap: Colormaps.Summer) {
            // we also want a colorbar
            new ILColorbar() {
                Background = {
                    Color = Color.DarkGray
                }
            }
        }
    });

    // set the backcolor of the scene to black
    ilPanel1.BackColor = Color.Black; 

    // set labels color
    foreach (var label in ilPanel1.Scene.Find&lt;ILLabel&gt;()) {
        label.Color = Color.White;
        label.Fringe.Width = 0;
    }

    // set the color of the default labels for axis ticks
    foreach (var axis in ilPanel1.Scene.Find&lt;ILAxis&gt;()) {
        axis.Ticks.DefaultLabel.Color = Color.White;
        axis.Ticks.DefaultLabel.Fringe.Width = 0;
    }

    // some more configuration: the view limits
    ilPanel1.Scene.First&lt;ILPlotCube&gt;().Limits.Set(
        new Vector3(0, 0, 1), new Vector3(2, 2, -1));

}
</pre>
<p>In line 4 we use the <code>ILSpecialData </code>class to create some test data. <code>torus() </code>creates the X, Y and Z values which eventually assemble a torus when used in <code>ILSurface</code>. The next line creates and adds a new plot cube to the scene. We set its <code>two2Mode</code> property to <code>false</code>, so we can rotate the torus with the mouse.</p>
<p>The next line creates a new surface and provides the torus data to it. As colormap &#8216;Colormaps.Summer&#8217; is configured. Most surfaces need a colorbar in order to help mapping colors to actual values. We add a new colorbar below the surface and set its background color to some dark value.</p>
<p>Next, the BackColor of the main panel is set to black. Note, that setting the background color of a panel must be done in code in the current version (3.3.3). This is due to a bug in ILPanel which causes settings made in the designer to be ignored!</p>
<p>Now we have a dark background color but the labels still remain black. So let&#8217;s fix this: all labels which are part of the regular scene graph can easily be set at once. We simply use the <code>ILGroup.Find()</code> function to enumerate all labels and set their color to white. Also, we remove the fringe around them. Alternatively we could have set the fringe color to some dark color.</p>
<p>The last issue remaining is caused by the fact that labels for ticks cannot be configured here. The reason is, that tick labels are created dynamically. they don&#8217;t even exist at the time of execution of this code. So we must configure a thing called &#8216;<code>DefaultLabel</code>&#8216; instead. <code>DefaultLabel</code> is a member of the ticks collection of every axis object and used at runtime to provide default properties for all tick labels in auto mode.</p>
<p>This gives a nice dark color scheme. Keep in mind that the default color values for all scene-/plot objects are currently optimized for light background colors. Using dark backgrounds, therefore requires one to adjust the color on all plot objects accordingly.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/">Dark color schemes with ILPanel</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/dark-color-schemes-with-ilpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
