<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
	<title>Planet Ada</title>
	<link>http://planet.ada.cx</link>
	<language>en</language>
	<description>Planet Ada - http://planet.ada.cx</description>
	<atom:link rel="self" href="http://planet.ada.cx/rss20.xml" type="application/rss+xml"/>

<item>
	<title>Ada in Denmark: Concurrent Ada Programming</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1766</guid>
	<link>http://ada-dk.org/2012/05/concurrent-ada-programming/</link>
	<description>&lt;p&gt;I wrote a short article about &lt;a href=&quot;http://blogs.fsfe.org/thomaslocke/2012/05/17/concurrent-ada-programming/&quot;&gt;concurrent Ada programming&lt;/a&gt;, and a mere handful of minutes after I put it online a reader had found a bug in it.&lt;/p&gt;
&lt;p&gt;You gotta love the interwebz! &lt;img alt=&quot;:D&quot; class=&quot;wp-smiley&quot; src=&quot;http://ada-dk.org/wp-includes/images/smilies/icon_biggrin.gif&quot; /&gt; &lt;/p&gt;
&lt;p&gt;It’s definitely an article for beginners, and I do plan on adding it to the &lt;a href=&quot;http://wiki.ada-dk.org/&quot;&gt;Ada-DK Wiki&lt;/a&gt; as soon as possible. Feel free to let me know what you think about it, and don’t hold back on suggestions for improvements.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 17:36:09 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: AdaIC Survey</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1763</guid>
	<link>http://ada-dk.org/2012/05/adaic-survey/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.adaic.org&quot;&gt;adaic.org&lt;/a&gt; website is one of the better online Ada resources, and with the latest survey they’ve put up, it seems they are aiming even higher. We got this from Randy Brukardt:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
As part of our ongoing efforts to improve the AdaIC website, we’re conducting a short survey of Ada users to guide possible improvements to the site. Find the survey at:&lt;/p&gt;
&lt;p&gt;             &lt;a href=&quot;http://www.adaic.org/survey/&quot;&gt;http://www.adaic.org/survey/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Thanks in advance for your time. &lt;/p&gt;
&lt;p&gt;                                   Randy Brukardt, (former) AdaIC webmaster &lt;/p&gt;
&lt;p&gt;P.S. You’ll need to have Javascript enabled to access the survey, as I found out when I tried it. &lt;img alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; src=&quot;http://ada-dk.org/wp-includes/images/smilies/icon_smile.gif&quot; /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Personally I’d like to see some more code on the website, and a tight integration with Google+.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 16:12:49 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada Industrial Control Widget Library v1.3 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1759</guid>
	<link>http://ada-dk.org/2012/05/ada-industrial-control-widget-library-v1-3-released/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/aicwl.htm&quot;&gt;Ada Industrial Control Widget&lt;/a&gt; library provide high-quality industrial control widgets for Ada applications. Version 1.3 is a bug-fix release with no new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A sample of asynchronous plotting added, based on the contribution by Yogeshwarsing Calleecharan, who generously provided his code solving a differential equation of a generator’s rotor movement. The sample illustrates ploting data on-line, as they are computed by a separate Ada task.&lt;/li&gt;
&lt;li&gt;Memory leak while drawing graph paper annotations fixed.&lt;/li&gt;
&lt;li&gt;Graph paper annotations formatting flag to enable or disable superscript numbers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read the release announcement &lt;a href=&quot;https://groups.google.com/d/msg/comp.lang.ada/OsONM8sFor4/Yjh2AGg3YiYJ&quot;&gt;here&lt;/a&gt; and get to the code &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/aicwl.htm&quot;&gt;here&lt;/a&gt;. Fedora and Debian packages are available and source for the rest of us.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 16:08:37 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: GtkAda Contributions v2.13 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1757</guid>
	<link>http://ada-dk.org/2012/05/gtkada-contributions-v2-13-released/</link>
	<description>&lt;p&gt;Just a small fix compared to version 2.12:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The procedure Send of Generic_Message has now the Timeout parameter to break possible deadlocks when messages are posted upon application completion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Read the release announcement &lt;a href=&quot;https://groups.google.com/d/msg/comp.lang.ada/Ud7k3DZGfck/DLFd_6mpO3IJ&quot;&gt;here&lt;/a&gt; and get the code &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm&quot;&gt;here&lt;/a&gt;. Fedora and Debian packages are available and source for the rest of us.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 15:04:16 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada Server Faces 0.4.0 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1750</guid>
	<link>http://ada-dk.org/2012/05/ada-server-faces-0-4-0-released/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://code.google.com/p/ada-asf/&quot;&gt;Ada Server Faces&lt;/a&gt; is moving ahead at a steady pace with the latest 0.4.0 release. It is, as you might remember from earlier Ada-DK posts about it, a framework for making web-applications using the same methodology as Java Server Faces:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Ada Server Faces allows to create web applications using the same pattern a the Java Server Faces (See JSR 252, JSR 314 or JSR 344).&lt;/p&gt;
&lt;p&gt;ASF provides a security framework which allows to protect web pages according to some security policy. This framework allows users to authenticate by using OpenID Authentication 2.0.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can get the latest version &lt;a href=&quot;http://code.google.com/p/ada-asf/downloads/list&quot;&gt;here&lt;/a&gt; or you can grab the dev version from the SVN repository:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;svn&lt;/span&gt; checkout http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;ada-asf.googlecode.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;svn&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;trunk&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt; ada-asf-read-only&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;New in version 0.4.0 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for shared or static build configuration.&lt;/li&gt;
&lt;li&gt;Support for file upload.&lt;/li&gt;
&lt;li&gt;New components , , , .&lt;/li&gt;
&lt;li&gt;New EL function util:hasMessage.&lt;/li&gt;
&lt;li&gt;ASF now Implements the JSF phase events and phase listeners.&lt;/li&gt;
&lt;li&gt;Implements the JSF/Ruby on Rails flash context.&lt;/li&gt;
&lt;li&gt;Adds the pre-defined JSF beans: initParam, flash.&lt;/li&gt;
&lt;li&gt;Support for locales and honors the Accept-Language.&lt;/li&gt;
&lt;li&gt;New demos are available in French and English&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s a live &lt;a href=&quot;http://demo.vacs.fr/&quot;&gt;online demo available&lt;/a&gt;. You can read the full release announcement &lt;a href=&quot;http://blog.vacs.fr/index.php?post/2012/05/11/Ada-Server-Faces-0.4.0-is-available&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 14:51:12 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada Database Objects 0.3.0 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1743</guid>
	<link>http://ada-dk.org/2012/05/ada-database-objects-0-3-0-released/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://code.google.com/p/ada-ado/&quot;&gt;Ada Database Objects&lt;/a&gt; is a library that facilitates access to MySQL and SQLite databases and the mapping of database objects into Ada records, AKA an ORM.&lt;/p&gt;
&lt;p&gt;New in this version is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support to update database records when a field is really modified.&lt;/li&gt;
&lt;li&gt;Customization of the SQLite database connection by using SQLite PRAGMAs.&lt;/li&gt;
&lt;li&gt;Escape of MySQL or SQLite reserved keywords.&lt;/li&gt;
&lt;li&gt;Support for blob type.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can get to the code &lt;a href=&quot;http://code.google.com/p/ada-ado/downloads/list&quot;&gt;here&lt;/a&gt;, or you can grab the latest dev version from SVN:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;svn&lt;/span&gt; checkout http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;ada-ado.googlecode.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;svn&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;trunk&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt; ada-ado-read-only&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The full release announcement can be read &lt;a href=&quot;http://blog.vacs.fr/index.php?post/2012/05/12/Ada-Database-Objects-0.3.0-is-available&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 14:36:03 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Abusing Operator Overloading for Fun and Profit</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1736</guid>
	<link>http://ada-dk.org/2012/05/abusing-operator-overloading-for-fun-and-profit/</link>
	<description>&lt;p&gt;You know there’s a good chance of a programming article being interesting/fun if it starts out like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
“Preserve the conventional meaning of overloaded operators” — Ada Quality &amp;amp; Style, Overloaded Operators&lt;/p&gt;
&lt;p&gt;Mmmmm, bite me.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And he means it! The &lt;a href=&quot;http://worriedprogrammer.wordpress.com/&quot;&gt;Worried Programmer&lt;/a&gt; goes on to write an excellent piece on how to abusively overload operators. The article is full of great examples, like this one:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Impsel &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
   Which : Boolean := True;
   Letter_Choice : Natural := &lt;span style=&quot;color: #ff0000;&quot;&gt;2&lt;/span&gt;;
 
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   Put_Line&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;This here&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;or&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;That there&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;and&lt;/span&gt; Which&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-- &quot;That there&quot;&lt;/span&gt;
 
   Put_Line&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;A&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;or&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;B&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;or&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;and&lt;/span&gt; Letter_Choice&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;  &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-- &quot;C&quot; (0-based indexing)&lt;/span&gt;
 
   Put_Line&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;A&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;or&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;B&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;or&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;and&lt;/span&gt; False&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-- Constraint_Error!&lt;/span&gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Impsel;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Yes, really. The section of the article containing the above marvel was rightly dubbed “Losing Myself” by the author. It might not be pretty, or very Ada-like, but it sure as heck is fun!&lt;/p&gt;
&lt;p&gt;Be sure to read the &lt;a href=&quot;http://worriedprogrammer.wordpress.com/2012/02/19/abusing-operator-overloading-for-fun-and-profit/&quot;&gt;Abusing Operator Overloading for Fun and Profit&lt;/a&gt; article. Don’t miss out on this one!&lt;/p&gt;</description>
	<pubDate>Thu, 17 May 2012 14:21:48 +0000</pubDate>
</item>
<item>
	<title>Thomas Løcke: Concurrent Ada Programming</title>
	<guid isPermaLink="false">http://blogs.fsfe.org/thomaslocke/?p=194</guid>
	<link>http://blogs.fsfe.org/thomaslocke/2012/05/17/concurrent-ada-programming/</link>
	<description>&lt;p&gt;Ada’s model for doing concurrent programming is absolutely marvelous, and today I’m going to give you a small taste of it. More or less all programming languages provide tools for concurrent programming, but few do it as elegant as Ada, where the whole concept has been build into the language from it’s inception in 1983.&lt;/p&gt;
&lt;p&gt;In Ada concurrent programming is a first class citizen, not an afterthought, and in this day and age where even the cheapest of processors have multiple cores, being able to properly harness the power of those many cores is important. A lot of programs could benefit from a bit of concurrent magic, but since concurrent programming brings with it a whole new set of problems, many programmers shy away from it. Not so with Ada programmers. We have tasks, protected objects, scheduling, guards and entries right there in front of us. In this article I’m going to show you how tasks and protected objects can be used to add concurrency to a very simple program.&lt;/p&gt;
&lt;p&gt;The first thing we’re going to do is setup a small program that solves the plain problem of counting 20 times to 1_000_000_000.&lt;/p&gt;
&lt;p&gt;One possible Ada solution to this problem is this:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;with&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Task_Identification&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;with&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Text_IO&lt;/span&gt;;
 
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Sequential
&lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;use&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Task_Identification&lt;/span&gt;;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;use&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Text_IO&lt;/span&gt;;
 
   Id   : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;constant&lt;/span&gt; String := Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Current_Task&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   Jobs : Positive := &lt;span style=&quot;color: #ff0000;&quot;&gt;20&lt;/span&gt;;
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   &lt;span style=&quot;color: #00007f;&quot;&gt;for&lt;/span&gt; Job &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;reverse&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #202020;&quot;&gt;Jobs&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;for&lt;/span&gt; K &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;_000_000_000 &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
	 &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  This is really hard!&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
 
      Put_Line &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;Job&quot;&lt;/span&gt; &amp;amp; Positive'Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Job&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot; done by &quot;&lt;/span&gt; &amp;amp; Id&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Sequential;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Before we get into actually compiling and running Sequential, allow me to first explain what’s going on in the program. &lt;/p&gt;
&lt;p&gt;First we &lt;code&gt;with&lt;/code&gt; the two packages &lt;code&gt;Ada.Task_Identification&lt;/code&gt; and &lt;code&gt;Ada.Text_IO&lt;/code&gt;. What this does is make the subprograms and types from those packages visible and available to our program, somewhat analogous to the &lt;code&gt;#include&lt;/code&gt; directive used in C. After that we setup our “main” procedure and name it Sequential. In Ada you can call your main procedure whatever you like. The &lt;code&gt;use&lt;/code&gt; clauses we encounter next lets us access the tools of the &lt;code&gt;Ada.Text_IO&lt;/code&gt; and &lt;code&gt;Ada.Task_Identification&lt;/code&gt; packages without having to prefix every type and subprogram with the package name. This is equivalent to the &lt;code&gt;using namespace&lt;/code&gt; statement in C++.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;Ada.Task_Identification&lt;/code&gt; package makes it possible for us to figure out the id of a running task and &lt;code&gt;Ada.Text_IO&lt;/code&gt; makes the &lt;code&gt;Put_Line&lt;/code&gt; procedure available to Sequential.&lt;/p&gt;
&lt;p&gt;We declare and initialize two objects in the declarative part of the program (between &lt;code&gt;is&lt;/code&gt; and &lt;code&gt;begin&lt;/code&gt;): &lt;code&gt;Id&lt;/code&gt; and &lt;code&gt;Jobs&lt;/code&gt;. The &lt;code&gt;Id&lt;/code&gt; constant contains a String representation of the environment task identifier. As our program only have one running task (or thread if you will), which is the main environment task, the output done in the &lt;code&gt;Put_Line&lt;/code&gt; line will show the same &lt;code&gt;Id&lt;/code&gt; for every job completed.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;Jobs&lt;/code&gt; variable is the queue of jobs, in our case 20. Note that the &lt;code&gt;Positive&lt;/code&gt; type is actually a subtype of &lt;code&gt;Integer&lt;/code&gt; with the range &lt;code&gt;1 .. Integer'Last&lt;/code&gt;. If you try to assign a value below 1 or above &lt;code&gt;Integer'Last&lt;/code&gt; then the program will raise a &lt;code&gt;Constraint_Error&lt;/code&gt; exception.&lt;/p&gt;
&lt;p&gt;After the &lt;code&gt;begin&lt;/code&gt; keyword we’re in the actual body of the program, and the first thing we do is setup a &lt;code&gt;for loop&lt;/code&gt; that’ll count down from 20 to 1, as indicated by the &lt;code&gt;reverse&lt;/code&gt; keyword and the given range of &lt;code&gt;1 .. Jobs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Inside this loop we do the actual work: Counting to 1_000_000_000 for each job and then outputting a line of text indicating whenever a job has been completed and by which task id.&lt;/p&gt;
&lt;p&gt;And that’s it.&lt;/p&gt;
&lt;p&gt;In order to compile the program do:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;gnatmake sequential.adb&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And then to execute and time:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; sequential&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;My laptop yields the following when executed and timed:&lt;/p&gt;
&lt;pre&gt;thomas@t420:~/Ada/Simple_Tasking time sequential
Job 20 done by main_task_000000000064A010
Job 19 done by main_task_000000000064A010
Job 18 done by main_task_000000000064A010
Job 17 done by main_task_000000000064A010
Job 16 done by main_task_000000000064A010
Job 15 done by main_task_000000000064A010
Job 14 done by main_task_000000000064A010
Job 13 done by main_task_000000000064A010
Job 12 done by main_task_000000000064A010
Job 11 done by main_task_000000000064A010
Job 10 done by main_task_000000000064A010
Job 9 done by main_task_000000000064A010
Job 8 done by main_task_000000000064A010
Job 7 done by main_task_000000000064A010
Job 6 done by main_task_000000000064A010
Job 5 done by main_task_000000000064A010
Job 4 done by main_task_000000000064A010
Job 3 done by main_task_000000000064A010
Job 2 done by main_task_000000000064A010
Job 1 done by main_task_000000000064A010

real    0m52.737s
user    0m52.636s
sys     0m0.001s
&lt;/pre&gt;
&lt;p&gt;As you can see it took a good 52 seconds to finish all 20 jobs. At no point during the execution of the program did the system utilize more than one CPU core. Each job was completed in an absolute sequential manner, starting with job 20 and ending with 1.&lt;/p&gt;
&lt;p&gt;Surely this is sad, considering my laptop is equipped with a CPU sporting a whooping four cores. Lets add some tasking magic to the program and see how much faster we can make it go.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;with&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Task_Identification&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;With&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Text_IO&lt;/span&gt;;
 
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Concurrent
&lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;use&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Task_Identification&lt;/span&gt;;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;use&lt;/span&gt; Ada.&lt;span style=&quot;color: #202020;&quot;&gt;Text_IO&lt;/span&gt;;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;protected&lt;/span&gt; Jobs &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Get 
	&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Job : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;out&lt;/span&gt; Natural&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;private&lt;/span&gt;
      J : Natural := &lt;span style=&quot;color: #ff0000;&quot;&gt;20&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Jobs;
 
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;------------&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Jobs  --&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;------------&lt;/span&gt;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;body&lt;/span&gt; Jobs &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-----------&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Get  --&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-----------&lt;/span&gt;
 
      &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Get 
	&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Job : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;out&lt;/span&gt; Natural&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
	 Job := J;
         &lt;span style=&quot;color: #00007f;&quot;&gt;if&lt;/span&gt; J &amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;then&lt;/span&gt;
            J := J - &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;;
         &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;if&lt;/span&gt;;
      &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Get;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Jobs;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;task&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;type&lt;/span&gt; Worker;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  The Worker gets a job, and does the hard work.&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  When there are no more jobs, the Worker exits.&lt;/span&gt;
 
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--------------&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Worker  --&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--------------&lt;/span&gt;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;task&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;body&lt;/span&gt; Worker &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      A_Job : Natural;
      Id    : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;constant&lt;/span&gt; String := Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Current_Task&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
	 Jobs.&lt;span style=&quot;color: #202020;&quot;&gt;Get&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;A_Job&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
 
	 &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;exit&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;when&lt;/span&gt; A_Job &amp;lt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;; 
 
	 &lt;span style=&quot;color: #00007f;&quot;&gt;for&lt;/span&gt; K &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;_000_000_000 &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
	    &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  This is really hard!&lt;/span&gt;
	 &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
 
	 Put_Line &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;Job&quot;&lt;/span&gt; &amp;amp; Natural'Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;A_Job&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot; done by &quot;&lt;/span&gt; &amp;amp; Id&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
      &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Worker;
 
   Workers : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;array&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #ff0000;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;of&lt;/span&gt; Worker;
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  We're not using the main environment task for anything.&lt;/span&gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Concurrent;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;
&lt;p&gt;We &lt;code&gt;with&lt;/code&gt; and &lt;code&gt;use&lt;/code&gt; the same packages as before, but after that there are quite a few new things, first of which is a protected object. In Ada these are objects that export procedures, functions and entries that enables us to interact with the encapsulated data structure. In our case we’ve setup a protected object called &lt;code&gt;Jobs&lt;/code&gt;, but we could just as well have created a protected type and then declared one of more objects to be of that type.&lt;/p&gt;
&lt;p&gt;We can only operate on the data structure of a protected object via the exported subprograms and this is done under automatic mutual exclusion. A protected object will allow many concurrent readers (via exported functions), but only one writer (via exported procedures and entries).&lt;/p&gt;
&lt;p&gt;A protected object is just what we need to protect our job queue from race conditions, now that we have several tasks querying and updating it.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;protected&lt;/span&gt; Jobs &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Get 
	&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Job : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;out&lt;/span&gt; Natural&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;private&lt;/span&gt;
      J : Natural := &lt;span style=&quot;color: #ff0000;&quot;&gt;20&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Jobs;
 
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;------------&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Jobs  --&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;------------&lt;/span&gt;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;body&lt;/span&gt; Jobs &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-----------&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Get  --&lt;/span&gt;
      &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;-----------&lt;/span&gt;
 
      &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Get 
	&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Job : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;out&lt;/span&gt; Natural&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
	 Job := J;
         &lt;span style=&quot;color: #00007f;&quot;&gt;if&lt;/span&gt; J &amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;then&lt;/span&gt;
            J := J - &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;;
         &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;if&lt;/span&gt;;
      &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Get;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Jobs;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;First we declare our &lt;code&gt;Jobs&lt;/code&gt; protected object. We export the sole &lt;code&gt;Get (Job : out Natural)&lt;/code&gt; procedure, which is the only way for us to interact with the very simple data structure, consisting only of the variable &lt;code&gt;J&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the body of &lt;code&gt;Jobs&lt;/code&gt; we find the actual implementation of the &lt;code&gt;Get&lt;/code&gt; procedure. All it does is put the current value of &lt;code&gt;J&lt;/code&gt; into the &lt;code&gt;Job&lt;/code&gt; parameter and then decrease the value of &lt;code&gt;J&lt;/code&gt; by one. With this simple system in place we’re ensured that access to &lt;code&gt;J&lt;/code&gt; is only ever granted to one single task at the same time. Only when that task is done is the next one allowed access.&lt;/p&gt;
&lt;p&gt;With a secure job queue in place we move on to creating the tasks that will be doing the actual work:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;task&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;type&lt;/span&gt; Worker;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  The Worker gets a job, and does the hard work.&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  When there are no more jobs, the Worker exits.&lt;/span&gt;
 
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--------------&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  Worker  --&lt;/span&gt;
   &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--------------&lt;/span&gt;
 
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;task&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;body&lt;/span&gt; Worker &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
      A_Job : Natural;
      Id    : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;constant&lt;/span&gt; String := Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Current_Task&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
      &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
	 Jobs.&lt;span style=&quot;color: #202020;&quot;&gt;Get&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;A_Job&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
 
	 &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;exit&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;when&lt;/span&gt; A_Job &amp;lt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;; 
 
	 &lt;span style=&quot;color: #00007f;&quot;&gt;for&lt;/span&gt; K &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt;_000_000_000 &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;
	    &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  This is really hard!&lt;/span&gt;
	 &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
 
	 Put_Line &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;Job&quot;&lt;/span&gt; &amp;amp; Natural'Image &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;A_Job&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot; done by &quot;&lt;/span&gt; &amp;amp; Id&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
      &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;loop&lt;/span&gt;;
   &lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Worker;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;First we declare a task type called &lt;code&gt;Worker&lt;/code&gt;. We could’ve setup a task object, just as we did with the &lt;code&gt;Jobs&lt;/code&gt; protected object, but since we want more than one worker a type is the way to go. The body of the task looks a lot like the body from the Sequential program, with a few minor differences. We declare the &lt;code&gt;A_Job&lt;/code&gt; variable to be of the type &lt;code&gt;Natural&lt;/code&gt;, which is a subtype of &lt;code&gt;Integer&lt;/code&gt; with the range &lt;code&gt;0 .. Integer'Last&lt;/code&gt;. The &lt;code&gt;Id&lt;/code&gt; constant is exactly like the one from the first program.&lt;/p&gt;
&lt;p&gt;In the body of the &lt;code&gt;Worker&lt;/code&gt; task we’ve got a plain loop that starts out with putting a job into the &lt;code&gt;A_Job&lt;/code&gt; variable. We then check if the job is valid in the &lt;code&gt;exit when...&lt;/code&gt; line and if not we exit the loop and the task is then completed.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;for&lt;/code&gt; loop and the &lt;code&gt;Put_Line&lt;/code&gt; code is more or less the same as before.&lt;/p&gt;
&lt;p&gt;Last we have this:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;   Workers : &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;array&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;1&lt;/span&gt; .. &lt;span style=&quot;color: #ff0000;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;of&lt;/span&gt; Worker;
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt;; &lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;--  We're not using the main environment task for anything.&lt;/span&gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Concurrent;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here we declare an array of 4 &lt;code&gt;Worker&lt;/code&gt; tasks. As soon as the program reach this spot, four workers are created and when we pass &lt;code&gt;begin&lt;/code&gt; they spring to life. Since we already have 4 workers counting to 1_000_000_000 like there’s no tomorrow, we don’t really need to add any code to the main environment task, so we simply add a &lt;code&gt;null&lt;/code&gt; statement. The main environment task is the master of the 4 workers, so it wont complete until all 4 workers have completed.&lt;/p&gt;
&lt;p&gt;Lets see how the program performs now:&lt;/p&gt;
&lt;pre&gt;thomas@t420:~/Ada/Simple_Tasking$ time concurrent
Job 20 done by workers(4)_000000000065FCC0
Job 19 done by workers(2)_0000000000659240
Job 18 done by workers(3)_000000000065C780
Job 17 done by workers(1)_0000000000655D00
Job 16 done by workers(4)_000000000065FCC0
Job 15 done by workers(2)_0000000000659240
Job 13 done by workers(1)_0000000000655D00
Job 14 done by workers(3)_000000000065C780
Job 12 done by workers(4)_000000000065FCC0
Job 10 done by workers(1)_0000000000655D00
Job 11 done by workers(2)_0000000000659240
Job 9 done by workers(3)_000000000065C780
Job 6 done by workers(2)_0000000000659240
Job 8 done by workers(4)_000000000065FCC0
Job 7 done by workers(1)_0000000000655D00
Job 5 done by workers(3)_000000000065C780
Job 4 done by workers(2)_0000000000659240
Job 3 done by workers(4)_000000000065FCC0
Job 1 done by workers(3)_000000000065C780
Job 2 done by workers(1)_0000000000655D00

real    0m18.727s
user    1m11.454s
sys     0m0.025s
&lt;/pre&gt;
&lt;p&gt;YAY! It is much faster now, and all four cores on my CPU is running at 100% while the program executes. Also note how the jobs are no longer completed sequentially. You can experiment with the amount of workers by changing the size of the &lt;code&gt;Workers&lt;/code&gt; array. On my box the sweet spot is firing up 20 workers at the same time. With twenty workers I’m very close to a clean 18 seconds. The second fastes result is obtained with 4 workers. Every other amount of workers I’ve tried is slower.&lt;/p&gt;
&lt;p&gt;There’s of course a whole lot more to Ada and concurrent programming than shown here. This little example has barely scratched the surface. A good place to start is the &lt;a href=&quot;http://en.wikibooks.org/wiki/Ada_Programming/Tasking&quot;&gt;Ada Programming Wikibook&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can grab the code for these examples at &lt;a href=&quot;https://github.com/ThomasLocke/Simple_Tasking&quot;&gt;github.com/ThomasLocke/Simple_Tasking&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Adding concurrency to an Ada program is very simple, and the model for doing it is both easy to understand and to work with. When you’re using Ada there’s simply no excuse for not adding concurrency to your program where it will benefit from it.&lt;/p&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_button_facebook_like&quot;&gt;&lt;/a&gt;&lt;a class=&quot;addthis_button_tweet&quot;&gt;&lt;/a&gt;&lt;a class=&quot;addthis_button_google_plusone&quot;&gt;&lt;/a&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 17 May 2012 13:36:32 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Spawning Processes From Ada Using The Ada Spawn Manager</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1732</guid>
	<link>http://ada-dk.org/2012/05/spawning-processes-from-ada-using-the-ada-spawn-manager/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.codelabs.ch/&quot;&gt;codelabs.ch&lt;/a&gt; project is steadily growing their collection of nice Ada projects, the latest being the &lt;a href=&quot;http://www.codelabs.ch/spawn-manager/index.html&quot;&gt;Ada Spawn Manager&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The Ada spawn manager implements the concept described in the GNAT GPL package System.OS_Lib. It is used to solve the problem of spawning processes at arbitrary times from multitasking Ada programs:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
If the parent is using tasking, and needs to spawn subprocesses at arbitrary times, one technique is for the parent to spawn (very early) a particular spawn-manager subprocess whose job is to spawn other processes. The spawn-manager avoids tasking. The parent sends messages to the spawn-manager requesting it to spawn processes, using whatever inter-process communication mechanism you like, such as sockets.&lt;/p&gt;
&lt;p&gt;SYSTEM.OS_LIB specification&lt;br /&gt;
— GNAT COMPILER COMPONENTS
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The Ada spawn manager uses UNIX domain sockets provided by the &lt;a href=&quot;http://www.codelabs.ch/anet/index.html&quot;&gt;Anet library&lt;/a&gt; to implement fast and simple IPC.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Fun!&lt;/p&gt;
&lt;p&gt;Currently there’s no official release version, but you can git clone the development version:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;git&lt;/span&gt; clone http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;git.codelabs.ch&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;git&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;spawn-manager.git&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I wonder how this compares to spawning processes using the Florist POSIX package found at &lt;a href=&quot;http://libre.adacore.com&quot;&gt;libre.adacore.com&lt;/a&gt;?&lt;/p&gt;</description>
	<pubDate>Thu, 10 May 2012 08:02:18 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Stephane Carrez Releases Ada Utility Library 1.5.0</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1726</guid>
	<link>http://ada-dk.org/2012/05/stephane-carrez-releases-ada-utility-library-1-5-0/</link>
	<description>&lt;p&gt;It’s been a while since I’ve posted anything from Stephane Carrez’ excellent &lt;a href=&quot;http://blog.vacs.fr/&quot;&gt;Java2Ada&lt;/a&gt; blog, but today that drought is ended with the release of Stephane’s &lt;a href=&quot;http://code.google.com/p/ada-util/downloads/list&quot;&gt;Ada Utility Library v1.5.0&lt;/a&gt;. As the name implies the library provides a bunch of Ada utilities, chief among those being concurrent fifo queues and arrays, process creation/spawning and SHA1/HMAC encoding. There’s lots more in there, so be sure to check it out.&lt;/p&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;http://ada-dk.org/feed/&quot;&gt;here&lt;/a&gt; or you could simply svn clone it and get to the goodies immediately:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;svn&lt;/span&gt; checkout http:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;ada-util.googlecode.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;svn&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;trunk&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt; ada-util-read-only&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What I’d really like to see in this package is a standalone implementation of Stephane’s OpenID stuff. I’ve got a project that needs OpenID, and it would be &lt;em&gt;really&lt;/em&gt; nice to be able to do “with Util.OpenID” and then make it fly. One can dream!&lt;/p&gt;</description>
	<pubDate>Thu, 10 May 2012 07:50:16 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Another Round of Dmitry Kazakov Updates</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1720</guid>
	<link>http://ada-dk.org/2012/05/another-round-of-dmitry-kazakov-updates/</link>
	<description>&lt;p&gt;The productivity of &lt;a href=&quot;http://www.dmitry-kazakov.de&quot;&gt;Dmitry Kazakov&lt;/a&gt; continues to amaze me. Not only is he producing some rather large libraries and projects, he is also very actively updating and maintaining them.&lt;/p&gt;
&lt;p&gt;I could probably learn a lot from this guy.  &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://ada-dk.org/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Today we’ve got updates to the following projects:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/components.htm&quot;&gt;Simple components for Ada v3.16&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Changes in version 3.16 (and 3.15, since I forgot to report those):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bug fix in the package Storage_Streams. The bug was caused by an overflow in index computations.&lt;/li&gt;
&lt;li&gt;Parsers now have a mechanism to disallow an operation outside brackets.&lt;/li&gt;
&lt;li&gt;Closing brackets can be returned back when misplaced switching to infix context. For example, it is now possible to parse expressions like f(|a|+1|x), where | is both |·|-brackets and an infix operation.&lt;/li&gt;
&lt;li&gt;Association checks are performed on all operations and brackets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simple components provides…&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
…implementations of smart pointers, directed graphs, sets, maps, stacks, tables, string editing, unbounded arrays, expression analyzers, lock-free data structures, synchronization primitives (events, race condition free pulse events, arrays of events, reentrant mutexes, deadlock-free arrays of mutexes), pseudo-random non-repeating numbers, symmetric encoding and decoding, IEEE 754 representations support. Tables management and strings editing are described in separate documents see Tables and Strings edit. The library is kept conform to both Ada 95 and Ada 2005 language standards.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The next contender is the &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/aicwl.htm&quot;&gt;Ada industrial widget library v1.2&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Changes to the previous version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bug fix in waveform sampling which had the effect that sometimes the amplifier get permanently rescaled when in auto-scale mode.&lt;/li&gt;
&lt;li&gt;Rendering waveform annotations was changed to prevent values shown as xxx*10**0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key features of the Ada industrial widget library are.. &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
…widgets composed of transparent layers drawn by cairo, fully scalable graphics, support of time controlled refresh policy for real-time and heavy-duty applications, caching graphical operations, stream I/O support for serialization and deserialization, ready-to-use gauge, meter, oscilloscope widgets, editor widget for WYSIWYG design of complex dashboards.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Go get ‘em while they are hot!&lt;/p&gt;</description>
	<pubDate>Thu, 10 May 2012 07:26:04 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Some Fast Ada Programming News</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1714</guid>
	<link>http://ada-dk.org/2012/05/some-fast-ada-programming-news/</link>
	<description>&lt;p&gt;First lets start with the fact that it just got easier to build &lt;a href=&quot;http://adarocks.com/node/41&quot;&gt;Ada packages for Debian&lt;/a&gt;. YAY!&lt;/p&gt;
&lt;p&gt;Second it’s great to know that the Ada networking library, &lt;a href=&quot;http://www.codelabs.ch/anet/&quot;&gt;Anet&lt;/a&gt;, just hit version 0.1 – Get it while it’s hot.&lt;/p&gt;
&lt;p&gt;Third you’ll be thrilled to know that the &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/gbss5loyQMM&quot;&gt;What would you like in Ada 202X?&lt;/a&gt; thread on comp.lang.ada has gone berserk! Fun read, if you have the time.&lt;/p&gt;
&lt;p&gt;Fourth we get &lt;a href=&quot;http://zanyblue.sourceforge.net/&quot;&gt;ZanyBlue&lt;/a&gt;, which is a project implementing a finite element based solution of the Maxwell field equations. En route to that goal, supporting libraries and applications are being implemented. Initial functionality covers localization support for Ada. ZanyBlue is now at version 1.0.0 BETA. Here’s the &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/tTLl7x4EBR8&quot;&gt;release announcement&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally Stephe Leake did the entire Ada 2005, 2012 (draft 17) reference manual in &lt;a href=&quot;http://www.stephe-leake.org/ada/arm.html&quot;&gt;info format&lt;/a&gt;. Pretty awesome, if you ask me.&lt;/p&gt;</description>
	<pubDate>Sat, 05 May 2012 19:40:43 +0000</pubDate>
</item>
<item>
	<title>DragonLace: Fortran and ObjC for GnatDroid</title>
	<guid isPermaLink="true">http://www.dragonlace.net/posts/Fortran_and_ObjC_for_GnatDroid/</guid>
	<link>http://www.dragonlace.net/posts/Fortran_and_ObjC_for_GnatDroid/</link>
	<description>&lt;p&gt;GnatDroid on FreeBSD has been updated build from GCC 4.6.3 on both ARMv5 and ARMv7.
Now that the FreeBSD GNAT-AUX port is modular, the GnatDroid ports should automatically
upgrade with GNAT-AUX is upgraded.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.freshports.org/lang/gnatdroid-armv5&quot;&gt;gnatdroid-armv5 20120301&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;http://www.freshports.org/lang/gnatdroid-armv7&quot;&gt;gnatdroid-armv7 20120301&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GnatDroid now supports Fortran and Objective-C as another benefit of the port
modularity.  These additional languages are not built by default, but they
are easily activated when building GnatDroid from source.  An option configuration
screen will appear after &quot;make&quot; command allowing GnatDroid to support one or
both of these extra languages.  The screen can be forced to appear later with
the &quot;make config&quot; command.&lt;/p&gt;

&lt;p&gt;C++ is not yet supported as it is in GNAT-AUX.  There is a build error on this
language that needs to be examined in depth before C++ support can be added.&lt;/p&gt;</description>
	<pubDate>Sat, 05 May 2012 08:35:31 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: The May 2012 Open Ada-DK Meeting</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1712</guid>
	<link>http://ada-dk.org/2012/05/the-may-2012-open-ada-dk-meeting/</link>
	<description>&lt;p&gt;May 8th. 2012 from 1730 -&amp;gt; ? marks the day and time when the eighteenth open Ada-DK meeting is being held.&lt;/p&gt;
&lt;p&gt;The “open” part means that the meeting is not a members-only affair, but that anybody interested in Ada is welcome, so feel free to invite whomever you might believe could be interested in spending an evening talking about Ada programming.&lt;/p&gt;
&lt;p&gt;If you’re interested in participating, feel free to send us an &lt;a href=&quot;http://ada-dk.org/?page=contact&quot;&gt;email&lt;/a&gt; and we’ll inform you of the when and where. You can also ping me at &lt;a href=&quot;https://plus.google.com/u/0/112815721307813813920/posts&quot;&gt;Google+&lt;/a&gt;, &lt;a href=&quot;http://identi.ca/thomaslocke&quot;&gt;identi.ca/thomaslocke&lt;/a&gt; or join the Freenode IRC #ada channel and look for ThomasLocke.&lt;/p&gt;
&lt;p&gt;The meeting is of course free.&lt;/p&gt;</description>
	<pubDate>Fri, 04 May 2012 08:17:01 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: The Jeffrey R. Carter SIGAda Papers Freely Available</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1705</guid>
	<link>http://ada-dk.org/2012/04/the-jeffrey-r-carter-sigada-papers-freely-available/</link>
	<description>&lt;p&gt;The other day Jeffrey R. Carter &lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/4IHuAkTDe50/discussion&quot;&gt;announced&lt;/a&gt; that all his &lt;a href=&quot;http://pragmada.x10hosting.com/papers.html&quot;&gt;SIGAda papers&lt;/a&gt; had been made available for free.&lt;/p&gt;
&lt;p&gt;YAY!&lt;/p&gt;
&lt;p&gt;You can now get instant access to such classics as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.acm.org/authorize?23959&quot;&gt;OOP vs. readability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.acm.org/authorize?715833&quot;&gt;Ada design of a neural network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.acm.org/authorize?710278&quot;&gt;Ada 9x reusable components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dl.acm.org/authorize?710778&quot;&gt;Variable-length string input in Ada&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And more!&lt;/p&gt;
&lt;p&gt;These are some golden oldies – be sure not to miss them. There’s some valuable Ada programming gold in that stash.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Apr 2012 06:46:43 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada on Slackware64</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1702</guid>
	<link>http://ada-dk.org/2012/04/ada-on-slackware64/</link>
	<description>&lt;p&gt;At &lt;a href=&quot;http://zhuqy.wordpress.com/&quot;&gt;Z’s space (the blog of Zhu Qun-Ying)&lt;/a&gt; you can find a post about &lt;a href=&quot;http://zhuqy.wordpress.com/2012/04/15/building-an-ada-development-environment-using-fsf-gcc-for-slackware/&quot;&gt;building an Ada environment on Slackware64&lt;/a&gt;. It comes complete with a bunch of &lt;a href=&quot;https://github.com/qunying/ada-4-slackware&quot;&gt;slackbuild scripts&lt;/a&gt; and some precompiled &lt;a href=&quot;https://skydrive.live.com/?cid=eaa7b448e0f70a9f&amp;amp;resid=EAA7B448E0F70A9F!388&amp;amp;id=EAA7B448E0F70A9F!388&quot;&gt;Slackware packages&lt;/a&gt;. Awesome!&lt;/p&gt;
&lt;p&gt;I haven’t tried the packages myself, since I just download the stuff I need straight from &lt;a href=&quot;http://libre.adacore.com&quot;&gt;libre.adacore.com&lt;/a&gt;, but there are obvious advantages to having the software packaged as a standard Slackware packages, so I might give ‘em a whirl in the future.&lt;/p&gt;
&lt;p&gt;If you’re interested in seeing how the default libre.adacore.com packages are installed on a Slackware64 box, then feel free to take a look at the 5 videos I did on the subject a while ago: &lt;a href=&quot;http://ada-dk.org/2012/01/ada-on-slackware/&quot;&gt;Ada on Slackware&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;No matter which path you choose, it’s great to know that Ada programming on Slackware is as easy as it gets. A big “Thank you Zhu Qun-Ying!” for making it even simpler.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Apr 2012 06:32:05 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Fuzzy Machine Learning Framework v1.0</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1700</guid>
	<link>http://ada-dk.org/2012/04/fuzzy-machine-learning-framework-v1-0/</link>
	<description>&lt;p&gt;Shortly after I’d posted yesterday’s &lt;a href=&quot;http://ada-dk.org/2012/04/a-slew-of-dmitry-kazakov-updates/&quot;&gt;A Slew of Dmitry Kazakov Updates&lt;/a&gt; news, a release &lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/qfdAuFG_gmA/discussion&quot;&gt;announcement&lt;/a&gt; for version 1.0 of his &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/fuzzy_ml.htm&quot;&gt;Fuzzy Machine Learning Framework&lt;/a&gt; program was made to &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/comp.lang.ada&quot;&gt;comp.lang.ada&lt;/a&gt;. The Fuzzy Machine Learning Framework allows us to operate uncertain and contradictory data in a unified, certain and feasible way. I’m sure you know that I did not come up with that last sentence. I found it on the website for the project, where this quote is also from:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Based on the intuitionistic fuzzy sets and the possibility theory. Fuzzy approach is fully utilized by using intuitionistic sets extended to represent not only uncertain, but also contradictory data within same framework. Consequently the results of the possibility theory are generalized for the case of contradictory data. Same as with the shades of uncertainty we introduce the shades of contradiction from feasible to infeasible. This allows us to operate uncertain and contradictory data in a unified, certain and feasible way.&lt;/p&gt;
&lt;p&gt;Fuzzy features. All the data the system operates on are considered fuzzy. For this a notion of fuzzy feature is introduced as a generalization of crisp features known in classical machine learning. Similar to statistical pattern recognition, a feature is a measurable function with the possibility used as the measure. Both the features and the things viewed through features are consistently supposed fuzzy. By these two ways uncertainty comes into play. It might be a crisp thing described in vague terms, like a number being big or small. Or it can be a precise description of something uncertain, like a temperature said to be n degrees. There could be a mixture of both.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I gotta admit that most of that text is quite a bit above my pay grade, but I’m sure that if you have a need for fuzzy machine learning, then you probably “get” exactly what he’s talking about. You can read the full release announcement &lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/qfdAuFG_gmA/discussion&quot;&gt;here&lt;/a&gt;. &lt;/p&gt;</description>
	<pubDate>Fri, 13 Apr 2012 14:31:42 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Buffers Galore! Now in Version 1.2</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1695</guid>
	<link>http://ada-dk.org/2012/04/buffers-galore-now-in-version-1-2/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://sourceforge.net/projects/dequesterity/&quot;&gt;Dequesterity&lt;/a&gt; is a set of Ada 2005 generics that provide various forms of general purpose buffer containers. There are currently 75 (yes, seventy-five) buffer types in &lt;a href=&quot;http://sourceforge.net/projects/dequesterity/&quot;&gt;Dequesterity&lt;/a&gt;, so if you’re in the market for a buffer, chances are high that you’ll find what you need here.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Dequesterity is a set of Ada 2005 generics that provide various forms of general purpose buffer containers. Buffers may be used as deques, queues, ring buffers, stacks, double ended stacks, vectors, and similar abstractions. &lt;/p&gt;
&lt;p&gt;The generics are combinable and pluggable such that lower level buffer implementations may be combined with higher level buffer generics to create a wide selection of buffer types with specific sets of functionality. &lt;/p&gt;
&lt;p&gt;Lower level buffer implementations include bounded and unbounded buffer forms. Higher level buffer implementations add concurrency support, and streaming capabilities. Buffer instances may be streamed, or may be accessed remotely using the Distributed Systems Annex. Most buffers can store their state persistently. Some buffer implementations operate entirely on secondary (file based) storage. The buffers may be instantiated with user defined types, and indefinite buffer forms also exist. &lt;/p&gt;
&lt;p&gt;The interface to the buffers is modelled after the Ada 2005 container library.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;New in release 1.2 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Saving/Loading buffers from files, and Persistent Buffers were not working under Linux. The low level Preelaborated IO had some portability issues in the area of determining the size of a file. The Linux test executable, test_buffers now works as it should.&lt;/li&gt;
&lt;li&gt;Prelaborated_IO Size now returns a long integer instead of Integer. (Which would be 64 bits on 64 bit OS’s) This allows buffers to work with much larger files, if buffer content is to be stored persistently.&lt;/li&gt;
&lt;li&gt;Only one project file needed for an executable, that builds for both Windows and Linux.&lt;/li&gt;
&lt;li&gt;Cleaned up compiler warnings.&lt;/li&gt;
&lt;li&gt;Created a Buffer Demo executable, which is stripped down to demonstrate some buffer concepts.&lt;/li&gt;
&lt;li&gt;Ravenscar example exits after 30 seconds, instead of executing indefinitely.&lt;/li&gt;
&lt;li&gt;Persistent Stream Buffers do not need to be instantiated, similar to the other Stream Buffer types.&lt;/li&gt;
&lt;li&gt;Fixed bug in Unbounded Buffer, if vector to read into is a zero element array, the Read routine does not generate a constraint error.&lt;/li&gt;
&lt;li&gt;Fixed bug in indefinite Unbounded buffers. When finalizing the buffer if the internal buffer is null, don’t attempt to dereference the null value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read the full release announcement from &lt;a href=&quot;http://sourceforge.net/users/billymeister&quot;&gt;Brad Moore&lt;/a&gt; &lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/lFT09b4DFp0/discussion&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 12 Apr 2012 09:10:51 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: A Slew of Dmitry Kazakov Updates</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1691</guid>
	<link>http://ada-dk.org/2012/04/a-slew-of-dmitry-kazakov-updates/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de&quot;&gt;Dmitry Kazakov&lt;/a&gt; refreshed a bunch of his Ada packages a few days ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/fuzzy.htm&quot;&gt;Fuzzy sets for Ada v5.6&lt;/a&gt; (&lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/yqFlOtHb6xs/discussion&quot;&gt;release ann.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm&quot;&gt;GtkAda contributions v2.12&lt;/a&gt; (&lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/OCRYZsMjFIE/discussion&quot;&gt;release ann.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/components.htm&quot;&gt;Simple components v3.14&lt;/a&gt; (&lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/aGLoNNcBrVs/discussion&quot;&gt;release ann.&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/strings_edit.htm&quot;&gt;Strings_Edit 2.8&lt;/a&gt; (&lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/nYEd9V60U7U/discussion&quot;&gt;release ann.&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If Ada programming is your game, then there’s a good chance you’ll find one or more of Dmitry’s Ada packages beneficial, so be sure to check them out.&lt;/p&gt;</description>
	<pubDate>Thu, 12 Apr 2012 08:54:17 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: VTKAda 5.10, QtAda 4.8.1 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1688</guid>
	<link>http://ada-dk.org/2012/04/vtkada-5-10-qtada-4-8-1-released/</link>
	<description>&lt;p&gt;Today &lt;a href=&quot;http://users1.jabry.com/adastudio/cvp.pdf&quot;&gt;Leonid Dulman (PDF)&lt;/a&gt; announced the release of &lt;a href=&quot;http://users1.jabry.com/adastudio/vtkada/vtkada.html&quot;&gt;VTKAda 5.10&lt;/a&gt; and &lt;a href=&quot;http://users1.jabry.com/adastudio/qtada/qt4/qt4ada.html&quot;&gt;QtAda 4.8.1&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
VTKAda is an Ada-2012  port of VTK (Visualization Toolkit by Kitware, Inc) and Qt4 application and UI framework by Nokia ParaView 3.14.0 (VTK version 5.10.0), Qt version 4.8.1 open source and qt4c.dll(libqt4c.so) were build with Microsoft Visual Studio 2010 for Windows and gcc for Linux x86. Packages has been tested with gnat gpl 2011 ada compiler (-gnat12 option) for Windows XP Sp3 32bit, Windows 7 Sp1 64bit and Debian 5 x86.&lt;/p&gt;
&lt;p&gt;VTKAda is powerful 2D/3D rendering and imaging system that works inside a Qt4 application.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;https://groups.google.com/d/topic/comp.lang.ada/d7NkrZX3smk/discussion&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 12 Apr 2012 08:41:02 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Trimming cost and size: The software side of the story</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1681</guid>
	<link>http://ada-dk.org/2012/04/trimming-cost-and-size-the-software-side-of-the-story/</link>
	<description>&lt;p&gt;In his &lt;a href=&quot;http://www.eetimes.com/design/embedded/4370270/Trimming-emedded-s-cost-and-size--The-software-side-of-the-story&quot;&gt;Trimming cost and size: The software side of the story&lt;/a&gt; article Benjamin Brosgol from &lt;a href=&quot;http://adacore.com&quot;&gt;AdaCore&lt;/a&gt; delves into the subject matter with his usual gusto. If you’ve done any kind of software development, you’ll know that the cheapest bugs to fix are those found before the product is launched and this even more so for embedded software, where it can be a real pain to update the devices. Brosgol does a good job of describing these issues:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
For several reasons, buggy software is especially acute in embedded applications. First, an embedded system typically monitors or controls some external device, so in critical applications an error or vulnerability could compromise safety, security or both; lives could be lost, and substantial assets could be at risk.&lt;/p&gt;
&lt;p&gt;Second, debugging embedded software is harder than debugging native software. For example, embedded systems generally involve concurrency and real-time constraints, which introduce opportunities for errors such as deadlock, missed deadlines and corrupted data. Because some of these bugs are timing dependent and not easily reproduced, they could go undetected until the software is fielded. With perhaps thousands or even millions of systems in use, even a bug with low probability of being triggered will occur eventually.&lt;/p&gt;
&lt;p&gt;Third, correcting a defect in an embedded product already in service is complex and expensive. Solutions that involve wireless uploads raise serious security issues that are just beginning to be addressed in equipment ranging from medical devices to automotive systems.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;One solution to help programmers produce fewer bugs is design by contract or contract-based programming, and halfway down Brosgol introduce us to the contract features of &lt;a href=&quot;http://www.ada-auth.org/standards/ada12.html&quot;&gt;Ada 2012&lt;/a&gt;, specifically the pre- and postconditions for subprograms:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Other language technologies treat contracts as run-time constructs. A recent example is Ada 2012, in which contracts take the form of Boolean conditions that are supplied in contexts such as invariants for types and preconditions and/or postconditions for subprograms. The programmer can control whether the software generates code to check these conditions at run-time; a failed check raises an exception. In this way, the specified contracts can be used either as formal comments that document the program’s intent or as run-time checks that are part of a testing regimen.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Next Brosgol goes on to talk about the extensive restrictions programmers can utilize in Ada to tailor the run-time requirements to their exact needs, using the Restrictions pragma. The entire article is a very nice and informative read, so be sure not to miss it.&lt;/p&gt;</description>
	<pubDate>Wed, 04 Apr 2012 10:34:42 +0000</pubDate>
</item>
<item>
	<title>Gautier de Montmollin: The Corporate Bullshit Generator</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-8743601694397290077.post-4384510362441727637</guid>
	<link>http://gautiersblog.blogspot.com/2011/07/corporate-bullshit-generator.html</link>
	<description>&lt;div&gt;This open-source project is not new, but new on the Web!&lt;br /&gt;The &lt;b&gt;Corporate Bullshit Generator&lt;/b&gt; (CBSG) is a high-performance random text generator that is focused on corporate bullshit, producing &lt;b&gt;400 pages per second&lt;/b&gt; of sentences like &quot;A balanced efficiency drives the enablers within the industry&quot;, as meaningless as those from real people you might hear at some meetings. If you ever wondered why some speeches sound so random, it is because they &lt;i&gt;are&lt;/i&gt; random. Perhaps they even come from this generator - who knows? After all, why sweat for writing a few lines during long minutes while your computer can create hundred of pages of the finest corporate language on a single click, and all for free!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://sf.net/projects/cbsg/&quot;&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt; to join the project web page.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;[ update 16-Mar-2012: the Generator's live version is &lt;/span&gt;&lt;a href=&quot;http://cbsg.sf.net/&quot; rel=&quot;nofollow nofollow&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt; ! ]&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Here are a few examples:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The Director of Human Resources transitions our enhanced skills using our communication; in the same time the resources address a tolerably expensive intelligence.&lt;/li&gt;&lt;li&gt;An overarching successful execution credibly generates our paradigms.&lt;/li&gt;&lt;li&gt;The resources proactively focus on our expertise.&lt;/li&gt;&lt;li&gt;Our customer-centric dialogues synergize the enablers as part of the plan, while lessons learned leverage a documented and integrated client focus.&lt;/li&gt;&lt;li&gt;An industry-standard platform technically transfers the focus, while a cost-effective 360-degree thinking transfers cascading skills. We must activate the matrix to think differently.&lt;/li&gt;&lt;li&gt;The thought leader pre-prepares our leveraged soft cycle issues; in the same time decentralized, progressive, contents inspire the project manager. An effective stress management generates a non-deterministic pipeline, while compliant strategic staircases interact with unique frameworks.&lt;/li&gt;&lt;li&gt;A strong value creation synergizes agreed-upon executions going forward.&lt;/li&gt;&lt;/ul&gt;Actually, the idea of random text generation is not new.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The first instance I came across is a 1987 book of Jean Epstein, &lt;a href=&quot;http://www.amazon.fr/conversation-usuelle-changer-fatigue-d%C3%A9barrasser/dp/2711303489&quot;&gt;Petit guide de conversation usuelle pour changer le monde sans fatigue, ou, Comment se débarrasser des gêneurs&lt;/a&gt;, which provides a grid of words to be used randomly and suggest the use of a computer to compose random sentences. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course there are some famous ancestors of the CBSG, with very refined random grammars and even a random chart generator!&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pdos.csail.mit.edu/scigen/&quot;&gt;SciGen&lt;/a&gt;, the Computer Science paper generator&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.elsewhere.org/pomo/&quot;&gt;PoMo&lt;/a&gt;, the Postmodernism generator&lt;/li&gt;&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #020103; font-size: 12px;&quot;&gt;Enabled through Ada programming :-)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8743601694397290077-4384510362441727637?l=gautiersblog.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 31 Mar 2012 20:39:00 +0000</pubDate>
	<author>noreply@blogger.com (GdM)</author>
</item>
<item>
	<title>Gautier de Montmollin: The Corporate Bullshit Generator goes live !</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-8743601694397290077.post-5559640542544397577</guid>
	<link>http://gautiersblog.blogspot.com/2012/03/corporate-bullshit-generator-goes-live.html</link>
	<description>Since today, you find the interactive Web version here: &lt;a href=&quot;http://cbsg.sf.net/&quot; rel=&quot;nofollow nofollow&quot; target=&quot;_blank&quot;&gt;http://cbsg.sf.net/&lt;/a&gt; !&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8743601694397290077-5559640542544397577?l=gautiersblog.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 31 Mar 2012 20:35:50 +0000</pubDate>
	<author>noreply@blogger.com (GdM)</author>
</item>
<item>
	<title>Ada in Denmark: The April 2012 Open Ada-DK Meeting</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1679</guid>
	<link>http://ada-dk.org/2012/03/the-april-2012-open-ada-dk-meeting/</link>
	<description>&lt;p&gt;April 3rd. 2012 from 1730 -&amp;gt; ? marks the day and time when the seventeenth open Ada-DK meeting is being held.&lt;/p&gt;
&lt;p&gt;The “open” part means that the meeting is not a members-only affair, but that anybody interested in Ada is welcome, so feel free to invite whomever you might believe could be interested in spending an evening talking about Ada programming.&lt;/p&gt;
&lt;p&gt;If you’re interested in participating, feel free to send us an &lt;a href=&quot;http://ada-dk.org/?page=contact&quot;&gt;email&lt;/a&gt; and we’ll inform you of the when and where. You can also ping me at &lt;a href=&quot;https://plus.google.com/u/0/112815721307813813920/posts&quot;&gt;Google+&lt;/a&gt;, &lt;a href=&quot;http://identi.ca/thomaslocke&quot;&gt;identi.ca/thomaslocke&lt;/a&gt; or join the Freenode IRC #ada channel and look for ThomasLocke.&lt;/p&gt;
&lt;p&gt;The meeting is of course free.&lt;/p&gt;</description>
	<pubDate>Sat, 31 Mar 2012 07:46:24 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: SC_Timer 2.0, the Session Chair Timer</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1675</guid>
	<link>http://ada-dk.org/2012/03/sc_timer-2-0-the-session-chair-timer/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.adalog.fr/adalog2.htm&quot;&gt;J-P Rosen&lt;/a&gt; released version 2.0 of his &lt;a href=&quot;http://www.adalog.fr/progs2.htm&quot;&gt;SC_Timer&lt;/a&gt; program a few days ago, and it is shaping up to become a rather nice little package for your timing needs:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
SC_Timer is a very convenient timer for session chairs in conferences who need to manage the presentation time of  speakers. The chair enjoys a rich pannel to manage talk time (&lt;a href=&quot;http://www.adalog.fr/SC_Timer1.png&quot;&gt;screenshot&lt;/a&gt;) and a secondary display to let the speaker know the remaining time, prompt messages, etc (&lt;a href=&quot;http://www.adalog.fr/SC_Timer2.png&quot;&gt;screenshot&lt;/a&gt;). The  display turns yellow -for example- ten minutes before time is over, then turns red five minutes before the end. When the presentation time is over, it displays a big red flashing “Off”. Alternatively, the timer can be set to count up (from 0 to programmed time) instead of down. Other features allow to manage various special cases (pauses, increasing or reducing talk time…).&lt;/p&gt;
&lt;p&gt;There is also a regular clock in the upper right corner that tells you the current time.&lt;/p&gt;
&lt;p&gt;Of course, the program is really a general count-down timer, and you can use it for all your count-down needs!
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sounds good ‘eh?&lt;/p&gt;
&lt;p&gt;You can read J-P’s extremely short release announcement &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/jgdKtowS0lg&quot;&gt;here&lt;/a&gt; and you can download the program as &lt;a href=&quot;http://www.adalog.fr/compo/sc_timer-linux-2.0r1.zip&quot;&gt;source&lt;/a&gt;, &lt;a href=&quot;http://www.adalog.fr/compo/SC_Timer-setup.exe&quot;&gt;Linux executable&lt;/a&gt; and &lt;a href=&quot;http://www.adalog.fr/compo/SC_Timer-setup.exe&quot;&gt;Windows executable&lt;/a&gt;. There’s also some excellent &lt;a href=&quot;http://www.adalog.fr/compo/sc_timer_ug.html&quot;&gt;documentation available&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 30 Mar 2012 13:12:04 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Paraffin 3.2 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1672</guid>
	<link>http://ada-dk.org/2012/03/paraffin-3-2-released/</link>
	<description>&lt;p&gt;The 3.2 release of &lt;a href=&quot;http://sourceforge.net/projects/paraffin/&quot;&gt;Paraffin&lt;/a&gt; comes with a hefty amount of changes since the not so old 3.1 release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The same technique that was applied to iterative work stealing that significanly improved performance, was also applied to the work seeking generics, which also resulted in some performance gains.&lt;/li&gt;
&lt;li&gt;Another benefit of this change is that the work seeking mechanisms are now more hidden inside the generic, and not exposed to client code. As a result, the modifications needed to parallelize a sequential loop is the same for work-sharing, work-seeking, and work-stealing. It mostly just involves wrapping the loop in a nested procedure, and then passing the start and finish indexes of the loop as parameters to the nested procedure.&lt;/li&gt;
&lt;li&gt;A Minimum_Seek parameter replaces the Other_Workers parameter. This parameter indicates the minimum number of iterations that can be “seeked” at one time by an idle worker. This parameter can be left unspecified, in which case, a reasonable default will automatically be assigned.&lt;/li&gt;
&lt;li&gt;As a result of these changes, the Work-seeking iterative tests generally seem to out perform work-stealing, although the differences are usually quite marginal. There are still tests where work-sharing can be best choice, and other tests where work-stealing can come out ahead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yup, &lt;a href=&quot;http://sourceforge.net/users/billymeister&quot;&gt;Brad Moore&lt;/a&gt; is a busy man! In case the changelog doesn’t give away what exactly &lt;a href=&quot;http://sourceforge.net/projects/paraffin/&quot;&gt;Paraffin&lt;/a&gt; is and does, here’s a short quote from projects website:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
A suite of Ada 2005 generics to facilitate iterative and recursive parallelism for multicore systems and provide safer recursion for single and multicore systems. Includes useful generics for parallel quicksort, fast fourier transform, function integration, and Red-Black trees.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can get to the goodies &lt;a href=&quot;http://sourceforge.net/projects/paraffin/files/&quot;&gt;here&lt;/a&gt; and you can read the full release announcement &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/gNNGtCN7eMw&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 30 Mar 2012 12:44:47 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: SparForte 1.3 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1668</guid>
	<link>http://ada-dk.org/2012/03/sparforte-1-3-released/</link>
	<description>&lt;p&gt;Known in the olden days as Business Shell (or BUSH for short), &lt;a href=&quot;http://www.pegasoft.ca/sparforte.html&quot;&gt;SparForte&lt;/a&gt; is an all-in-one replacement for BASH, PHP, J2EE, Ruby, Python, Perl and PSQL. Yea, that does sound like a bit of a mouthful, but seeing as the head honcho of the project is &lt;a href=&quot;http://www.pegasoft.ca/homes/kburtch.html&quot;&gt;Ken O. Burtch&lt;/a&gt;, author of &lt;a href=&quot;http://www.amazon.com/Linux-Shell-Scripting-Bash-Burtch/dp/0672326426&quot;&gt;Linux Shell Scripting with Bash&lt;/a&gt; (awesome book by the way), I’m fairly certain the description is very fitting.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
SparForte is an Ada-based command shell, template engine and scripting language.  It natively interprets Bourne shell commands and basic database commands at the command prompt and has an integrated debugger.  There are 23 built-in packages including MySQL, PostgreSQL, CGI and Memcache and over 80 example scripts.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I gotta get me some of that. Why am I still using Bash on my boxes? It makes no sense.&lt;/p&gt;
&lt;p&gt;Major changes in SparForte 1.3 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;with separate (“include files”) and is separate&lt;/li&gt;
&lt;li&gt;two memcache packages&lt;/li&gt;
&lt;li&gt;JSON: built-in functions and import_json/export_json pragmas&lt;/li&gt;
&lt;li&gt;unit testing mode and associated pragmas&lt;/li&gt;
&lt;li&gt;software license management features&lt;/li&gt;
&lt;li&gt;new architectural pragmas&lt;/li&gt;
&lt;li&gt;package documentation redesigned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/AoVHOon8d8Y&quot;&gt;here&lt;/a&gt; and you can grab the code &lt;a href=&quot;http://www.pegasoft.ca/sparforte-down.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 29 Mar 2012 09:15:30 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: VTKADA 5.9 release 3 free edition</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1665</guid>
	<link>http://ada-dk.org/2012/03/vtkada-5-9-release-3-free-edition/</link>
	<description>&lt;p&gt;A new version of &lt;a href=&quot;http://users1.jabry.com/adastudio/vtkada/vtkada.html&quot;&gt;VTKAda&lt;/a&gt; is now available:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
VTKAda is Ada-2012  port to VTK (Visualization Toolkit by Kitware, Inc) and Qt4 application and UI framework by Nokia VTK version 5.9.0, Qt version 4.7.3 open source and qt4c.dll(libqt4c.so) were builded with Microsoft Visual Studio 2010 in Windows and gcc  in Linux x86 Package was tested with gnat gpl 2011 ada compiler (-gnat12 option) in Windows XP Sp3 32bit, Windows 7 Sp1 64bit and Debian 5 x86.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://users1.jabry.com/adastudio/cvp.pdf&quot;&gt;Leonid Dulman (PDF)&lt;/a&gt; must be a busy man, because I remember having reported on another&lt;a href=&quot;http://users1.jabry.com/adastudio/vtkada/vtkada.html&quot;&gt;VTKAda&lt;/a&gt; release not so long ago. You can read the full release announcement &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.ada/-4-tLFgTiKY&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 29 Mar 2012 08:58:43 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: ColdFrame 20120324 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1661</guid>
	<link>http://ada-dk.org/2012/03/coldframe-20120324-released/</link>
	<description>&lt;p&gt;If you use &lt;a href=&quot;http://en.wikipedia.org/wiki/Unified_Modeling_Language&quot;&gt;UML&lt;/a&gt; and specifically &lt;a href=&quot;http://argouml.tigris.org/&quot;&gt;ArgoUML&lt;/a&gt; to model your programs, then &lt;a href=&quot;http://coldframe.sourceforge.net/&quot;&gt;ColdFrame&lt;/a&gt; might of interest to you:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
ColdFrame is an open-source code generator backend for use with UML tools. In its present state, it’s targeted at ArgoUML and generates Ada code frameworks. The intermediate representation uses XML. The code generation uses the XSL Transformation (XSLT) language, so – with an investment in time and thought – you can design your own transformation mechanisms to the programming language of your choice.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can grab the latest version of ColdFrame &lt;a href=&quot;http://sourceforge.net/projects/coldframe/?_test=b&quot;&gt;here&lt;/a&gt; and you can read the, short, release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/d703cd9f88eb2663&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe &lt;a href=&quot;http://coldframe.sourceforge.net/&quot;&gt;ColdFrame&lt;/a&gt; is just what I need to get started on learning some UML?&lt;/p&gt;</description>
	<pubDate>Thu, 29 Mar 2012 08:44:32 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: AdaCommons Temporarily Moved</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1659</guid>
	<link>http://ada-dk.org/2012/03/adacommons-temporarily-moved/</link>
	<description>&lt;p&gt;Due to some missed renewal emails our beloved AdaCommons wiki is temporarily down and out for the count. Or rather it has been relocated for now to &lt;a href=&quot;http://commons.ada.cx&quot;&gt;commons.ada.cx&lt;/a&gt;, so we wont have to go into withdrawal from not having access to the AdaCommons wiki.&lt;/p&gt;
&lt;p&gt;I don’t have any ETA on when AdaCommons will be back online, but I suspect it wont too far into the future.&lt;/p&gt;</description>
	<pubDate>Thu, 29 Mar 2012 07:27:14 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Corporate Bullshit Generator Online</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1656</guid>
	<link>http://ada-dk.org/2012/03/corporate-bullshit-generator-online/</link>
	<description>&lt;p&gt;Gautier de Montmollin have gone and done it: Put his marvelous &lt;a href=&quot;http://sourceforge.net/projects/cbsg/&quot;&gt;Corporate Bullshit Generator&lt;/a&gt; &lt;a href=&quot;http://cbsg.sourceforge.net/cgi-bin/live&quot;&gt;online&lt;/a&gt;, so now you can get your daily dose of corporate madness with a mere click on the mouse.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The new paradigms streamline accepted relationships. Escalations target the customers; in the same time the resources transition the strategic, executive-level, implications.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yea, that’s right: New paradigms always streamline accepted relationships. Already I feel wiser. Thanks Gautier!&lt;/p&gt;</description>
	<pubDate>Sat, 17 Mar 2012 09:18:25 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada And Arduino – A Good Match</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1649</guid>
	<link>http://ada-dk.org/2012/03/ada-and-arduino-a-good-match/</link>
	<description>&lt;p&gt;Let me start by admitting almost zero knowledge about electronics. The last time I did any soldering was +20 years ago, but that doesn’t stop me from being absolutely amazed at the marvelous things people can build with the &lt;a href=&quot;http://www.arduino.cc/&quot;&gt;Arduino boards&lt;/a&gt;, and because I’m not the only Ada’ist with this fascination, it didn’t take long before &lt;a href=&quot;http://arduino.cc/playground/Code/AVR-Ada&quot;&gt;we got Ada support&lt;/a&gt; for these wonderful machines.&lt;/p&gt;
&lt;p&gt;Our very own &lt;a href=&quot;http://www.jacob-sparre.dk/&quot;&gt;Jacob Sparre Andersen&lt;/a&gt; did a talk at FOSDEM 2012 and Open Source Days 2012 about Ada and the Arduinos: &lt;a href=&quot;http://www.jacob-sparre.dk/arduinos/fosdem-2012-arduino-talk.pdf&quot;&gt;Programming Arduinos in Ada(PDF)&lt;/a&gt;. It’s a pretty good read if you’re thinking about venturing into the amazing world of Arduino.&lt;/p&gt;
&lt;p&gt;Another Ada’ist working with Arduinos is &lt;a href=&quot;http://tero.stronglytyped.org/&quot;&gt;Tero Koskinen&lt;/a&gt;, and besides being the man behind the &lt;a href=&quot;http://ahven.stronglytyped.org/&quot;&gt;Ahven unit test framework&lt;/a&gt;, he also dabbles in electronics, and a few days ago he did a new post on his blog titled &lt;a href=&quot;http://tero.stronglytyped.org/building-custom-arduino-lcd-shield-to-be-used-with-avr-ada.html&quot;&gt;Building Custom Arduino LCD Shield To Be Used With AVR-Ada&lt;/a&gt;. Yup, long title indeed, but well worth the read.&lt;/p&gt;</description>
	<pubDate>Thu, 15 Mar 2012 12:16:56 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: GNAT AUX Synced With GCC 4.6.3</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1647</guid>
	<link>http://ada-dk.org/2012/03/gnat-aux-synced-with-gcc-4-6-3/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.dragonlace.net/&quot;&gt;DragonLace&lt;/a&gt; project is still going strong, and a little over a week ago they synced the &lt;a href=&quot;http://www.dragonlace.net/questions/quest_002/&quot;&gt;GNAT AUX compiler&lt;/a&gt; with GCC 4.6.3:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
GCC 4.6.3 was released on 1 March 2012. Due to recent work on the gnat-aux package, it was relatively easy to update the pkgsrc version of gnat-aux to version 20120301 which syncs with GCC Release 4.6.3. It has already been tested and committed to the pkgsrc CVS trunk.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It wasn’t all sunshine and happy bananas though, as there was some trouble getting it to work properly with FreeBSD 9.x. The DragonLace people are on it though, and if things pan out as they usually do, they will have everything solved soon ™.&lt;/p&gt;
&lt;p&gt;You can read the full post about the update &lt;a href=&quot;http://www.dragonlace.net/posts/GNAT_AUX_Synced_with_GCC_4.6.3_on_pkgsrc/&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 13 Mar 2012 14:23:42 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ahven 2.2 released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1643</guid>
	<link>http://ada-dk.org/2012/03/ahven-2-2-released/</link>
	<description>&lt;p&gt;Tero Koskinen recently released version 2.2 of his &lt;a href=&quot;http://sourceforge.net/projects/ahven/&quot;&gt;Ahven unit testing library&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
This (2.2) is long overdue bug fix release for Ahven. Ahven.XML_Runner had same bug as Ahven.Text_Runner and this release fixes it. Now your XML test result files should have skipped tests correctly reported. Another bigger change is API documentation generator change from Adabrowse to &lt;a href=&quot;http://sphinx.pocoo.org/&quot;&gt;Sphinx&lt;/a&gt;.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can find the projects official SourceForge page &lt;a href=&quot;http://sourceforge.net/projects/ahven/&quot;&gt;here&lt;/a&gt; or you can skip all the difficult stuff and go straight to the &lt;a href=&quot;http://sourceforge.net/projects/ahven/files/latest/download&quot;&gt;goodies&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 13 Mar 2012 09:57:55 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: The March 2012 Open Ada-DK Meeting</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1641</guid>
	<link>http://ada-dk.org/2012/03/the-march-2012-open-ada-dk-meeting/</link>
	<description>&lt;p&gt;March 13th. 2012 from 1730 -&amp;gt; ? marks the day and time when the sixteenth open Ada-DK meeting is being held.&lt;/p&gt;
&lt;p&gt;The “open” part means that the meeting is not a members-only affair, but that anybody interested in Ada is welcome, so feel free to invite whomever you might believe could be interested in spending an evening talking about Ada programming.&lt;/p&gt;
&lt;p&gt;If you’re interested in participating, feel free to send us an &lt;a href=&quot;http://ada-dk.org/?page=contact&quot;&gt;email&lt;/a&gt; and we’ll inform you of the when and where. You can also ping me at &lt;a href=&quot;https://plus.google.com/u/0/112815721307813813920/posts&quot;&gt;Google+&lt;/a&gt;, &lt;a href=&quot;http://identi.ca/thomaslocke&quot;&gt;identi.ca/thomaslocke&lt;/a&gt; or join the Freenode IRC #ada channel and look for ThomasLocke.&lt;/p&gt;
&lt;p&gt;The meeting is of course free.&lt;/p&gt;</description>
	<pubDate>Mon, 12 Mar 2012 15:40:35 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Robert Dewar @ FOSDEM 2012</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1637</guid>
	<link>http://ada-dk.org/2012/03/robert-dewar-fosdem-2012/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://fosdem.org/2012/schedule/speaker/robert_dewar&quot;&gt;Robert Dewar’s&lt;/a&gt; FOSDEM 2012 keynote titled &lt;a href=&quot;http://fosdem.org/2012/schedule/event/keynotes_model_success&quot;&gt;Free Software: A viable model for Commercial Success&lt;/a&gt; has been put &lt;a href=&quot;http://video.fosdem.org/2012/maintracks/janson/Free_Software__A_Viable_Model_for_Commercial_Success.webm&quot;&gt;online (webm video)&lt;/a&gt;, and it is, as always with mr. Dewar, a great talk.&lt;/p&gt;
&lt;p&gt;I really liked the angle of his talk, especially because we at the &lt;a href=&quot;https://plus.google.com/u/0/b/102032447952667077245/&quot;&gt;AdaHeads&lt;/a&gt; project intend to go down that exact route with our products. It was good to hear that it is indeed a viable business model.&lt;/p&gt;
&lt;p&gt;If you’re doubtful about the viability of open source software as the foundation for making money, then don’t miss Robert’s &lt;a href=&quot;http://video.fosdem.org/2012/maintracks/janson/Free_Software__A_Viable_Model_for_Commercial_Success.webm&quot;&gt;talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can view the the other &lt;a href=&quot;http://video.fosdem.org/2012/&quot;&gt;FOSDEM 2012 videos here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 06 Mar 2012 11:35:00 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: AdaCore Releases GNAT Pro 7.0</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1634</guid>
	<link>http://ada-dk.org/2012/03/adacore-releases-gnat-pro-7-0/</link>
	<description>&lt;p&gt;I’m fairly sure I’ll never be able to afford &lt;a href=&quot;http://www.adacore.com/home/products/gnatpro/&quot;&gt;GNAT Pro&lt;/a&gt;, but that wont stop me from being very excited about the release of &lt;a href=&quot;http://www.adacore.com/2012/02/28/gnatpro7&quot;&gt;GNAT Pro 7.0&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
AdaCore today announced the availability of GNAT Pro 7.0, a major new version of the company’s flagship development environment product. This latest annual release completely implements the upcoming Ada 2012 language revision, offers a range of improvements (many based on user suggestions), supports several new platforms, includes an important new testing tool (GNATtest), and enhances several existing tools. As with all AdaCore products, GNAT Pro is Freely-Licensed Open Source Software (FLOSS)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Having full &lt;a href=&quot;http://www.adacore.com/home/ada_answers/ada-2012/&quot;&gt;Ada 2012&lt;/a&gt; support in an Ada compiler is pretty damn awesome. Kudos to AdaCore for making it happen so fast. The only downside is that us poor people will have to wait for GNAT GPL for what will now feel like an eternity. GNAT GPL is still stuck at version 2011 on the &lt;a href=&quot;http://libre.adacore.com&quot;&gt;libre.adacore.com&lt;/a&gt; website. But hey, time flies when you’re having fun, so I guess we best get cracking on some fun projects ASAP.&lt;/p&gt;</description>
	<pubDate>Tue, 06 Mar 2012 10:01:47 +0000</pubDate>
</item>
<item>
	<title>Tero Koskinen: Ahven 2.2 released</title>
	<guid isPermaLink="true">http://tero.stronglytyped.org//ahven-22-released.html</guid>
	<link>http://tero.stronglytyped.org//ahven-22-released.html</link>
	<description>&lt;p&gt;This (2.2) is long overdue bug fix release for Ahven.
Ahven.XML_Runner had same bug as Ahven.Text_Runner and this release fixes it.
Now your XML test result files should have skipped tests correctly reported.
Another bigger change is API documentation generator change from Adabrowse
to &lt;a class=&quot;reference external&quot; href=&quot;http://sphinx.pocoo.org/&quot;&gt;Sphinx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As usual, you can get the source from &lt;a class=&quot;reference external&quot; href=&quot;http://sourceforge.net/projects/ahven/files/ahven/Ahven%202.2/ahven-2.2.tar.gz/download&quot;&gt;Sourceforge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 05 Mar 2012 10:52:00 +0000</pubDate>
</item>
<item>
	<title>DragonLace: GNAT AUX Synced with GCC 4.6.3 on pkgsrc</title>
	<guid isPermaLink="true">http://www.dragonlace.net/posts/GNAT_AUX_Synced_with_GCC_4.6.3_on_pkgsrc/</guid>
	<link>http://www.dragonlace.net/posts/GNAT_AUX_Synced_with_GCC_4.6.3_on_pkgsrc/</link>
	<description>&lt;p&gt;GCC 4.6.3 was released on 1 March 2012.  Due to recent work on the gnat-aux package,
it was relatively easy to update the pkgsrc version of gnat-aux to version 20120301
which syncs with GCC Release 4.6.3.  It has already been tested and committed to
the pkgsrc CVS trunk.&lt;/p&gt;

&lt;p&gt;The same can't be said for the FreeBSD version.  The port updated okay, and would work
fine on FreeBSD 8.x and below, but it's failing FreeBSD 9.0 ACATS testsuite.  It turns
out that version 4.6.2 was failing as well.  Specifically 23 tasking tests are failing
with &quot;Fatal error 'thread exits with resources held!'&quot;.  This is caused by an update
to the thread library that detects this sort of thing and FreeBSD 9.0 is the first
version to use the updated library.&lt;/p&gt;

&lt;p&gt;I will try to modify GNAT to free the thread's resources so that tasking for FreeBSD
will work.  Also, the gnatdroid port will use part of the gnat-aux makefiles and
patches so that it will automatically update when gnat-aux updates.  It is still at
gcc version 4.6.1, but an update for that port will follow shortly after gnat-aux
is fixed.&lt;/p&gt;</description>
	<pubDate>Fri, 02 Mar 2012 16:23:33 +0000</pubDate>
</item>
<item>
	<title>Tero Koskinen: Building custom Arduino LCD shield to be used with AVR-Ada</title>
	<guid isPermaLink="true">http://tero.stronglytyped.org//building-custom-arduino-lcd-shield-to-be-used-with-avr-ada.html</guid>
	<link>http://tero.stronglytyped.org//building-custom-arduino-lcd-shield-to-be-used-with-avr-ada.html</link>
	<description>&lt;p&gt;Using 16x2 LCD display for text output purposes is sometimes more
convenient than serial communication via UART/USB.&lt;/p&gt;
&lt;p&gt;But if you do the wiring on the breadboard you get quite a mess:&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://www.flickr.com/photos/66708330@N00/6935132661/&quot;&gt;&lt;img alt=&quot;https://farm8.staticflickr.com/7177/6935132661_2a282a329e_m.jpg&quot; src=&quot;https://farm8.staticflickr.com/7177/6935132661_2a282a329e_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;So, I wanted to create a shield for Arduino to make the LCD usage easier.&lt;/p&gt;
&lt;p&gt;AVR-Ada includes &lt;a class=&quot;reference external&quot; href=&quot;http://avr-ada.git.sourceforge.net/git/gitweb.cgi?p=avr-ada/avr-ada;a=tree;f=avr/lcd;h=68972f478cc51eb926acb97f05b17de24bf1c6ed;hb=HEAD&quot;&gt;library&lt;/a&gt; for HD44780-compatible LCD using 4 bits for data.&lt;/p&gt;
&lt;p&gt;That means we need to use 4 pins for data, one pin for Enable signal, and one pin for Register select.
Wiring on the shield therefore is something like this:&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://www.flickr.com/photos/66708330@N00/6790147584/&quot;&gt;&lt;img alt=&quot;https://farm8.staticflickr.com/7070/6790147584_8c6420bc87_m.jpg&quot; src=&quot;https://farm8.staticflickr.com/7070/6790147584_8c6420bc87_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;We also want a trimpot on the shield:&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://www.flickr.com/photos/66708330@N00/6790151176/&quot;&gt;&lt;img alt=&quot;https://farm8.staticflickr.com/7062/6790151176_6a2e36361f_m.jpg&quot; src=&quot;https://farm8.staticflickr.com/7062/6790151176_6a2e36361f_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;The middle pin of the trimpot is connected to the LCD pin 3 (Contrast adjust), other two pins are connected to GND and VCC.&lt;/p&gt;
&lt;p&gt;After placing the wires and the trimpot, we put the display there:&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://www.flickr.com/photos/66708330@N00/6790153290/&quot;&gt;&lt;img alt=&quot;https://farm8.staticflickr.com/7189/6790153290_9d39217ac4_m.jpg&quot; src=&quot;https://farm8.staticflickr.com/7189/6790153290_9d39217ac4_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Finally, using code from &lt;a class=&quot;reference external&quot; href=&quot;https://bitbucket.org/tkoskine/arduino-lcd&quot;&gt;my Bitbucket repository&lt;/a&gt;, we get some visible text:&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://www.flickr.com/photos/66708330@N00/6790087746/&quot;&gt;&lt;img alt=&quot;https://farm8.staticflickr.com/7178/6790087746_ecdf322b18_m.jpg&quot; src=&quot;https://farm8.staticflickr.com/7178/6790087746_ecdf322b18_m.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Some notes:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;I used here Arduino UNO r3 with Arduino Protoshield r3.&lt;/li&gt;
&lt;li&gt;The Ada code requires AVR-Ada 1.2
(the latest development version from AVR-Ada git repository at the moment).&lt;/li&gt;
&lt;li&gt;If you fear that the LCD display might get damaged, you probably don't want to solder it directly
to the proto shield but place female header between instead.&lt;/li&gt;
&lt;li&gt;My LCD display did not have working backlight, so I left those pins (15,16) disconnected.&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Tue, 28 Feb 2012 00:30:00 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: FSF GNAT 4.3.4 binaries for OpenBSD/amd64 5.0</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1630</guid>
	<link>http://ada-dk.org/2012/02/fsf-gnat-4-3-4-binaries-for-openbsdamd64-5-0/</link>
	<description>&lt;p&gt;This is just a quick one to let you know that &lt;a href=&quot;http://tero.stronglytyped.org/&quot;&gt;Tero Koskinen&lt;/a&gt; has done a couple of packages for OpenBSD/amd64 5.0 to help alleviate some of the pain of bootstrapping GNAT:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
GNAT is somewhat painful to bootstrap on new platforms and existing binaries for OpenBSD/amd64 are for older releases, so I made fresh ones for OpenBSD 5.0 release on amd64 (x86_64 for Linux people) platform.&lt;br /&gt;
Tasking and most other “common” features should be supported, although I suspect that GNAT-AUX 4.6.x from http://www.dragonlace.net/ passes more ACATS tests. But once you have 4.3.4 installed, you can use it to bootstrap GNAT-AUX 4.6.x.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You can get the packages from &lt;a href=&quot;http://iki.fi/tero.koskinen/openbsd/5.0-amd64-packages/&quot;&gt;http://koti.kapsi.fi/tkoskine/openbsd/5.0-amd64-packages/&lt;/a&gt; and then it’s just a simple matter of using pkg_add to install them.&lt;/p&gt;
&lt;p&gt;You can read the full release announcement from Tero &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/dbcdbf0994059858&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 24 Feb 2012 15:53:35 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: SPARK: A red-black tree with correctness proofs</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1627</guid>
	<link>http://ada-dk.org/2012/02/spark-a-red-black-tree-with-correctness-proofs/</link>
	<description>&lt;p&gt;From &lt;a href=&quot;http://www.sparksure.com/2.html&quot;&gt;Phil Thornley&lt;/a&gt; of &lt;a href=&quot;http://www.sparksure.com&quot;&gt;SparkSure&lt;/a&gt; fame we get a SPARK package implementing a &lt;a href=&quot;http://en.wikipedia.org/wiki/Red%E2%80%93black_tree&quot;&gt;red-black tree&lt;/a&gt; data structure:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
A SPARK package implementing a red-black tree is now available and correctness proofs have been completed for the code. (SPARK correctness is, of course, partial correctness as there are no proofs of termination of the operations.)&lt;/p&gt;
&lt;p&gt;In this version the Ada code is complete and all the mandatory SPARK annotations for information flow analysis are included, but the optional proof annotations within the operations in the package body have been excluded. (I have completed these, but they are not yet in a publishable form.)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You download the package &lt;a href=&quot;http://www.sparksure.com/resources/Ordered_Lists.zip&quot;&gt;here (ZIP)&lt;/a&gt; and you can read more about the SparkSure data structures &lt;a href=&quot;http://www.sparksure.com/8.html&quot;&gt;here&lt;/a&gt;. The full release announcement is available &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/26089aa3008dcac2&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 24 Feb 2012 15:37:48 +0000</pubDate>
</item>
<item>
	<title>Forward in Code: Expressiveness in Python</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-237654800464413303.post-346852739429388870</guid>
	<link>http://forward-in-code.blogspot.com/2011/08/expressiveness-in-python.html</link>
	<description>I've been having fun reworking the Literate Programming tool &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Courier New', Courier, monospace;&quot;&gt;&lt;a href=&quot;https://sourceforge.net/projects/nuweb/&quot;&gt;nuweb&lt;/a&gt;&lt;/span&gt; in &lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt;; the &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt; repository for the rework can be browsed &lt;a href=&quot;http://nuweb.hg.sourceforge.net/hgweb/nuweb/nuweb.py/&quot;&gt;here&lt;/a&gt;. On the way I've come across a neat hack, and a rather unlikely workaround for Python's lack of a &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Courier New', Courier, monospace;&quot;&gt;switch&lt;/span&gt; statement.&lt;br /&gt;&lt;a href=&quot;http://forward-in-code.blogspot.com/2011/08/expressiveness-in-python.html#more&quot;&gt;Read more »&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/237654800464413303-346852739429388870?l=forward-in-code.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 21 Feb 2012 12:21:39 +0000</pubDate>
	<author>noreply@blogger.com (Simon)</author>
</item>
<item>
	<title>Forward in Code: A Makefile hack</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-237654800464413303.post-4307952919718276560</guid>
	<link>http://forward-in-code.blogspot.com/2012/02/makefile-hack.html</link>
	<description>&lt;p&gt;I had a problem with GNU Make where multiple targets were created from one prerequisite.  &lt;/p&gt;&lt;a href=&quot;http://forward-in-code.blogspot.com/2012/02/makefile-hack.html#more&quot;&gt;Read more »&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/237654800464413303-4307952919718276560?l=forward-in-code.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 21 Feb 2012 12:02:25 +0000</pubDate>
	<author>noreply@blogger.com (Simon)</author>
</item>
<item>
	<title>Ada in Denmark: Ada Server Faces 0.3.0 is available</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1623</guid>
	<link>http://ada-dk.org/2012/02/ada-server-faces-0-3-0-is-available/</link>
	<description>&lt;p&gt;Stephane Carrez from &lt;a href=&quot;http://blog.vacs.fr/index.php&quot;&gt;Java 2 Ada&lt;/a&gt; is hard at work on his &lt;a href=&quot;http://code.google.com/p/ada-asf/&quot;&gt;Ada Server Faces framework&lt;/a&gt;, and as this &lt;a href=&quot;http://demo.vacs.fr/&quot;&gt;online demo&lt;/a&gt; clearly is showing, he’s making good progress. The &lt;a href=&quot;http://blog.vacs.fr/index.php?post/2012/02/14/Ada-Server-Faces-0.3.0-is-available&quot;&gt;version 0.3.0 release announcement&lt;/a&gt; outlines some of what Ada Server Faces is:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Ada Server Faces is a web framework which uses the Java Server Faces design patterns (See JSR 252 and JSR 314).&lt;/p&gt;
&lt;p&gt;JSF and ASF use a component-based model for the design and implementation of a web application. The presentation layer is implemented using XML or XHTML files and the component layer is implemented in Ada 05 for ASF and in Java for JSF.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I can’t claim a whole lot of knowledge about the Java Server Faces design patterns, but judging from the &lt;a href=&quot;http://demo.vacs.fr/&quot;&gt;demo&lt;/a&gt;, it’s some pretty powerful stuff. I look forward to tracking this project further, especially considering my involvement in the &lt;a href=&quot;https://plus.google.com/u/0/b/102032447952667077245/102032447952667077245/posts&quot;&gt;AdaHeads K/S&lt;/a&gt; project.&lt;/p&gt;</description>
	<pubDate>Thu, 16 Feb 2012 09:47:18 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: CUDA/Ada version 0.1</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1618</guid>
	<link>http://ada-dk.org/2012/02/cudaada-version-0-1/</link>
	<description>&lt;p&gt;Back in December 2011 we &lt;a href=&quot;http://ada-dk.org/2011/12/cudaada-an-ada-binding-to-nvidias-cuda/&quot;&gt;reported&lt;/a&gt; on an early developer version of the newly started &lt;a href=&quot;http://www.codelabs.ch/cuda-ada/&quot;&gt;CUDA/Ada&lt;/a&gt; project, and now a mere 2 months later the &lt;a href=&quot;http://www.codelabs.ch/&quot;&gt;codelabs.ch&lt;/a&gt; guys have officially released version 0.1 of the CUDA/Ada binding to Nvidia’s &lt;a href=&quot;http://www.nvidia.com/object/cuda_home_new.html&quot;&gt;CUDA&lt;/a&gt; platform:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
CUDA/Ada is an Ada binding to NVIDIA’s CUDA parallel computing platform and programming model. This project was developed during the course of the master seminar “Program Analysis and Transformation” at the University of Applied Sciences Rapperswil.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;There’s a nice benchmark chart on the website, which really shows of the power of CUDA/Ada, and there’s also an interesting &lt;a href=&quot;http://www.codelabs.ch/cuda-ada/cuda-ada-article.pdf&quot;&gt;paper (PDF)&lt;/a&gt; available with lots of information about the project.&lt;/p&gt;
&lt;p&gt;You can download the latest version &lt;a href=&quot;http://www.codelabs.ch/download&quot;&gt;here&lt;/a&gt; and you can read the release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/6488da1a810ea1e1&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 16 Feb 2012 09:27:19 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: GWindows – A New Ada GUI Framework For Windows</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1612</guid>
	<link>http://ada-dk.org/2012/02/gwindows-a-new-ada-gui-framework-for-windows/</link>
	<description>&lt;p&gt;A new GUI framework for Ada is always welcome, even though this is one restricted to one platform. GWindows is..&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
…the Professional Open Source Ada 95 Win32 RAD Framework. It introduces for the first time to Ada programming a comprehensive rapid application development framework spanning GUI, Database and Active X integration. It brings the power of Ada to programming domains that up until now are dominated by VB and Delphi.&lt;/p&gt;
&lt;p&gt;GWindows includes extensive bindings to the Windows GUI including support for common controls and dialogs, printing, and owner drawn extensions to controls. In addition, GWindows adds a number of new controls, keyboard support, multiple models of event handling, Active&lt;br /&gt;
X controls, support for creating dialogs and windows from resource files, dynamic garbage collected windows, Window docking, non-GUI bindings, database support, database bound controls, and much more!&lt;/p&gt;
&lt;p&gt;GWindows builds as either ANSI or UNICODE (a first for Ada!) for internationalization and performance boosts on Windows NT, 2000, and XP. GWindows is tightly integrated with GNATCOM, the Ada 95 COM/DCOM/COM+ Development Framework and Tools opening every facet of the Windows platforms to Ada 95 development. Never again will the cries be heard, “but there are no bindings” on the Windows platform!&lt;/p&gt;
&lt;p&gt;GWindows is designed to take advantage of Ada’s unique combination of features rich typing mechanisms. It is not a think binding to an underlying C interface, but a complete framework that takes advantage of Ada at every level.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Usage seems pretty &lt;a href=&quot;http://www.gnavi.org/index.php?Command=Class&amp;amp;ClassID=GWindowsWin32&amp;amp;CID=411#_Toc11492895&quot;&gt;simple and straightforward&lt;/a&gt;, and creating the ever popular &lt;em&gt;Hello world!&lt;/em&gt; application is done rather easily:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;with&lt;/span&gt; GWindows.&lt;span style=&quot;color: #202020;&quot;&gt;Windows&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;Main&lt;/span&gt;; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;use&lt;/span&gt; GWindows.&lt;span style=&quot;color: #202020;&quot;&gt;Windows&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;Main&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;with&lt;/span&gt; GWindows.&lt;span style=&quot;color: #202020;&quot;&gt;Application&lt;/span&gt;;
 
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;procedure&lt;/span&gt; Hello_World &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;pragma&lt;/span&gt; Linker_Options &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;-mwindows&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
 
   Main_Window : Main_Window_Type;
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   Create &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Main_Window, &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;Hello world!&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
   Visible &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Main_Window, True&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
 
   GWindows.&lt;span style=&quot;color: #202020;&quot;&gt;Application&lt;/span&gt;.&lt;span style=&quot;color: #202020;&quot;&gt;Message_Loop&lt;/span&gt;;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Hello_World;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Yea, I just completely stole that from their tutorial – I haven’t actually tried it, since I don’t use Windows.&lt;/p&gt;
&lt;p&gt;If you’re an Ada programmer and you’re itching to build some GUI applications, then be sure to take a look at the &lt;a href=&quot;http://www.gnavi.org/index.php?Command=Class&amp;amp;ClassID=GWindowsWin32&amp;amp;CID=411&quot;&gt;GWindows documentation&lt;/a&gt; to see if it suits your fancy.&lt;/p&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/8dbf6803238bc69c&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 14 Feb 2012 08:22:20 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Strings edit v2.7</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1610</guid>
	<link>http://ada-dk.org/2012/02/strings-edit-v2-7/</link>
	<description>&lt;p&gt;Hot on the heels of &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/strings_edit.htm&quot;&gt;Strings Edit&lt;/a&gt; v2.6 comes v2.7. This latest releases fixes some bugs in the implementation of String-based streams. You can read Dmitry’s short and sweet release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/6e52b4f067364b4a&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 14 Feb 2012 08:06:42 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Paraffin 2.4 Released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1608</guid>
	<link>http://ada-dk.org/2012/02/paraffin-2-4-released/</link>
	<description>&lt;p&gt;Back in October 2011 we &lt;a href=&quot;http://ada-dk.org/2011/10/paraffin-2-0-for-gnat-and-icc-ada-compilers/&quot;&gt;reported&lt;/a&gt; on the release of version 2.0 of Brad Moore’s &lt;a href=&quot;http://sourceforge.net/projects/paraffin/&quot;&gt;Paraffin&lt;/a&gt; library, and now, a mere 3½ months later we’re graced with the latest and greatest: &lt;a href=&quot;http://sourceforge.net/projects/paraffin/&quot;&gt;Paraffin version 2.4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since the name Paraffin in itself doesn’t give away what it does, here’s a quote from the project website:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
A suite of Ada 2005 generics to facilitate iterative and recursive parallelism for multicore systems and provide safer recursion for single and multicore systems. Includes useful generics for parallel quicksort, fast fourier transform, function integration, and Red-Black trees.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;New in this release is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a reusable utility to solve a matrix of linear equations using Gauss-Jordan Elimination.&lt;/li&gt;
&lt;li&gt;Added test_matrix test driver for parallel/sequential matrix solvers.&lt;/li&gt;
&lt;li&gt;Red-Black Tree containers fully implemented now. (Delete, and Contains calls work)&lt;/li&gt;
&lt;li&gt;Split Red-Black Tree container into separate generics
&lt;ul&gt;
&lt;li&gt;Sequential&lt;/li&gt;
&lt;li&gt;Work sharing&lt;/li&gt;
&lt;li&gt;Work Seeking&lt;/li&gt;
&lt;li&gt;Stack Safe Work Seeking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Red Black Tree generic was previously intended mostly as a test driver for Paraffin Recursive generics. Now the generic has been completed to a state where it can be reused on its own as a generic container.&lt;/li&gt;
&lt;li&gt;Changed use of Unchecked_Conversion for Recurse supprogram access to use ‘Unrestricted_Access instead. This cleaned the code up considerably in this area. One issue to look into, is that     ‘Unrestricted_Access is a non-standard attribute. It is supported by both GNAT and the ICC compiler however. It may not be supported by other Ada 2005 compilers. Unfortunately, Unchecked_Conversion in this case is not portable either, and may not even continue to work with the existing compilers, so it was thought that using ‘Unrestricted_Access was the best option for now. Will investigate to see if there is a possibility for a better solution, or providing a portable mechanism in a future version of Ada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yea, Brad’s been busy!&lt;/p&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/d8f1b8cc3ae401ff&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 14 Feb 2012 07:54:31 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Interval Arithmetic for Ada, v1.10</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1605</guid>
	<link>http://ada-dk.org/2012/02/interval-arithmetic-for-ada-v1-10/</link>
	<description>&lt;p&gt;If one day you’re finding yourself in need of doing some interval arithmetic in Ada, then you need look no further than Dmitry Kazakov’s &lt;a href=&quot;http://www.dmitry-kazakov.de/ada/intervals.htm&quot;&gt;Interval Arithmetic for Ada&lt;/a&gt; package:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The packages define a logical and interval types. The interval types are obtained through instantiation of the corresponding generic packages. Interval and numeric types can be mixed where the result has mathematical sense.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So if tri-state logic and dimensioned intervals is what you need, then be sure to check out this package. It’s available in 32/64 bit flavors for Fedora and Debian, and of course also as a plain source package. You can read the full release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/8aef7b60aaedc7e6&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 14 Feb 2012 06:56:10 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Zip-Ada v.42 released</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1602</guid>
	<link>http://ada-dk.org/2012/02/zip-ada-v-42-released/</link>
	<description>&lt;p&gt;A few days ago &lt;a href=&quot;http://sourceforge.net/users/gdemont&quot;&gt;Gautier de Montmollin&lt;/a&gt; mentioned that the .42 release of &lt;a href=&quot;http://unzip-ada.sourceforge.net/&quot;&gt;Zip-Ada&lt;/a&gt;&lt;a&gt;&lt;/a&gt; was &lt;a href=&quot;http://identi.ca/notice/89754766&quot;&gt;in the works&lt;/a&gt;, and today it was finally released on the world.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Zip-Ada is a programming library for dealing with the Zip compressed archive file format. The full sources of Zip-Ada are in Ada, compilable on every compiler and for every system. For more details, read the files zipada.txt and zip.ads from the archive below.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;New in version .42 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for Zip archives appended to other files, like a self-extracting archive with Zip-Ada in the executable.&lt;/li&gt;
&lt;li&gt;Support for Unicode UTF-8 entry names within Zip archives.&lt;/li&gt;
&lt;li&gt;New package Zip.Compress.Deflate, with a first (weak but straightforward) compression technique for the Deflate format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For those of you wondering why one should use this library, instead of simply just using the zlib library, the answer is simple and straightforward: &lt;em&gt;Independence&lt;/em&gt;. With Zip-Ada you can zip and unzip data without any OS-dependent external calls, which obviously is a nice thing. You should also, theoretically, get better portability, since you don’t have to worry about the existence of zlib (or similar) on the target platform. Gautier have tested Zip-Ada with several different &lt;a href=&quot;http://unzip-ada.sourceforge.net/#tested&quot;&gt;environments&lt;/a&gt;, so there’s a good chance it will work on almost whatever you throw at it.&lt;/p&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_frm/thread/80d6bf135d9e304d&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Fri, 10 Feb 2012 20:08:22 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Report from the February 2012 open Ada-DK meeting</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1597</guid>
	<link>http://ada-dk.org/2012/02/report-from-the-february-2012-open-ada-dk-meeting/</link>
	<description>&lt;p&gt;What this meeting lacked in numbers it weighed up in fun discussions and tryouts of bleeding-edge card games.&lt;/p&gt;
&lt;p&gt;Only &lt;a href=&quot;http://blogs.fsfe.org/thomaslocke/&quot;&gt;Thomas Løcke&lt;/a&gt; and &lt;a href=&quot;http://retrospekt.dk&quot;&gt;Kim Rostgaard Christensen&lt;/a&gt; was present at this meeting, so the time was passed discussing code, politics, operating systems, weirdness of corporate strategies and Ada in the education system.&lt;/p&gt;
&lt;p&gt;The meeting was started of with a massive beating of Thomas Løcke in a game of &lt;a href=&quot;http://www.kickstarter.com/projects/harrymylo/cpu-wars-volume-10-the-card-game&quot;&gt;CPU Wars&lt;/a&gt;, which then led to a stroll down memory lane revisiting some of the processors that had been a big part of our lives.&lt;/p&gt;
&lt;p&gt;The food was excellent as always, and the dinner discussion ever interesting. The discussion rather fast went into AdaHeads-mode as there were no non-AdaHeads-folks to stop us. What was agreed here, is a story for another day – and a quite interesting one I must say.&lt;/p&gt;
&lt;p&gt;- Stay tuned.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Feb 2012 10:23:42 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: FOSDEM 2012 Ada Presentations</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1593</guid>
	<link>http://ada-dk.org/2012/02/fosdem-2012-ada-presentations/</link>
	<description>&lt;p&gt;For those of us not lucky enough to have been able to attend &lt;a href=&quot;http://fosdem.org/2012/&quot;&gt;FOSDEM 2012&lt;/a&gt;, I’m very glad to report that all the &lt;a href=&quot;http://people.cs.kuleuven.be/~dirk.craeynest/ada-belgium/events/12/120204-fosdem.html&quot;&gt;Ada presentations&lt;/a&gt; are now available at the &lt;a href=&quot;http://people.cs.kuleuven.be/~dirk/ada-belgium/&quot;&gt;Ada Belgium&lt;/a&gt; website. There’s some really good stuff in there, so be sure to check it out.&lt;/p&gt;
&lt;p&gt;But there’s more good news: The FOSDEM 2012 people are apparently working on getting some of the &lt;a href=&quot;http://fosdem.org/2012/news/video-recordings&quot;&gt;videos of the event online&lt;/a&gt;. I cannot begin to express how much I appreciate that. I really look forward to seeing the presentations. It’ll be almost the same as having been there myself. Almost.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Feb 2012 06:49:37 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: The February 2012 Open Ada-DK Meeting</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1591</guid>
	<link>http://ada-dk.org/2012/02/the-february-2012-open-ada-dk-meeting/</link>
	<description>&lt;p&gt;February 7th. 2012 from 1800 -&amp;gt; ? marks the day and time when the fifteenth open Ada-DK meeting is being held.&lt;/p&gt;
&lt;p&gt;The “open” part means that the meeting is not a members-only affair, but that anybody interested in Ada is welcome, so feel free to invite whomever you might believe could be interested in spending an evening talking about Ada programming.&lt;/p&gt;
&lt;p&gt;If you’re interested in participating, feel free to send us an &lt;a href=&quot;http://ada-dk.org/?page=contact&quot;&gt;email&lt;/a&gt; and we’ll inform you of the when and where. You can also ping me at &lt;a href=&quot;https://plus.google.com/u/0/112815721307813813920/posts&quot;&gt;Google+&lt;/a&gt;, &lt;a href=&quot;http://identi.ca/thomaslocke&quot;&gt;identi.ca/thomaslocke&lt;/a&gt; or join the Freenode IRC #ada channel and look for ThomasLocke.&lt;/p&gt;
&lt;p&gt;The meeting is of course free.&lt;/p&gt;</description>
	<pubDate>Mon, 06 Feb 2012 08:10:18 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Ada.Directories Wiki Article Migrated</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1588</guid>
	<link>http://ada-dk.org/2012/02/ada-directories-wiki-article-migrated/</link>
	<description>&lt;p&gt;It’s finally over! The entire &lt;a href=&quot;http://wiki.ada-dk.org&quot;&gt;Ada-DK Wiki&lt;/a&gt; has been migrated successfully. Today I moved the &lt;a href=&quot;http://wiki.ada-dk.org/ada.directories&quot;&gt;Ada.Directories&lt;/a&gt; article, and with that one out of the way, the new dokuwiki setup is now on par with the old wiki.&lt;/p&gt;
&lt;p&gt;So next on the wiki-agenda is writing some new articles. It’s been a while since we’ve added anything new to our wiki, which is a bit of a shame. The last one I did was the &lt;a href=&quot;http://wiki.ada-dk.org/handling_json_using_gnatcoll&quot;&gt;GNATCOLL.JSON&lt;/a&gt; one, and that’s a good 2½ months ago! I’m considering doing one on the Ada.Task_Attributes package, but it’s not set in stone yet. Feel free to &lt;a href=&quot;https://plus.google.com/u/0/112815721307813813920/posts&quot;&gt;ping me&lt;/a&gt; if you’ve got any good ideas.&lt;/p&gt;</description>
	<pubDate>Wed, 01 Feb 2012 19:44:21 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Units of measurement for Ada v3.2</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1583</guid>
	<link>http://ada-dk.org/2012/01/units-of-measurement-for-ada-v3-2/</link>
	<description>&lt;p&gt;Version 3.2 of Dmitry Kazakov’s &lt;a href=&quot;http://ada-dk.org/feed/&quot;&gt;Units of Measurements for Ada&lt;/a&gt; library has just been let lose on the world. This library deals with, well, units of measurement:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The library is provided for handling dimensioned values in Ada. The library supports irregular and shifted measurement units. String formatting and GTK+ widgets and cell renderers are provided.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;New in version 3.2 is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The procedure Put in Measures_UTF8_Edit has additional parameters Field, Justify, Fill&lt;/li&gt;
&lt;li&gt;Fedora and Debian packages are provided for both 32- and 64-bit architectures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read the full release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/1e865e3a59869f62&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 31 Jan 2012 15:56:52 +0000</pubDate>
</item>
<item>
	<title>Ada in Denmark: Overridable Class Attributes in Ada 2012</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1576</guid>
	<link>http://ada-dk.org/2012/01/overridable-class-attributes-in-ada-2012/</link>
	<description>&lt;p&gt;One of the nicest features of the &lt;a href=&quot;http://adacore.com&quot;&gt;AdaCore&lt;/a&gt; website is the &lt;a href=&quot;http://www.adacore.com/category/developers-center/gems/&quot;&gt;Ada Gem of the Week&lt;/a&gt;. Currently sitting at 117 gems, this place is a regular treasure-trove for Ada programming. &lt;/p&gt;
&lt;p&gt;Today’s gem is written by Emmanuel Briot and it deals with some of the new Ada 2012 features, specifically in relation to object oriented Ada programming. it’s called &lt;a href=&quot;http://www.adacore.com/2012/01/30/gem-117-design-pattern-overridable-class-attributes-in-ada-2012/&quot;&gt;Gem #117: Design Pattern: Overridable Class Attributes in Ada 2012&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Most object-oriented programming languages provide a facility for declaring variables that are shared by all objects of a given class. In C++, these are called “static members” (and use the “static” keyword), and similarly Python has the notion of “class attributes”.&lt;/p&gt;
&lt;p&gt;Let’s consider an example where this is useful. For instance, let’s say we want to define the notion of a block of text that is generated by expanding a template (perhaps after we replace some parameters in that template, as can be done with AWS’s templates parser, for instance). Once we have computed those parameters, we might want to generate multiple outputs (for instance HTML and CSV). Only the template needs to change, not the computation of the parameters.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I can’t say I’m a huge expert on object oriented Ada programming, but this little snippet actually made me hungry for playing around with some of the new Ada 2012 features, such as expression functions, where you can do stuff like this:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;pragma&lt;/span&gt; Ada_2012;
 
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;type&lt;/span&gt; Text_Block &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;tagged&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;record&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;function&lt;/span&gt; Template &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self : Text_Block&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; String
   &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;filename.txt&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;function&lt;/span&gt; Render &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self : Text_Block&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; String;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Instead of the old more clunky method:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;ada&quot; style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;type&lt;/span&gt; Text_Block &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;tagged&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;null&lt;/span&gt; &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;record&lt;/span&gt;;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;function&lt;/span&gt; Template &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self : Text_Block&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; String;
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;function&lt;/span&gt; Render &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self : Text_Block&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; String;
 
&lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;function&lt;/span&gt; Template &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self : Text_Block&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; String &lt;span style=&quot;color: #00007f;&quot;&gt;is&lt;/span&gt;
   &lt;span style=&quot;color: #46aa03; font-weight: bold;&quot;&gt;pragma&lt;/span&gt; Unreferenced &lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;Self&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
&lt;span style=&quot;color: #00007f;&quot;&gt;begin&lt;/span&gt;
   &lt;span style=&quot;color: #00007f;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&quot;file_name.txt&quot;&lt;/span&gt;;
&lt;span style=&quot;color: #00007f;&quot;&gt;end&lt;/span&gt; Template;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Very nice indeed! The new Ada 2012 syntax allows for a much more simple and readable setup of the Text_Block type. But don’t take my word for it, go read the &lt;a href=&quot;http://www.adacore.com/2012/01/30/gem-117-design-pattern-overridable-class-attributes-in-ada-2012/&quot;&gt;Gem&lt;/a&gt; instead. It is definitely worth it.&lt;/p&gt;</description>
	<pubDate>Tue, 31 Jan 2012 10:41:04 +0000</pubDate>
</item>
<item>
	<title>Forward in Code: Catching exceptions in GDB</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-237654800464413303.post-9174517457105121204</guid>
	<link>http://forward-in-code.blogspot.com/2012/01/catching-exceptions-in-gdb.html</link>
	<description>&lt;p&gt;There's a problem running gdb from GNAT GPL 2011 (which works fine with programs compiled with GNAT GPL 2011) on programs compiled with GCC 4.6 on Max OS X Lion and possibly earlier: you can't catch exceptions as you'd expect:  &lt;/p&gt;&lt;pre&gt;&lt;br /&gt;   (gdb) break exception&lt;br /&gt;   Unable to insert catchpoint. Try to start the program first.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;a href=&quot;http://forward-in-code.blogspot.com/2012/01/catching-exceptions-in-gdb.html#more&quot;&gt;Read more »&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/237654800464413303-9174517457105121204?l=forward-in-code.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 29 Jan 2012 18:44:53 +0000</pubDate>
	<author>noreply@blogger.com (Simon)</author>
</item>
<item>
	<title>Forward in Code: Debugging and stack traces on Mac OS X Lion</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-237654800464413303.post-6430858681792528870</guid>
	<link>http://forward-in-code.blogspot.com/2011/08/debugging-and-stack-traces-on-mac-os-x.html</link>
	<description>Mac OS X 10.7 Lion (really, Xcode 4) has changed the way that the system linker works in a way which makes debugging and interpreting stack traces difficult-to-impossible without special action.&lt;br /&gt;&lt;a href=&quot;http://forward-in-code.blogspot.com/2011/08/debugging-and-stack-traces-on-mac-os-x.html#more&quot;&gt;Read more »&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/237654800464413303-6430858681792528870?l=forward-in-code.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 27 Jan 2012 21:44:34 +0000</pubDate>
	<author>noreply@blogger.com (Simon)</author>
</item>
<item>
	<title>Ada in Denmark: GtkAda Contributions and AICW updates</title>
	<guid isPermaLink="false">http://ada-dk.org/?p=1571</guid>
	<link>http://ada-dk.org/2012/01/gtkada-contributions-and-aicw-updates/</link>
	<description>&lt;p&gt;More updates from &lt;a href=&quot;http://www.dmitry-kazakov.de/&quot;&gt;Dmitry Kazakov&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm&quot;&gt;GtkAda Contributions v. 2.11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dmitry-kazakov.de/ada/aicwl.htm&quot;&gt;Ada Industrial Control Widget Library v. 1.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GtkAda Contributions is the work of Dmitry Kazakov and Maxim Reznik. It is a package of proposed contributions to &lt;a href=&quot;http://libre.adacore.com/libre/tools/gtkada/&quot;&gt;GtkAda&lt;/a&gt;, adding stuff like tasking support, embeddable images, spawning processes synchronously and asynchronously with pipes and a whole lot more. You can read the release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/88cc5cb4b4cfbd42&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ada Industrial Control Widget Library enables you to create all sorts of graphical gauges, meters, clocks and oscilloscopes. If you need some sort of visual indication of load, pressure, speed or whatever, then this package will probably be able to get the work done. You can read Dmitry’s release announcement &lt;a href=&quot;http://groups.google.com/group/comp.lang.ada/browse_thread/thread/28cd88f67a91b3ce&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Thu, 26 Jan 2012 07:29:00 +0000</pubDate>
</item>

</channel>
</rss>

