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

<channel>
	<title>Delphi Bistro</title>
	<atom:link href="http://delphibistro.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://delphibistro.com</link>
	<description>To Delphi or not to Delphi, that is the question.</description>
	<lastBuildDate>Mon, 08 Feb 2010 15:16:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ProDelphi profiler will not run anymore</title>
		<link>http://delphibistro.com/?p=141</link>
		<comments>http://delphibistro.com/?p=141#comments</comments>
		<pubDate>Mon, 08 Feb 2010 14:48:22 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Bizarre]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Programming]]></category>
		<category><![CDATA[Profiling]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=141</guid>
		<description><![CDATA[Last Friday, while I was getting ready to setup a profiling session for the weekend I ran into a problem. My profiling tool &#8211; ProDelphi - would not run.  A rather generic error message  would display instead. The following message was being displayed every time I tried to run the program :

Mind you that I [...]]]></description>
			<content:encoded><![CDATA[<p>Last Friday, while I was getting ready to setup a profiling session for the weekend I ran into a problem. My profiling tool &#8211; <a href="http://www.prodelphi.de/" target="_blank">ProDelphi </a>- would not run.  A rather generic error message  would display instead.<span id="more-141"></span> The following message was being displayed every time I tried to run the program :</p>
<p style="text-align: center;"><img class="size-full wp-image-142  aligncenter" title="ProDelphi error message" src="http://delphibistro.com/wp-content/uploads/2010/02/Prodelphi-error.png" alt="ProDelphi error message" width="489" height="169" /></p>
<p>Mind you that I had used ProDelphi less than a week before this error came up.</p>
<p>My initial reaction was to follow the message&#8217;s direction and reinstall the program. That did not help -  the same error come back after I reinstalled the program.</p>
<p>Strange, I can&#8217;t remember when was the last time I had such an issue with an NTFS formatted drive.</p>
<p>I started to look into this issue and I finally figured that this error message was a result of the corporate anti-virus software &#8211; Symantec Endpoint Protection &#8211; getting a new virus definition update and deciding that ProDelphi as infected. Annoying to say the very least.</p>
<p>The solution was to add ProDelphi&#8217;s executable (profiler.exe) as an user-defined Exception and reboot.   After that ProDelphi was running again without incidents.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=141</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lazarus article on Linux Journal</title>
		<link>http://delphibistro.com/?p=134</link>
		<comments>http://delphibistro.com/?p=134#comments</comments>
		<pubDate>Sun, 09 Aug 2009 21:38:03 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Cross-platform]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[FPC]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=134</guid>
		<description><![CDATA[I finally got around to browse the Linux Journal Magazine (September 2009) that this month features cross platform development,  and noticed the word Lazarus at the top of the cover page.  Yes, it is an article about the Delphi like IDE. The article is written by Mattias Gaertner, a member of the Lazarus project.
The article [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-135 alignleft" title="ljCover" src="http://delphibistro.com/wp-content/uploads/2009/08/ljCover.jpg" alt="ljCover" width="125" height="167" />I finally got around to browse the Linux Journal Magazine (<em>September 2009</em>) that this month features cross platform development,  and noticed the word Lazarus at the top of the cover page.  Yes, it is an article about the Delphi like IDE. The article is written by Mattias Gaertner, a member of the Lazarus project.<span id="more-134"></span></p>
<p>The article is an overview of Lazarus/FPC and cross platform development. It explores Lazarus/FPC cross platform capabilities and dices into some of the IDE features. The cool aspect of this article is that is being presented in a non Delphi venue that is dedicating it&#8217;s pages to cross platform development. This exposing a Pascal IDE  to a &#8220;new&#8221; audience.</p>
<p>Most certainly, Lazarus brings to the table cross platform development in a way that is more native to your target than .NET et al. Lazarus produces <strong>native code</strong> for Windows, Macs and Linux. I can only imagine where we could have been if Borland would have gotten Kilyx right&#8230; In any case, I have played with Lazarus and FPC for the past couple of years and I am to a point that I am willing to start a small cross platform project solely using Lazarus and FPC.</p>
<p>Here is a <a href="http://www.linuxjournal.com/article/10502" target="_blank">link</a> to the article &#8211; unfortunately one has to be a subscriber to read. If you are not a subscriber, you can go to your local newsstand or book store and read the article.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=134</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Delphi Services and Localization Issue</title>
		<link>http://delphibistro.com/?p=115</link>
		<comments>http://delphibistro.com/?p=115#comments</comments>
		<pubDate>Sun, 09 Aug 2009 17:44:30 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Bizarre]]></category>
		<category><![CDATA[Code Detective]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Delphi Programming]]></category>
		<category><![CDATA[Local]]></category>
		<category><![CDATA[Windows Service]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=115</guid>
		<description><![CDATA[About five months ago I was called in to look into an localization issue affecting one of our software products. The software in case is a Windows Service written in Delphi. This service is used to collect live data from a series of networked devices and store such data into a RDBMS. As usual my [...]]]></description>
			<content:encoded><![CDATA[<p>About five months ago I was called in to look into an localization issue affecting one of our software products. The software in case is a Windows Service written in Delphi. This service is used to collect live data from a series of networked devices and store such data into a RDBMS. As usual my colleagues were very quick to blame the issue on Delphi.<span id="more-115"></span></p>
<p><strong><br />
The Investigation &#8211; Part I</strong><br />
The issue was that the service failed to obtain the proper local setting for decimal separator when running on a Spanish Mexican Windows Server 2003.  In other words, the service would not correctly store numeric data in the database&#8217;s string fields. The issue presented itself only when the service started as part of the normal boot up process. When the service was restarted it would get the proper decimal separator. Strange behavior indeed.</p>
<p>I verified that the code was indeed written to obtain localization information from the OS. During the Service startup the program issued a call to the Windows function GetLocaleInfoA to obtain localized information – in this case LOCALE_SDECIMAL (0xE). This call uses locale ID information obtained on a prior call to the Windows function GetThreadLocale.  So far so god.</p>
<p>So after looking into the issue I was able to determine that the problem happened only when I booted up the computer and that the problem would fix itself if the service was restarted. In light of that discovery the Project Manager in charge thanked me and assigned the issue to some other person – a Windows OS specialist.</p>
<p>Their plan was to either delay the service startup or to restart the service after the computer was up and running. I argued that his approach was not a proper way to fix the issue, specially because we did not have a complete understanding of why the issue was happening.  Nevertheless I was told to go back to my prior assignment. So I did.<br />
<strong><br />
The Investigation &#8211; Part II</strong><br />
About a month ago I was approached yet again by the Project Manager because none of their quick solutions seemed to work.  So I resumed my investigation.</p>
<p>After some digging around to try to isolate the issue I was able to determine that the problem lied in the Windows user that the service is using to start. The service is normally installed and set to use the Windows Local System account.  When the service was started with the Local Administrator account the service performed as expected, and it did pick up the proper localization information.<br />
<strong><br />
The Investigation &#8211; Conclusion</strong><br />
Based on these facts I must conclude that Windows handles the locale information for the Local System account in a different way than it does for regular users. So my recommended fix for the issue was to have the services account information changed to run under a user account with enough privileges. In my view a much cleaner solution than restart services or delay service startup.</p>
<p><strong>Links</strong><br />
<a href="http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx" target="_blank"><em>Service Security and Access Rights</em></a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms684190.aspx" target="_blank"><em>L</em><em>ocal System Account</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=115</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cross-platform Pascal using Lazarus</title>
		<link>http://delphibistro.com/?p=92</link>
		<comments>http://delphibistro.com/?p=92#comments</comments>
		<pubDate>Mon, 09 Feb 2009 04:39:51 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Cross-platform]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[Freepascal]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Vm]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=92</guid>
		<description><![CDATA[This past Thursday (February 5th) I made a presentation about how to install Lazarus on Windows and Linux (Ubuntu) for the Pacific Northwest Delphi User Group.
For the presentation I created a Virtual Machine for both Windows and Ubuntu to demo  the installation and I was asked to share it with the group. I figure other [...]]]></description>
			<content:encoded><![CDATA[<p>This past Thursday (February 5th) I made a presentation about how to install Lazarus on Windows and Linux (Ubuntu) for the <a title="Pacific Nowrthwest Delphi User Group" href="http://www.pnwdelphi.org/" target="_blank">Pacific Northwest Delphi User Group</a>.<span id="more-92"></span></p>
<p>For the presentation I created a Virtual Machine for both Windows and Ubuntu to demo  the installation and I was asked to share it with the group. I figure other people could make use of it as well. So I decided to post it on my site. Off course that the Windows virtual machine can not be posted so don&#8217;t expect to find it here &#8211; sorry.</p>
<p>The Ubuntu VM is a using a VMWare virtual machine version 6.5 that can be run on Vmware&#8217;s Workstation,  Player, and VirtualBox  in both Windows or Linux. Two things to keep in mind when using VirtualBox is to &#8220;Enable IO APIC&#8221; on the General-&gt;Advanced tab, and to uninstall VMware AddIns before using it with VBox (<em>Thanks Christoph!</em>).</p>
<p>The VM contains the latest Lazarus IDE  running on Ubuntu 8.10. On the desktop of the VM you will find the script (Laz) that I used to install Lazarus. The user name is <strong>axf</strong> and the password is <strong>lazarus</strong>.</p>
<p>The file containing this VM can be found <a title="Lazarus Virtual Machine" href="http://delphibistro.com/downloads/UbuntuLazarus.tar.gz">here</a>. Be forewarned that the download is a hefty 1.8 GB &#8211; so go grab a cup of coffee, finish that project, clean up the garage&#8230; you get the idea.</p>
<p>While Windows installation is pretty straightforward &#8211; the usual download and install routine applies &#8211; the same can not be said about installing Lazarus on Linux.</p>
<p>I started by looking at the packages provided by the repositories and decided against because the packages where about a year old.  So I went to the <a title="Lazarus homepage" href="http://www.lazarus.freepascal.org/" target="_blank">Lazarus</a> site and downloaded the Debian packages and ran into problems such as missing dependencies and the like.</p>
<p>After looking around I found a script that added the current lazarus repositories, dowloaded and installed lazarus.  The script is as follows:</p>
<blockquote><p><em> #!/bin/sh<br />
gpg &#8211;keyserver hkp://pgp.mit.edu:11371 &#8211;recv-keys 6A11800F<br />
gpg &#8211;export 6A11800F | apt-key add -<br />
echo &#8220;deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe&#8221; \<br />
&gt;/etc/apt/sources.list.d/lazarus.list<br />
apt-get update<br />
apt-get install lazarus</em></p></blockquote>
<p>I also had to make changes on the Lazarus folder to allow my user to recompile and install components. So to correct permissions issues I created the user group <em>Lazarus</em> (or whatever name you like)  and added myself to the group. Changed permissions for the folder /usr/lib/lazarus by issuing the following command:</p>
<blockquote><p><em>sudo chown -R :lazarus /usr/lib/lazarus</em></p></blockquote>
<p>and the allowed the group to read, write and execute by issuing the following command:<em></em></p>
<blockquote><p><em>sudo chmod -R g+xrw /usr/lib/lazarus</em>.</p></blockquote>
<p>I have also posted the presentation slides for the people that attended the presentation. The slides can be found <a title="Lazarus Presentation Slides" href="http://delphibistro.com/downloads/LazarusPresentation.pdf" target="_self">here</a>.</p>
<p>Please, let me know if you experience any problems with the VM.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=92</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Delphi Contract available in the Akron (OH) area</title>
		<link>http://delphibistro.com/?p=90</link>
		<comments>http://delphibistro.com/?p=90#comments</comments>
		<pubDate>Mon, 17 Nov 2008 23:58:47 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Delphi jobs]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=90</guid>
		<description><![CDATA[I just learned of a Delphi contract available in the Akron (OH) area.
Here is what I know:
- 6 + months duration
- SQL/Stored procedures
- Solid knowledge of Delphi &#8211; Action Manager, data grids, exceptions, OO stuff etc.
- pay rate 40-50/hr.
For more details drop Dan Chester a line. He can be reached at &#8220;dan at nityo dot [...]]]></description>
			<content:encoded><![CDATA[<p>I just learned of a Delphi contract available in the Akron (OH) area.<span id="more-90"></span></p>
<p>Here is what I know:<br />
- 6 + months duration<br />
- SQL/Stored procedures<br />
- Solid knowledge of Delphi &#8211; Action Manager, data grids, exceptions, OO stuff etc.<br />
- pay rate 40-50/hr.</p>
<p>For more details drop Dan Chester a line. He can be reached at <strong>&#8220;dan at nityo dot com&#8221;.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=90</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Fletch PSM Index for Oct. 19 2008</title>
		<link>http://delphibistro.com/?p=84</link>
		<comments>http://delphibistro.com/?p=84#comments</comments>
		<pubDate>Mon, 20 Oct 2008 02:10:42 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Delphi Programming]]></category>
		<category><![CDATA[Fletch Index]]></category>
		<category><![CDATA[Fletch PSM Index]]></category>
		<category><![CDATA[Index]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=84</guid>
		<description><![CDATA[Here is the second installment of the Fletch Programming Skills Marketability Index or Fletch PSM Index for short.
DISCLAIMER &#8211; I do not claim that this index is an exact science and the results should be taken as, maybe, a relative indicator not as an absolute true. Also, because I am still working on this the [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the second installment of the <em>Fletch Programming Skills Marketability Index</em> or Fletch PSM Index for short.<span id="more-84"></span></p>
<p>DISCLAIMER &#8211; <strong><em>I do not claim that this index is an exact science and the results should be taken as, maybe, a relative indicator not as an absolute true. Also, because I am still working on this the results may change. You have been warned.</em></strong></p>
<table border="0" cellspacing="0" frame="void" rules="none">
<colgroup>
<col width="86"></col>
<col width="77"></col>
<col width="77"></col>
<col width="77"></col>
<col width="77"></col>
<col width="77"></col>
<col width="77"></col>
<col width="77"></col>
</colgroup>
<tbody>
<tr>
<td width="86" height="32" align="left">Language</td>
<td width="77" align="center">Position 10/19/2008</td>
<td width="77" align="center">Position Change</td>
<td width="77" align="center">Count 10/19/2008</td>
<td width="77" align="center">Percentile</td>
<td width="77" align="center">Position 10/12/2008</td>
<td width="77" align="center">Count 10/12/2008</td>
<td width="77" align="center">Percentile</td>
</tr>
<tr>
<td height="17" align="left">Java</td>
<td align="right">1</td>
<td align="right">0</td>
<td align="right">3582</td>
<td align="right">35.67</td>
<td align="right">1</td>
<td align="right">2889</td>
<td align="right">34.59</td>
</tr>
<tr>
<td height="17" align="left">C#</td>
<td align="right">2</td>
<td align="right">0</td>
<td align="right">1672</td>
<td align="right">16.65</td>
<td align="right">2</td>
<td align="right">1369</td>
<td align="right">16.39</td>
</tr>
<tr>
<td height="17" align="left">Perl</td>
<td align="right">3</td>
<td align="right">0</td>
<td align="right">844</td>
<td align="right">8.4</td>
<td align="right">3</td>
<td align="right">720</td>
<td align="right">8.62</td>
</tr>
<tr>
<td height="17" align="left">C++</td>
<td align="right">4</td>
<td align="right"><span style="color: #008000;">1</span></td>
<td align="right">713</td>
<td align="right">7.1</td>
<td align="right">5</td>
<td align="right">549</td>
<td align="right">6.57</td>
</tr>
<tr>
<td height="17" align="left">PHP</td>
<td align="right">5</td>
<td align="right"><span style="color: #800000;">-1</span></td>
<td align="right">617</td>
<td align="right">6.14</td>
<td align="right">4</td>
<td align="right">566</td>
<td align="right">6.78</td>
</tr>
<tr>
<td height="17" align="left">Basic</td>
<td align="right">6</td>
<td align="right"><span style="color: #008000;">1</span></td>
<td align="right">547</td>
<td align="right">5.45</td>
<td align="right">7</td>
<td align="right">472</td>
<td align="right">5.65</td>
</tr>
<tr>
<td height="17" align="left">C</td>
<td align="right">7</td>
<td align="right"><span style="color: #800000;">-1</span></td>
<td align="right">527</td>
<td align="right">5.25</td>
<td align="right">6</td>
<td align="right">497</td>
<td align="right">5.95</td>
</tr>
<tr>
<td height="17" align="left">Cobol</td>
<td align="right">8</td>
<td align="right"><span style="color: #008000;">1</span></td>
<td align="right">288</td>
<td align="right">2.87</td>
<td align="right">9</td>
<td align="right">243</td>
<td align="right">2.91</td>
</tr>
<tr>
<td height="17" align="left">Python</td>
<td align="right">9</td>
<td align="right"><span style="color: #800000;">-1</span></td>
<td align="right">271</td>
<td align="right">2.7</td>
<td align="right">8</td>
<td align="right">247</td>
<td align="right">2.96</td>
</tr>
<tr>
<td height="17" align="left">SAS</td>
<td align="right">10</td>
<td align="right"><span style="color: #008000;">2</span></td>
<td align="right">268</td>
<td align="right">2.67</td>
<td align="right">12</td>
<td align="right">187</td>
<td align="right">2.24</td>
</tr>
<tr>
<td height="17" align="left">Ruby</td>
<td align="right">11</td>
<td align="right">0</td>
<td align="right">235</td>
<td align="right">2.34</td>
<td align="right">11</td>
<td align="right">189</td>
<td align="right">2.26</td>
</tr>
<tr>
<td height="17" align="left">ActionScript</td>
<td align="right">12</td>
<td align="right"><span style="color: #800000;">-2</span></td>
<td align="right">214</td>
<td align="right">2.13</td>
<td align="right">10</td>
<td align="right">221</td>
<td align="right">2.65</td>
</tr>
<tr>
<td height="17" align="left">ABAP</td>
<td align="right">13</td>
<td align="right">0</td>
<td align="right">136</td>
<td align="right">1.35</td>
<td align="right">13</td>
<td align="right">95</td>
<td align="right">1.14</td>
</tr>
<tr>
<td height="17" align="left">ADA</td>
<td align="right">14</td>
<td align="right"><span style="color: #008000;">1</span></td>
<td align="right">53</td>
<td align="right">0.53</td>
<td align="right">15</td>
<td align="right">31</td>
<td align="right">0.37</td>
</tr>
<tr>
<td height="17" align="left">Delphi</td>
<td align="right">15</td>
<td align="right"><span style="color: #800000;">-1</span></td>
<td align="right">42</td>
<td align="right">0.42</td>
<td align="right">14</td>
<td align="right">34</td>
<td align="right">0.41</td>
</tr>
<tr>
<td height="17" align="left">Fortran</td>
<td align="right">16</td>
<td align="right">0</td>
<td align="right">21</td>
<td align="right">0.21</td>
<td align="right">16</td>
<td align="right">24</td>
<td align="right">0.29</td>
</tr>
<tr>
<td height="17" align="left">Lua</td>
<td align="right">17</td>
<td align="right">0</td>
<td align="right">7</td>
<td align="right">0.07</td>
<td align="right">17</td>
<td align="right">9</td>
<td align="right">0.11</td>
</tr>
<tr>
<td height="17" align="left">LISP</td>
<td align="right">18</td>
<td align="right">0</td>
<td align="right">6</td>
<td align="right">0.06</td>
<td align="right">18</td>
<td align="right">9</td>
<td align="right">0.11</td>
</tr>
</tbody>
</table>
<p>As you may have guessed not much has changed. Delphi is still commanding about 0.4 % of the market while the lion&#8217;s share goes to Java and C#.</p>
<p>Just as a reminder: this index is created by running a search for job posts that mention specific languages. These jobs are advertised during the last 7 days. I use the site <a href="http://www.Juju.com" target="_self">http://www.Juju.com</a> as a source for data and I try as much as I can to eliminate false positives. This site is restricted to the United States.</p>
<p>Your comments are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=84</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wow! Clipper is still around</title>
		<link>http://delphibistro.com/?p=79</link>
		<comments>http://delphibistro.com/?p=79#comments</comments>
		<pubDate>Sun, 19 Oct 2008 19:46:19 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Bizarre]]></category>
		<category><![CDATA[Clipper]]></category>
		<category><![CDATA[FoxPro]]></category>
		<category><![CDATA[Nostalgia]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=79</guid>
		<description><![CDATA[While preparing my “Fletch Programming Skills Marketability Index” for the week I ran in to a posting for a Clipper Support Analyst.
Wow! Clipper is still around. That brings back memories, Clipper, FoxPro, Turbo Pascal, Quick C, DOS, 640k/704k RAM, Novell&#8230;(I&#8217;m dating myself)
Have you run into other bizarre or unexpected things out there?  Would you [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0in;">While preparing my “Fletch Programming Skills Marketability Index” for the week I ran in to a posting for a <a href="http://www1.recruitingcenter.net/clients/ceridian/publicjobs/controller.cfm?jbaction=JobProfile&amp;Job_Id=26374&amp;esid=az" target="_blank">Clipper Support Analyst</a>.</p>
<p style="margin-bottom: 0in;">Wow! Clipper is still around. That brings back memories, Clipper, FoxPro, Turbo Pascal, Quick C, DOS, 640k/704k RAM, Novell&#8230;(I&#8217;m dating myself)</p>
<p style="margin-bottom: 0in;">Have you run into other bizarre or unexpected things out there?  Would you mind sharing with us?</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=79</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Fletch Programming Skills Marketability Index</title>
		<link>http://delphibistro.com/?p=63</link>
		<comments>http://delphibistro.com/?p=63#comments</comments>
		<pubDate>Mon, 13 Oct 2008 03:42:10 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Delphi Programming]]></category>
		<category><![CDATA[Fletch Index]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Tiobe Index]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=63</guid>
		<description><![CDATA[
In a couple of posts Jim McKeeth has pointed out that the Delphi language has been climbing in the TIOBE Index. He has also called the community to action in order to make sure that whenever we referenced Delphi on a post to do so using “Delphi programming”. That way these references can be properly [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">In a couple of<a href="http://www.delphi.org/2008/10/the-many-faces-of-delphi/" target="_blank"> posts</a> Jim McKeeth has pointed out that the Delphi language has been climbing in the <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">TIOBE</a> Index. He has also called the community to action in order to make sure that whenever we referenced Delphi on a post to do so using “Delphi programming”. That way these references can be properly accounted for in such index.<span id="more-63"></span></p>
<p style="margin-bottom: 0in;">The TIOBE site states that “<em>The TIOBE Programming Community index gives an indication of the popularity of programming languages.</em>” Such index is derived from search engines and their popularity. More on how the TIOBE index is calculated can be found <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm" target="_blank">here</a>.</p>
<p style="margin-bottom: 0in;">So I started to think. What that index really means to me? Does it mean that Delphi is coming back? Does it mean that Delphi developers are chattier than their colleagues? Does it mean anything at all? Or is just another indicator that can be used to one&#8217;s advantage on a discussion or argument?</p>
<p style="margin-bottom: 0in;">I figured that what I really want to know is how easy is to find a job that utilizes a specific language skill set.  That to me is a relevant measure of popularity. A measure that really matters because more jobs should be available for the more popular languages, right?</p>
<p style="margin-bottom: 0in;">So I went on a quest to figure how to derive this index. My plan was simple: I figure I needed to find a couple of sites that collected employment information from other sites and allowed me to use search queries with a combination of keywords and a time limit &#8211; say jobs posted in the last 7days or so.</p>
<p style="margin-bottom: 0in;">Easier said than done. While I found a handful of sites that filled the first requirement I was only able to find one site that also allowed me to restrict my search to the last 7 days – <a href="http://www.Juju.com" target="_self">http://www.Juju.com</a>. Unfortunately this site is restricted to the United States.  So I ask for your help; does anybody know of a site that is more global than this one? Or better yet, does anybody know of sites such as juju for your region/country? Please let me know.I will, time permitting, continue on my quest to figure better sites to pull out this information and try to do it on a regular basis so I can trend this data.</p>
<p style="margin-bottom: 0in;">Anyway, I then proceeded to search jobs that required specific programming language skills. After fiddling with the queries I was able to get result with a relative small quantity of false positives.</p>
<p style="margin-bottom: 0in;">Here are the results of my hour of work on a Sunday morning trying to answer my questions about indexes.</p>
<p style="margin-bottom: 0in;">But before I do so here is a DISCLAIMER &#8211; <strong><em>I do not claim that this index is an exact science and the results should be taken as, maybe, a relative indicator not as an absolute true. Also, because I am still working on this the results may change. You have been warned.<br />
</em></strong></p>
<p style="margin-bottom: 0in;">These results do not show a very favorable picture. Still, I will continue to run these queries on a regular basis to be able to come up with trended data for each language.</p>
<p style="margin-bottom: 0in;">So without any further ado here are the results: Java came in first with 2889 hits, followed by C# with 1369 hits. Delphi was in the 14th place with 34 hits.</p>
<p style="margin-bottom: 0in;">Here is the complete list of the programming languages that I researched and their position:</p>
<p style="margin-bottom: 0in;">
<table border="0" cellspacing="0" frame="void" rules="none">
<colgroup>
<col width="86"></col>
<col width="86"></col>
<col width="86"></col>
</colgroup>
<tbody>
<tr>
<td style="text-align: center;" width="86" height="17">Position</td>
<td style="text-align: center;" width="86">Language</td>
<td style="text-align: center;" width="86">Hits</td>
</tr>
<tr>
<td style="text-align: center;" height="17">1</td>
<td align="left">Java</td>
<td align="right">2889</td>
</tr>
<tr>
<td style="text-align: center;" height="17">2</td>
<td align="left">C#</td>
<td align="right">1369</td>
</tr>
<tr>
<td style="text-align: center;" height="17">3</td>
<td align="left">Perl</td>
<td align="right">720</td>
</tr>
<tr>
<td style="text-align: center;" height="17">4</td>
<td align="left">PHP</td>
<td align="right">566</td>
</tr>
<tr>
<td style="text-align: center;" height="17">5</td>
<td align="left">C++</td>
<td align="right">549</td>
</tr>
<tr>
<td style="text-align: center;" height="17">6</td>
<td align="left">C</td>
<td align="right">497</td>
</tr>
<tr>
<td style="text-align: center;" height="17">7</td>
<td align="left">Basic</td>
<td align="right">472</td>
</tr>
<tr>
<td style="text-align: center;" height="17">8</td>
<td align="left">Python</td>
<td align="right">247</td>
</tr>
<tr>
<td style="text-align: center;" height="17">9</td>
<td align="left">Cobol</td>
<td align="right">243</td>
</tr>
<tr>
<td style="text-align: center;" height="17">10</td>
<td align="left">ActionScript</td>
<td align="right">221</td>
</tr>
<tr>
<td style="text-align: center;" height="17">11</td>
<td align="left">Ruby</td>
<td align="right">189</td>
</tr>
<tr>
<td style="text-align: center;" height="17">12</td>
<td align="left">SAS</td>
<td align="right">187</td>
</tr>
<tr>
<td style="text-align: center;" height="17">13</td>
<td align="left">ABAP</td>
<td align="right">95</td>
</tr>
<tr>
<td style="text-align: center;" height="17">14</td>
<td align="left">Delphi</td>
<td align="right">34</td>
</tr>
<tr>
<td style="text-align: center;" height="17">15</td>
<td align="left">ADA</td>
<td align="right">31</td>
</tr>
<tr>
<td style="text-align: center;" height="17">16</td>
<td align="left">Fortran</td>
<td align="right">24</td>
</tr>
<tr>
<td style="text-align: center;" height="17">17</td>
<td align="left">Lua</td>
<td align="right">9</td>
</tr>
<tr>
<td style="text-align: center;" height="17">18</td>
<td align="left">LISP</td>
<td align="right">9</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0in;">Please let me know if you have any suggestions, languages or better ideas on how to make a good assessment of the popularity of a language.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=63</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>The time has come and I need to move on&#8230;</title>
		<link>http://delphibistro.com/?p=49</link>
		<comments>http://delphibistro.com/?p=49#comments</comments>
		<pubDate>Mon, 22 Sep 2008 00:04:36 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Job Hunting]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=49</guid>
		<description><![CDATA[The time has come and I feel that I need to move on to my next job. For a while I have been trying to locate my next Delphi job with little success. I have been trying to get something close to home because my family and I live in the Seattle area &#8211; perhaps [...]]]></description>
			<content:encoded><![CDATA[<p>The time has come and I feel that I need to move on to my next job. For a while I have been trying to locate my next Delphi job with little success.<span id="more-49"></span> I have been trying to get something close to home because my family and I live in the Seattle area &#8211; perhaps that is the problem. All I can find locally are C# or C/C++ jobs. Nothing too exciting.</p>
<p>I have been looking everywhere I know where to look: Craigslist, Monster, Dice, NW classifieds, etc&#8230;. But nothing has turned up yet. I have even considered to expand my search to other states and even other countries.</p>
<p>Do you experience the same issues when looking for a new Delphi position?</p>
<p>Where do you look? How far would you consider moving for the right job?</p>
<p>What is your experience when searching for a Delphi job?</p>
<p>Would you care to share your experiences and thoughts with us?</p>
<p>Or at least participate on the poll on the top right of the page.</p>
<p><em>I added this after original post -&gt;</em> And just to make sure I make myself clear: <strong>I am looking for my next Delphi job! I will relocate anywhere if the position is right.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=49</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>My Event logger – a poor man&#8217;s debugger</title>
		<link>http://delphibistro.com/?p=46</link>
		<comments>http://delphibistro.com/?p=46#comments</comments>
		<pubDate>Sun, 21 Sep 2008 22:42:44 +0000</pubDate>
		<dc:creator>Fletch</dc:creator>
				<category><![CDATA[Code Detective]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Debugging]]></category>

		<guid isPermaLink="false">http://delphibistro.com/?p=46</guid>
		<description><![CDATA[I have been working around multi threaded services for quite a while now. And as you may know, multi threading services are very hard to debug. When debugging multi threaded applications one must collect run-time information without disturbing the threads and introducing delays that would ultimately cripple the service or render the debug effort meaningless. [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working around multi threaded services for quite a while now. And as you may know, multi threading services are very hard to debug. When debugging multi threaded applications one must collect run-time information without disturbing the threads and introducing delays that would ultimately cripple the service or render the debug effort meaningless. Clearly, I needed to have the program send real-time messages. <span id="more-46"></span></p>
<p>I tried using the Windows event log as a target but found the Windows Event Viewer to be at least irritating to use. I then switched to using the Windows method OutputDebugString to send messages about the program&#8217;s state. I used Delphi&#8217;s Event Log facilities when possible to receive the messages. Otherwise, I used  Sysinternals&#8217; Debugview to receiver the messages.</p>
<p>This was indeed a better solution but not perfect  as some of the systems that I inherited grew in complexity and services became distributed across multiple computers. I currently maintain a Windows service that has six threads that interact with as many as 132 devices over a network and stores collected data on a SQL database. This caused bugs to get trickier to resolve. I decided to change my debugging strategy to include an IP component.</p>
<p>I chose UDP/IP for the lower overhead and the “send it and forget it” operation &#8211; that meant that the debugged programs would not be affected by the debug message recipient not being on-line. I also chose the destination address to always be 127.0.0.1.  That way I could ship products with some debugging enabled without affecting the users&#8217; network at all.</p>
<p>I know, this may not seem much different that using OutputDebugString. But the twist was that I created a “forwarder service” that forwarded all the UDP/IP messages to an external computer where an UDP/IP client was up and running.  That allowed me to control when debug traffic got outside the host and where it went.</p>
<p>The UDP/IP client is able to display messages received in real time as well as automatically store messages in text files that can be easily imported to Microsoft&#8217;s Excel or OpenOffice&#8217;s SpreadSheet where you can filter and sort messages to your heart&#8217;s content.</p>
<p>The UDP/Client is also able to receive messages from multiple sources and that give one the ability of seeing how different components interact and contribute to create an issue. This becomes an advantage in solving issues generated by concurrent programs running on a system.</p>
<p>My current solution has the following parts:</p>
<ul>
<li><strong>LibEventLog.pas </strong>– This unit contains the TMsgLogger object declaration as well as an initialization section that instantiates the Object. This object is responsible for sending the messages either through  OutputDebugString and/or UDP/IP. It also has the ability to redirect assertions. In order to use the the EventLog object all one has to do is to include this unit in the use clause of the units that need to send messages.</li>
<li><strong>UDPFwrdr.exe</strong> – This is a Windows service that intercepts and forwards the UDP/IP messages.</li>
<li><strong>UDPConfig.cpl</strong> -  This is a Control Panel applet that allows the Forwarder&#8217;s destination address to be changed.</li>
<li><strong>UDPMonitor.exe</strong> – This is the UDP/IP client that receives messages generated by the application using LibEventLog and forwarded by UDPFwrdr. UDPMonitor receives, displays and saves all messages received.</li>
</ul>
<p>LibEventLog is currently using Indy 10 and I tested it in Delphi 7, 2006 and 2007.</p>
<p>I have included the source code <a title="Download source code" href="http://www.delphibistro.com/downloads/LibEventLog.zip">here</a> so you can download it and use it. Please let me know what you think.</p>
<p>If you make any improvements I would ask you to submit those back to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://delphibistro.com/?feed=rss2&amp;p=46</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
