<?xml version="1.0" encoding="ISO-8859-1"?>
<!--This is an automatically generated RSS file.

RSS files are web site summary documents in XML format, and are meant to be read
by an RSS reader or aggregator.
-->
<rss version="2.0">
   <channel>
      <title>ClarionMag Blog</title>
      <description><![CDATA[All entries from all ClarionMag blogs]]></description>
      <language>en-us</language>
      <link>http://clarionmag.com:8081</link>
      <copyright>Copyright 1999-2005 by CoveComm Inc.</copyright>
      <item>
         <title>Windows 7 RC, upcoming articles, and CMag  beta news</title>
         <link>http://clarionmag.com:8081/blog/20100224WindowsRCupcomingarticlesandCMagbetanews.html</link>
         <description><![CDATA[<p>These are busy times.</p>
<p>I've got a couple of articles in preview at the moment, on by Tony York on  passing groups, and another by Dr. Parker on the status of his much-desired fixes to the previewer and MASK in C7.1. And I've got an excellent two-parter by Philip Prohm on converting your apps to C7.1, the first part of which should be online by the end of this week. </p>
<p>Like a lot of other people, I installed the Windows 7 release candidate on my development machine sometime last year, fully intending to upgrade to the RTM when it came out. But I never got around to it. And last week I became aware that the deadline was March 1, as of which time I could expect my Windows 7 RC install to start shutting down abruptly every two hours. So last week I bit the bullet and did a fresh install. </p>
<p>Years ago I started keeping a document with the exact steps needed to get everything up and running on a new install. Even with that the process takes more than a day, and there's always some app or configuration that I added since the last time but forgot to document. I have around fifty different applications/utilities I use on a regular basis, so I really need that doc. </p>
<p>I started the install last weekend, and although I had my core configuration in place by Monday morning and the majority of apps installed by the afternoon, I'm still doing a certain amount of fixup and cleanup each day. And of course there were various glitches, such as when I installed the latest PostgreSQL 8.4 release. And found out when it came time to update the ClarionMag beta database that I was running 8.3 on the server. And I had problems importing the new database. And and and ... well, just another day at the office. </p>
<p>The new ClarionMag beta site is coming along nicely. You can have a look at <a href="http://beta.clarionmag.com/index.html">beta.clarionmag.com</a>. In particular check out the <a href="http://beta.clarionmag.com/myclarionmag">My ClarionMag</a> page. As you'll notice on the latter page the login system is different on the new site. We're switching to forms-based authentication, with a &quot;remember me&quot; option that keeps you logged in. If you've been relying on your browser's memory to log you in to the current site you may have forgotten your password entirely. There are a couple of ways to retrieve it. </p>
<p>One way is to get it from your browser - FireFox will let you view stored passwords, and I imagine most other browsers will as well.</p>
<p>The other is to <a href="http://www.clarionmag.com/cmag/forgotpassword.html">get your password emailed to you by ClarionMag</a>. But please make sure we have your current email address - you can update that (as well as your mailing list preferences) <a href="http://www.clarionmag.com/cmag/userupdate.frm">here</a>. </p>
<p>And please do verify your email address. We do at times sends out special offers by email only, and if we don't have a current email address, or you've declined to be on our mailing lists (which are double-opt-in) you're unlikely to hear about those offers.</p>
<p>There's a lot of cool stuff happening on the beta site - I'll have more to say in upcoming articles. Really, go check out My ClarionMag. You'll find some nifty new ways to manage your own view of ClarionMag, including lists of favorite and &quot;read later&quot; articles.</p>
<p>Oh yes, I had someone ask me about the .NET site. That's still in development, but as it uses the same server code base as the new ClarionMag site you can expect to see it online in the near future. </p>
<p>If you're on Twitter, you can follow the beta progress and other ClarionMag news and notes on the <a href="http://twitter.com/clarionmag">ClarionMag Twittwer feed</a>.</p>]]></description>
         <pubDate>Wed, 24 Feb 2010 00:00:00 CST</pubDate>
      </item>
      <item>
         <title>Clarion unit testing framework on Google Code</title>
         <link>http://clarionmag.com:8081/blog/20091230ClarionunittestingframeworkonGoogleCode.html</link>
         <description><![CDATA[ <p>In the <a href="http://clarionlive.com/index.php?option=com_docman&amp;task=cat_view&amp;gid=42&amp;Itemid=57">Dec 18 2009 ClarionLive webinar</a> I mentioned that I'd be releasing the ClarionTest application (formerly called CTest) as open source. You can now find the code repository on Google Code at <a href="http://code.google.com/p/clariontest/">http://code.google.com/p/clariontest/</a>. There's a downloadable zip, as well as a source code repository which you can get via SVN. </p>]]></description>
         <pubDate>Wed, 30 Dec 2009 00:00:00 CST</pubDate>
      </item>
      <item>
         <title>ClarionMag supports Wikipedia - maybe you should too</title>
         <link>http://clarionmag.com:8081/blog/20091204ClarionMagsupportsWikipedimaybeyoushouldtoo.html</link>
         <description><![CDATA[<p>I don't know about you, but I use <a href="http://en.wikipedia.org/wiki/Main_Page">Wikipedia</a> pretty much every day. It's a huge resource, generally fairly accurate, and it's been a boon to my business and to me personally. </p>
<p>Periodically Wikipedia has a fundraising drive. If you'd like to kick in, as ClarionMag just did, go to the <a href="http://en.wikipedia.org/wiki/Main_Page">Wikipedia home page</a> and follow the donate link. </p>
<p>Wikipedia is run by a non-profit organization, the <a href="http://www.wikimedia.org/">Wikimedia Foundation</a>. (BTW they've got a bunch of other interesting projects on the go, like a <a href="http://commons.wikimedia.org/wiki/Main_Page">free media repository</a> and a <a href="http://species.wikimedia.org/wiki/Main_Page">species directory</a>.) </p>]]></description>
         <pubDate>Fri, 04 Dec 2009 00:00:00 CST</pubDate>
      </item>
      <item>
         <title>Embed series returns next week</title>
         <link>http://clarionmag.com:8081/blog/20091021Embedseriesreturnsnextweek.html</link>
         <description><![CDATA[<p>I'd really planned to have Part 2 of the new series on embeds (and why you're probably misusing them) up by now, but a lot of interesting news came out of the Aussie DevCon. In fact I've got one more article on the new template language that I think you'll find quite interesting, even if you're not a template writer. </p>
<p>I do expect to have Part 2 up next week, however. </p>]]></description>
         <pubDate>Wed, 21 Oct 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>Google. Evil</title>
         <link>http://clarionmag.com:8081/blog/20091001GoogleEvil.html</link>
         <description><![CDATA[<p><a href="http://talkbiz.com/blog/google-steals-the-web/">'Nuff said</a>.]]></description>
         <pubDate>Thu, 01 Oct 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>STARTing procedures by address</title>
         <link>http://clarionmag.com:8081/blog/20090901STARTingproceduresbyaddress.html</link>
         <description><![CDATA[  <p>In the SV newsgroups James Hrubes asked a question about whether it's possible to <code>START</code> a procedure via the procedure's name rather than its label. The short answer is no. Say you have a procedure called <code>BrowseStudents</code>.  <code>BrowseStudents</code> is a label, and <code>'BrowseStudents'</code> is a string, and the Clarion runtime library doesn't provide a way of translating a string to a procedure label. </p>
  <p>In response to James' question, Maarten Veenstra posted this little gem from an unknown author. This program illustrates another approach, which is to store the <code>ADDRESS</code> of a procedure and then <code>START</code> the address instead of the label. </p>
  <p>But there's a trick. Take a close look at the <code>DynaStart</code> prototype in the <code>MAP</code>:</p>
  <pre>   Program
include('builtins.clw')
Procs  LONG,DIM(16)

 MAP
  Main
  BrowseStudents
  BrowseTeachers
  BrowseSchools
  BrowseClassRooms
  MODULE('Clarion')
    DynaStart(LONG,LONG),LONG,PROC,NAME('Cla$START')
  END
 END

 CODE

 Procs[1] = address(BrowseStudents)
 Procs[2] = address(BrowseTeachers)
 Procs[3] = address(BrowseSchools)
 Procs[4] = address(BrowseClassRooms)
 MAIN

Main  PROCEDURE
Window WINDOW('Select Procedure'),AT(,,219,69),|
         FONT('MS Sans Serif',8,,FONT:regular,CHARSET:ANSI),|
         CENTER, GRAY
       LIST,AT(93,18,103,10),USE(?List1),VSCROLL,DROP(4),|
         FROM('BrowseStudents|BrowseTeachers|BrowseSchools|BrowseClassRooms')
       PROMPT('Select Procedure:'),AT(23,18),USE(?Prompt1)
       BUTTON('Start Selected Procedure'),AT(60,44,99,14),USE(?StartButton)
     END
     CODE
     OPEN(Window)
     SELECT(?List1,1)
     ACCEPT
     CASE FIELD()
      OF ?StartButton
       CASE EVENT()
       OF EVENT:Accepted
        DynaStart(Procs[CHOICE(?List1)],25000)

       END
     END
     END
 
BrowseStudents PROCEDURE
    CODE
     MESSAGE('Students')

BrowseTeachers PROCEDURE
   CODE
   MESSAGE('Teachers')

BrowseSchools     PROCEDURE
   CODE
   MESSAGE('Schools')


BrowseClassRooms  PROCEDURE
   CODE
   MESSAGE('ClassRooms')</pre>
   
   
  <p wrap="">You might think you could use <code>START</code> directly, but you can't. The libsrc\builtins.clw contains the following prototype:</p>
  <pre wrap=""> START(_PROC,UNSIGNED=0),SIGNED,PROC,NAME('Cla$START')  </pre>
  <p wrap="">And <code>_PROC</code> is a procedure prototype:</p>
  <pre wrap="">_PROC(),TYPE</pre>
  <p wrap="">The compiler complains if you attempt to pass an address instead of an actual procedure. </p>
  <p wrap="">As the unknown author of that example deduced, internally <code>START</code> simply takes the address of a procedure. So the redeclaration of <code>START</code> uses <code>LONG</code> parameters instead, and now you can pass the address of any parameterless procedure. Presumably you could take the same approach with the other two forms of <code>START</code>. </p>
  <p wrap="">It's a nifty bit of code. So who wrote it? </p>]]></description>
         <pubDate>Tue, 01 Sep 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>DevCon in 2009?</title>
         <link>http://clarionmag.com:8081/blog/20090501DevConin.html</link>
         <description><![CDATA[<p>Watching the webinar - Z just said there will definitely be a DevCon in 2009...</p>
<p>Now, he also said that it won't be until after there's a .NET AppGen, which he's previously indicated is 3-6 months away. I'm not sure there's quite enough time in the year for this, as to my mind a DevCon needs a good six months lead time. </p>
<p>UPDATE: Bob F certainly has DevCon on his mind, however. He just mentioned it again...</p>]]></description>
         <pubDate>Fri, 01 May 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>C7 Designer gets C6 compatiblity mode</title>
         <link>http://clarionmag.com:8081/blog/20090501CDesignergetsCcompatiblitymode.html</link>
         <description><![CDATA[<p>As seen in today's webinar, the next release of C7 will feature a C6 compatibility mode to retain the decidedly non-industry-standard behavior of being able to have controls that are declared inside a container control but display outside the container control. In that compability mode the designer asks if you want to move controls into/out of the parent (i.e. tab) control, as in C6. </p>
<p>Also of note, the Applications Pad is getting more toolbar buttons and is intended to be the primary way developers interact with APP and DCT files.</p>]]></description>
         <pubDate>Fri, 01 May 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>FireFox printing problems, again</title>
         <link>http://clarionmag.com:8081/blog/20090430FireFoxprintingproblemsagain.html</link>
         <description><![CDATA[<p>I had another report the other day of problems with FireFix printing source code as gibberish. This has come up before <a href="http://www.clarionmag.com/blog/20081212FireFoxprintingproblemandworkaround.html">in the blog</a>, but I've come across a suggestion that <a href="http://support.mozilla.com/tiki-view_forum_thread.php?locale=en-US&amp;forumId=1&amp;comments_parentId=261711">creating a new profile</a> is a cure for certain FireFox printing problems. </p>]]></description>
         <pubDate>Thu, 30 Apr 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>Hidden Start nixes console/batch windows (updated)</title>
         <link>http://clarionmag.com:8081/blog/20090406HiddenStartnixesconsolebatchwindows.html</link>
         <description><![CDATA[<p>Among other things C7 RC2 now has two Run buttons. The prevous Run functionality (which calls MSBuild first to verify all the pieces are there) is now assigned to a &quot;play&quot; button which has a little lightning bolt added. The plain &quot;play&quot; button is now a Run the Startup Project button which calls the solution's EXE without doing any checks first. I'm delighted to report that this means my <a href="http://www.clarionmag.com/blog/20090330ArunonlyoptionfortheCIDE.html">previous blog post</a> about a simple Clarion app to RUN whatever program was passed to it, along with a Tools menu option to call the app,  is now irrelevant. </p>
<p>What I neglected to mention in that blog post is that I also considered creating a batch file to run the solution's EXE directly, but batch files pop up console windows. My Clarion solution using RUN executed the EXE transparently. </p>
<p>But RUN isn't the solution to every problem. For instance,  Brahn Patridge discovered some problems with the maximum length of parameters accepted by the template #RUN statement which he <a href="http://www.clarionedge.com/windows/tools/run-and-command-windows.html">circumvented</a> by writing out and executing a batch file. And that resulted in the annoying console window popup. Brahn eventually found a nifty tool called <a href="http://www.ntwind.com/software/utilities/hstart.html">Hidden Start</a> that executes batch files and console apps without displaying a window. Hidden Start is free, although a license is required for <a href="http://www.ntwind.com/software/utilities/hstart/distribution.html">commercial distribution</a>. Thanks for the tip, Brahn. </p>
<p>UPDATE: Mark Riffey tells me that AVG flags Hidden Start as a virus. As far as I can tell this is because Hidden Start can be used to run programs without the user receiving any indication that the program is running, not because there's an actual virus. But use appropriate caution.</p>]]></description>
         <pubDate>Mon, 13 Apr 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>A "run-only" option for the C7 IDE</title>
         <link>http://clarionmag.com:8081/blog/20090330ArunonlyoptionfortheCIDE.html</link>
         <description><![CDATA[<p>After the latest beta (5225) release several developers asked for a Run button which would simply run the current project instead of building the application first. There is a Start without Debugger option (Ctrl-F5) but in fact this invokes an MSBuild task. Even if the EXE is already built MSBuild will verify that a recompile isn&rsquo;t needed, and that can take some time on a big multi-DLL solution. </p>
<p>I decided to play around with the Tools menu to see if there was a way to produce a &ldquo;run only&rdquo; behavior, and I did find a solution. But SV has now said that a run only button will be in the next build, but in the event that you can&rsquo;t wait for the next build of C7, here&rsquo;s what you need to do to add your own &ldquo;Run only&rdquo; menu option. </p>
<p>It was Ben Dell who got me started on the Tools menu. He pointed out that it was possible to run customized MSBuild tasks that way. And if you can run an MSBuild task on a project, why not a task to run an EXE? </p>
<p>First, create a new Win32 EXE solution (not an APP - this will be a hand coded program) called, say, Launcher. Launcher.clw contains just this code:</p>
<pre>                    PROGRAM

                    MAP
                    END

    CODE
    run(COMMAND())</pre>
<p>Compile the code.</p>
<p>Next, in Tools | Options | Tools create a new external tool called something like &ldquo;Run the current application&rdquo;.</p>
<p>Set the command to your Launcher.exe</p>
<p>Set the arguments to &quot;${TargetPath}&quot; (the quotes take care of long file names, although they may not be necessary) and the working directory to ${ProjectDir}.</p>
<p>Now when you want to launch a program you just highlight it in the solution explorer and choose the &ldquo;Run the current application&rdquo; option from the Tools menu. </p>]]></description>
         <pubDate>Mon, 30 Mar 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>A "workspace" tip for C7</title>
         <link>http://clarionmag.com:8081/blog/20090330AworkspacetipforC.html</link>
         <description><![CDATA[<p>Here's a tip <a href="http://radfusion.com/">Russ Eggen</a> posted in the beta newsgroup on setting up workspaces in C7 (reproduced here with Russ's permission):</p>
<blockquote>
  <p>My editor of choice (until recently &lt;g&gt;) is Textpad.&nbsp; It has one very nice   feature I found I can't live without - workspaces.&nbsp; What this is you have a   bunch of source files open (even if in different folders).&nbsp; You save the   workspace like a regular file.&nbsp; When you open a workspace, all files opened   are opened again.&nbsp; A marvelous shortcut to opening one file at a time.&nbsp; I   use this for template coding, web sources (site code and shopping cart   code), etc. </p>
  <p> You could open each file in C7 on the start page, its opening one file at a   time and you still have to contend with tab switching since the start page   is no longer the current tab.&nbsp; Its slower than opening one file to open many   files. </p>
  <p>So this is how you can create a &quot;workspace&quot; in C7: </p>
  <ol>
    <li>   Choose File/New/solution, project or application (or press Ctrl-Shift-N). </li>
    <li> Select SharpDevelop as the solution, for the type, select &quot;empty   solution&quot;. </li>
    <li> Fill in the name of the &quot;workspace&quot;, in the folder you wish. </li>
    <li> You have only one item in the solution explorer.&nbsp; Expand this to show   &quot;solution items&quot; - it is empty. </li>
    <li> Right-click and choose Add/Add item... </li>
    <li> Navigate to the folder you want, select one or multiple files and press   open.&nbsp; The files are added there. </li>
    <li> Repeat #6 until you have loaded all the sources you want. </li>
  </ol>
  <p> The &quot;solution&quot; is now on the Start page.&nbsp; When you restart or select the   start page again, just open the &quot;solution&quot; and you can then open any file in   it as you wish.&nbsp; You don't have to worry about build state since there is   nothing to build, so nothing to change there. </p>
  <p>  There are limitations: </p>
  <ol>
    <li> It won't remember where in the file you were editing. </li>
    <li> The files won't open as the default, you have to open them. </li>
  </ol>
  <p>If you are using code folding, it does remember that setting. </p>
</blockquote>
<p>A few additional points came up in the ensuing discussion. You can run multiple instances of the IDE, so you can keep a workspace handy while you work on another app. The only issue I've noticed with multiple instances of the IDE is that the last one closed writes the recent projects list. So let's say you do the following:</p>
<ol>
  <li>Run an instance of the IDE (instance A)</li>
  <li>Run another instance (instance B)</li>
  <li>Create a new solution with B</li>
  <li>Exit B</li>
  <li>Exit A</li>
</ol>
<p>Instance B will add the just-created solution to the recent projects list. In fact, before you exit instance A you can restart the IDE and see that project in the list. Now close B, then close A. Open the IDE again. The solution added by B will not be in the projects list, because instance A overwrite the list with what it had in memory. </p>
<p>Finally, you can always add files to your solution without necessarily compiling them. Just select the source file in the solution explorer, go to the Properties pad, and set the Build Action to None. Recent versions of C7 let you add &quot;solution folders&quot; to projects, and when you add files to these folders you are creating links to those files. I've used this feature to set up a Templates folder with links to template files I regularly edit. And since you can have multiple projects in a solution, it's easy to set up a project just for, say, frequently-edited templates which can then be attached to any solution where they are needed. </p>]]></description>
         <pubDate>Mon, 30 Mar 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>MSBuild, C7, and other goodies</title>
         <link>http://clarionmag.com:8081/blog/20090319MSBuildCandothergoodies.html</link>
         <description><![CDATA[<p>This was supposed to be Clarion# web app month at Clarion Magazine, but it's starting to turn into a combination of a web theme and an MSBuild theme. Steve Parker followed up last month's closing <a href="http://www.clarionmag.com/cmag/v11/v11n02msbuild.html">article</a> on MSBuild with a <a href="http://www.clarionmag.com/cmag/v11/v11n03compilemanager.html">treatise</a> on multi-app solutions, and tomorrow you'll see a new article on how to use MSBuild to do multi-pass compiles on systems with circular calls (but of course, none of you actually <em>have </em>any circular calls, right?). We'll also have a review of the latest C7 build (5080) tomorrow. Is it almost ready for gold release?</p>
<p>Next week it's back to the Clarion# web app goodies, although there will be a few bits and bobs in there to appease the non-web, non-Clarion# folk as well. </p>]]></description>
         <pubDate>Thu, 19 Mar 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>Clarion# web apps with AppGen? Yes, just not the AppGen you think (at least not yet)</title>
         <link>http://clarionmag.com:8081/blog/20090312ClarionwebappswithAppGenYesjustnottheAppGenyouthink.html</link>
         <description><![CDATA[<p>Within the next couple of days I expect to post ClarionMag's first ever screencast. The subject  is a small demo app showing how to do AppGen-based Clarion# web development right now, even without a Clarion# AppGen. The secret: a custom template chain we've specifically designed to create <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> web applications using <a href="http://www.castleproject.org/index.html">Castle Monorail</a> and <a href="http://www.hibernate.org/343.html">NHibernate</a>. What's MVC? It's an increasingly popular way to write testable, maintainable web applications. Even <a href="http://www.asp.net/mvc/">Microsoft</a> has jumped on the MVC bandwagon (although <a href="http://www.asp.net/mvc/">their code</a> is still pretty green). </p>
<p>I'm particularly excited about this template chain as it provides us with the technology we need to begin  porting the ClarionMag web application from its current Java code base to Clarion#. </p>
<p>Don't let the small number of pages in this web application fool you - there's a lot packed into this little app. 
The home page isn't particularly complex, however; it simply gives you an overview of the application's capabilities. </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig1.png" width="550" height="625" border="1" /> </p>
<p>Most of the goodies are in the browse page. There are two versions of this browse. The HTML version features column sorting, filtering (many kinds of filters are possible, although only insensitive LIKE expressions are shown here), and fast server-side paging which allows you to work with large result sets. The browse state is persistent; navigate to another page, come back to the page, and you see the same data as last time. </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig2.png" width="550" height="648" border="1" /></p>
<p>But HTML browses aren't that pretty, and getting the next set of data requires a distracting page refresh. So there's a sneak peek at an  AJAX version of the browse created with the <a href="http://www.yui-ext.com/products/extjs/">ExtJS toolkit</a>. This browse isn't fully functional yet, nor is it integrated with the templates, but it does demonstrate the use of JSON requests to load a browse without refreshing the page. And it looks a lot nicer than an HTML browse, and behaves the way a browse should. We'll be doing more work with ExtJS components in the future. </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig5.png" width="550" height="645" border="1" /> </p>
<p>There isn't any security on the browse, but there is on the form. It's a simple requirement - you only need to be logged in. So if you attempt to edit, insert or delete a record (from the HTML browse) and you're not yet logged in, you'll see a login page. </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig3.png" width="550" height="380" border="1" /> </p>
<p>You can use the guest login or register your own user id. If you have Javascript enabled you'll see validation messages appear below incorrectly filled fields. (If Javascript is disabled, server-side validation still ensures correct data.) </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig6.png" width="550" height="363" border="1" /> </p>
<p>Once you're logged in you're returned to the form where you can complete the desired changes. </p>
<p><img src="http://www.clarionmag.com/blog/images/mvc-fig4.png" width="550" height="510" border="1" /> </p>
<p>There are several important caveats to this template chain. </p>
<p>First, it's most definitely alpha code, and there's a lot of work to be done. </p>
<p>Second, since the generated code uses the NHibernate ORM to talk to the database you're limited to supported SQL databases. Right now that list includes: </p>
<ul>
  <li>Microsoft SQL Server 2005/2000</li>
  <li>Oracle</li>
  <li>Microsoft Access</li>
  <li>Firebird</li>
  <li>PostgreSQL</li>
  <li>DB2 UDB</li>
  <li>MySQL</li>
  <li>SQLite</li>
</ul>
<p>No TPS files there, and wouldn't hold my breath waiting for a TopSpeed NHibernate driver. </p>
<p>(Actually, you can still access TPS or other Clarion# drivers if you wish, you just can't take advantage of the automated validation and data binding, both of which are enormously useful on forms.)
<p>Third, this template chain is not ABC or legacy Clarion compatible. You cannot use it to convert an existing application; you can only use it to create a new application. MVC web development is significantly different from Clarion desktop development, and while it may be possible to write these templates as an add-on, it really isn't practical. </p>
<p>I hope you'll find the upcoming screencast and an accompanying series of articles interesting and useful. Web development is a different beast from desktop development, and many of the issues I'll cover apply to non-MVC web development as well. </p>
<p>And even if you're not interested in doing your own web development you <i>will</i> benefit as a ClarionMag user, as this template chain forms the foundation for the <i>next</i> version of the Clarion Magazine web site....</p>]]></description>
         <pubDate>Thu, 12 Mar 2009 00:00:00 CDT</pubDate>
      </item>
      <item>
         <title>Just another Windoid Control-Q weenie</title>
         <link>http://clarionmag.com:8081/blog/20090304JustanotherWindoidControlQweenie.html</link>
         <description><![CDATA[<p>I'm working on a demo app for a series of upcoming articles on creating MVC web applications in Clarion#, and I needed some demo data. What, I thought, would be better than programmer jargon? So I grabbed a <a href="http://www.catb.org/jargon/html/go01.html">jargon glossary</a> and set about converting it to a PostgreSQL table. Then I wrote a couple of stored procedures to randomly assemble these terms into test data. </p>
<p>Unfortunately, I keep wasting time actually <i>reading</i> the data. I mean, who can say with a straight face that Clarion programmers <i>don't</i> have baroque dinosaur religious issues....</p>
<p><img src="images/jargon.png" width="501" height="487" /></p>]]></description>
         <pubDate>Wed, 04 Mar 2009 00:00:00 CST</pubDate>
      </item>
   </channel>
</rss>

